Step
*
of Lemma
assert-PZF_safe
No Annotations
∀C:Type. ∀phi:Form(C). ∀vs:Atom List. (↑PZF_safe(phi;vs)
⇐⇒ PZF-safe(phi;vs))
BY
{ ((Intros THEN RepUR ``PZF_safe PZF-safe`` 0)
THEN (RWO "FormSafe1-iff-FormSafe1\'\'" 0 THENA Auto)
THEN (Assert ⌜↑(FormSafe2(phi) vs)
⇐⇒ FormSafe1''(phi) vs⌝⋅ THENM (RWO "-1" 0 THEN Auto))
THEN RepeatFor 2 (MoveToConcl (-1))
THEN (BLemma `Form-induction` THENW Auto)
THEN RepUR ``FormSafe1\'\' FormSafe2`` 0
THEN Try (Fold `FormSafe2` 0)
THEN Try (Fold `FormSafe1\'\'` 0)
THEN Try (QuickAuto)) }
1
1. C : Type
⊢ ∀left,right:Form(C).
((∀vs:Atom List. (↑(FormSafe2(left) vs)
⇐⇒ FormSafe1''(left) vs))
⇒ (∀vs:Atom List. (↑(FormSafe2(right) vs)
⇐⇒ FormSafe1''(right) vs))
⇒ (∀vs:Atom List
(↑(null(vs)
∨blet x = hd(vs) in
null(vs-[x])
∧b ((FormVar?(left) ∧b FormVar-name(left) =a x ∧b (¬bx ∈b FormFvs(right)))
∨b(FormVar?(right) ∧b FormVar-name(right) =a x ∧b (¬bx ∈b FormFvs(left)))))
⇐⇒ (↑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))))))))))
2
1. C : Type
⊢ ∀element,set:Form(C).
((∀vs:Atom List. (↑(FormSafe2(element) vs)
⇐⇒ FormSafe1''(element) vs))
⇒ (∀vs:Atom List. (↑(FormSafe2(set) vs)
⇐⇒ FormSafe1''(set) vs))
⇒ (∀vs:Atom List
(↑(null(vs)
∨blet x = hd(vs) in
null(vs-[x])
∧b FormVar?(element)
∧b FormVar-name(element) =a x
∧b ((FormVar?(set) ∧b FormVar-name(set) =a x) ∨b(¬bx ∈b FormFvs(set))))
⇐⇒ (↑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)))))))))
3
1. C : Type
⊢ ∀left,right:Form(C).
((∀vs:Atom List. (↑(FormSafe2(left) vs)
⇐⇒ FormSafe1''(left) vs))
⇒ (∀vs:Atom List. (↑(FormSafe2(right) vs)
⇐⇒ FormSafe1''(right) vs))
⇒ (∀vs:Atom List
(↑eval as = FormFvs(left) in
eval bs = FormFvs(right) in
eval theta = vs-bs in
(FormSafe2(left) theta) ∧b (FormSafe2(right) vs-theta)
∨beval phi = vs-as in
(FormSafe2(left) vs-phi) ∧b (FormSafe2(right) phi)
⇐⇒ let theta = vs-FormFvs(right) in
(FormSafe1''(left) theta) ∧ (FormSafe1''(right) vs-theta)
∨ let phi = vs-FormFvs(left) in
(FormSafe1''(left) vs-phi) ∧ (FormSafe1''(right) phi))))
4
1. C : Type
⊢ ∀body:Form(C)
((∀vs:Atom List. (↑(FormSafe2(body) vs)
⇐⇒ FormSafe1''(body) vs))
⇒ (∀vs:Atom List. (↑(null(vs) ∧b (FormSafe2(body) []))
⇐⇒ (↑null(vs)) ∧ (FormSafe1''(body) []))))
5
1. C : Type
⊢ ∀var:Atom. ∀body:Form(C).
((∀vs:Atom List. (↑(FormSafe2(body) vs)
⇐⇒ FormSafe1''(body) vs))
⇒ (∀vs:Atom List
(↑((¬bvar ∈b vs) ∧b (FormSafe2(body) [var / vs]))
⇐⇒ (¬(var ∈ vs)) ∧ (FormSafe1''(body) [var / vs]))))
Latex:
Latex:
No Annotations
\mforall{}C:Type. \mforall{}phi:Form(C). \mforall{}vs:Atom List. (\muparrow{}PZF\_safe(phi;vs) \mLeftarrow{}{}\mRightarrow{} PZF-safe(phi;vs))
By
Latex:
((Intros THEN RepUR ``PZF\_safe PZF-safe`` 0)
THEN (RWO "FormSafe1-iff-FormSafe1\mbackslash{}'\mbackslash{}'" 0 THENA Auto)
THEN (Assert \mkleeneopen{}\muparrow{}(FormSafe2(phi) vs) \mLeftarrow{}{}\mRightarrow{} FormSafe1''(phi) vs\mkleeneclose{}\mcdot{} THENM (RWO "-1" 0 THEN Auto))
THEN RepeatFor 2 (MoveToConcl (-1))
THEN (BLemma `Form-induction` THENW Auto)
THEN RepUR ``FormSafe1\mbackslash{}'\mbackslash{}' FormSafe2`` 0
THEN Try (Fold `FormSafe2` 0)
THEN Try (Fold `FormSafe1\mbackslash{}'\mbackslash{}'` 0)
THEN Try (QuickAuto))
Home
Index