Step
*
3
1
of Lemma
mFOL-abstract-rename
.....subterm..... T:t
2:n
1. Dom : Type
2. S : FOStruct(Dom)
3. x : ℤ
4. y : ℤ
5. isall : 𝔹
6. z : ℤ
7. z ≠ y
8. body : mFOL()
9. ¬(x ∈ mFOL-boundvars(mFOquant(isall;z;body)))
10. a1 : FOAssignment(mFOL-freevars(mFOL-rename(mFOquant(isall;z;body);y;x)),Dom)
11. a2 : FOAssignment(mFOL-freevars(mFOquant(isall;z;body)),Dom)
12. a2
= if y ∈b mFOL-freevars(mFOquant(isall;z;body)) then a1[y := a1 x] else a1 fi 
∈ FOAssignment(mFOL-freevars(mFOquant(isall;z;body)),Dom)
13. ¬(x = z ∈ ℤ)
14. ¬(x ∈ mFOL-boundvars(body))
15. ∀a1:FOAssignment(mFOL-freevars(mFOL-rename(body;y;x)),Dom). ∀a2:FOAssignment(mFOL-freevars(body),Dom).
      ((a2 = if y ∈b mFOL-freevars(body) then a1[y := a1 x] else a1 fi  ∈ FOAssignment(mFOL-freevars(body),Dom))
      
⇒ (Dom,S,a2 |= mFOL-abstract(body) = Dom,S,a1 |= mFOL-abstract(mFOL-rename(body;y;x)) ∈ ℙ))
16. ↑isall
17. v : Dom
⊢ Dom,S,a2[z := v] |= mFOL-abstract(body) = Dom,S,a1[z := v] |= mFOL-abstract(mFOL-rename(body;y;x)) ∈ ℙ
BY
{ (∀h:hyp. (RepUR ``mFOL-rename`` h THEN Fold `mFOL-rename` h THEN (Subst' (z =z y) ~ ff h THENA Auto) THEN Reduce h) 
   THEN ∀h:hyp. (RepUR ``mFOL-freevars`` h THEN Fold `mFOL-freevars` h) 
   THEN BackThruSomeHyp
   THEN Unfold `FOAssignment` 0
   THEN FunExt
   THEN Reduce 0
   THEN Auto) }
1
1. Dom : Type
2. S : FOStruct(Dom)
3. x : ℤ
4. y : ℤ
5. isall : 𝔹
6. z : ℤ
7. z ≠ y
8. body : mFOL()
9. ¬(x ∈ mFOL-boundvars(mFOquant(isall;z;body)))
10. a1 : FOAssignment(filter(λx.(¬b(x =z z));mFOL-freevars(mFOL-rename(body;y;x))),Dom)
11. a2 : FOAssignment(filter(λx.(¬b(x =z z));mFOL-freevars(body)),Dom)
12. a2
= if y ∈b filter(λx.(¬b(x =z z));mFOL-freevars(body)) then a1[y := a1 x] else a1 fi 
∈ FOAssignment(filter(λx.(¬b(x =z z));mFOL-freevars(body)),Dom)
13. ¬(x = z ∈ ℤ)
14. ¬(x ∈ mFOL-boundvars(body))
15. ∀a1:FOAssignment(mFOL-freevars(mFOL-rename(body;y;x)),Dom). ∀a2:FOAssignment(mFOL-freevars(body),Dom).
      ((a2 = if y ∈b mFOL-freevars(body) then a1[y := a1 x] else a1 fi  ∈ FOAssignment(mFOL-freevars(body),Dom))
      
⇒ (Dom,S,a2 |= mFOL-abstract(body) = Dom,S,a1 |= mFOL-abstract(mFOL-rename(body;y;x)) ∈ ℙ))
16. ↑isall
17. v : Dom
18. x1 : {z:ℤ| (z ∈ mFOL-freevars(body))} 
⊢ (a2[z := v] x1) = (if y ∈b mFOL-freevars(body) then a1[z := v][y := a1[z := v] x] else a1[z := v] fi  x1) ∈ Dom
Latex:
Latex:
.....subterm.....  T:t
2:n
1.  Dom  :  Type
2.  S  :  FOStruct(Dom)
3.  x  :  \mBbbZ{}
4.  y  :  \mBbbZ{}
5.  isall  :  \mBbbB{}
6.  z  :  \mBbbZ{}
7.  z  \mneq{}  y
8.  body  :  mFOL()
9.  \mneg{}(x  \mmember{}  mFOL-boundvars(mFOquant(isall;z;body)))
10.  a1  :  FOAssignment(mFOL-freevars(mFOL-rename(mFOquant(isall;z;body);y;x)),Dom)
11.  a2  :  FOAssignment(mFOL-freevars(mFOquant(isall;z;body)),Dom)
12.  a2  =  if  y  \mmember{}\msubb{}  mFOL-freevars(mFOquant(isall;z;body))  then  a1[y  :=  a1  x]  else  a1  fi 
13.  \mneg{}(x  =  z)
14.  \mneg{}(x  \mmember{}  mFOL-boundvars(body))
15.  \mforall{}a1:FOAssignment(mFOL-freevars(mFOL-rename(body;y;x)),Dom).
        \mforall{}a2:FOAssignment(mFOL-freevars(body),Dom).
            ((a2  =  if  y  \mmember{}\msubb{}  mFOL-freevars(body)  then  a1[y  :=  a1  x]  else  a1  fi  )
            {}\mRightarrow{}  (Dom,S,a2  |=  mFOL-abstract(body)  =  Dom,S,a1  |=  mFOL-abstract(mFOL-rename(body;y;x))))
16.  \muparrow{}isall
17.  v  :  Dom
\mvdash{}  Dom,S,a2[z  :=  v]  |=  mFOL-abstract(body)  =  Dom,S,a1[z  :=  v]  |=  mFOL-abstract(mFOL-rename(body;y;x))
By
Latex:
(\mforall{}h:hyp.  (RepUR  ``mFOL-rename``  h
                    THEN  Fold  `mFOL-rename`  h
                    THEN  (Subst'  (z  =\msubz{}  y)  \msim{}  ff  h  THENA  Auto)
                    THEN  Reduce  h) 
  THEN  \mforall{}h:hyp.  (RepUR  ``mFOL-freevars``  h  THEN  Fold  `mFOL-freevars`  h) 
  THEN  BackThruSomeHyp
  THEN  Unfold  `FOAssignment`  0
  THEN  FunExt
  THEN  Reduce  0
  THEN  Auto)
Home
Index