Step * 3 of Lemma mFOL-abstract-rename


1. Dom Type
2. FOStruct(Dom)
3. : ℤ
4. : ℤ
5. isall : 𝔹
6. var : ℤ
7. body mFOL()
8. (x ∈ mFOL-boundvars(body)))
 (∀a1:FOAssignment(mFOL-freevars(mFOL-rename(body;y;x)),Dom). ∀a2:FOAssignment(mFOL-freevars(body),Dom).
      ((a2 FOAssigment-rename(a1;body;x;y) ∈ FOAssignment(mFOL-freevars(body),Dom))
       (Dom,S,a2 |= mFOL-abstract(body) Dom,S,a1 |= mFOL-abstract(mFOL-rename(body;y;x)) ∈ ℙ)))
9. ¬(x ∈ mFOL-boundvars(mFOquant(isall;var;body)))
10. a1 FOAssignment(mFOL-freevars(mFOL-rename(mFOquant(isall;var;body);y;x)),Dom)
11. a2 FOAssignment(mFOL-freevars(mFOquant(isall;var;body)),Dom)
12. a2 FOAssigment-rename(a1;mFOquant(isall;var;body);x;y) ∈ FOAssignment(mFOL-freevars(mFOquant(isall;var;body)),Dom)
⊢ Dom,S,a2 |= mFOL-abstract(mFOquant(isall;var;body))
Dom,S,a1 |= mFOL-abstract(mFOL-rename(mFOquant(isall;var;body);y;x))
∈ ℙ
BY
((RenameVar `z' THEN All (Unfold `FOAssigment-rename`))
   THEN ((Assert (x z ∈ ℤ)) ∧ (x ∈ mFOL-boundvars(body))) BY
                (Auto
                 THEN OnMaybeHyp 10 (\h. (ParallelOp h
                                          THEN RepUR ``mFOL-boundvars`` 0
                                          THEN Fold `mFOL-boundvars` 0
                                          THEN BLemma `member-insert`
                                          THEN Auto))
                 ))
         THEN -1
         )
   THEN RepeatFor (ThinTrivial)
   THEN (RepUR ``mFOL-rename`` 0⋅ THEN Fold `mFOL-rename` 0)
   THEN (RepUR ``mFOL-abstract`` 0⋅ THEN Fold `mFOL-abstract` 0)
   THEN RepUR ``FOSatWith FOQuantifier`` 0
   THEN Fold `FOSatWith` 0
   THEN (BoolCase ⌜isall⌝⋅ THENA Auto)
   THEN (BoolCase ⌜(z =z y)⌝⋅ THENA Auto)
   THEN Try ((HypSubst' (-1) 0
              THEN RepeatFor ((EqCD THEN Auto))
              THEN Unfold `FOAssignment` 0
              THEN FunExt
              THEN Reduce 0
              THEN Auto
              THEN -1
              THEN (Assert (x1 ∈ mFOL-freevars(mFOquant(isall;z;body))) BY
                          (HypSubst' (-4) THEN RepUR ``mFOL-freevars`` THEN Fold `mFOL-freevars` THEN Auto))
              THEN (RWO "member_filter" (-2) THENA Auto)
              THEN -2
              THEN Reduce (-2)
              THEN OnMaybeHyp 14 (\h. (Unfold `FOAssignment` h
                                       THEN (ApFunToHypEquands `Z' ⌜x1⌝ ⌜Dom⌝ h⋅ THENA Complete (Auto))
                                       THEN SplitOnHypITE -1 
                                       THEN Auto
                                       THEN RepUR ``update-assignment`` -2
                                       THEN SplitOnHypITE -2 
                                       THEN Auto))))
   THEN (EqCD THENA Auto)
   THEN Try ((Fold `member` THEN Auto))) }

1
.....subterm..... T:t
2:n
1. Dom Type
2. FOStruct(Dom)
3. : ℤ
4. : ℤ
5. isall : 𝔹
6. : ℤ
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. Dom
⊢ Dom,S,a2[z := v] |= mFOL-abstract(body) Dom,S,a1[z := v] |= mFOL-abstract(mFOL-rename(body;y;x)) ∈ ℙ

2
.....subterm..... T:t
2:n
1. Dom Type
2. FOStruct(Dom)
3. : ℤ
4. : ℤ
5. isall : 𝔹
6. ¬↑isall
7. : ℤ
8. z ≠ y
9. body mFOL()
10. ¬(x ∈ mFOL-boundvars(∃z;body)))
11. a1 FOAssignment(mFOL-freevars(mFOL-rename(∃z;body);y;x)),Dom)
12. a2 FOAssignment(mFOL-freevars(∃z;body)),Dom)
13. a2 if y ∈b mFOL-freevars(∃z;body)) then a1[y := a1 x] else a1 fi  ∈ FOAssignment(mFOL-freevars(∃z;body)),Dom)
14. ¬(x z ∈ ℤ)
15. ¬(x ∈ mFOL-boundvars(body))
16. ∀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)) ∈ ℙ))
17. Dom
⊢ Dom,S,a2[z := v] |= mFOL-abstract(body) Dom,S,a1[z := v] |= mFOL-abstract(mFOL-rename(body;y;x)) ∈ ℙ


Latex:


Latex:

1.  Dom  :  Type
2.  S  :  FOStruct(Dom)
3.  x  :  \mBbbZ{}
4.  y  :  \mBbbZ{}
5.  isall  :  \mBbbB{}
6.  var  :  \mBbbZ{}
7.  body  :  mFOL()
8.  (\mneg{}(x  \mmember{}  mFOL-boundvars(body)))
{}\mRightarrow{}  (\mforall{}a1:FOAssignment(mFOL-freevars(mFOL-rename(body;y;x)),Dom).
        \mforall{}a2:FOAssignment(mFOL-freevars(body),Dom).
            ((a2  =  FOAssigment-rename(a1;body;x;y))
            {}\mRightarrow{}  (Dom,S,a2  |=  mFOL-abstract(body)  =  Dom,S,a1  |=  mFOL-abstract(mFOL-rename(body;y;x)))))
9.  \mneg{}(x  \mmember{}  mFOL-boundvars(mFOquant(isall;var;body)))
10.  a1  :  FOAssignment(mFOL-freevars(mFOL-rename(mFOquant(isall;var;body);y;x)),Dom)
11.  a2  :  FOAssignment(mFOL-freevars(mFOquant(isall;var;body)),Dom)
12.  a2  =  FOAssigment-rename(a1;mFOquant(isall;var;body);x;y)
\mvdash{}  Dom,S,a2  |=  mFOL-abstract(mFOquant(isall;var;body))
=  Dom,S,a1  |=  mFOL-abstract(mFOL-rename(mFOquant(isall;var;body);y;x))


By


Latex:
((RenameVar  `z'  6  THEN  All  (Unfold  `FOAssigment-rename`))
  THEN  ((Assert  (\mneg{}(x  =  z))  \mwedge{}  (\mneg{}(x  \mmember{}  mFOL-boundvars(body)))  BY
                            (Auto
                              THEN  OnMaybeHyp  10  (\mbackslash{}h.  (ParallelOp  h
                                                                                THEN  RepUR  ``mFOL-boundvars``  0
                                                                                THEN  Fold  `mFOL-boundvars`  0
                                                                                THEN  BLemma  `member-insert`
                                                                                THEN  Auto))
                              ))
              THEN  D  -1
              )
  THEN  RepeatFor  2  (ThinTrivial)
  THEN  (RepUR  ``mFOL-rename``  0\mcdot{}  THEN  Fold  `mFOL-rename`  0)
  THEN  (RepUR  ``mFOL-abstract``  0\mcdot{}  THEN  Fold  `mFOL-abstract`  0)
  THEN  RepUR  ``FOSatWith  FOQuantifier``  0
  THEN  Fold  `FOSatWith`  0
  THEN  (BoolCase  \mkleeneopen{}isall\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  (BoolCase  \mkleeneopen{}(z  =\msubz{}  y)\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  Try  ((HypSubst'  (-1)  0
                        THEN  RepeatFor  3  ((EqCD  THEN  Auto))
                        THEN  Unfold  `FOAssignment`  0
                        THEN  FunExt
                        THEN  Reduce  0
                        THEN  Auto
                        THEN  D  -1
                        THEN  (Assert  (x1  \mmember{}  mFOL-freevars(mFOquant(isall;z;body)))  BY
                                                (HypSubst'  (-4)  0
                                                  THEN  RepUR  ``mFOL-freevars``  0
                                                  THEN  Fold  `mFOL-freevars`  0
                                                  THEN  Auto))
                        THEN  (RWO  "member\_filter"  (-2)  THENA  Auto)
                        THEN  D  -2
                        THEN  Reduce  (-2)
                        THEN  OnMaybeHyp  14  (\mbackslash{}h.  (Unfold  `FOAssignment`  h
                                                                          THEN  (ApFunToHypEquands  `Z'  \mkleeneopen{}Z  x1\mkleeneclose{}  \mkleeneopen{}Dom\mkleeneclose{}  h\mcdot{}
                                                                                      THENA  Complete  (Auto)
                                                                                      )
                                                                          THEN  SplitOnHypITE  -1 
                                                                          THEN  Auto
                                                                          THEN  RepUR  ``update-assignment``  -2
                                                                          THEN  SplitOnHypITE  -2 
                                                                          THEN  Auto))))
  THEN  (EqCD  THENA  Auto)
  THEN  Try  ((Fold  `member`  0  THEN  Auto)))




Home Index