Step * of Lemma FormSafe1_functionality

C:Type. ∀phi:Form(C). ∀vs,ws:Atom List.  (l_subset(Atom;ws;vs)  {(FormSafe1(phi) vs)  (FormSafe1(phi) ws)})
BY
(Intro
   THEN (BLemma `Form-induction` THENW Auto)
   THEN RepUR ``guard PZF-safe FormSafe1`` 0
   THEN Try (Fold `FormSafe1` 0)
   THEN Try (QuickAuto)) }

1
1. Type
⊢ ∀left,right:Form(C).
    ((∀vs,ws:Atom List.  (l_subset(Atom;ws;vs)  (FormSafe1(left) vs)  (FormSafe1(left) ws)))
     (∀vs,ws:Atom List.  (l_subset(Atom;ws;vs)  (FormSafe1(right) vs)  (FormSafe1(right) ws)))
     (∀vs,ws:Atom List.
          (l_subset(Atom;ws;vs)
           ((↑null(vs))
             ∨ (∃x:Atom
                 (set-equal(Atom;vs;[x])
                 ∧ (((↑FormVar?(left)) ∧ (FormVar-name(left) x ∈ Atom) ∧ (x ∈ FormFvs(right))))
                   ∨ ((↑FormVar?(right)) ∧ (FormVar-name(right) x ∈ Atom) ∧ (x ∈ FormFvs(left))))))))
           ((↑null(ws))
             ∨ (∃x:Atom
                 (set-equal(Atom;ws;[x])
                 ∧ (((↑FormVar?(left)) ∧ (FormVar-name(left) x ∈ Atom) ∧ (x ∈ FormFvs(right))))
                   ∨ ((↑FormVar?(right)) ∧ (FormVar-name(right) x ∈ Atom) ∧ (x ∈ FormFvs(left)))))))))))

2
1. Type
⊢ ∀element,set:Form(C).
    ((∀vs,ws:Atom List.  (l_subset(Atom;ws;vs)  (FormSafe1(element) vs)  (FormSafe1(element) ws)))
     (∀vs,ws:Atom List.  (l_subset(Atom;ws;vs)  (FormSafe1(set) vs)  (FormSafe1(set) ws)))
     (∀vs,ws:Atom List.
          (l_subset(Atom;ws;vs)
           ((↑null(vs))
             ∨ (∃x:Atom
                 (set-equal(Atom;vs;[x])
                 ∧ (↑FormVar?(element))
                 ∧ (FormVar-name(element) x ∈ Atom)
                 ∧ (((↑FormVar?(set)) ∧ (FormVar-name(set) x ∈ Atom)) ∨ (x ∈ FormFvs(set)))))))
           ((↑null(ws))
             ∨ (∃x:Atom
                 (set-equal(Atom;ws;[x])
                 ∧ (↑FormVar?(element))
                 ∧ (FormVar-name(element) x ∈ Atom)
                 ∧ (((↑FormVar?(set)) ∧ (FormVar-name(set) x ∈ Atom)) ∨ (x ∈ FormFvs(set))))))))))

3
1. Type
⊢ ∀left,right:Form(C).
    ((∀vs,ws:Atom List.  (l_subset(Atom;ws;vs)  (FormSafe1(left) vs)  (FormSafe1(left) ws)))
     (∀vs,ws:Atom List.  (l_subset(Atom;ws;vs)  (FormSafe1(right) vs)  (FormSafe1(right) ws)))
     (∀vs,ws:Atom List.
          (l_subset(Atom;ws;vs)
           (∃as,bs:Atom List
               (set-equal(Atom;vs;as bs)
               ∧ (FormSafe1(left) as)
               ∧ (FormSafe1(right) bs)
               ∧ (l_disjoint(Atom;as;FormFvs(right)) ∨ l_disjoint(Atom;bs;FormFvs(left)))))
           (∃as,bs:Atom List
               (set-equal(Atom;ws;as bs)
               ∧ (FormSafe1(left) as)
               ∧ (FormSafe1(right) bs)
               ∧ (l_disjoint(Atom;as;FormFvs(right)) ∨ l_disjoint(Atom;bs;FormFvs(left))))))))

4
1. Type
⊢ ∀body:Form(C)
    ((∀vs,ws:Atom List.  (l_subset(Atom;ws;vs)  (FormSafe1(body) vs)  (FormSafe1(body) ws)))
     (∀vs,ws:Atom List.
          (l_subset(Atom;ws;vs)  ((↑null(vs)) ∧ (FormSafe1(body) []))  ((↑null(ws)) ∧ (FormSafe1(body) [])))))

5
1. Type
⊢ ∀var:Atom. ∀body:Form(C).
    ((∀vs,ws:Atom List.  (l_subset(Atom;ws;vs)  (FormSafe1(body) vs)  (FormSafe1(body) ws)))
     (∀vs,ws:Atom List.
          (l_subset(Atom;ws;vs)
           ((¬(var ∈ vs)) ∧ (FormSafe1(body) [var vs]))
           ((¬(var ∈ ws)) ∧ (FormSafe1(body) [var ws])))))


Latex:


Latex:
\mforall{}C:Type.  \mforall{}phi:Form(C).  \mforall{}vs,ws:Atom  List.
    (l\_subset(Atom;ws;vs)  {}\mRightarrow{}  \{(FormSafe1(phi)  vs)  {}\mRightarrow{}  (FormSafe1(phi)  ws)\})


By


Latex:
(Intro
  THEN  (BLemma  `Form-induction`  THENW  Auto)
  THEN  RepUR  ``guard  PZF-safe  FormSafe1``  0
  THEN  Try  (Fold  `FormSafe1`  0)
  THEN  Try  (QuickAuto))




Home Index