DEFINITION csubst0_drop_eq()
TYPE =
∀n:nat
.∀c1:C
.∀c2:C
.∀v:T
.csubst0 n v c1 c2
→∀e:C
.drop n O c1 e
→(or4
drop n O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop n O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop n O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop n O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c1 e
→(or4
drop n O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop n O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop n O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop n O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c1 e
→(or4
drop O O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop O O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop O O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop O O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c1 e
by (drop_gen_refl . . H0)
we proved eq C c1 e
we proceed by induction on the previous result to prove
or4
drop O O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop O O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop O O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop O O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case refl_equal : ⇒
the thesis becomes
or4
drop O O c2 c1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c1 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop O O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c1 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop O O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c1 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop O O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c2 c1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c1 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop y y c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 y v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c1 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop y y c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 y v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c1 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop y y c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 y v u w
λ: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 u2) (CHead c k u1)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c k u1) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c k u2) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 (s k i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c k u1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (s k i) (s k i) (CHead c k u2) (CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c k u1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c k u2) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s k i) v0 u w
λ: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 u2) (CHead c k u1)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c k u1) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c k u2) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 (s k i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c k u1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (s k i) (s k i) (CHead c k u2) (CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c k u1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c k u2) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s k i) v0 u w
λ: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) u2
CHead c (Bind b) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
λ: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) u2
CHead c (Bind b) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
λ: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) u2
CHead c (Bind b) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
λ: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) u2) (CHead c (Bind b) u1)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C.λ:T.λw:T.drop (S i) (S i) (CHead c (Bind b) u2) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 (S i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C.λe2:C.λu:T.drop (S i) (S i) (CHead c (Bind b) u2) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (S i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C.λ:T.λw:T.drop (S i) (S i) (CHead c (Bind b) u2) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (S i) v0 u w
λ: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) u2) (CHead c (Bind b) u1)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C.λ:T.λw:T.drop (S i) (S i) (CHead c (Bind b) u2) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 (S i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C.λe2:C.λu:T.drop (S i) (S i) (CHead c (Bind b) u2) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (S i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C.λ:T.λw:T.drop (S i) (S i) (CHead c (Bind b) u2) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (S i) v0 u w
λ: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) u2
CHead c (Bind b) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
λ: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) u2
CHead c (Bind b) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
λ: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) u2
CHead c (Bind b) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
λ: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) u2
CHead c (Bind b) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c (Bind b) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
λ: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) u2
CHead c (Flat f) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
λ: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) u2
CHead c (Flat f) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
λ: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) u2
CHead c (Flat f) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
λ: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) u1) (CHead c (Flat f) u1)
end of h1
(h2)
by (drop_refl .)
drop O O (CHead c (Flat f) u2) (CHead c (Flat f) u2)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H4)
we proved
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop O O (CHead c (Flat f) u2) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v0 u w
by (or4_intro1 . . . . previous)
we proved
or4
drop O O (CHead c (Flat f) u2) (CHead c (Flat f) u1)
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop O O (CHead c (Flat f) u2) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v0 u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop O O (CHead c (Flat f) u2) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop O O (CHead c (Flat f) u2) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v0 u w
λ: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) u2) (CHead c (Flat f) u1)
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop i i (CHead c (Flat f) u2) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop i i (CHead c (Flat f) u2) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop i i (CHead c (Flat f) u2) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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) u2
CHead c (Flat f) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
λ: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) u2
CHead c (Flat f) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
λ: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) u2
CHead c (Flat f) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
λ: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) u2
CHead c (Flat f) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c (Flat f) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
λ: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 u2) (CHead c k u1)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c k u1) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c k u2) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 (s k i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c k u1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (s k i) (s k i) (CHead c k u2) (CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c k u1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c k u2) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s k i) v0 u w
λ: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 u2) (CHead c k u1)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c k u1) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c k u2) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 (s k i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c k u1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (s k i) (s k i) (CHead c k u2) (CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c k u1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c k u2) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s k i) v0 u w
λ: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 c4 c3
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 k u) (CHead c3 k u)
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 k u) (CHead e0 (Flat f) u0)
λf:F.λe0:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c4 k u) (CHead e0 (Flat f) w)
λ:F.λ:C.λu0:T.λw:T.subst0 (s k i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 k u) (CHead e1 (Flat f) u0)
λf:F.λ:C.λe2:C.λu0:T.drop (s k i) (s k i) (CHead c4 k u) (CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 k u) (CHead e1 (Flat f) u0)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c4 k u) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s k i) v0 u0 w
λ: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 c4 c3
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 k u) (CHead c3 k u)
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 k u) (CHead e0 (Flat f) u0)
λf:F.λe0:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c4 k u) (CHead e0 (Flat f) w)
λ:F.λ:C.λu0:T.λw:T.subst0 (s k i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 k u) (CHead e1 (Flat f) u0)
λf:F.λ:C.λe2:C.λu0:T.drop (s k i) (s k i) (CHead c4 k u) (CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 k u) (CHead e1 (Flat f) u0)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c4 k u) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s k i) v0 u0 w
λ: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 c4 c3
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 (Bind b) u
CHead c3 (Bind b) u
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e0 (Flat f) u0)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e0 (Flat f) w
λ:F.λ:C.λu0:T.λw:T.subst0 (s (Bind b) i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λu0:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s (Bind b) i) v0 u0 w
λ: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 c4 c3
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 (Bind b) u
CHead c3 (Bind b) u
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e0 (Flat f) u0)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e0 (Flat f) w
λ:F.λ:C.λu0:T.λw:T.subst0 (s (Bind b) i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λu0:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s (Bind b) i) v0 u0 w
λ: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 c4 (Bind b) u
CHead c3 (Bind b) u
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e0 (Flat f) u0)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e0 (Flat f) w
λ:F.λ:C.λu0:T.λw:T.subst0 (s (Bind b) i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λu0:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s (Bind b) i) v0 u0 w
λ: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 c4 (Bind b) u) (CHead c3 (Bind b) u)
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e0 (Flat f) u0)
λf:F
.λe0:C.λ:T.λw:T.drop (S i) (S i) (CHead c4 (Bind b) u) (CHead e0 (Flat f) w)
λ:F.λ:C.λu0:T.λw:T.subst0 (S i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F.λ:C.λe2:C.λu0:T.drop (S i) (S i) (CHead c4 (Bind b) u) (CHead e2 (Flat f) u0)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (S i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C.λ:T.λw:T.drop (S i) (S i) (CHead c4 (Bind b) u) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (S i) v0 u0 w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (S i) v0 e1 e2
we proved
or4
drop (S i) (S i) (CHead c4 (Bind b) u) (CHead c3 (Bind b) u)
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e0 (Flat f) u0)
λf:F
.λe0:C.λ:T.λw:T.drop (S i) (S i) (CHead c4 (Bind b) u) (CHead e0 (Flat f) w)
λ:F.λ:C.λu0:T.λw:T.subst0 (S i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F.λ:C.λe2:C.λu0:T.drop (S i) (S i) (CHead c4 (Bind b) u) (CHead e2 (Flat f) u0)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (S i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C.λ:T.λw:T.drop (S i) (S i) (CHead c4 (Bind b) u) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (S i) v0 u0 w
λ: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 c4 (Bind b) u
CHead c3 (Bind b) u
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e0 (Flat f) u0)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e0 (Flat f) w
λ:F.λ:C.λu0:T.λw:T.subst0 (s (Bind b) i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λu0:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s (Bind b) i) v0 u0 w
λ: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 c4 (Bind b) u
CHead c3 (Bind b) u
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e0 (Flat f) u0)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e0 (Flat f) w
λ:F.λ:C.λu0:T.λw:T.subst0 (s (Bind b) i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λu0:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s (Bind b) i) v0 u0 w
λ: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 c4 (Bind b) u
CHead c3 (Bind b) u
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e0 (Flat f) u0)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e0 (Flat f) w
λ:F.λ:C.λu0:T.λw:T.subst0 (s (Bind b) i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λu0:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s (Bind b) i) v0 u0 w
λ: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 c4 c3
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 (Bind b) u
CHead c3 (Bind b) u
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e0 (Flat f) u0)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e0 (Flat f) w
λ:F.λ:C.λu0:T.λw:T.subst0 (s (Bind b) i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λu0:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Bind b) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s (Bind b) i) v0 u0 w
λ: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 c4 c3
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 (Flat f) u
CHead c3 (Flat f) u
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e0 (Flat f) u0)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e0 (Flat f) w
λ:F.λ:C.λu0:T.λw:T.subst0 (s (Flat f) i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λu0:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s (Flat f) i) v0 u0 w
λ: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 c4 c3
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 (Flat f) u
CHead c3 (Flat f) u
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e0 (Flat f) u0)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e0 (Flat f) w
λ:F.λ:C.λu0:T.λw:T.subst0 (s (Flat f) i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λu0:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s (Flat f) i) v0 u0 w
λ: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 c4 (Flat f) u
CHead c3 (Flat f) u
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e0 (Flat f) u0)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e0 (Flat f) w
λ:F.λ:C.λu0:T.λw:T.subst0 (s (Flat f) i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λu0:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s (Flat f) i) v0 u0 w
λ: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 c3 (Flat f) u) (CHead c3 (Flat f) u)
end of h1
(h2)
by (drop_refl .)
drop O O (CHead c4 (Flat f) u) (CHead c4 (Flat f) u)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H6)
we proved
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f0) u0)
λf0:F.λ:C.λe2:C.λu0:T.drop O O (CHead c4 (Flat f) u) (CHead e2 (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 c4 (Flat f) u) (CHead c3 (Flat f) u)
ex3_4
F
C
T
T
λf0:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e0 (Flat f0) u0)
λf0:F.λe0:C.λ:T.λw:T.drop O O (CHead c4 (Flat f) u) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu0:T.λw:T.subst0 O v0 u0 w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f0) u0)
λf0:F.λ:C.λe2:C.λu0:T.drop O O (CHead c4 (Flat f) u) (CHead e2 (Flat f0) u0)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f0) u0)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop O O (CHead c4 (Flat f) u) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 O v0 u0 w
λ: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 c4 (Flat f) u) (CHead c3 (Flat f) u)
ex3_4
F
C
T
T
λf0:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e0 (Flat f0) u0)
λf0:F.λe0:C.λ:T.λw:T.drop i i (CHead c4 (Flat f) u) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu0:T.λw:T.subst0 i v0 u0 w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f0) u0)
λf0:F.λ:C.λe2:C.λu0:T.drop i i (CHead c4 (Flat f) u) (CHead e2 (Flat f0) u0)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f0) u0)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop i i (CHead c4 (Flat f) u) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 i v0 u0 w
λ: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 c4 (Flat f) u
CHead c3 (Flat f) u
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e0 (Flat f) u0)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e0 (Flat f) w
λ:F.λ:C.λu0:T.λw:T.subst0 (s (Flat f) i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λu0:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s (Flat f) i) v0 u0 w
λ: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 c4 (Flat f) u
CHead c3 (Flat f) u
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e0 (Flat f) u0)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e0 (Flat f) w
λ:F.λ:C.λu0:T.λw:T.subst0 (s (Flat f) i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λu0:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s (Flat f) i) v0 u0 w
λ: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 c4 (Flat f) u
CHead c3 (Flat f) u
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e0 (Flat f) u0)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e0 (Flat f) w
λ:F.λ:C.λu0:T.λw:T.subst0 (s (Flat f) i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λu0:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s (Flat f) i) v0 u0 w
λ: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 c4 c3
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 (Flat f) u
CHead c3 (Flat f) u
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e0 (Flat f) u0)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e0 (Flat f) w
λ:F.λ:C.λu0:T.λw:T.subst0 (s (Flat f) i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λu0:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 (Flat f) u) (CHead e1 (Flat f) u0)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s (Flat f) i) v0 u0 w
λ: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 c4 c3
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 k u) (CHead c3 k u)
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 k u) (CHead e0 (Flat f) u0)
λf:F.λe0:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c4 k u) (CHead e0 (Flat f) w)
λ:F.λ:C.λu0:T.λw:T.subst0 (s k i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 k u) (CHead e1 (Flat f) u0)
λf:F.λ:C.λe2:C.λu0:T.drop (s k i) (s k i) (CHead c4 k u) (CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 k u) (CHead e1 (Flat f) u0)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c4 k u) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s k i) v0 u0 w
λ: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 c4 c3
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 k u) (CHead c3 k u)
ex3_4
F
C
T
T
λf:F.λe0:C.λu0:T.λ:T.eq C (CHead c3 k u) (CHead e0 (Flat f) u0)
λf:F.λe0:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c4 k u) (CHead e0 (Flat f) w)
λ:F.λ:C.λu0:T.λw:T.subst0 (s k i) v0 u0 w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu0:T.eq C (CHead c3 k u) (CHead e1 (Flat f) u0)
λf:F.λ:C.λe2:C.λu0:T.drop (s k i) (s k i) (CHead c4 k u) (CHead e2 (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.λe1:C.λ:C.λu0:T.λ:T.eq C (CHead c3 k u) (CHead e1 (Flat f) u0)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c4 k u) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu0:T.λw:T.subst0 (s k i) v0 u0 w
λ: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 c4 c3
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 k u2) (CHead c3 k u1)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 k u1) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c4 k u2) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 (s k i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 k u1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (s k i) (s k i) (CHead c4 k u2) (CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 k u1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c4 k u2) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s k i) v0 u w
λ: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 c4 c3
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 k u2) (CHead c3 k u1)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 k u1) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c4 k u2) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 (s k i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 k u1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (s k i) (s k i) (CHead c4 k u2) (CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 k u1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c4 k u2) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s k i) v0 u w
λ: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 c4 c3
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 (Bind b) u2
CHead c3 (Bind b) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
λ: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 c4 c3
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 (Bind b) u2
CHead c3 (Bind b) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
λ: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 c4 (Bind b) u2
CHead c3 (Bind b) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
λ: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 c4 (Bind b) u2) (CHead c3 (Bind b) u1)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C.λ:T.λw:T.drop (S i) (S i) (CHead c4 (Bind b) u2) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 (S i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C.λe2:C.λu:T.drop (S i) (S i) (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (S i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C.λe2:C.λ:T.λw:T.drop (S i) (S i) (CHead c4 (Bind b) u2) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (S i) v0 u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (S i) v0 e1 e2
we proved
or4
drop (S i) (S i) (CHead c4 (Bind b) u2) (CHead c3 (Bind b) u1)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C.λ:T.λw:T.drop (S i) (S i) (CHead c4 (Bind b) u2) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 (S i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C.λe2:C.λu:T.drop (S i) (S i) (CHead c4 (Bind b) u2) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 (S i) v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C.λe2:C.λ:T.λw:T.drop (S i) (S i) (CHead c4 (Bind b) u2) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (S i) v0 u w
λ: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 c4 (Bind b) u2
CHead c3 (Bind b) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
λ: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 c4 (Bind b) u2
CHead c3 (Bind b) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
λ: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 c4 (Bind b) u2
CHead c3 (Bind b) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
λ: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 c4 c3
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 (Bind b) u2
CHead c3 (Bind b) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Bind b) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Bind b) i
s (Bind b) i
CHead c4 (Bind b) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Bind b) i) v0 u w
λ: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 c4 c3
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 (Flat f) u2
CHead c3 (Flat f) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
λ: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 c4 c3
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 (Flat f) u2
CHead c3 (Flat f) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
λ: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 c4 (Flat f) u2
CHead c3 (Flat f) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
λ: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 c3 (Flat f) u1) (CHead c3 (Flat f) u1)
end of h1
(h2)
by (drop_refl .)
drop O O (CHead c4 (Flat f) u2) (CHead c4 (Flat f) u2)
end of h2
by (ex4_5_intro . . . . . . . . . . . . . . h1 h2 H8 H7)
we proved
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop O O (CHead c4 (Flat f) u2) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v0 u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v0 e1 e2
by (or4_intro3 . . . . previous)
we proved
or4
drop O O (CHead c4 (Flat f) u2) (CHead c3 (Flat f) u1)
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop O O (CHead c4 (Flat f) u2) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v0 u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop O O (CHead c4 (Flat f) u2) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop O O (CHead c4 (Flat f) u2) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v0 u w
λ: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 c4 (Flat f) u2) (CHead c3 (Flat f) u1)
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop i i (CHead c4 (Flat f) u2) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop i i (CHead c4 (Flat f) u2) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop i i (CHead c4 (Flat f) u2) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 (Flat f) u2
CHead c3 (Flat f) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
λ: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 c4 (Flat f) u2
CHead c3 (Flat f) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
λ: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 c4 (Flat f) u2
CHead c3 (Flat f) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
λ: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 c4 c3
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 (Flat f) u2
CHead c3 (Flat f) u1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e0 (Flat f) u)
λf:F
.λe0:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e0 (Flat f) w
λ:F.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λu:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 (Flat f) u1) (CHead e1 (Flat f) u)
λf:F
.λ:C
.λe2:C
.λ:T
.λw:T
.drop
s (Flat f) i
s (Flat f) i
CHead c4 (Flat f) u2
CHead e2 (Flat f) w
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s (Flat f) i) v0 u w
λ: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 c4 c3
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 k u2) (CHead c3 k u1)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 k u1) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c4 k u2) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 (s k i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 k u1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (s k i) (s k i) (CHead c4 k u2) (CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 k u1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c4 k u2) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s k i) v0 u w
λ: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 c4 c3
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c3 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop i i c4 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 i v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop i i c4 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 i v0 e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c3 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop i i c4 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 i v0 u w
λ: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 c4 k u2) (CHead c3 k u1)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead c3 k u1) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c4 k u2) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 (s k i) v0 u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead c3 k u1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (s k i) (s k i) (CHead c4 k u2) (CHead e2 (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.λe1:C.λ:C.λu:T.λ:T.eq C (CHead c3 k u1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (s k i) (s k i) (CHead c4 k u2) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 (s k i) v0 u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 (s k i) v0 e1 e2)))
we proved
eq nat y O
→(or4
drop y y c2 c1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c1 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop y y c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 y v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c1 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop y y c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 y v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c1 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop y y c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 y v u w
λ: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 c2 c1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c1 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop y y c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 y v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c1 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop y y c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 y v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c1 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop y y c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 y v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 y v e1 e2))
by (insert_eq . . . . previous H)
or4
drop O O c2 c1
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C c1 (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop O O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C c1 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop O O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C c1 (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop O O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proved
or4
drop O O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop O O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop O O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop O O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c1 e
→(or4
drop O O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop O O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop O O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop O O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c1 e
→(or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c1 e
→(or4
drop n0 O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop n0 O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop n0 O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop n0 O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c1 e
→(or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2)
case CSort : n1:nat ⇒
the thesis becomes
∀c2:C
.∀v:T
.csubst0 (S n0) v (CSort n1) c2
→∀e:C
.∀H0:drop (S n0) O (CSort n1) e
.or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
assume c2: C
assume v: T
suppose : csubst0 (S n0) v (CSort n1) c2
assume e: C
suppose H0: drop (S n0) O (CSort n1) e
by (drop_gen_sort . . . . H0)
we proved and3 (eq C e (CSort n1)) (eq nat (S n0) O) (eq nat O O)
we proceed by induction on the previous result to prove
or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case and3_intro : H1:eq C e (CSort n1) H2:eq nat (S n0) O :eq nat O O ⇒
the thesis becomes
or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(H4)
we proceed by induction on H2 to prove <λ:nat.Prop> CASE O OF O⇒False | S ⇒True
case refl_equal : ⇒
the thesis becomes <λ:nat.Prop> CASE S n0 OF O⇒False | S ⇒True
consider I
we proved True
<λ:nat.Prop> CASE S n0 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 n0) O c2 (CSort n1)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CSort n1) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CSort n1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C (CSort n1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proved
or4
drop (S n0) O c2 (CSort n1)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CSort n1) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CSort n1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C (CSort n1) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H1)
or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proved
or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
∀c2:C
.∀v:T
.csubst0 (S n0) v (CSort n1) c2
→∀e:C
.∀H0:drop (S n0) O (CSort n1) e
.or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 (CHead c k t) e
.or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c e
→(or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 (CHead c k t) 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 c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (drop_gen_drop . . . . . H1)
we proved drop (r k n0) O c e
assume b: B
suppose H6: drop (r (Bind b) n0) O c e
suppose H7: eq nat (S n0) (s (Bind b) x1)
(H8)
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 H8
by (drop_drop . . . . H6 .)
we proved drop (S n0) O (CHead c (Bind b) x0) e
by (or4_intro0 . . . . previous)
we proved
or4
drop (S n0) O (CHead c (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead c (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead c (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead c (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
∀H6:drop (r (Bind b) n0) O c e
.∀H7:eq nat (S n0) (s (Bind b) x1)
.or4
drop (S n0) O (CHead c (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead c (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead c (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead c (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
assume f: F
suppose H6: drop (r (Flat f) n0) O c e
suppose H7: eq nat (S n0) (s (Flat f) x1)
(H8)
by (f_equal . . . . . H7)
we proved eq nat (S n0) (s (Flat f) x1)
eq nat (λe0:nat.e0 (S n0)) (λe0:nat.e0 (s (Flat f) x1))
end of H8
by (drop_drop . . . . H6 .)
we proved drop (S n0) O (CHead c (Flat f) x0) e
by (or4_intro0 . . . . previous)
we proved
or4
drop (S n0) O (CHead c (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead c (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead c (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead c (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
∀H6:drop (r (Flat f) n0) O c e
.∀H7:eq nat (S n0) (s (Flat f) x1)
.or4
drop (S n0) O (CHead c (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead c (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead c (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead c (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (previous . previous H3)
we proved
or4
drop (S n0) O (CHead c k x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead c k x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead c k x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead c k x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H4)
or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (drop_gen_drop . . . . . H1)
we proved drop (r k n0) O c e
assume b: B
suppose H6: drop (r (Bind b) n0) O c e
suppose H7: eq nat (S n0) (s (Bind b) x1)
(H8)
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 H8
(H9)
consider H8
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 H9
(H10)
consider H6
we proved drop (r (Bind b) n0) O c e
that is equivalent to drop n0 O c e
by (IHn . . . H9 . previous)
or4
drop n0 O x0 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop n0 O x0 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop n0 O x0 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop n0 O x0 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
end of H10
we proceed by induction on H10 to prove
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro0 : H11:drop n0 O x0 e ⇒
the thesis becomes
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
consider H11
we proved drop n0 O x0 e
that is equivalent to drop (r (Bind b) n0) O x0 e
by (drop_drop . . . . previous .)
we proved drop (S n0) O (CHead x0 (Bind b) t) e
by (or4_intro0 . . . . previous)
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro1 : H11:ex3_4 F C T T λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u) λf:F.λe0:C.λ:T.λw:T.drop n0 O x0 (CHead e0 (Flat f) w) λ:F.λ:C.λu:T.λw:T.subst0 O v u w ⇒
the thesis becomes
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H11 to prove
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_4_intro : x2:F x3:C x4:T x5:T H12:eq C e (CHead x3 (Flat x2) x4) H13:drop n0 O x0 (CHead x3 (Flat x2) x5) H14:subst0 O v x4 x5 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(h1)
by (refl_equal . .)
eq C (CHead x3 (Flat x2) x4) (CHead x3 (Flat x2) x4)
end of h1
(h2)
consider H13
we proved drop n0 O x0 (CHead x3 (Flat x2) x5)
that is equivalent to drop (r (Bind b) n0) O x0 (CHead x3 (Flat x2) x5)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead x0 (Bind b) t) (CHead x3 (Flat x2) x5)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H14)
we proved
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead x3 (Flat x2) x4) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
by (or4_intro1 . . . . previous)
we proved
or4
drop (S n0) O (CHead x0 (Bind b) t) (CHead x3 (Flat x2) x4)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead x3 (Flat x2) x4) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead x3 (Flat x2) x4) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead x3 (Flat x2) x4) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H12)
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro2 : H11:ex3_4 F C C T λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u) λf:F.λ:C.λe2:C.λu:T.drop n0 O x0 (CHead e2 (Flat f) u) λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H11 to prove
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_4_intro : x2:F x3:C x4:C x5:T H12:eq C e (CHead x3 (Flat x2) x5) H13:drop n0 O x0 (CHead x4 (Flat x2) x5) H14:csubst0 O v x3 x4 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 H13
we proved drop n0 O x0 (CHead x4 (Flat x2) x5)
that is equivalent to drop (r (Bind b) n0) O x0 (CHead x4 (Flat x2) x5)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead x0 (Bind b) t) (CHead x4 (Flat x2) x5)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H14)
we proved
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead x3 (Flat x2) x5) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (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 x0 (Bind b) t) (CHead x3 (Flat x2) x5)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead x3 (Flat x2) x5) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead x3 (Flat x2) x5) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead x3 (Flat x2) x5) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H12)
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro3 : H11:ex4_5 F C C T T λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u) λf:F.λ:C.λe2:C.λ:T.λw:T.drop n0 O x0 (CHead e2 (Flat f) w) λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H11 to prove
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 H12:eq C e (CHead x3 (Flat x2) x5) H13:drop n0 O x0 (CHead x4 (Flat x2) x6) H14:subst0 O v x5 x6 H15:csubst0 O v x3 x4 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 H13
we proved drop n0 O x0 (CHead x4 (Flat x2) x6)
that is equivalent to drop (r (Bind b) n0) O x0 (CHead x4 (Flat x2) x6)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead x0 (Bind b) t) (CHead x4 (Flat x2) x6)
end of h2
by (ex4_5_intro . . . . . . . . . . . . . . h1 h2 H14 H15)
we proved
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead x3 (Flat x2) x5) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (or4_intro3 . . . . previous)
we proved
or4
drop (S n0) O (CHead x0 (Bind b) t) (CHead x3 (Flat x2) x5)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead x3 (Flat x2) x5) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead x3 (Flat x2) x5) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead x3 (Flat x2) x5) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H12)
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proved
or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
∀H6:drop (r (Bind b) n0) O c e
.∀H7:eq nat (S n0) (s (Bind b) x1)
.or4
drop (S n0) O (CHead x0 (Bind b) t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Bind b) t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
assume f: F
suppose H6: drop (r (Flat f) n0) O c e
suppose H7: eq nat (S n0) (s (Flat f) x1)
(H8)
by (f_equal . . . . . H7)
we proved eq nat (S n0) (s (Flat f) x1)
eq nat (λe0:nat.e0 (S n0)) (λe0:nat.e0 (s (Flat f) x1))
end of H8
(H9)
consider H8
we proved eq nat (S n0) (s (Flat f) x1)
that is equivalent to eq nat (S n0) x1
by (eq_ind_r . . . H5 . previous)
csubst0 (S n0) v c x0
end of H9
(H10)
consider H6
we proved drop (r (Flat f) n0) O c e
that is equivalent to drop (S n0) O c e
by (H . . H9 . previous)
or4
drop (S n0) O x0 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O x0 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O x0 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O x0 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
end of H10
we proceed by induction on H10 to prove
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro0 : H11:drop (S n0) O x0 e ⇒
the thesis becomes
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
consider H11
we proved drop (S n0) O x0 e
that is equivalent to drop (r (Flat f) n0) O x0 e
by (drop_drop . . . . previous .)
we proved drop (S n0) O (CHead x0 (Flat f) t) e
by (or4_intro0 . . . . previous)
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro1 : H11:ex3_4 F C T T λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u) λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O x0 (CHead e0 (Flat f0) w) λ:F.λ:C.λu:T.λw:T.subst0 O v u w ⇒
the thesis becomes
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H11 to prove
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_4_intro : x2:F x3:C x4:T x5:T H12:eq C e (CHead x3 (Flat x2) x4) H13:drop (S n0) O x0 (CHead x3 (Flat x2) x5) H14:subst0 O v x4 x5 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(h1)
by (refl_equal . .)
eq C (CHead x3 (Flat x2) x4) (CHead x3 (Flat x2) x4)
end of h1
(h2)
consider H13
we proved drop (S n0) O x0 (CHead x3 (Flat x2) x5)
that is equivalent to drop (r (Flat f) n0) O x0 (CHead x3 (Flat x2) x5)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead x0 (Flat f) t) (CHead x3 (Flat x2) x5)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H14)
we proved
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C (CHead x3 (Flat x2) x4) (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
by (or4_intro1 . . . . previous)
we proved
or4
drop (S n0) O (CHead x0 (Flat f) t) (CHead x3 (Flat x2) x4)
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C (CHead x3 (Flat x2) x4) (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C (CHead x3 (Flat x2) x4) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead x3 (Flat x2) x4) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H12)
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro2 : H11:ex3_4 F C C T λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u) λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O x0 (CHead e2 (Flat f0) u) λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H11 to prove
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_4_intro : x2:F x3:C x4:C x5:T H12:eq C e (CHead x3 (Flat x2) x5) H13:drop (S n0) O x0 (CHead x4 (Flat x2) x5) H14:csubst0 O v x3 x4 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 H13
we proved drop (S n0) O x0 (CHead x4 (Flat x2) x5)
that is equivalent to drop (r (Flat f) n0) O x0 (CHead x4 (Flat x2) x5)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead x0 (Flat f) t) (CHead x4 (Flat x2) x5)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H14)
we proved
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C (CHead x3 (Flat x2) x5) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (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 x0 (Flat f) t) (CHead x3 (Flat x2) x5)
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C (CHead x3 (Flat x2) x5) (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C (CHead x3 (Flat x2) x5) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead x3 (Flat x2) x5) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H12)
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro3 : H11:ex4_5 F C C T T λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u) λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O x0 (CHead e2 (Flat f0) w) λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H11 to prove
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 H12:eq C e (CHead x3 (Flat x2) x5) H13:drop (S n0) O x0 (CHead x4 (Flat x2) x6) H14:subst0 O v x5 x6 H15:csubst0 O v x3 x4 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 H13
we proved drop (S n0) O x0 (CHead x4 (Flat x2) x6)
that is equivalent to drop (r (Flat f) n0) O x0 (CHead x4 (Flat x2) x6)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead x0 (Flat f) t) (CHead x4 (Flat x2) x6)
end of h2
by (ex4_5_intro . . . . . . . . . . . . . . h1 h2 H14 H15)
we proved
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead x3 (Flat x2) x5) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (or4_intro3 . . . . previous)
we proved
or4
drop (S n0) O (CHead x0 (Flat f) t) (CHead x3 (Flat x2) x5)
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C (CHead x3 (Flat x2) x5) (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C (CHead x3 (Flat x2) x5) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead x3 (Flat x2) x5) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H12)
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proved
or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
∀H6:drop (r (Flat f) n0) O c e
.∀H7:eq nat (S n0) (s (Flat f) x1)
.or4
drop (S n0) O (CHead x0 (Flat f) t) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 (Flat f) t) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (previous . previous H3)
we proved
or4
drop (S n0) O (CHead x0 k t) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x0 k t) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x0 k t) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x0 k t) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H4)
or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (drop_gen_drop . . . . . H1)
we proved drop (r k n0) O c e
assume b: B
suppose H7: drop (r (Bind b) n0) O c e
suppose H8: eq nat (S n0) (s (Bind b) x2)
(H9)
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 H9
(H10)
consider H9
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 H10
(H12)
consider H7
we proved drop (r (Bind b) n0) O c e
that is equivalent to drop n0 O c e
by (IHn . . . H10 . previous)
or4
drop n0 O x1 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop n0 O x1 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop n0 O x1 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop n0 O x1 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
end of H12
we proceed by induction on H12 to prove
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro0 : H13:drop n0 O x1 e ⇒
the thesis becomes
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
consider H13
we proved drop n0 O x1 e
that is equivalent to drop (r (Bind b) n0) O x1 e
by (drop_drop . . . . previous .)
we proved drop (S n0) O (CHead x1 (Bind b) x0) e
by (or4_intro0 . . . . previous)
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro1 : H13:ex3_4 F C T T λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u) λf:F.λe0:C.λ:T.λw:T.drop n0 O x1 (CHead e0 (Flat f) w) λ:F.λ:C.λu:T.λw:T.subst0 O v u w ⇒
the thesis becomes
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H13 to prove
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_4_intro : x3:F x4:C x5:T x6:T H14:eq C e (CHead x4 (Flat x3) x5) H15:drop n0 O x1 (CHead x4 (Flat x3) x6) H16:subst0 O v x5 x6 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(h1)
by (refl_equal . .)
eq C (CHead x4 (Flat x3) x5) (CHead x4 (Flat x3) x5)
end of h1
(h2)
consider H15
we proved drop n0 O x1 (CHead x4 (Flat x3) x6)
that is equivalent to drop (r (Bind b) n0) O x1 (CHead x4 (Flat x3) x6)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead x1 (Bind b) x0) (CHead x4 (Flat x3) x6)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H16)
we proved
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead x4 (Flat x3) x5) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
by (or4_intro1 . . . . previous)
we proved
or4
drop (S n0) O (CHead x1 (Bind b) x0) (CHead x4 (Flat x3) x5)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead x4 (Flat x3) x5) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead x4 (Flat x3) x5) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead x4 (Flat x3) x5) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H14)
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro2 : H13:ex3_4 F C C T λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u) λf:F.λ:C.λe2:C.λu:T.drop n0 O x1 (CHead e2 (Flat f) u) λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H13 to prove
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_4_intro : x3:F x4:C x5:C x6:T H14:eq C e (CHead x4 (Flat x3) x6) H15:drop n0 O x1 (CHead x5 (Flat x3) x6) H16:csubst0 O v x4 x5 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 H15
we proved drop n0 O x1 (CHead x5 (Flat x3) x6)
that is equivalent to drop (r (Bind b) n0) O x1 (CHead x5 (Flat x3) x6)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead x1 (Bind b) x0) (CHead x5 (Flat x3) x6)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H16)
we proved
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead x4 (Flat x3) x6) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (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 x1 (Bind b) x0) (CHead x4 (Flat x3) x6)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead x4 (Flat x3) x6) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead x4 (Flat x3) x6) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead x4 (Flat x3) x6) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H14)
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro3 : H13:ex4_5 F C C T T λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u) λf:F.λ:C.λe2:C.λ:T.λw:T.drop n0 O x1 (CHead e2 (Flat f) w) λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H13 to prove
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 H14:eq C e (CHead x4 (Flat x3) x6) H15:drop n0 O x1 (CHead x5 (Flat x3) x7) H16:subst0 O v x6 x7 H17:csubst0 O v x4 x5 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 H15
we proved drop n0 O x1 (CHead x5 (Flat x3) x7)
that is equivalent to drop (r (Bind b) n0) O x1 (CHead x5 (Flat x3) x7)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead x1 (Bind b) x0) (CHead x5 (Flat x3) x7)
end of h2
by (ex4_5_intro . . . . . . . . . . . . . . h1 h2 H16 H17)
we proved
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead x4 (Flat x3) x6) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (or4_intro3 . . . . previous)
we proved
or4
drop (S n0) O (CHead x1 (Bind b) x0) (CHead x4 (Flat x3) x6)
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C (CHead x4 (Flat x3) x6) (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C (CHead x4 (Flat x3) x6) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead x4 (Flat x3) x6) (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H14)
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proved
or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
∀H7:drop (r (Bind b) n0) O c e
.∀H8:eq nat (S n0) (s (Bind b) x2)
.or4
drop (S n0) O (CHead x1 (Bind b) x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Bind b) x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
assume f: F
suppose H7: drop (r (Flat f) n0) O c e
suppose H8: eq nat (S n0) (s (Flat f) x2)
(H9)
by (f_equal . . . . . H8)
we proved eq nat (S n0) (s (Flat f) x2)
eq nat (λe0:nat.e0 (S n0)) (λe0:nat.e0 (s (Flat f) x2))
end of H9
(H10)
consider H9
we proved eq nat (S n0) (s (Flat f) x2)
that is equivalent to eq nat (S n0) x2
by (eq_ind_r . . . H6 . previous)
csubst0 (S n0) v c x1
end of H10
(H12)
consider H7
we proved drop (r (Flat f) n0) O c e
that is equivalent to drop (S n0) O c e
by (H . . H10 . previous)
or4
drop (S n0) O x1 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O x1 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O x1 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O x1 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
end of H12
we proceed by induction on H12 to prove
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro0 : H13:drop (S n0) O x1 e ⇒
the thesis becomes
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
consider H13
we proved drop (S n0) O x1 e
that is equivalent to drop (r (Flat f) n0) O x1 e
by (drop_drop . . . . previous .)
we proved drop (S n0) O (CHead x1 (Flat f) x0) e
by (or4_intro0 . . . . previous)
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro1 : H13:ex3_4 F C T T λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u) λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O x1 (CHead e0 (Flat f0) w) λ:F.λ:C.λu:T.λw:T.subst0 O v u w ⇒
the thesis becomes
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H13 to prove
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_4_intro : x3:F x4:C x5:T x6:T H14:eq C e (CHead x4 (Flat x3) x5) H15:drop (S n0) O x1 (CHead x4 (Flat x3) x6) H16:subst0 O v x5 x6 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
(h1)
by (refl_equal . .)
eq C (CHead x4 (Flat x3) x5) (CHead x4 (Flat x3) x5)
end of h1
(h2)
consider H15
we proved drop (S n0) O x1 (CHead x4 (Flat x3) x6)
that is equivalent to drop (r (Flat f) n0) O x1 (CHead x4 (Flat x3) x6)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead x1 (Flat f) x0) (CHead x4 (Flat x3) x6)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H16)
we proved
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C (CHead x4 (Flat x3) x5) (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
by (or4_intro1 . . . . previous)
we proved
or4
drop (S n0) O (CHead x1 (Flat f) x0) (CHead x4 (Flat x3) x5)
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C (CHead x4 (Flat x3) x5) (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C (CHead x4 (Flat x3) x5) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead x4 (Flat x3) x5) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H14)
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro2 : H13:ex3_4 F C C T λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u) λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O x1 (CHead e2 (Flat f0) u) λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H13 to prove
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case ex3_4_intro : x3:F x4:C x5:C x6:T H14:eq C e (CHead x4 (Flat x3) x6) H15:drop (S n0) O x1 (CHead x5 (Flat x3) x6) H16:csubst0 O v x4 x5 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 H15
we proved drop (S n0) O x1 (CHead x5 (Flat x3) x6)
that is equivalent to drop (r (Flat f) n0) O x1 (CHead x5 (Flat x3) x6)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead x1 (Flat f) x0) (CHead x5 (Flat x3) x6)
end of h2
by (ex3_4_intro . . . . . . . . . . . h1 h2 H16)
we proved
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C (CHead x4 (Flat x3) x6) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (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 x1 (Flat f) x0) (CHead x4 (Flat x3) x6)
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C (CHead x4 (Flat x3) x6) (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C (CHead x4 (Flat x3) x6) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead x4 (Flat x3) x6) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H14)
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
case or4_intro3 : H13:ex4_5 F C C T T λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u) λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O x1 (CHead e2 (Flat f0) w) λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proceed by induction on H13 to prove
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 H14:eq C e (CHead x4 (Flat x3) x6) H15:drop (S n0) O x1 (CHead x5 (Flat x3) x7) H16:subst0 O v x6 x7 H17:csubst0 O v x4 x5 ⇒
the thesis becomes
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 H15
we proved drop (S n0) O x1 (CHead x5 (Flat x3) x7)
that is equivalent to drop (r (Flat f) n0) O x1 (CHead x5 (Flat x3) x7)
by (drop_drop . . . . previous .)
drop (S n0) O (CHead x1 (Flat f) x0) (CHead x5 (Flat x3) x7)
end of h2
by (ex4_5_intro . . . . . . . . . . . . . . h1 h2 H16 H17)
we proved
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead x4 (Flat x3) x6) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (or4_intro3 . . . . previous)
we proved
or4
drop (S n0) O (CHead x1 (Flat f) x0) (CHead x4 (Flat x3) x6)
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C (CHead x4 (Flat x3) x6) (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C (CHead x4 (Flat x3) x6) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C (CHead x4 (Flat x3) x6) (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H14)
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proved
or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
∀H7:drop (r (Flat f) n0) O c e
.∀H8:eq nat (S n0) (s (Flat f) x2)
.or4
drop (S n0) O (CHead x1 (Flat f) x0) e
ex3_4
F
C
T
T
λf0:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f0) u)
λf0:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e0 (Flat f0) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf0:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf0:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f0) u)
λf0:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 (Flat f) x0) (CHead e2 (Flat f0) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (previous . previous H3)
we proved
or4
drop (S n0) O (CHead x1 k x0) e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O (CHead x1 k x0) (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O (CHead x1 k x0) (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O (CHead x1 k x0) (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
by (eq_ind_r . . . previous . H4)
or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2
we proved
or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 (CHead c k t) e
.or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c1 e
→(or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c1 e
→(or4
drop (S n0) O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop (S n0) O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop (S n0) O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop (S n0) O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c1 e
→(or4
drop n O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop n O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop n O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop n O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ: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 c1 e
→(or4
drop n O c2 e
ex3_4
F
C
T
T
λf:F.λe0:C.λu:T.λ:T.eq C e (CHead e0 (Flat f) u)
λf:F.λe0:C.λ:T.λw:T.drop n O c2 (CHead e0 (Flat f) w)
λ:F.λ:C.λu:T.λw:T.subst0 O v u w
ex3_4
F
C
C
T
λf:F.λe1:C.λ:C.λu:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λu:T.drop n O c2 (CHead e2 (Flat f) u)
λ:F.λe1:C.λe2:C.λ:T.csubst0 O v e1 e2
ex4_5
F
C
C
T
T
λf:F.λe1:C.λ:C.λu:T.λ:T.eq C e (CHead e1 (Flat f) u)
λf:F.λ:C.λe2:C.λ:T.λw:T.drop n O c2 (CHead e2 (Flat f) w)
λ:F.λ:C.λ:C.λu:T.λw:T.subst0 O v u w
λ:F.λe1:C.λe2:C.λ:T.λ:T.csubst0 O v e1 e2)