DEFINITION csubst0_drop_eq_back()
TYPE =
∀n:nat
.∀c1:C
.∀c2:C
.∀v:T
.csubst0 n v c1 c2
→∀e:C
.drop n O c2 e
→(or4
drop n O c1 e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop n O c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop n O c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop n O c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2)
BODY =
assume n: nat
we proceed by induction on n to prove
∀c1:C
.∀c2:C
.∀v:T
.csubst0 n v c1 c2
→∀e:C
.drop n O c2 e
→(or4
drop n O c1 e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop n O c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop n O c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop n O c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2)
case O : ⇒
the thesis becomes
∀c1:C
.∀c2:C
.∀v:T
.csubst0 O v c1 c2
→∀e:C
.drop O O c2 e
→(or4
drop O O c1 e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop O O c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop O O c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop O O c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2)
assume c1: C
assume c2: C
assume v: T
suppose H: csubst0 O v c1 c2
assume e: C
suppose H0: drop O O c2 e
by (drop_gen_refl . . H0)
we proved eq C c2 e
we proceed by induction on the previous result to prove
or4
drop O O c1 e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop O O c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop O O c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop O O c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case refl_equal : ⇒
the thesis becomes
or4
drop O O c1 c2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C c2 (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop O O c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c2 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop O O c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C c2 (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop O O c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
assume y: nat
suppose H1: csubst0 y v c1 c2
we proceed by induction on H1 to prove
eq nat y O
→(or4
drop y y c1 c2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C c2 (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop y y c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 y v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c2 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop y y c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 y v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C c2 (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop y y c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 y v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 y v e1 e2)
case csubst0_snd ⇒
we need to prove
∀k:K
.∀i:nat
.∀v0:T
.∀u1:T
.∀u2:T
.subst0 i v0 u1 u2
→∀c:C
.eq nat (s k i) O
→(or4
drop (s k i) (s k i) (CHead c k u1) (CHead c k u2)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c k u2) (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop (s k i) (s k i) (CHead c k u1) (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 (s k i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c k u2) (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (s k i) (s k i) (CHead c k u1) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s k i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c k u2) (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop (s k i) (s k i) (CHead c k u1) (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s k i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s k i) v0 e1 e2)
assume k: K
we proceed by induction on k to prove
∀i:nat
.∀v0:T
.∀u1:T
.∀u2:T
.subst0 i v0 u1 u2
→∀c:C
.eq nat (s k i) O
→(or4
drop (s k i) (s k i) (CHead c k u1) (CHead c k u2)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c k u2) (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop (s k i) (s k i) (CHead c k u1) (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 (s k i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c k u2) (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (s k i) (s k i) (CHead c k u1) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s k i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c k u2) (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop (s k i) (s k i) (CHead c k u1) (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s k i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s k i) v0 e1 e2)
case Bind : b:B ⇒
the thesis becomes
∀i:nat
.∀v0:T
.∀u1:T
.∀u2:T
.subst0 i v0 u1 u2
→∀c:C
.eq nat (s (Bind b) i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead c (Bind b) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2)
assume i: nat
assume v0: T
assume u1: T
assume u2: T
suppose : subst0 i v0 u1 u2
assume c: C
we must prove
eq nat (s (Bind b) i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead c (Bind b) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2)
or equivalently
eq nat (S i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead c (Bind b) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2)
suppose H3: eq nat (S i) O
(H4)
we proceed by induction on H3 to prove <λ:nat.Prop> CASE O OF O⇒False | S ⇒True
case refl_equal : ⇒
the thesis becomes <λ:nat.Prop> CASE S i OF O⇒False | S ⇒True
consider I
we proved True
<λ:nat.Prop> CASE S i OF O⇒False | S ⇒True
<λ:nat.Prop> CASE O OF O⇒False | S ⇒True
end of H4
consider H4
we proved <λ:nat.Prop> CASE O OF O⇒False | S ⇒True
that is equivalent to False
we proceed by induction on the previous result to prove
or4
drop (S i) (S i) (CHead c (Bind b) u1) (CHead c (Bind b) u2)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop (S i) (S i) (CHead c (Bind b) u1) (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 (S i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C.λ:C.λu:T.drop (S i) (S i) (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (S i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C.λ:C.λu3:T.λ:T.drop (S i) (S i) (CHead c (Bind b) u1) (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (S i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (S i) v0 e1 e2
we proved
or4
drop (S i) (S i) (CHead c (Bind b) u1) (CHead c (Bind b) u2)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop (S i) (S i) (CHead c (Bind b) u1) (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 (S i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C.λ:C.λu:T.drop (S i) (S i) (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (S i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C.λ:C.λu3:T.λ:T.drop (S i) (S i) (CHead c (Bind b) u1) (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (S i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (S i) v0 e1 e2
that is equivalent to
or4
drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead c (Bind b) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
we proved
eq nat (S i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead c (Bind b) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2)
that is equivalent to
eq nat (s (Bind b) i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead c (Bind b) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2)
∀i:nat
.∀v0:T
.∀u1:T
.∀u2:T
.subst0 i v0 u1 u2
→∀c:C
.eq nat (s (Bind b) i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead c (Bind b) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2)
case Flat : f:F ⇒
the thesis becomes
∀i:nat
.∀v0:T
.∀u1:T
.∀u2:T
.∀H2:subst0 i v0 u1 u2
.∀c:C
.eq nat (s (Flat f) i) O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead c (Flat f) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
assume i: nat
assume v0: T
assume u1: T
assume u2: T
suppose H2: subst0 i v0 u1 u2
assume c: C
we must prove
eq nat (s (Flat f) i) O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead c (Flat f) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
or equivalently
eq nat i O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead c (Flat f) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
suppose H3: eq nat i O
(H4)
we proceed by induction on H3 to prove subst0 O v0 u1 u2
case refl_equal : ⇒
the thesis becomes the hypothesis H2
subst0 O v0 u1 u2
end of H4
(h1)
by (refl_equal . .)
eq C (CHead c (Flat f) u2) (CHead c (Flat f) u2)
end of h1
(h2)
by (drop_refl .)
drop O O (CHead c (Flat f) u1) (CHead c (Flat f) u1)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H4)
we proved
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e0 (Flat f0) u4)
λf0:F.λe0:C.λu3:T.λ:T.drop O O (CHead c (Flat f) u1) (CHead e0 (Flat f0) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 O v0 u3 u4
by (or4_intro1 . . . . previous)
we proved
or4
drop O O (CHead c (Flat f) u1) (CHead c (Flat f) u2)
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e0 (Flat f0) u4)
λf0:F.λe0:C.λu3:T.λ:T.drop O O (CHead c (Flat f) u1) (CHead e0 (Flat f0) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 O v0 u3 u4
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop O O (CHead c (Flat f) u1) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f0) u4)
λf0:F.λe1:C.λ:C.λu3:T.λ:T.drop O O (CHead c (Flat f) u1) (CHead e1 (Flat f0) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 O v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v0 e1 e2
by (eq_ind_r . . . previous . H3)
we proved
or4
drop i i (CHead c (Flat f) u1) (CHead c (Flat f) u2)
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e0 (Flat f0) u4)
λf0:F.λe0:C.λu3:T.λ:T.drop i i (CHead c (Flat f) u1) (CHead e0 (Flat f0) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop i i (CHead c (Flat f) u1) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f0) u4)
λf0:F.λe1:C.λ:C.λu3:T.λ:T.drop i i (CHead c (Flat f) u1) (CHead e1 (Flat f0) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2
that is equivalent to
or4
drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead c (Flat f) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
we proved
eq nat i O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead c (Flat f) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
that is equivalent to
eq nat (s (Flat f) i) O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead c (Flat f) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
∀i:nat
.∀v0:T
.∀u1:T
.∀u2:T
.∀H2:subst0 i v0 u1 u2
.∀c:C
.eq nat (s (Flat f) i) O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead c (Flat f) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c (Flat f) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
we proved
∀i:nat
.∀v0:T
.∀u1:T
.∀u2:T
.subst0 i v0 u1 u2
→∀c:C
.eq nat (s k i) O
→(or4
drop (s k i) (s k i) (CHead c k u1) (CHead c k u2)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c k u2) (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop (s k i) (s k i) (CHead c k u1) (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 (s k i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c k u2) (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (s k i) (s k i) (CHead c k u1) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s k i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c k u2) (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop (s k i) (s k i) (CHead c k u1) (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s k i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s k i) v0 e1 e2)
∀k:K
.∀i:nat
.∀v0:T
.∀u1:T
.∀u2:T
.subst0 i v0 u1 u2
→∀c:C
.eq nat (s k i) O
→(or4
drop (s k i) (s k i) (CHead c k u1) (CHead c k u2)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c k u2) (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop (s k i) (s k i) (CHead c k u1) (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 (s k i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c k u2) (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (s k i) (s k i) (CHead c k u1) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s k i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c k u2) (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop (s k i) (s k i) (CHead c k u1) (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s k i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s k i) v0 e1 e2)
case csubst0_fst ⇒
we need to prove
∀k:K
.∀i:nat
.∀c3:C
.∀c4:C
.∀v0:T
.csubst0 i v0 c3 c4
→(eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C c4 (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop i i c3 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C c4 (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop i i c3 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
→∀u:T
.eq nat (s k i) O
→(or4
drop (s k i) (s k i) (CHead c3 k u) (CHead c4 k u)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 k u) (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (s k i) (s k i) (CHead c3 k u) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 (s k i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 k u) (CHead e2 (Flat f) u0)
λf:F.λe1:C.λ:C.λu0:T.drop (s k i) (s k i) (CHead c3 k u) (CHead e1 (Flat f) u0)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s k i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 k u) (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (s k i) (s k i) (CHead c3 k u) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s k i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s k i) v0 e1 e2))
assume k: K
we proceed by induction on k to prove
∀i:nat
.∀c3:C
.∀c4:C
.∀v0:T
.csubst0 i v0 c3 c4
→(eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C c4 (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop i i c3 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C c4 (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop i i c3 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
→∀u:T
.eq nat (s k i) O
→(or4
drop (s k i) (s k i) (CHead c3 k u) (CHead c4 k u)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 k u) (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (s k i) (s k i) (CHead c3 k u) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 (s k i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 k u) (CHead e2 (Flat f) u0)
λf:F.λe1:C.λ:C.λu0:T.drop (s k i) (s k i) (CHead c3 k u) (CHead e1 (Flat f) u0)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s k i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 k u) (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (s k i) (s k i) (CHead c3 k u) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s k i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s k i) v0 e1 e2))
case Bind : b:B ⇒
the thesis becomes
∀i:nat
.∀c3:C
.∀c4:C
.∀v0:T
.csubst0 i v0 c3 c4
→(eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C c4 (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop i i c3 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C c4 (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop i i c3 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
→∀u:T
.eq nat (s (Bind b) i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead c4 (Bind b) u
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e0 (Flat f) u2)
λf:F
.λe0:C
.λu1:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e0 (Flat f) u1
λ:F.λ:C.λu1:T.λu2:T.subst0 (s (Bind b) i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u0)
λf:F
.λe1:C
.λ:C
.λu0:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e1 (Flat f) u0
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u2)
λf:F
.λe1:C
.λ:C
.λu1:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e1 (Flat f) u1
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s (Bind b) i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2))
assume i: nat
assume c3: C
assume c4: C
assume v0: T
suppose : csubst0 i v0 c3 c4
suppose :
eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C c4 (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop i i c3 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C c4 (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop i i c3 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
assume u: T
we must prove
eq nat (s (Bind b) i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead c4 (Bind b) u
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e0 (Flat f) u2)
λf:F
.λe0:C
.λu1:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e0 (Flat f) u1
λ:F.λ:C.λu1:T.λu2:T.subst0 (s (Bind b) i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u0)
λf:F
.λe1:C
.λ:C
.λu0:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e1 (Flat f) u0
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u2)
λf:F
.λe1:C
.λ:C
.λu1:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e1 (Flat f) u1
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s (Bind b) i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2)
or equivalently
eq nat (S i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead c4 (Bind b) u
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e0 (Flat f) u2)
λf:F
.λe0:C
.λu1:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e0 (Flat f) u1
λ:F.λ:C.λu1:T.λu2:T.subst0 (s (Bind b) i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u0)
λf:F
.λe1:C
.λ:C
.λu0:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e1 (Flat f) u0
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u2)
λf:F
.λe1:C
.λ:C
.λu1:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e1 (Flat f) u1
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s (Bind b) i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2)
suppose H4: eq nat (S i) O
(H5)
we proceed by induction on H4 to prove <λ:nat.Prop> CASE O OF O⇒False | S ⇒True
case refl_equal : ⇒
the thesis becomes <λ:nat.Prop> CASE S i OF O⇒False | S ⇒True
consider I
we proved True
<λ:nat.Prop> CASE S i OF O⇒False | S ⇒True
<λ:nat.Prop> CASE O OF O⇒False | S ⇒True
end of H5
consider H5
we proved <λ:nat.Prop> CASE O OF O⇒False | S ⇒True
that is equivalent to False
we proceed by induction on the previous result to prove
or4
drop (S i) (S i) (CHead c3 (Bind b) u) (CHead c4 (Bind b) u)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S i) (S i) (CHead c3 (Bind b) u) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 (S i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u0)
λf:F.λe1:C.λ:C.λu0:T.drop (S i) (S i) (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (S i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u2)
λf:F
.λe1:C.λ:C.λu1:T.λ:T.drop (S i) (S i) (CHead c3 (Bind b) u) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (S i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (S i) v0 e1 e2
we proved
or4
drop (S i) (S i) (CHead c3 (Bind b) u) (CHead c4 (Bind b) u)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S i) (S i) (CHead c3 (Bind b) u) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 (S i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u0)
λf:F.λe1:C.λ:C.λu0:T.drop (S i) (S i) (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (S i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u2)
λf:F
.λe1:C.λ:C.λu1:T.λ:T.drop (S i) (S i) (CHead c3 (Bind b) u) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (S i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (S i) v0 e1 e2
that is equivalent to
or4
drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead c4 (Bind b) u
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e0 (Flat f) u2)
λf:F
.λe0:C
.λu1:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e0 (Flat f) u1
λ:F.λ:C.λu1:T.λu2:T.subst0 (s (Bind b) i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u0)
λf:F
.λe1:C
.λ:C
.λu0:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e1 (Flat f) u0
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u2)
λf:F
.λe1:C
.λ:C
.λu1:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e1 (Flat f) u1
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s (Bind b) i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
we proved
eq nat (S i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead c4 (Bind b) u
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e0 (Flat f) u2)
λf:F
.λe0:C
.λu1:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e0 (Flat f) u1
λ:F.λ:C.λu1:T.λu2:T.subst0 (s (Bind b) i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u0)
λf:F
.λe1:C
.λ:C
.λu0:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e1 (Flat f) u0
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u2)
λf:F
.λe1:C
.λ:C
.λu1:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e1 (Flat f) u1
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s (Bind b) i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2)
that is equivalent to
eq nat (s (Bind b) i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead c4 (Bind b) u
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e0 (Flat f) u2)
λf:F
.λe0:C
.λu1:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e0 (Flat f) u1
λ:F.λ:C.λu1:T.λu2:T.subst0 (s (Bind b) i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u0)
λf:F
.λe1:C
.λ:C
.λu0:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e1 (Flat f) u0
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u2)
λf:F
.λe1:C
.λ:C
.λu1:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e1 (Flat f) u1
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s (Bind b) i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2)
∀i:nat
.∀c3:C
.∀c4:C
.∀v0:T
.csubst0 i v0 c3 c4
→(eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C c4 (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop i i c3 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C c4 (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop i i c3 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
→∀u:T
.eq nat (s (Bind b) i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead c4 (Bind b) u
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e0 (Flat f) u2)
λf:F
.λe0:C
.λu1:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e0 (Flat f) u1
λ:F.λ:C.λu1:T.λu2:T.subst0 (s (Bind b) i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u0)
λf:F
.λe1:C
.λ:C
.λu0:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e1 (Flat f) u0
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Bind b) u) (CHead e2 (Flat f) u2)
λf:F
.λe1:C
.λ:C
.λu1:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u
CHead e1 (Flat f) u1
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s (Bind b) i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2))
case Flat : f:F ⇒
the thesis becomes
∀i:nat
.∀c3:C
.∀c4:C
.∀v0:T
.∀H2:csubst0 i v0 c3 c4
.∀H3:eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C c4 (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop i i c3 (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C c4 (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop i i c3 (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
.∀u:T
.eq nat (s (Flat f) i) O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead c4 (Flat f) u
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e0 (Flat f) u2)
λf:F
.λe0:C
.λu1:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e0 (Flat f) u1
λ:F.λ:C.λu1:T.λu2:T.subst0 (s (Flat f) i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f) u0)
λf:F
.λe1:C
.λ:C
.λu0:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e1 (Flat f) u0
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f) u2)
λf:F
.λe1:C
.λ:C
.λu1:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e1 (Flat f) u1
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s (Flat f) i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
assume i: nat
assume c3: C
assume c4: C
assume v0: T
suppose H2: csubst0 i v0 c3 c4
suppose H3:
eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C c4 (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop i i c3 (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C c4 (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop i i c3 (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
assume u: T
we must prove
eq nat (s (Flat f) i) O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead c4 (Flat f) u
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e0 (Flat f) u2)
λf:F
.λe0:C
.λu1:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e0 (Flat f) u1
λ:F.λ:C.λu1:T.λu2:T.subst0 (s (Flat f) i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f) u0)
λf:F
.λe1:C
.λ:C
.λu0:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e1 (Flat f) u0
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f) u2)
λf:F
.λe1:C
.λ:C
.λu1:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e1 (Flat f) u1
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s (Flat f) i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
or equivalently
eq nat i O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead c4 (Flat f) u
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e0 (Flat f) u2)
λf:F
.λe0:C
.λu1:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e0 (Flat f) u1
λ:F.λ:C.λu1:T.λu2:T.subst0 (s (Flat f) i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f) u0)
λf:F
.λe1:C
.λ:C
.λu0:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e1 (Flat f) u0
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f) u2)
λf:F
.λe1:C
.λ:C
.λu1:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e1 (Flat f) u1
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s (Flat f) i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
suppose H4: eq nat i O
(H6)
we proceed by induction on H4 to prove csubst0 O v0 c3 c4
case refl_equal : ⇒
the thesis becomes the hypothesis H2
csubst0 O v0 c3 c4
end of H6
(h1)
by (refl_equal . .)
eq C (CHead c4 (Flat f) u) (CHead c4 (Flat f) u)
end of h1
(h2)
by (drop_refl .)
drop O O (CHead c3 (Flat f) u) (CHead c3 (Flat f) u)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H6)
we proved
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f0) u0)
λf0:F.λe1:C.λ:C.λu0:T.drop O O (CHead c3 (Flat f) u) (CHead e1 (Flat f0) u0)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v0 e1 e2
by (or4_intro2 . . . . previous)
we proved
or4
drop O O (CHead c3 (Flat f) u) (CHead c4 (Flat f) u)
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop O O (CHead c3 (Flat f) u) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v0 u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f0) u0)
λf0:F.λe1:C.λ:C.λu0:T.drop O O (CHead c3 (Flat f) u) (CHead e1 (Flat f0) u0)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop O O (CHead c3 (Flat f) u) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v0 e1 e2
by (eq_ind_r . . . previous . H4)
we proved
or4
drop i i (CHead c3 (Flat f) u) (CHead c4 (Flat f) u)
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop i i (CHead c3 (Flat f) u) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f0) u0)
λf0:F.λe1:C.λ:C.λu0:T.drop i i (CHead c3 (Flat f) u) (CHead e1 (Flat f0) u0)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop i i (CHead c3 (Flat f) u) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2
that is equivalent to
or4
drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead c4 (Flat f) u
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e0 (Flat f) u2)
λf:F
.λe0:C
.λu1:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e0 (Flat f) u1
λ:F.λ:C.λu1:T.λu2:T.subst0 (s (Flat f) i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f) u0)
λf:F
.λe1:C
.λ:C
.λu0:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e1 (Flat f) u0
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f) u2)
λf:F
.λe1:C
.λ:C
.λu1:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e1 (Flat f) u1
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s (Flat f) i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
we proved
eq nat i O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead c4 (Flat f) u
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e0 (Flat f) u2)
λf:F
.λe0:C
.λu1:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e0 (Flat f) u1
λ:F.λ:C.λu1:T.λu2:T.subst0 (s (Flat f) i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f) u0)
λf:F
.λe1:C
.λ:C
.λu0:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e1 (Flat f) u0
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f) u2)
λf:F
.λe1:C
.λ:C
.λu1:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e1 (Flat f) u1
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s (Flat f) i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
that is equivalent to
eq nat (s (Flat f) i) O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead c4 (Flat f) u
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e0 (Flat f) u2)
λf:F
.λe0:C
.λu1:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e0 (Flat f) u1
λ:F.λ:C.λu1:T.λu2:T.subst0 (s (Flat f) i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f) u0)
λf:F
.λe1:C
.λ:C
.λu0:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e1 (Flat f) u0
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f) u2)
λf:F
.λe1:C
.λ:C
.λu1:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e1 (Flat f) u1
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s (Flat f) i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
∀i:nat
.∀c3:C
.∀c4:C
.∀v0:T
.∀H2:csubst0 i v0 c3 c4
.∀H3:eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C c4 (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop i i c3 (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C c4 (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop i i c3 (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
.∀u:T
.eq nat (s (Flat f) i) O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead c4 (Flat f) u
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e0 (Flat f) u2)
λf:F
.λe0:C
.λu1:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e0 (Flat f) u1
λ:F.λ:C.λu1:T.λu2:T.subst0 (s (Flat f) i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f) u0)
λf:F
.λe1:C
.λ:C
.λu0:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e1 (Flat f) u0
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f) u2)
λf:F
.λe1:C
.λ:C
.λu1:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u
CHead e1 (Flat f) u1
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s (Flat f) i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
we proved
∀i:nat
.∀c3:C
.∀c4:C
.∀v0:T
.csubst0 i v0 c3 c4
→(eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C c4 (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop i i c3 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C c4 (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop i i c3 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
→∀u:T
.eq nat (s k i) O
→(or4
drop (s k i) (s k i) (CHead c3 k u) (CHead c4 k u)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 k u) (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (s k i) (s k i) (CHead c3 k u) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 (s k i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 k u) (CHead e2 (Flat f) u0)
λf:F.λe1:C.λ:C.λu0:T.drop (s k i) (s k i) (CHead c3 k u) (CHead e1 (Flat f) u0)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s k i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 k u) (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (s k i) (s k i) (CHead c3 k u) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s k i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s k i) v0 e1 e2))
∀k:K
.∀i:nat
.∀c3:C
.∀c4:C
.∀v0:T
.csubst0 i v0 c3 c4
→(eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C c4 (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop i i c3 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C c4 (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop i i c3 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 i v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
→∀u:T
.eq nat (s k i) O
→(or4
drop (s k i) (s k i) (CHead c3 k u) (CHead c4 k u)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead c4 k u) (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (s k i) (s k i) (CHead c3 k u) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 (s k i) v0 u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu0:T.eq C (CHead c4 k u) (CHead e2 (Flat f) u0)
λf:F.λe1:C.λ:C.λu0:T.drop (s k i) (s k i) (CHead c3 k u) (CHead e1 (Flat f) u0)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s k i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead c4 k u) (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (s k i) (s k i) (CHead c3 k u) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 (s k i) v0 u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s k i) v0 e1 e2))
case csubst0_both ⇒
we need to prove
∀k:K
.∀i:nat
.∀v0:T
.∀u1:T
.∀u2:T
.subst0 i v0 u1 u2
→∀c3:C
.∀c4:C
.csubst0 i v0 c3 c4
→(eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C c4 (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop i i c3 (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C c4 (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop i i c3 (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
→(eq nat (s k i) O
→(or4
drop (s k i) (s k i) (CHead c3 k u1) (CHead c4 k u2)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 k u2) (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop (s k i) (s k i) (CHead c3 k u1) (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 (s k i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 k u2) (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (s k i) (s k i) (CHead c3 k u1) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s k i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 k u2) (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop (s k i) (s k i) (CHead c3 k u1) (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s k i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s k i) v0 e1 e2)))
assume k: K
we proceed by induction on k to prove
∀i:nat
.∀v0:T
.∀u1:T
.∀u2:T
.subst0 i v0 u1 u2
→∀c3:C
.∀c4:C
.csubst0 i v0 c3 c4
→(eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C c4 (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop i i c3 (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C c4 (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop i i c3 (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
→(eq nat (s k i) O
→(or4
drop (s k i) (s k i) (CHead c3 k u1) (CHead c4 k u2)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 k u2) (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop (s k i) (s k i) (CHead c3 k u1) (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 (s k i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 k u2) (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (s k i) (s k i) (CHead c3 k u1) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s k i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 k u2) (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop (s k i) (s k i) (CHead c3 k u1) (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s k i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s k i) v0 e1 e2)))
case Bind : b:B ⇒
the thesis becomes
∀i:nat
.∀v0:T
.∀u1:T
.∀u2:T
.subst0 i v0 u1 u2
→∀c3:C
.∀c4:C
.csubst0 i v0 c3 c4
→(eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C c4 (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop i i c3 (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C c4 (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop i i c3 (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
→(eq nat (s (Bind b) i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead c4 (Bind b) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2)))
assume i: nat
assume v0: T
assume u1: T
assume u2: T
suppose : subst0 i v0 u1 u2
assume c3: C
assume c4: C
suppose : csubst0 i v0 c3 c4
suppose :
eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C c4 (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop i i c3 (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C c4 (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop i i c3 (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
we must prove
eq nat (s (Bind b) i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead c4 (Bind b) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2)
or equivalently
eq nat (S i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead c4 (Bind b) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2)
suppose H5: eq nat (S i) O
(H6)
we proceed by induction on H5 to prove <λ:nat.Prop> CASE O OF O⇒False | S ⇒True
case refl_equal : ⇒
the thesis becomes <λ:nat.Prop> CASE S i OF O⇒False | S ⇒True
consider I
we proved True
<λ:nat.Prop> CASE S i OF O⇒False | S ⇒True
<λ:nat.Prop> CASE O OF O⇒False | S ⇒True
end of H6
consider H6
we proved <λ:nat.Prop> CASE O OF O⇒False | S ⇒True
that is equivalent to False
we proceed by induction on the previous result to prove
or4
drop (S i) (S i) (CHead c3 (Bind b) u1) (CHead c4 (Bind b) u2)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop (S i) (S i) (CHead c3 (Bind b) u1) (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 (S i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C.λ:C.λu:T.drop (S i) (S i) (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (S i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop (S i) (S i) (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (S i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (S i) v0 e1 e2
we proved
or4
drop (S i) (S i) (CHead c3 (Bind b) u1) (CHead c4 (Bind b) u2)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop (S i) (S i) (CHead c3 (Bind b) u1) (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 (S i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C.λ:C.λu:T.drop (S i) (S i) (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (S i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop (S i) (S i) (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (S i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (S i) v0 e1 e2
that is equivalent to
or4
drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead c4 (Bind b) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
we proved
eq nat (S i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead c4 (Bind b) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2)
that is equivalent to
eq nat (s (Bind b) i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead c4 (Bind b) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2)
∀i:nat
.∀v0:T
.∀u1:T
.∀u2:T
.subst0 i v0 u1 u2
→∀c3:C
.∀c4:C
.csubst0 i v0 c3 c4
→(eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C c4 (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop i i c3 (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C c4 (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop i i c3 (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
→(eq nat (s (Bind b) i) O
→(or4
drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead c4 (Bind b) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Bind b) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Bind b) i
s (Bind b) i
CHead c3 (Bind b) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Bind b) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Bind b) i) v0 e1 e2)))
case Flat : f:F ⇒
the thesis becomes
∀i:nat
.∀v0:T
.∀u1:T
.∀u2:T
.∀H2:subst0 i v0 u1 u2
.∀c3:C
.∀c4:C
.∀H3:csubst0 i v0 c3 c4
.∀H4:eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu4:T.eq C c4 (CHead e0 (Flat f0) u4)
λf0:F.λe0:C.λu3:T.λ:T.drop i i c3 (CHead e0 (Flat f0) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu4:T.eq C c4 (CHead e2 (Flat f0) u4)
λf0:F.λe1:C.λ:C.λu3:T.λ:T.drop i i c3 (CHead e1 (Flat f0) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
.eq nat (s (Flat f) i) O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead c4 (Flat f) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
assume i: nat
assume v0: T
assume u1: T
assume u2: T
suppose H2: subst0 i v0 u1 u2
assume c3: C
assume c4: C
suppose H3: csubst0 i v0 c3 c4
suppose H4:
eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu4:T.eq C c4 (CHead e0 (Flat f0) u4)
λf0:F.λe0:C.λu3:T.λ:T.drop i i c3 (CHead e0 (Flat f0) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu4:T.eq C c4 (CHead e2 (Flat f0) u4)
λf0:F.λe1:C.λ:C.λu3:T.λ:T.drop i i c3 (CHead e1 (Flat f0) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
we must prove
eq nat (s (Flat f) i) O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead c4 (Flat f) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
or equivalently
eq nat i O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead c4 (Flat f) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
suppose H5: eq nat i O
(H7)
we proceed by induction on H5 to prove csubst0 O v0 c3 c4
case refl_equal : ⇒
the thesis becomes the hypothesis H3
csubst0 O v0 c3 c4
end of H7
(H8)
we proceed by induction on H5 to prove subst0 O v0 u1 u2
case refl_equal : ⇒
the thesis becomes the hypothesis H2
subst0 O v0 u1 u2
end of H8
(h1)
by (refl_equal . .)
eq C (CHead c4 (Flat f) u2) (CHead c4 (Flat f) u2)
end of h1
(h2)
by (drop_refl .)
drop O O (CHead c3 (Flat f) u1) (CHead c3 (Flat f) u1)
end of h2
by (ex4_5_intro . . . . . . . . . . . . . . h1 h2 H8 H7)
we proved
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f0) u4)
λf0:F.λe1:C.λ:C.λu3:T.λ:T.drop O O (CHead c3 (Flat f) u1) (CHead e1 (Flat f0) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 O v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v0 e1 e2
by (or4_intro3 . . . . previous)
we proved
or4
drop O O (CHead c3 (Flat f) u1) (CHead c4 (Flat f) u2)
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e0 (Flat f0) u4)
λf0:F.λe0:C.λu3:T.λ:T.drop O O (CHead c3 (Flat f) u1) (CHead e0 (Flat f0) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 O v0 u3 u4
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop O O (CHead c3 (Flat f) u1) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f0) u4)
λf0:F.λe1:C.λ:C.λu3:T.λ:T.drop O O (CHead c3 (Flat f) u1) (CHead e1 (Flat f0) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 O v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v0 e1 e2
by (eq_ind_r . . . previous . H5)
we proved
or4
drop i i (CHead c3 (Flat f) u1) (CHead c4 (Flat f) u2)
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e0 (Flat f0) u4)
λf0:F.λe0:C.λu3:T.λ:T.drop i i (CHead c3 (Flat f) u1) (CHead e0 (Flat f0) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop i i (CHead c3 (Flat f) u1) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f0) u4)
λf0:F.λe1:C.λ:C.λu3:T.λ:T.drop i i (CHead c3 (Flat f) u1) (CHead e1 (Flat f0) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2
that is equivalent to
or4
drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead c4 (Flat f) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
we proved
eq nat i O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead c4 (Flat f) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
that is equivalent to
eq nat (s (Flat f) i) O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead c4 (Flat f) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
∀i:nat
.∀v0:T
.∀u1:T
.∀u2:T
.∀H2:subst0 i v0 u1 u2
.∀c3:C
.∀c4:C
.∀H3:csubst0 i v0 c3 c4
.∀H4:eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu4:T.eq C c4 (CHead e0 (Flat f0) u4)
λf0:F.λe0:C.λu3:T.λ:T.drop i i c3 (CHead e0 (Flat f0) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu4:T.eq C c4 (CHead e2 (Flat f0) u4)
λf0:F.λe1:C.λ:C.λu3:T.λ:T.drop i i c3 (CHead e1 (Flat f0) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
.eq nat (s (Flat f) i) O
→(or4
drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead c4 (Flat f) u2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e0 (Flat f) u4)
λf:F
.λe0:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e0 (Flat f) u3
λ:F.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f) u)
λf:F
.λe1:C
.λ:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e1 (Flat f) u
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s (Flat f) i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f) u4)
λf:F
.λe1:C
.λ:C
.λu3:T
.λ:T
.drop
s (Flat f) i
s (Flat f) i
CHead c3 (Flat f) u1
CHead e1 (Flat f) u3
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s (Flat f) i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s (Flat f) i) v0 e1 e2)
we proved
∀i:nat
.∀v0:T
.∀u1:T
.∀u2:T
.subst0 i v0 u1 u2
→∀c3:C
.∀c4:C
.csubst0 i v0 c3 c4
→(eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C c4 (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop i i c3 (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C c4 (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop i i c3 (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
→(eq nat (s k i) O
→(or4
drop (s k i) (s k i) (CHead c3 k u1) (CHead c4 k u2)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 k u2) (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop (s k i) (s k i) (CHead c3 k u1) (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 (s k i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 k u2) (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (s k i) (s k i) (CHead c3 k u1) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s k i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 k u2) (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop (s k i) (s k i) (CHead c3 k u1) (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s k i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s k i) v0 e1 e2)))
∀k:K
.∀i:nat
.∀v0:T
.∀u1:T
.∀u2:T
.subst0 i v0 u1 u2
→∀c3:C
.∀c4:C
.csubst0 i v0 c3 c4
→(eq nat i O
→(or4
drop i i c3 c4
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C c4 (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop i i c3 (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c4 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop i i c3 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C c4 (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop i i c3 (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 i v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 i v0 e1 e2)
→(eq nat (s k i) O
→(or4
drop (s k i) (s k i) (CHead c3 k u1) (CHead c4 k u2)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu4:T.eq C (CHead c4 k u2) (CHead e0 (Flat f) u4)
λf:F.λe0:C.λu3:T.λ:T.drop (s k i) (s k i) (CHead c3 k u1) (CHead e0 (Flat f) u3)
λ:F.λ:C.λu3:T.λu4:T.subst0 (s k i) v0 u3 u4
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead c4 k u2) (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (s k i) (s k i) (CHead c3 k u1) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (s k i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu4:T.eq C (CHead c4 k u2) (CHead e2 (Flat f) u4)
λf:F.λe1:C.λ:C.λu3:T.λ:T.drop (s k i) (s k i) (CHead c3 k u1) (CHead e1 (Flat f) u3)
λ:F.λ:C.λ:C.λu3:T.λu4:T.subst0 (s k i) v0 u3 u4
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s k i) v0 e1 e2)))
we proved
eq nat y O
→(or4
drop y y c1 c2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C c2 (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop y y c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 y v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c2 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop y y c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 y v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C c2 (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop y y c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 y v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 y v e1 e2)
we proved
∀y:nat
.csubst0 y v c1 c2
→(eq nat y O
→(or4
drop y y c1 c2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C c2 (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop y y c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 y v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c2 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop y y c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 y v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C c2 (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop y y c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 y v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 y v e1 e2))
by (insert_eq . . . . previous H)
or4
drop O O c1 c2
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C c2 (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop O O c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C c2 (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop O O c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C c2 (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop O O c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proved
or4
drop O O c1 e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop O O c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop O O c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop O O c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
∀c1:C
.∀c2:C
.∀v:T
.csubst0 O v c1 c2
→∀e:C
.drop O O c2 e
→(or4
drop O O c1 e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop O O c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop O O c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop O O c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2)
case S : n0:nat ⇒
the thesis becomes
∀c1:C
.∀c2:C
.∀v:T
.csubst0 (S n0) v c1 c2
→∀e:C
.drop (S n0) O c2 e
→(or4
drop (S n0) O c1 e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2)
(IHn) by induction hypothesis we know
∀c1:C
.∀c2:C
.∀v:T
.csubst0 n0 v c1 c2
→∀e:C
.drop n0 O c2 e
→(or4
drop n0 O c1 e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop n0 O c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop n0 O c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop n0 O c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2)
assume c1: C
we proceed by induction on c1 to prove
∀c2:C
.∀v:T
.csubst0 (S n0) v c1 c2
→∀e:C
.drop (S n0) O c2 e
→(or4
drop (S n0) O c1 e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2)
case CSort : n1:nat ⇒
the thesis becomes
∀c2:C
.∀v:T
.∀H:csubst0 (S n0) v (CSort n1) c2
.∀e:C
.drop (S n0) O c2 e
→(or4
drop (S n0) O (CSort n1) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CSort n1) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CSort n1) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CSort n1) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2)
assume c2: C
assume v: T
suppose H: csubst0 (S n0) v (CSort n1) c2
assume e: C
suppose : drop (S n0) O c2 e
by (csubst0_gen_sort . . . . H .)
we proved
or4
drop (S n0) O (CSort n1) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CSort n1) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CSort n1) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CSort n1) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
∀c2:C
.∀v:T
.∀H:csubst0 (S n0) v (CSort n1) c2
.∀e:C
.drop (S n0) O c2 e
→(or4
drop (S n0) O (CSort n1) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CSort n1) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CSort n1) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CSort n1) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2)
case CHead : c:C k:K t:T ⇒
the thesis becomes
∀c2:C
.∀v:T
.∀H0:csubst0 (S n0) v (CHead c k t) c2
.∀e:C
.∀H1:drop (S n0) O c2 e
.or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(H) by induction hypothesis we know
∀c2:C
.∀v:T
.csubst0 (S n0) v c c2
→∀e:C
.drop (S n0) O c2 e
→(or4
drop (S n0) O c e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O c (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O c (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O c (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2)
assume c2: C
assume v: T
suppose H0: csubst0 (S n0) v (CHead c k t) c2
assume e: C
suppose H1: drop (S n0) O c2 e
by (csubst0_gen_head . . . . . . H0)
we proved
or3
ex3_2
T
nat
λ:T.λj:nat.eq nat (S n0) (s k j)
λu2:T.λ:nat.eq C c2 (CHead c k u2)
λu2:T.λj:nat.subst0 j v t u2
ex3_2
C
nat
λ:C.λj:nat.eq nat (S n0) (s k j)
λc2:C.λ:nat.eq C c2 (CHead c2 k t)
λc2:C.λj:nat.csubst0 j v c c2
ex4_3
T
C
nat
λ:T.λ:C.λj:nat.eq nat (S n0) (s k j)
λu2:T.λc2:C.λ:nat.eq C c2 (CHead c2 k u2)
λu2:T.λ:C.λj:nat.subst0 j v t u2
λ:T.λc2:C.λj:nat.csubst0 j v c c2
we proceed by induction on the previous result to prove
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or3_intro0 : H2:ex3_2 T nat λ:T.λj:nat.eq nat (S n0) (s k j) λu2:T.λ:nat.eq C c2 (CHead c k u2) λu2:T.λj:nat.subst0 j v t u2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H2 to prove
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_2_intro : x0:T x1:nat H3:eq nat (S n0) (s k x1) H4:eq C c2 (CHead c k x0) H5:subst0 x1 v t x0 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(H6)
we proceed by induction on H4 to prove drop (S n0) O (CHead c k x0) e
case refl_equal : ⇒
the thesis becomes the hypothesis H1
drop (S n0) O (CHead c k x0) e
end of H6
by (drop_gen_drop . . . . . H6)
we proved drop (r k n0) O c e
assume b: B
suppose H7: eq nat (S n0) (s (Bind b) x1)
suppose H8: drop (r (Bind b) n0) O c e
(H9)
consider H7
we proved eq nat (S n0) (s (Bind b) x1)
that is equivalent to eq nat (S n0) (S x1)
by (f_equal . . . . . previous)
we proved eq nat <λ:nat.nat> CASE S n0 OF O⇒n0 | S n1⇒n1 <λ:nat.nat> CASE S x1 OF O⇒n0 | S n1⇒n1
eq
nat
λe0:nat.<λ:nat.nat> CASE e0 OF O⇒n0 | S n1⇒n1 (S n0)
λe0:nat.<λ:nat.nat> CASE e0 OF O⇒n0 | S n1⇒n1 (S x1)
end of H9
by (drop_drop . . . . H8 .)
we proved drop (S n0) O (CHead c (Bind b) t) e
by (or4_intro0 . . . . previous)
we proved
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
∀H7:eq nat (S n0) (s (Bind b) x1)
.∀H8:drop (r (Bind b) n0) O c e
.or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
assume f: F
suppose H7: eq nat (S n0) (s (Flat f) x1)
suppose H8: drop (r (Flat f) n0) O c e
(H9)
consider H7
we proved eq nat (S n0) (s (Flat f) x1)
that is equivalent to eq nat (S n0) x1
by (f_equal . . . . . previous)
we proved eq nat (S n0) x1
eq nat (λe0:nat.e0 (S n0)) (λe0:nat.e0 x1)
end of H9
by (drop_drop . . . . H8 .)
we proved drop (S n0) O (CHead c (Flat f) t) e
by (or4_intro0 . . . . previous)
we proved
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
∀H7:eq nat (S n0) (s (Flat f) x1)
.∀H8:drop (r (Flat f) n0) O c e
.or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (previous . H3 previous)
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or3_intro1 : H2:ex3_2 C nat λ:C.λj:nat.eq nat (S n0) (s k j) λc3:C.λ:nat.eq C c2 (CHead c3 k t) λc3:C.λj:nat.csubst0 j v c c3 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H2 to prove
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_2_intro : x0:C x1:nat H3:eq nat (S n0) (s k x1) H4:eq C c2 (CHead x0 k t) H5:csubst0 x1 v c x0 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(H6)
we proceed by induction on H4 to prove drop (S n0) O (CHead x0 k t) e
case refl_equal : ⇒
the thesis becomes the hypothesis H1
drop (S n0) O (CHead x0 k t) e
end of H6
by (drop_gen_drop . . . . . H6)
we proved drop (r k n0) O x0 e
assume b: B
suppose H7: eq nat (S n0) (s (Bind b) x1)
suppose H8: drop (r (Bind b) n0) O x0 e
(H9)
consider H7
we proved eq nat (S n0) (s (Bind b) x1)
that is equivalent to eq nat (S n0) (S x1)
by (f_equal . . . . . previous)
we proved eq nat <λ:nat.nat> CASE S n0 OF O⇒n0 | S n1⇒n1 <λ:nat.nat> CASE S x1 OF O⇒n0 | S n1⇒n1
eq
nat
λe0:nat.<λ:nat.nat> CASE e0 OF O⇒n0 | S n1⇒n1 (S n0)
λe0:nat.<λ:nat.nat> CASE e0 OF O⇒n0 | S n1⇒n1 (S x1)
end of H9
(H10)
consider H9
we proved eq nat <λ:nat.nat> CASE S n0 OF O⇒n0 | S n1⇒n1 <λ:nat.nat> CASE S x1 OF O⇒n0 | S n1⇒n1
that is equivalent to eq nat n0 x1
by (eq_ind_r . . . H5 . previous)
csubst0 n0 v c x0
end of H10
(H11)
consider H8
we proved drop (r (Bind b) n0) O x0 e
that is equivalent to drop n0 O x0 e
by (IHn . . . H10 . previous)
or4
drop n0 O c e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop n0 O c (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop n0 O c (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop n0 O c (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
end of H11
we proceed by induction on H11 to prove
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro0 : H12:drop n0 O c e ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
consider H12
we proved drop n0 O c e
that is equivalent to drop (r (Bind b) n0) O c e
by (drop_drop . . . . previous .)
we proved drop (S n0) O (CHead c (Bind b) t) e
by (or4_intro0 . . . . previous)
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro1 : H12:ex3_4 F C T T λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2) λf:F.λe0:C.λu1:T.λ:T.drop n0 O c (CHead e0 (Flat f) u1) λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H12 to prove
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_4_intro : x2:F x3:C x4:T x5:T H13:eq C e (CHead x3 (Flat x2) x5) H14:drop n0 O c (CHead x3 (Flat x2) x4) H15:subst0 O v x4 x5 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(h1)
by (refl_equal . .)
eq C (CHead x3 (Flat x2) x5) (CHead x3 (Flat x2) x5)
end of h1
(h2)
consider H14
we proved drop n0 O c (CHead x3 (Flat x2) x4)
that is equivalent to drop (r (Bind b) n0) O c (CHead x3 (Flat x2) x4)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead c (Bind b) t) (CHead x3 (Flat x2) x4)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H15)
we proved
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead x3 (Flat x2) x5) (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
by (or4_intro1 . . . . previous)
we proved
or4
drop (S n0) O (CHead c (Bind b) t) (CHead x3 (Flat x2) x5)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead x3 (Flat x2) x5) (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead x3 (Flat x2) x5) (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead x3 (Flat x2) x5) (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H13)
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro2 : H12:ex3_4 F C C T λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u) λf:F.λe1:C.λ:C.λu:T.drop n0 O c (CHead e1 (Flat f) u) λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H12 to prove
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_4_intro : x2:F x3:C x4:C x5:T H13:eq C e (CHead x4 (Flat x2) x5) H14:drop n0 O c (CHead x3 (Flat x2) x5) H15:csubst0 O v x3 x4 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(h1)
by (refl_equal . .)
eq C (CHead x4 (Flat x2) x5) (CHead x4 (Flat x2) x5)
end of h1
(h2)
consider H14
we proved drop n0 O c (CHead x3 (Flat x2) x5)
that is equivalent to drop (r (Bind b) n0) O c (CHead x3 (Flat x2) x5)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead c (Bind b) t) (CHead x3 (Flat x2) x5)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H15)
we proved
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead x4 (Flat x2) x5) (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
by (or4_intro2 . . . . previous)
we proved
or4
drop (S n0) O (CHead c (Bind b) t) (CHead x4 (Flat x2) x5)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead x4 (Flat x2) x5) (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead x4 (Flat x2) x5) (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead x4 (Flat x2) x5) (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H13)
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro3 : H12:ex4_5 F C C T T λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2) λf:F.λe1:C.λ:C.λu1:T.λ:T.drop n0 O c (CHead e1 (Flat f) u1) λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2 λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H12 to prove
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex4_5_intro : x2:F x3:C x4:C x5:T x6:T H13:eq C e (CHead x4 (Flat x2) x6) H14:drop n0 O c (CHead x3 (Flat x2) x5) H15:subst0 O v x5 x6 H16:csubst0 O v x3 x4 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(h1)
by (refl_equal . .)
eq C (CHead x4 (Flat x2) x6) (CHead x4 (Flat x2) x6)
end of h1
(h2)
consider H14
we proved drop n0 O c (CHead x3 (Flat x2) x5)
that is equivalent to drop (r (Bind b) n0) O c (CHead x3 (Flat x2) x5)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead c (Bind b) t) (CHead x3 (Flat x2) x5)
end of h2
by (ex4_5_intro . . . . . . . . . . . . . . h1 h2 H15 H16)
we proved
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead x4 (Flat x2) x6) (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (or4_intro3 . . . . previous)
we proved
or4
drop (S n0) O (CHead c (Bind b) t) (CHead x4 (Flat x2) x6)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead x4 (Flat x2) x6) (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead x4 (Flat x2) x6) (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead x4 (Flat x2) x6) (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H13)
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proved
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
∀H7:eq nat (S n0) (s (Bind b) x1)
.∀H8:drop (r (Bind b) n0) O x0 e
.or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
assume f: F
suppose H7: eq nat (S n0) (s (Flat f) x1)
suppose H8: drop (r (Flat f) n0) O x0 e
(H9)
consider H7
we proved eq nat (S n0) (s (Flat f) x1)
that is equivalent to eq nat (S n0) x1
by (f_equal . . . . . previous)
we proved eq nat (S n0) x1
eq nat (λe0:nat.e0 (S n0)) (λe0:nat.e0 x1)
end of H9
(H10)
by (eq_ind_r . . . H5 . H9)
csubst0 (S n0) v c x0
end of H10
(H11)
consider H8
we proved drop (r (Flat f) n0) O x0 e
that is equivalent to drop (S n0) O x0 e
by (H . . H10 . previous)
or4
drop (S n0) O c e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O c (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O c (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O c (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
end of H11
we proceed by induction on H11 to prove
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro0 : H12:drop (S n0) O c e ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
consider H12
we proved drop (S n0) O c e
that is equivalent to drop (r (Flat f) n0) O c e
by (drop_drop . . . . previous .)
we proved drop (S n0) O (CHead c (Flat f) t) e
by (or4_intro0 . . . . previous)
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro1 : H12:ex3_4 F C T T λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2) λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O c (CHead e0 (Flat f0) u1) λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H12 to prove
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_4_intro : x2:F x3:C x4:T x5:T H13:eq C e (CHead x3 (Flat x2) x5) H14:drop (S n0) O c (CHead x3 (Flat x2) x4) H15:subst0 O v x4 x5 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(h1)
by (refl_equal . .)
eq C (CHead x3 (Flat x2) x5) (CHead x3 (Flat x2) x5)
end of h1
(h2)
consider H14
we proved drop (S n0) O c (CHead x3 (Flat x2) x4)
that is equivalent to drop (r (Flat f) n0) O c (CHead x3 (Flat x2) x4)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead c (Flat f) t) (CHead x3 (Flat x2) x4)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H15)
we proved
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C (CHead x3 (Flat x2) x5) (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
by (or4_intro1 . . . . previous)
we proved
or4
drop (S n0) O (CHead c (Flat f) t) (CHead x3 (Flat x2) x5)
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C (CHead x3 (Flat x2) x5) (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C (CHead x3 (Flat x2) x5) (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead x3 (Flat x2) x5) (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H13)
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro2 : H12:ex3_4 F C C T λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u) λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O c (CHead e1 (Flat f0) u) λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H12 to prove
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_4_intro : x2:F x3:C x4:C x5:T H13:eq C e (CHead x4 (Flat x2) x5) H14:drop (S n0) O c (CHead x3 (Flat x2) x5) H15:csubst0 O v x3 x4 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(h1)
by (refl_equal . .)
eq C (CHead x4 (Flat x2) x5) (CHead x4 (Flat x2) x5)
end of h1
(h2)
consider H14
we proved drop (S n0) O c (CHead x3 (Flat x2) x5)
that is equivalent to drop (r (Flat f) n0) O c (CHead x3 (Flat x2) x5)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead c (Flat f) t) (CHead x3 (Flat x2) x5)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H15)
we proved
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C (CHead x4 (Flat x2) x5) (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
by (or4_intro2 . . . . previous)
we proved
or4
drop (S n0) O (CHead c (Flat f) t) (CHead x4 (Flat x2) x5)
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C (CHead x4 (Flat x2) x5) (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C (CHead x4 (Flat x2) x5) (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead x4 (Flat x2) x5) (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H13)
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro3 : H12:ex4_5 F C C T T λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2) λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O c (CHead e1 (Flat f0) u1) λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2 λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H12 to prove
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex4_5_intro : x2:F x3:C x4:C x5:T x6:T H13:eq C e (CHead x4 (Flat x2) x6) H14:drop (S n0) O c (CHead x3 (Flat x2) x5) H15:subst0 O v x5 x6 H16:csubst0 O v x3 x4 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(h1)
by (refl_equal . .)
eq C (CHead x4 (Flat x2) x6) (CHead x4 (Flat x2) x6)
end of h1
(h2)
consider H14
we proved drop (S n0) O c (CHead x3 (Flat x2) x5)
that is equivalent to drop (r (Flat f) n0) O c (CHead x3 (Flat x2) x5)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead c (Flat f) t) (CHead x3 (Flat x2) x5)
end of h2
by (ex4_5_intro . . . . . . . . . . . . . . h1 h2 H15 H16)
we proved
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead x4 (Flat x2) x6) (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (or4_intro3 . . . . previous)
we proved
or4
drop (S n0) O (CHead c (Flat f) t) (CHead x4 (Flat x2) x6)
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C (CHead x4 (Flat x2) x6) (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C (CHead x4 (Flat x2) x6) (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead x4 (Flat x2) x6) (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H13)
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proved
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
∀H7:eq nat (S n0) (s (Flat f) x1)
.∀H8:drop (r (Flat f) n0) O x0 e
.or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (previous . H3 previous)
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or3_intro2 : H2:ex4_3 T C nat λ:T.λ:C.λj:nat.eq nat (S n0) (s k j) λu2:T.λc3:C.λ:nat.eq C c2 (CHead c3 k u2) λu2:T.λ:C.λj:nat.subst0 j v t u2 λ:T.λc3:C.λj:nat.csubst0 j v c c3 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H2 to prove
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex4_3_intro : x0:T x1:C x2:nat H3:eq nat (S n0) (s k x2) H4:eq C c2 (CHead x1 k x0) H5:subst0 x2 v t x0 H6:csubst0 x2 v c x1 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(H7)
we proceed by induction on H4 to prove drop (S n0) O (CHead x1 k x0) e
case refl_equal : ⇒
the thesis becomes the hypothesis H1
drop (S n0) O (CHead x1 k x0) e
end of H7
by (drop_gen_drop . . . . . H7)
we proved drop (r k n0) O x1 e
assume b: B
suppose H8: eq nat (S n0) (s (Bind b) x2)
suppose H9: drop (r (Bind b) n0) O x1 e
(H10)
consider H8
we proved eq nat (S n0) (s (Bind b) x2)
that is equivalent to eq nat (S n0) (S x2)
by (f_equal . . . . . previous)
we proved eq nat <λ:nat.nat> CASE S n0 OF O⇒n0 | S n1⇒n1 <λ:nat.nat> CASE S x2 OF O⇒n0 | S n1⇒n1
eq
nat
λe0:nat.<λ:nat.nat> CASE e0 OF O⇒n0 | S n1⇒n1 (S n0)
λe0:nat.<λ:nat.nat> CASE e0 OF O⇒n0 | S n1⇒n1 (S x2)
end of H10
(H11)
consider H10
we proved eq nat <λ:nat.nat> CASE S n0 OF O⇒n0 | S n1⇒n1 <λ:nat.nat> CASE S x2 OF O⇒n0 | S n1⇒n1
that is equivalent to eq nat n0 x2
by (eq_ind_r . . . H6 . previous)
csubst0 n0 v c x1
end of H11
(H13)
consider H9
we proved drop (r (Bind b) n0) O x1 e
that is equivalent to drop n0 O x1 e
by (IHn . . . H11 . previous)
or4
drop n0 O c e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop n0 O c (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop n0 O c (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop n0 O c (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
end of H13
we proceed by induction on H13 to prove
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro0 : H14:drop n0 O c e ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
consider H14
we proved drop n0 O c e
that is equivalent to drop (r (Bind b) n0) O c e
by (drop_drop . . . . previous .)
we proved drop (S n0) O (CHead c (Bind b) t) e
by (or4_intro0 . . . . previous)
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro1 : H14:ex3_4 F C T T λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2) λf:F.λe0:C.λu1:T.λ:T.drop n0 O c (CHead e0 (Flat f) u1) λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H14 to prove
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_4_intro : x3:F x4:C x5:T x6:T H15:eq C e (CHead x4 (Flat x3) x6) H16:drop n0 O c (CHead x4 (Flat x3) x5) H17:subst0 O v x5 x6 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(h1)
by (refl_equal . .)
eq C (CHead x4 (Flat x3) x6) (CHead x4 (Flat x3) x6)
end of h1
(h2)
consider H16
we proved drop n0 O c (CHead x4 (Flat x3) x5)
that is equivalent to drop (r (Bind b) n0) O c (CHead x4 (Flat x3) x5)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead c (Bind b) t) (CHead x4 (Flat x3) x5)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H17)
we proved
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead x4 (Flat x3) x6) (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
by (or4_intro1 . . . . previous)
we proved
or4
drop (S n0) O (CHead c (Bind b) t) (CHead x4 (Flat x3) x6)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead x4 (Flat x3) x6) (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead x4 (Flat x3) x6) (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead x4 (Flat x3) x6) (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H15)
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro2 : H14:ex3_4 F C C T λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u) λf:F.λe1:C.λ:C.λu:T.drop n0 O c (CHead e1 (Flat f) u) λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H14 to prove
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_4_intro : x3:F x4:C x5:C x6:T H15:eq C e (CHead x5 (Flat x3) x6) H16:drop n0 O c (CHead x4 (Flat x3) x6) H17:csubst0 O v x4 x5 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(h1)
by (refl_equal . .)
eq C (CHead x5 (Flat x3) x6) (CHead x5 (Flat x3) x6)
end of h1
(h2)
consider H16
we proved drop n0 O c (CHead x4 (Flat x3) x6)
that is equivalent to drop (r (Bind b) n0) O c (CHead x4 (Flat x3) x6)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead c (Bind b) t) (CHead x4 (Flat x3) x6)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H17)
we proved
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead x5 (Flat x3) x6) (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
by (or4_intro2 . . . . previous)
we proved
or4
drop (S n0) O (CHead c (Bind b) t) (CHead x5 (Flat x3) x6)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead x5 (Flat x3) x6) (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead x5 (Flat x3) x6) (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead x5 (Flat x3) x6) (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H15)
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro3 : H14:ex4_5 F C C T T λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2) λf:F.λe1:C.λ:C.λu1:T.λ:T.drop n0 O c (CHead e1 (Flat f) u1) λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2 λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H14 to prove
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex4_5_intro : x3:F x4:C x5:C x6:T x7:T H15:eq C e (CHead x5 (Flat x3) x7) H16:drop n0 O c (CHead x4 (Flat x3) x6) H17:subst0 O v x6 x7 H18:csubst0 O v x4 x5 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(h1)
by (refl_equal . .)
eq C (CHead x5 (Flat x3) x7) (CHead x5 (Flat x3) x7)
end of h1
(h2)
consider H16
we proved drop n0 O c (CHead x4 (Flat x3) x6)
that is equivalent to drop (r (Bind b) n0) O c (CHead x4 (Flat x3) x6)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead c (Bind b) t) (CHead x4 (Flat x3) x6)
end of h2
by (ex4_5_intro . . . . . . . . . . . . . . h1 h2 H17 H18)
we proved
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead x5 (Flat x3) x7) (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (or4_intro3 . . . . previous)
we proved
or4
drop (S n0) O (CHead c (Bind b) t) (CHead x5 (Flat x3) x7)
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C (CHead x5 (Flat x3) x7) (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C (CHead x5 (Flat x3) x7) (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead x5 (Flat x3) x7) (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H15)
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proved
or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
∀H8:eq nat (S n0) (s (Bind b) x2)
.∀H9:drop (r (Bind b) n0) O x1 e
.or4
drop (S n0) O (CHead c (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
assume f: F
suppose H8: eq nat (S n0) (s (Flat f) x2)
suppose H9: drop (r (Flat f) n0) O x1 e
(H10)
consider H8
we proved eq nat (S n0) (s (Flat f) x2)
that is equivalent to eq nat (S n0) x2
by (f_equal . . . . . previous)
we proved eq nat (S n0) x2
eq nat (λe0:nat.e0 (S n0)) (λe0:nat.e0 x2)
end of H10
(H11)
by (eq_ind_r . . . H6 . H10)
csubst0 (S n0) v c x1
end of H11
(H13)
consider H9
we proved drop (r (Flat f) n0) O x1 e
that is equivalent to drop (S n0) O x1 e
by (H . . H11 . previous)
or4
drop (S n0) O c e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O c (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O c (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O c (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
end of H13
we proceed by induction on H13 to prove
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro0 : H14:drop (S n0) O c e ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
consider H14
we proved drop (S n0) O c e
that is equivalent to drop (r (Flat f) n0) O c e
by (drop_drop . . . . previous .)
we proved drop (S n0) O (CHead c (Flat f) t) e
by (or4_intro0 . . . . previous)
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro1 : H14:ex3_4 F C T T λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2) λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O c (CHead e0 (Flat f0) u1) λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H14 to prove
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_4_intro : x3:F x4:C x5:T x6:T H15:eq C e (CHead x4 (Flat x3) x6) H16:drop (S n0) O c (CHead x4 (Flat x3) x5) H17:subst0 O v x5 x6 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(h1)
by (refl_equal . .)
eq C (CHead x4 (Flat x3) x6) (CHead x4 (Flat x3) x6)
end of h1
(h2)
consider H16
we proved drop (S n0) O c (CHead x4 (Flat x3) x5)
that is equivalent to drop (r (Flat f) n0) O c (CHead x4 (Flat x3) x5)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead c (Flat f) t) (CHead x4 (Flat x3) x5)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H17)
we proved
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C (CHead x4 (Flat x3) x6) (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
by (or4_intro1 . . . . previous)
we proved
or4
drop (S n0) O (CHead c (Flat f) t) (CHead x4 (Flat x3) x6)
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C (CHead x4 (Flat x3) x6) (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C (CHead x4 (Flat x3) x6) (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead x4 (Flat x3) x6) (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H15)
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro2 : H14:ex3_4 F C C T λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u) λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O c (CHead e1 (Flat f0) u) λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H14 to prove
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_4_intro : x3:F x4:C x5:C x6:T H15:eq C e (CHead x5 (Flat x3) x6) H16:drop (S n0) O c (CHead x4 (Flat x3) x6) H17:csubst0 O v x4 x5 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(h1)
by (refl_equal . .)
eq C (CHead x5 (Flat x3) x6) (CHead x5 (Flat x3) x6)
end of h1
(h2)
consider H16
we proved drop (S n0) O c (CHead x4 (Flat x3) x6)
that is equivalent to drop (r (Flat f) n0) O c (CHead x4 (Flat x3) x6)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead c (Flat f) t) (CHead x4 (Flat x3) x6)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H17)
we proved
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C (CHead x5 (Flat x3) x6) (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
by (or4_intro2 . . . . previous)
we proved
or4
drop (S n0) O (CHead c (Flat f) t) (CHead x5 (Flat x3) x6)
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C (CHead x5 (Flat x3) x6) (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C (CHead x5 (Flat x3) x6) (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead x5 (Flat x3) x6) (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H15)
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro3 : H14:ex4_5 F C C T T λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2) λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O c (CHead e1 (Flat f0) u1) λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2 λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H14 to prove
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex4_5_intro : x3:F x4:C x5:C x6:T x7:T H15:eq C e (CHead x5 (Flat x3) x7) H16:drop (S n0) O c (CHead x4 (Flat x3) x6) H17:subst0 O v x6 x7 H18:csubst0 O v x4 x5 ⇒
the thesis becomes
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(h1)
by (refl_equal . .)
eq C (CHead x5 (Flat x3) x7) (CHead x5 (Flat x3) x7)
end of h1
(h2)
consider H16
we proved drop (S n0) O c (CHead x4 (Flat x3) x6)
that is equivalent to drop (r (Flat f) n0) O c (CHead x4 (Flat x3) x6)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead c (Flat f) t) (CHead x4 (Flat x3) x6)
end of h2
by (ex4_5_intro . . . . . . . . . . . . . . h1 h2 H17 H18)
we proved
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead x5 (Flat x3) x7) (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (or4_intro3 . . . . previous)
we proved
or4
drop (S n0) O (CHead c (Flat f) t) (CHead x5 (Flat x3) x7)
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C (CHead x5 (Flat x3) x7) (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C (CHead x5 (Flat x3) x7) (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C (CHead x5 (Flat x3) x7) (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H15)
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proved
or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
∀H8:eq nat (S n0) (s (Flat f) x2)
.∀H9:drop (r (Flat f) n0) O x1 e
.or4
drop (S n0) O (CHead c (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f0) u2)
λf0:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf0:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f0) u)
λf0:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f0) u2)
λf0:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (previous . H3 previous)
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proved
or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
∀c2:C
.∀v:T
.∀H0:csubst0 (S n0) v (CHead c k t) c2
.∀e:C
.∀H1:drop (S n0) O c2 e
.or4
drop (S n0) O (CHead c k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proved
∀c2:C
.∀v:T
.csubst0 (S n0) v c1 c2
→∀e:C
.drop (S n0) O c2 e
→(or4
drop (S n0) O c1 e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2)
∀c1:C
.∀c2:C
.∀v:T
.csubst0 (S n0) v c1 c2
→∀e:C
.drop (S n0) O c2 e
→(or4
drop (S n0) O c1 e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop (S n0) O c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop (S n0) O c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop (S n0) O c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2)
we proved
∀c1:C
.∀c2:C
.∀v:T
.csubst0 n v c1 c2
→∀e:C
.drop n O c2 e
→(or4
drop n O c1 e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop n O c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop n O c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop n O c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2)
we proved
∀n:nat
.∀c1:C
.∀c2:C
.∀v:T
.csubst0 n v c1 c2
→∀e:C
.drop n O c2 e
→(or4
drop n O c1 e
ex3_4
F
C
T
T
λf:F.λe0:C.λ:T.λu2:T.eq C e (CHead e0 (Flat f) u2)
λf:F.λe0:C.λu1:T.λ:T.drop n O c1 (CHead e0 (Flat f) u1)
λ:F.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
ex3_4
F
C
C
T
λf:F.λ:C.λe2:C.λu:T.eq C e (CHead e2 (Flat f) u)
λf:F.λe1:C.λ:C.λu:T.drop n O c1 (CHead e1 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λ:C.λe2:C.λ:T.λu2:T.eq C e (CHead e2 (Flat f) u2)
λf:F.λe1:C.λ:C.λu1:T.λ:T.drop n O c1 (CHead e1 (Flat f) u1)
λ:F.λ:C.λ:C.λu1:T.λu2:T.subst0 O v u1 u2
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2)