Step * 2 of Lemma PZF_safe_functionality


1. Type
2. element Form(C)
3. set Form(C)
4. ∀vs,ws:Atom List.  (set-equal(Atom;vs;ws)  PZF_safe(element;vs) PZF_safe(element;ws))
5. ∀vs,ws:Atom List.  (set-equal(Atom;vs;ws)  PZF_safe(set;vs) PZF_safe(set;ws))
6. vs Atom List
7. ws Atom List
8. set-equal(Atom;vs;ws)
⊢ null(vs)
  ∨blet hd(vs) in
        null(vs-[x])
        ∧b FormVar?(element)
        ∧b FormVar-name(element) =a x
        ∧b ((FormVar?(set) ∧b FormVar-name(set) =a x) ∨bbx ∈b FormFvs(set))) 
null(ws)
  ∨blet hd(ws) in
        null(ws-[x])
        ∧b FormVar?(element)
        ∧b FormVar-name(element) =a x
        ∧b ((FormVar?(set) ∧b FormVar-name(set) =a x) ∨bbx ∈b FormFvs(set)))
BY
((Assert null(ws) null(vs) BY
          (Auto
           THEN (BLemma `iff_imp_equal_bool` THENA Auto)
           THEN (RW assert_pushdownC THENA Auto)
           THEN (RWO "nil-iff-no-member" THEN Auto)
           THEN -2 With ⌜x⌝ 
           THEN Auto))
   THEN HypSubst'  (-1) 0
   THEN RepUR ``let`` 0
   THEN (BoolCase ⌜null(vs)⌝⋅ THENA Auto)
   THEN Try ((Fold `member` THEN Auto))
   THEN (Subst' null(ws-[hd(ws)]) null(vs-[hd(vs)]) 0
   THENM ((BoolCase ⌜null(vs-[hd(vs)])⌝⋅ THENA Auto)
          THEN Try ((Fold `member` THEN Auto))
          THEN (Subst' hd(ws) hd(vs) THENM Auto))
   )) }

1
.....equality..... 
1. Type
2. element Form(C)
3. set Form(C)
4. ∀vs,ws:Atom List.  (set-equal(Atom;vs;ws)  PZF_safe(element;vs) PZF_safe(element;ws))
5. ∀vs,ws:Atom List.  (set-equal(Atom;vs;ws)  PZF_safe(set;vs) PZF_safe(set;ws))
6. vs Atom List
7. ¬(vs [] ∈ (Atom List))
8. ws Atom List
9. set-equal(Atom;vs;ws)
10. null(ws) ff
⊢ null(ws-[hd(ws)]) null(vs-[hd(vs)])

2
.....equality..... 
1. Type
2. element Form(C)
3. set Form(C)
4. ∀vs,ws:Atom List.  (set-equal(Atom;vs;ws)  PZF_safe(element;vs) PZF_safe(element;ws))
5. ∀vs,ws:Atom List.  (set-equal(Atom;vs;ws)  PZF_safe(set;vs) PZF_safe(set;ws))
6. vs Atom List
7. ¬(vs [] ∈ (Atom List))
8. ws Atom List
9. set-equal(Atom;vs;ws)
10. null(ws) ff
11. vs-[hd(vs)] [] ∈ (Atom List)
⊢ hd(ws) hd(vs)


Latex:


Latex:

1.  C  :  Type
2.  element  :  Form(C)
3.  set  :  Form(C)
4.  \mforall{}vs,ws:Atom  List.    (set-equal(Atom;vs;ws)  {}\mRightarrow{}  PZF\_safe(element;vs)  =  PZF\_safe(element;ws))
5.  \mforall{}vs,ws:Atom  List.    (set-equal(Atom;vs;ws)  {}\mRightarrow{}  PZF\_safe(set;vs)  =  PZF\_safe(set;ws))
6.  vs  :  Atom  List
7.  ws  :  Atom  List
8.  set-equal(Atom;vs;ws)
\mvdash{}  null(vs)
    \mvee{}\msubb{}let  x  =  hd(vs)  in
                null(vs-[x])
                \mwedge{}\msubb{}  FormVar?(element)
                \mwedge{}\msubb{}  FormVar-name(element)  =a  x
                \mwedge{}\msubb{}  ((FormVar?(set)  \mwedge{}\msubb{}  FormVar-name(set)  =a  x)  \mvee{}\msubb{}(\mneg{}\msubb{}x  \mmember{}\msubb{}  FormFvs(set))) 
=  null(ws)
    \mvee{}\msubb{}let  x  =  hd(ws)  in
                null(ws-[x])
                \mwedge{}\msubb{}  FormVar?(element)
                \mwedge{}\msubb{}  FormVar-name(element)  =a  x
                \mwedge{}\msubb{}  ((FormVar?(set)  \mwedge{}\msubb{}  FormVar-name(set)  =a  x)  \mvee{}\msubb{}(\mneg{}\msubb{}x  \mmember{}\msubb{}  FormFvs(set)))


By


Latex:
((Assert  null(ws)  \msim{}  null(vs)  BY
                (Auto
                  THEN  (BLemma  `iff\_imp\_equal\_bool`  THENA  Auto)
                  THEN  (RW  assert\_pushdownC  0  THENA  Auto)
                  THEN  (RWO  "nil-iff-no-member"  0  THEN  Auto)
                  THEN  D  -2  With  \mkleeneopen{}x\mkleeneclose{} 
                  THEN  Auto))
  THEN  HypSubst'    (-1)  0
  THEN  RepUR  ``let``  0
  THEN  (BoolCase  \mkleeneopen{}null(vs)\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  Try  ((Fold  `member`  0  THEN  Auto))
  THEN  (Subst'  null(ws-[hd(ws)])  \msim{}  null(vs-[hd(vs)])  0
  THENM  ((BoolCase  \mkleeneopen{}null(vs-[hd(vs)])\mkleeneclose{}\mcdot{}  THENA  Auto)
                THEN  Try  ((Fold  `member`  0  THEN  Auto))
                THEN  (Subst'  hd(ws)  \msim{}  hd(vs)  0  THENM  Auto))
  ))




Home Index