Step
*
of Lemma
assert-eq_mFO
No Annotations
∀[x,y:mFOL()]. uiff(↑eq_mFO(x;y);x = y ∈ mFOL())
BY
{ (RepeatFor 2 ((D 0 THENA Auto))
THEN RepeatFor 2 (MoveToConcl (-1))
THEN (BLemma `mFOL-induction` THENA Auto)
THEN (UnivCD THENA Auto)
THEN MoveToConcl (-1)
THEN (BLemma `mFOL-induction` THENA Auto)
THEN (UnivCD THENA Auto)
THEN RepUR ``eq_mFO mFO-equal`` 0⋅
THEN RW (AddrC [1;1] UnfoldTopAbC) 0
THEN Reduce 0
THEN Try (Complete ((RepUR ``assert`` 0 THEN Auto)))) }
1
1. name : Atom
2. vars : ℤ List
3. n1 : Atom
4. v1 : ℤ List
⊢ uiff(↑(name =a n1 ∧b (list-deq(IntDeq) vars v1));name(vars) = n1(v1) ∈ mFOL())
2
1. knd : Atom
2. left : mFOL()
3. right : mFOL()
4. ∀y:mFOL(). uiff(↑eq_mFO(left;y);left = y ∈ mFOL())
5. ∀y:mFOL(). uiff(↑eq_mFO(right;y);right = y ∈ mFOL())
6. k1 : Atom
7. l1 : mFOL()
8. r1 : mFOL()
9. uiff(↑eq_mFO(mFOconnect(knd;left;right);l1);mFOconnect(knd;left;right) = l1 ∈ mFOL())
10. uiff(↑eq_mFO(mFOconnect(knd;left;right);r1);mFOconnect(knd;left;right) = r1 ∈ mFOL())
⊢ uiff(↑if k1 =a knd
then (mFOL_ind(left;
mFOatomic(name,vars)
⇒ λy.let R',vars' = dest-atomic(y) in
name =a R' ∧b (list-deq(IntDeq) vars vars');
mFOconnect(knd,left,right)
⇒ rec1,rec2.λy.let a',b' = dest-knd(y) in
(rec1 a') ∧b (rec2 b');
mFOquant(isall,var,body)
⇒ rec3.λy.let w,b' = dest-if isall then all else exists(y); in
(var =z w) ∧b (rec3 b'))
l1)
∧b (mFOL_ind(right;
mFOatomic(name,vars)
⇒ λy.let R',vars' = dest-atomic(y) in
name =a R' ∧b (list-deq(IntDeq) vars vars');
mFOconnect(knd,left,right)
⇒ rec1,rec2.λy.let a',b' = dest-knd(y) in
(rec1 a') ∧b (rec2 b');
mFOquant(isall,var,body)
⇒ rec3.λy.let w,b' = dest-if isall then all else exists(y); in
(var =z w) ∧b (rec3 b'))
r1)
else inr ⋅
fi ;mFOconnect(knd;left;right) = mFOconnect(k1;l1;r1) ∈ mFOL())
3
1. isall : 𝔹
2. var : ℤ
3. body : mFOL()
4. ∀y:mFOL(). uiff(↑eq_mFO(body;y);body = y ∈ mFOL())
5. i1 : 𝔹
6. v1 : ℤ
7. b1 : mFOL()
8. uiff(↑eq_mFO(mFOquant(isall;var;body);b1);mFOquant(isall;var;body) = b1 ∈ mFOL())
⊢ uiff(↑if i1 =b isall
then (var =z v1)
∧b (mFOL_ind(body;
mFOatomic(name,vars)
⇒ λy.let R',vars' = dest-atomic(y) in
name =a R' ∧b (list-deq(IntDeq) vars vars');
mFOconnect(knd,left,right)
⇒ rec1,rec2.λy.let a',b' = dest-knd(y) in
(rec1 a') ∧b (rec2 b');
mFOquant(isall,var,body)
⇒ rec3.λy.let w,b' = dest-if isall then all else exists(y); in
(var =z w) ∧b (rec3 b'))
b1)
else inr ⋅
fi ;mFOquant(isall;var;body) = mFOquant(i1;v1;b1) ∈ mFOL())
Latex:
Latex:
No Annotations
\mforall{}[x,y:mFOL()]. uiff(\muparrow{}eq\_mFO(x;y);x = y)
By
Latex:
(RepeatFor 2 ((D 0 THENA Auto))
THEN RepeatFor 2 (MoveToConcl (-1))
THEN (BLemma `mFOL-induction` THENA Auto)
THEN (UnivCD THENA Auto)
THEN MoveToConcl (-1)
THEN (BLemma `mFOL-induction` THENA Auto)
THEN (UnivCD THENA Auto)
THEN RepUR ``eq\_mFO mFO-equal`` 0\mcdot{}
THEN RW (AddrC [1;1] UnfoldTopAbC) 0
THEN Reduce 0
THEN Try (Complete ((RepUR ``assert`` 0 THEN Auto))))
Home
Index