DEFINITION pr0_subst0()
TYPE =
∀t1:T.∀t2:T.(pr0 t1 t2)→∀v1:T.∀w1:T.∀i:nat.(subst0 i v1 t1 w1)→∀v2:T.(pr0 v1 v2)→(or (pr0 w1 t2) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t2 w2))
BODY =
assume t1: T
assume t2: T
suppose H: pr0 t1 t2
we proceed by induction on H to prove ∀v1:T.∀w1:T.∀i:nat.(subst0 i v1 t1 w1)→∀v2:T.(pr0 v1 v2)→(or (pr0 w1 t2) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t2 w2))
case pr0_refl : t:T ⇒
the thesis becomes ∀v1:T.∀w1:T.∀i:nat.∀H0:(subst0 i v1 t w1).∀v2:T.∀H1:(pr0 v1 v2).(or (pr0 w1 t) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t w2))
assume v1: T
assume w1: T
assume i: nat
suppose H0: subst0 i v1 t w1
assume v2: T
suppose H1: pr0 v1 v2
by (pr0_subst0_fwd . . . . H0 . H1)
we proved ex2 T λt:T.subst0 i v2 t t λt:T.pr0 w1 t
by (ex2_sym . . . previous)
we proved ex2 T λx:T.pr0 w1 x λx:T.subst0 i v2 t x
by (or_intror . . previous)
we proved or (pr0 w1 t) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t w2)
∀v1:T.∀w1:T.∀i:nat.∀H0:(subst0 i v1 t w1).∀v2:T.∀H1:(pr0 v1 v2).(or (pr0 w1 t) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t w2))
case pr0_comp : u1:T u2:T H0:pr0 u1 u2 t3:T t4:T H2:pr0 t3 t4 k:K ⇒
the thesis becomes
∀v1:T
.∀w1:T
.∀i:nat
.∀H4:subst0 i v1 (THead k u1 t3) w1
.∀v2:T.∀H5:(pr0 v1 v2).(or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2))
(H1) by induction hypothesis we know ∀v1:T.∀w1:T.∀i:nat.(subst0 i v1 u1 w1)→∀v2:T.(pr0 v1 v2)→(or (pr0 w1 u2) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 u2 w2))
(H3) by induction hypothesis we know ∀v1:T.∀w1:T.∀i:nat.(subst0 i v1 t3 w1)→∀v2:T.(pr0 v1 v2)→(or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2))
assume v1: T
assume w1: T
assume i: nat
suppose H4: subst0 i v1 (THead k u1 t3) w1
assume v2: T
suppose H5: pr0 v1 v2
by (subst0_gen_head . . . . . . H4)
we proved
or3
ex2 T λu2:T.eq T w1 (THead k u2 t3) λu2:T.subst0 i v1 u1 u2
ex2 T λt2:T.eq T w1 (THead k u1 t2) λt2:T.subst0 (s k i) v1 t3 t2
ex3_2 T T λu2:T.λt2:T.eq T w1 (THead k u2 t2) λu2:T.λ:T.subst0 i v1 u1 u2 λ:T.λt2:T.subst0 (s k i) v1 t3 t2
we proceed by induction on the previous result to prove or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
case or3_intro0 : H6:ex2 T λu3:T.eq T w1 (THead k u3 t3) λu3:T.subst0 i v1 u1 u3 ⇒
the thesis becomes or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
we proceed by induction on H6 to prove or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
case ex_intro2 : x:T H7:eq T w1 (THead k x t3) H8:subst0 i v1 u1 x ⇒
the thesis becomes or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
by (H1 . . . H8 . H5)
we proved or (pr0 x u2) (ex2 T λw2:T.pr0 x w2 λw2:T.subst0 i v2 u2 w2)
we proceed by induction on the previous result to prove
or
pr0 (THead k x t3) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x t3) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
case or_introl : H9:pr0 x u2 ⇒
the thesis becomes
or
pr0 (THead k x t3) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x t3) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
by (pr0_comp . . H9 . . H2 .)
we proved pr0 (THead k x t3) (THead k u2 t4)
by (or_introl . . previous)
or
pr0 (THead k x t3) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x t3) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
case or_intror : H9:ex2 T λw2:T.pr0 x w2 λw2:T.subst0 i v2 u2 w2 ⇒
the thesis becomes
or
pr0 (THead k x t3) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x t3) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
we proceed by induction on H9 to prove
or
pr0 (THead k x t3) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x t3) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
case ex_intro2 : x0:T H10:pr0 x x0 H11:subst0 i v2 u2 x0 ⇒
the thesis becomes
or
pr0 (THead k x t3) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x t3) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
(h1)
by (pr0_comp . . H10 . . H2 .)
pr0 (THead k x t3) (THead k x0 t4)
end of h1
(h2)
by (subst0_fst . . . . H11 . .)
subst0 i v2 (THead k u2 t4) (THead k x0 t4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved ex2 T λw2:T.pr0 (THead k x t3) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
by (or_intror . . previous)
or
pr0 (THead k x t3) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x t3) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
or
pr0 (THead k x t3) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x t3) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
we proved
or
pr0 (THead k x t3) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x t3) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
by (eq_ind_r . . . previous . H7)
or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
case or3_intro1 : H6:ex2 T λt5:T.eq T w1 (THead k u1 t5) λt5:T.subst0 (s k i) v1 t3 t5 ⇒
the thesis becomes or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
we proceed by induction on H6 to prove or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
case ex_intro2 : x:T H7:eq T w1 (THead k u1 x) H8:subst0 (s k i) v1 t3 x ⇒
the thesis becomes or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
by (H3 . . . H8 . H5)
we proved or (pr0 x t4) (ex2 T λw2:T.pr0 x w2 λw2:T.subst0 (s k i) v2 t4 w2)
we proceed by induction on the previous result to prove
or
pr0 (THead k u1 x) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k u1 x) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
case or_introl : H9:pr0 x t4 ⇒
the thesis becomes
or
pr0 (THead k u1 x) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k u1 x) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
by (pr0_comp . . H0 . . H9 .)
we proved pr0 (THead k u1 x) (THead k u2 t4)
by (or_introl . . previous)
or
pr0 (THead k u1 x) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k u1 x) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
case or_intror : H9:ex2 T λw2:T.pr0 x w2 λw2:T.subst0 (s k i) v2 t4 w2 ⇒
the thesis becomes
or
pr0 (THead k u1 x) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k u1 x) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
we proceed by induction on H9 to prove
or
pr0 (THead k u1 x) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k u1 x) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
case ex_intro2 : x0:T H10:pr0 x x0 H11:subst0 (s k i) v2 t4 x0 ⇒
the thesis becomes
or
pr0 (THead k u1 x) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k u1 x) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
(h1)
by (pr0_comp . . H0 . . H10 .)
pr0 (THead k u1 x) (THead k u2 x0)
end of h1
(h2)
by (subst0_snd . . . . . H11 .)
subst0 i v2 (THead k u2 t4) (THead k u2 x0)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved ex2 T λw2:T.pr0 (THead k u1 x) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
by (or_intror . . previous)
or
pr0 (THead k u1 x) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k u1 x) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
or
pr0 (THead k u1 x) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k u1 x) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
we proved
or
pr0 (THead k u1 x) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k u1 x) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
by (eq_ind_r . . . previous . H7)
or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
case or3_intro2 : H6:ex3_2 T T λu3:T.λt5:T.eq T w1 (THead k u3 t5) λu3:T.λ:T.subst0 i v1 u1 u3 λ:T.λt5:T.subst0 (s k i) v1 t3 t5 ⇒
the thesis becomes or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
we proceed by induction on H6 to prove or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
case ex3_2_intro : x0:T x1:T H7:eq T w1 (THead k x0 x1) H8:subst0 i v1 u1 x0 H9:subst0 (s k i) v1 t3 x1 ⇒
the thesis becomes or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
by (H3 . . . H9 . H5)
we proved or (pr0 x1 t4) (ex2 T λw2:T.pr0 x1 w2 λw2:T.subst0 (s k i) v2 t4 w2)
we proceed by induction on the previous result to prove
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
case or_introl : H10:pr0 x1 t4 ⇒
the thesis becomes
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
by (H1 . . . H8 . H5)
we proved or (pr0 x0 u2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v2 u2 w2)
we proceed by induction on the previous result to prove
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
case or_introl : H11:pr0 x0 u2 ⇒
the thesis becomes
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
by (pr0_comp . . H11 . . H10 .)
we proved pr0 (THead k x0 x1) (THead k u2 t4)
by (or_introl . . previous)
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
case or_intror : H11:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v2 u2 w2 ⇒
the thesis becomes
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
we proceed by induction on H11 to prove
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
case ex_intro2 : x:T H12:pr0 x0 x H13:subst0 i v2 u2 x ⇒
the thesis becomes
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
(h1)
by (pr0_comp . . H12 . . H10 .)
pr0 (THead k x0 x1) (THead k x t4)
end of h1
(h2)
by (subst0_fst . . . . H13 . .)
subst0 i v2 (THead k u2 t4) (THead k x t4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
by (or_intror . . previous)
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
case or_intror : H10:ex2 T λw2:T.pr0 x1 w2 λw2:T.subst0 (s k i) v2 t4 w2 ⇒
the thesis becomes
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
we proceed by induction on H10 to prove
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
case ex_intro2 : x:T H11:pr0 x1 x H12:subst0 (s k i) v2 t4 x ⇒
the thesis becomes
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
by (H1 . . . H8 . H5)
we proved or (pr0 x0 u2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v2 u2 w2)
we proceed by induction on the previous result to prove
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
case or_introl : H13:pr0 x0 u2 ⇒
the thesis becomes
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
(h1)
by (pr0_comp . . H13 . . H11 .)
pr0 (THead k x0 x1) (THead k u2 x)
end of h1
(h2)
by (subst0_snd . . . . . H12 .)
subst0 i v2 (THead k u2 t4) (THead k u2 x)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
by (or_intror . . previous)
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
case or_intror : H13:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v2 u2 w2 ⇒
the thesis becomes
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
we proceed by induction on H13 to prove
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
case ex_intro2 : x2:T H14:pr0 x0 x2 H15:subst0 i v2 u2 x2 ⇒
the thesis becomes
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
(h1)
by (pr0_comp . . H14 . . H11 .)
pr0 (THead k x0 x1) (THead k x2 x)
end of h1
(h2)
by (subst0_both . . . . H15 . . . H12)
subst0 i v2 (THead k u2 t4) (THead k x2 x)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
by (or_intror . . previous)
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
we proved
or
pr0 (THead k x0 x1) (THead k u2 t4)
ex2 T λw2:T.pr0 (THead k x0 x1) w2 λw2:T.subst0 i v2 (THead k u2 t4) w2
by (eq_ind_r . . . previous . H7)
or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
we proved or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2)
∀v1:T
.∀w1:T
.∀i:nat
.∀H4:subst0 i v1 (THead k u1 t3) w1
.∀v2:T.∀H5:(pr0 v1 v2).(or (pr0 w1 (THead k u2 t4)) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead k u2 t4) w2))
case pr0_beta : u:T v1:T v2:T H0:pr0 v1 v2 t3:T t4:T H2:pr0 t3 t4 ⇒
the thesis becomes
∀v0:T
.∀w1:T
.∀i:nat
.∀H4:subst0 i v0 (THead (Flat Appl) v1 (THead (Bind Abst) u t3)) w1
.∀v3:T
.∀H5:pr0 v0 v3
.or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(H1) by induction hypothesis we know ∀v3:T.∀w1:T.∀i:nat.(subst0 i v3 v1 w1)→∀v4:T.(pr0 v3 v4)→(or (pr0 w1 v2) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v4 v2 w2))
(H3) by induction hypothesis we know ∀v3:T.∀w1:T.∀i:nat.(subst0 i v3 t3 w1)→∀v4:T.(pr0 v3 v4)→(or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v4 t4 w2))
assume v0: T
assume w1: T
assume i: nat
suppose H4: subst0 i v0 (THead (Flat Appl) v1 (THead (Bind Abst) u t3)) w1
assume v3: T
suppose H5: pr0 v0 v3
by (subst0_gen_head . . . . . . H4)
we proved
or3
ex2 T λu2:T.eq T w1 (THead (Flat Appl) u2 (THead (Bind Abst) u t3)) λu2:T.subst0 i v0 v1 u2
ex2
T
λt2:T.eq T w1 (THead (Flat Appl) v1 t2)
λt2:T.subst0 (s (Flat Appl) i) v0 (THead (Bind Abst) u t3) t2
ex3_2
T
T
λu2:T.λt2:T.eq T w1 (THead (Flat Appl) u2 t2)
λu2:T.λ:T.subst0 i v0 v1 u2
λ:T.λt2:T.subst0 (s (Flat Appl) i) v0 (THead (Bind Abst) u t3) t2
we proceed by induction on the previous result to prove
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or3_intro0 : H6:ex2 T λu2:T.eq T w1 (THead (Flat Appl) u2 (THead (Bind Abst) u t3)) λu2:T.subst0 i v0 v1 u2 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H6 to prove
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex_intro2 : x:T H7:eq T w1 (THead (Flat Appl) x (THead (Bind Abst) u t3)) H8:subst0 i v0 v1 x ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (H1 . . . H8 . H5)
we proved or (pr0 x v2) (ex2 T λw2:T.pr0 x w2 λw2:T.subst0 i v3 v2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x (THead (Bind Abst) u t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind Abst) u t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_introl : H9:pr0 x v2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x (THead (Bind Abst) u t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind Abst) u t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (pr0_beta . . . H9 . . H2)
we proved
pr0
THead (Flat Appl) x (THead (Bind Abst) u t3)
THead (Bind Abbr) v2 t4
by (or_introl . . previous)
or
pr0
THead (Flat Appl) x (THead (Bind Abst) u t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind Abst) u t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_intror : H9:ex2 T λw2:T.pr0 x w2 λw2:T.subst0 i v3 v2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x (THead (Bind Abst) u t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind Abst) u t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H9 to prove
or
pr0
THead (Flat Appl) x (THead (Bind Abst) u t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind Abst) u t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex_intro2 : x0:T H10:pr0 x x0 H11:subst0 i v3 v2 x0 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x (THead (Bind Abst) u t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind Abst) u t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(h1)
by (pr0_beta . . . H10 . . H2)
pr0
THead (Flat Appl) x (THead (Bind Abst) u t3)
THead (Bind Abbr) x0 t4
end of h1
(h2)
by (subst0_fst . . . . H11 . .)
subst0 i v3 (THead (Bind Abbr) v2 t4) (THead (Bind Abbr) x0 t4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind Abst) u t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x (THead (Bind Abst) u t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind Abst) u t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0
THead (Flat Appl) x (THead (Bind Abst) u t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind Abst) u t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proved
or
pr0
THead (Flat Appl) x (THead (Bind Abst) u t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind Abst) u t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (eq_ind_r . . . previous . H7)
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or3_intro1 : H6:ex2 T λt5:T.eq T w1 (THead (Flat Appl) v1 t5) λt5:T.subst0 (s (Flat Appl) i) v0 (THead (Bind Abst) u t3) t5 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H6 to prove
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex_intro2 : x:T H7:eq T w1 (THead (Flat Appl) v1 x) H8:subst0 (s (Flat Appl) i) v0 (THead (Bind Abst) u t3) x ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (subst0_gen_head . . . . . . H8)
we proved
or3
ex2 T λu2:T.eq T x (THead (Bind Abst) u2 t3) λu2:T.subst0 (s (Flat Appl) i) v0 u u2
ex2
T
λt2:T.eq T x (THead (Bind Abst) u t2)
λt2:T.subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 t2
ex3_2
T
T
λu2:T.λt2:T.eq T x (THead (Bind Abst) u2 t2)
λu2:T.λ:T.subst0 (s (Flat Appl) i) v0 u u2
λ:T.λt2:T.subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 t2
we proceed by induction on the previous result to prove
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or3_intro0 : H9:ex2 T λu2:T.eq T x (THead (Bind Abst) u2 t3) λu2:T.subst0 (s (Flat Appl) i) v0 u u2 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H9 to prove
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex_intro2 : x0:T H10:eq T x (THead (Bind Abst) x0 t3) :subst0 (s (Flat Appl) i) v0 u x0 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(H12)
we proceed by induction on H10 to prove eq T w1 (THead (Flat Appl) v1 (THead (Bind Abst) x0 t3))
case refl_equal : ⇒
the thesis becomes the hypothesis H7
eq T w1 (THead (Flat Appl) v1 (THead (Bind Abst) x0 t3))
end of H12
by (pr0_beta . . . H0 . . H2)
we proved
pr0
THead (Flat Appl) v1 (THead (Bind Abst) x0 t3)
THead (Bind Abbr) v2 t4
by (or_introl . . previous)
we proved
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) x0 t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (eq_ind_r . . . previous . H12)
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or3_intro1 : H9:ex2 T λt5:T.eq T x (THead (Bind Abst) u t5) λt5:T.subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 t5 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H9 to prove
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex_intro2 : x0:T H10:eq T x (THead (Bind Abst) u x0) H11:subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 x0 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(H12)
we proceed by induction on H10 to prove eq T w1 (THead (Flat Appl) v1 (THead (Bind Abst) u x0))
case refl_equal : ⇒
the thesis becomes the hypothesis H7
eq T w1 (THead (Flat Appl) v1 (THead (Bind Abst) u x0))
end of H12
by (H3 . . . H11 . H5)
we proved or (pr0 x0 t4) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) u x0)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) u x0)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_introl : H13:pr0 x0 t4 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) u x0)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) u x0)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (pr0_beta . . . H0 . . H13)
we proved
pr0
THead (Flat Appl) v1 (THead (Bind Abst) u x0)
THead (Bind Abbr) v2 t4
by (or_introl . . previous)
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) u x0)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) u x0)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_intror : H13:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) u x0)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) u x0)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H13 to prove
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) u x0)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) u x0)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex_intro2 : x1:T H14:pr0 x0 x1 H15:subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 x1 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) u x0)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) u x0)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(h1)
by (pr0_beta . . . H0 . . H14)
pr0
THead (Flat Appl) v1 (THead (Bind Abst) u x0)
THead (Bind Abbr) v2 x1
end of h1
(h2)
consider H15
we proved subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 x1
that is equivalent to subst0 (s (Bind Abbr) i) v3 t4 x1
by (subst0_snd . . . . . previous .)
subst0 i v3 (THead (Bind Abbr) v2 t4) (THead (Bind Abbr) v2 x1)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) u x0)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) u x0)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) u x0)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) u x0)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) u x0)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proved
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) u x0)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) u x0)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (eq_ind_r . . . previous . H12)
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or3_intro2 : H9:ex3_2 T T λu2:T.λt5:T.eq T x (THead (Bind Abst) u2 t5) λu2:T.λ:T.subst0 (s (Flat Appl) i) v0 u u2 λ:T.λt5:T.subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 t5 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H9 to prove
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex3_2_intro : x0:T x1:T H10:eq T x (THead (Bind Abst) x0 x1) :subst0 (s (Flat Appl) i) v0 u x0 H12:subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 x1 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(H13)
we proceed by induction on H10 to prove eq T w1 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1))
case refl_equal : ⇒
the thesis becomes the hypothesis H7
eq T w1 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1))
end of H13
by (H3 . . . H12 . H5)
we proved or (pr0 x1 t4) (ex2 T λw2:T.pr0 x1 w2 λw2:T.subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_introl : H14:pr0 x1 t4 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (pr0_beta . . . H0 . . H14)
we proved
pr0
THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)
THead (Bind Abbr) v2 t4
by (or_introl . . previous)
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_intror : H14:ex2 T λw2:T.pr0 x1 w2 λw2:T.subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H14 to prove
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex_intro2 : x2:T H15:pr0 x1 x2 H16:subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 x2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(h1)
by (pr0_beta . . . H0 . . H15)
pr0
THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)
THead (Bind Abbr) v2 x2
end of h1
(h2)
consider H16
we proved subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 x2
that is equivalent to subst0 (s (Bind Abbr) i) v3 t4 x2
by (subst0_snd . . . . . previous .)
subst0 i v3 (THead (Bind Abbr) v2 t4) (THead (Bind Abbr) v2 x2)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proved
or
pr0
THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (eq_ind_r . . . previous . H13)
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or3_intro2 : H6:ex3_2 T T λu2:T.λt5:T.eq T w1 (THead (Flat Appl) u2 t5) λu2:T.λ:T.subst0 i v0 v1 u2 λ:T.λt5:T.subst0 (s (Flat Appl) i) v0 (THead (Bind Abst) u t3) t5 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H6 to prove
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex3_2_intro : x0:T x1:T H7:eq T w1 (THead (Flat Appl) x0 x1) H8:subst0 i v0 v1 x0 H9:subst0 (s (Flat Appl) i) v0 (THead (Bind Abst) u t3) x1 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (subst0_gen_head . . . . . . H9)
we proved
or3
ex2 T λu2:T.eq T x1 (THead (Bind Abst) u2 t3) λu2:T.subst0 (s (Flat Appl) i) v0 u u2
ex2
T
λt2:T.eq T x1 (THead (Bind Abst) u t2)
λt2:T.subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 t2
ex3_2
T
T
λu2:T.λt2:T.eq T x1 (THead (Bind Abst) u2 t2)
λu2:T.λ:T.subst0 (s (Flat Appl) i) v0 u u2
λ:T.λt2:T.subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 t2
we proceed by induction on the previous result to prove
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or3_intro0 : H10:ex2 T λu2:T.eq T x1 (THead (Bind Abst) u2 t3) λu2:T.subst0 (s (Flat Appl) i) v0 u u2 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H10 to prove
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex_intro2 : x:T H11:eq T x1 (THead (Bind Abst) x t3) :subst0 (s (Flat Appl) i) v0 u x ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(H13)
we proceed by induction on H11 to prove eq T w1 (THead (Flat Appl) x0 (THead (Bind Abst) x t3))
case refl_equal : ⇒
the thesis becomes the hypothesis H7
eq T w1 (THead (Flat Appl) x0 (THead (Bind Abst) x t3))
end of H13
by (H1 . . . H8 . H5)
we proved or (pr0 x0 v2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_introl : H14:pr0 x0 v2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (pr0_beta . . . H14 . . H2)
we proved
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x t3)
THead (Bind Abbr) v2 t4
by (or_introl . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_intror : H14:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H14 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex_intro2 : x2:T H15:pr0 x0 x2 H16:subst0 i v3 v2 x2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(h1)
by (pr0_beta . . . H15 . . H2)
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x t3)
THead (Bind Abbr) x2 t4
end of h1
(h2)
by (subst0_fst . . . . H16 . .)
subst0 i v3 (THead (Bind Abbr) v2 t4) (THead (Bind Abbr) x2 t4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proved
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x t3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (eq_ind_r . . . previous . H13)
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or3_intro1 : H10:ex2 T λt5:T.eq T x1 (THead (Bind Abst) u t5) λt5:T.subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 t5 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H10 to prove
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex_intro2 : x:T H11:eq T x1 (THead (Bind Abst) u x) H12:subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 x ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(H13)
we proceed by induction on H11 to prove eq T w1 (THead (Flat Appl) x0 (THead (Bind Abst) u x))
case refl_equal : ⇒
the thesis becomes the hypothesis H7
eq T w1 (THead (Flat Appl) x0 (THead (Bind Abst) u x))
end of H13
by (H3 . . . H12 . H5)
we proved or (pr0 x t4) (ex2 T λw2:T.pr0 x w2 λw2:T.subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_introl : H14:pr0 x t4 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (H1 . . . H8 . H5)
we proved or (pr0 x0 v2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_introl : H15:pr0 x0 v2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (pr0_beta . . . H15 . . H14)
we proved
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
by (or_introl . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_intror : H15:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H15 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex_intro2 : x2:T H16:pr0 x0 x2 H17:subst0 i v3 v2 x2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(h1)
by (pr0_beta . . . H16 . . H14)
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) x2 t4
end of h1
(h2)
by (subst0_fst . . . . H17 . .)
subst0 i v3 (THead (Bind Abbr) v2 t4) (THead (Bind Abbr) x2 t4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_intror : H14:ex2 T λw2:T.pr0 x w2 λw2:T.subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H14 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex_intro2 : x2:T H15:pr0 x x2 H16:subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 x2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (H1 . . . H8 . H5)
we proved or (pr0 x0 v2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_introl : H17:pr0 x0 v2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(h1)
by (pr0_beta . . . H17 . . H15)
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 x2
end of h1
(h2)
consider H16
we proved subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 x2
that is equivalent to subst0 (s (Bind Abbr) i) v3 t4 x2
by (subst0_snd . . . . . previous .)
subst0 i v3 (THead (Bind Abbr) v2 t4) (THead (Bind Abbr) v2 x2)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_intror : H17:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H17 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex_intro2 : x3:T H18:pr0 x0 x3 H19:subst0 i v3 v2 x3 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(h1)
by (pr0_beta . . . H18 . . H15)
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) x3 x2
end of h1
(h2)
consider H16
we proved subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 x2
that is equivalent to subst0 (s (Bind Abbr) i) v3 t4 x2
by (subst0_both . . . . H19 . . . previous)
subst0 i v3 (THead (Bind Abbr) v2 t4) (THead (Bind Abbr) x3 x2)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proved
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) u x)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (eq_ind_r . . . previous . H13)
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or3_intro2 : H10:ex3_2 T T λu2:T.λt5:T.eq T x1 (THead (Bind Abst) u2 t5) λu2:T.λ:T.subst0 (s (Flat Appl) i) v0 u u2 λ:T.λt5:T.subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 t5 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H10 to prove
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex3_2_intro : x2:T x3:T H11:eq T x1 (THead (Bind Abst) x2 x3) :subst0 (s (Flat Appl) i) v0 u x2 H13:subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 x3 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(H14)
we proceed by induction on H11 to prove eq T w1 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3))
case refl_equal : ⇒
the thesis becomes the hypothesis H7
eq T w1 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3))
end of H14
by (H3 . . . H13 . H5)
we proved or (pr0 x3 t4) (ex2 T λw2:T.pr0 x3 w2 λw2:T.subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_introl : H15:pr0 x3 t4 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (H1 . . . H8 . H5)
we proved or (pr0 x0 v2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_introl : H16:pr0 x0 v2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (pr0_beta . . . H16 . . H15)
we proved
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
by (or_introl . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_intror : H16:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H16 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex_intro2 : x:T H17:pr0 x0 x H18:subst0 i v3 v2 x ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(h1)
by (pr0_beta . . . H17 . . H15)
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) x t4
end of h1
(h2)
by (subst0_fst . . . . H18 . .)
subst0 i v3 (THead (Bind Abbr) v2 t4) (THead (Bind Abbr) x t4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_intror : H15:ex2 T λw2:T.pr0 x3 w2 λw2:T.subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H15 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex_intro2 : x:T H16:pr0 x3 x H17:subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 x ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (H1 . . . H8 . H5)
we proved or (pr0 x0 v2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_introl : H18:pr0 x0 v2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(h1)
by (pr0_beta . . . H18 . . H16)
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 x
end of h1
(h2)
consider H17
we proved subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 x
that is equivalent to subst0 (s (Bind Abbr) i) v3 t4 x
by (subst0_snd . . . . . previous .)
subst0 i v3 (THead (Bind Abbr) v2 t4) (THead (Bind Abbr) v2 x)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case or_intror : H18:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proceed by induction on H18 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case ex_intro2 : x4:T H19:pr0 x0 x4 H20:subst0 i v3 v2 x4 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
(h1)
by (pr0_beta . . . H19 . . H16)
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) x4 x
end of h1
(h2)
consider H17
we proved subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 x
that is equivalent to subst0 (s (Bind Abbr) i) v3 t4 x
by (subst0_both . . . . H20 . . . previous)
subst0 i v3 (THead (Bind Abbr) v2 t4) (THead (Bind Abbr) x4 x)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proved
or
pr0
THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)
THead (Bind Abbr) v2 t4
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
by (eq_ind_r . . . previous . H14)
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
we proved
or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
∀v0:T
.∀w1:T
.∀i:nat
.∀H4:subst0 i v0 (THead (Flat Appl) v1 (THead (Bind Abst) u t3)) w1
.∀v3:T
.∀H5:pr0 v0 v3
.or
pr0 w1 (THead (Bind Abbr) v2 t4)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v3 (THead (Bind Abbr) v2 t4) w2
case pr0_upsilon : b:B H0:not (eq B b Abst) v1:T v2:T H1:pr0 v1 v2 u1:T u2:T H3:pr0 u1 u2 t3:T t4:T H5:pr0 t3 t4 ⇒
the thesis becomes
∀v0:T
.∀w1:T
.∀i:nat
.∀H7:subst0 i v0 (THead (Flat Appl) v1 (THead (Bind b) u1 t3)) w1
.∀v3:T
.∀H8:pr0 v0 v3
.or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(H2) by induction hypothesis we know ∀v3:T.∀w1:T.∀i:nat.(subst0 i v3 v1 w1)→∀v4:T.(pr0 v3 v4)→(or (pr0 w1 v2) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v4 v2 w2))
(H4) by induction hypothesis we know ∀v3:T.∀w1:T.∀i:nat.(subst0 i v3 u1 w1)→∀v4:T.(pr0 v3 v4)→(or (pr0 w1 u2) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v4 u2 w2))
(H6) by induction hypothesis we know ∀v3:T.∀w1:T.∀i:nat.(subst0 i v3 t3 w1)→∀v4:T.(pr0 v3 v4)→(or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v4 t4 w2))
assume v0: T
assume w1: T
assume i: nat
suppose H7: subst0 i v0 (THead (Flat Appl) v1 (THead (Bind b) u1 t3)) w1
assume v3: T
suppose H8: pr0 v0 v3
by (subst0_gen_head . . . . . . H7)
we proved
or3
ex2 T λu2:T.eq T w1 (THead (Flat Appl) u2 (THead (Bind b) u1 t3)) λu2:T.subst0 i v0 v1 u2
ex2
T
λt2:T.eq T w1 (THead (Flat Appl) v1 t2)
λt2:T.subst0 (s (Flat Appl) i) v0 (THead (Bind b) u1 t3) t2
ex3_2
T
T
λu2:T.λt2:T.eq T w1 (THead (Flat Appl) u2 t2)
λu2:T.λ:T.subst0 i v0 v1 u2
λ:T.λt2:T.subst0 (s (Flat Appl) i) v0 (THead (Bind b) u1 t3) t2
we proceed by induction on the previous result to prove
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or3_intro0 : H9:ex2 T λu3:T.eq T w1 (THead (Flat Appl) u3 (THead (Bind b) u1 t3)) λu3:T.subst0 i v0 v1 u3 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H9 to prove
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x:T H10:eq T w1 (THead (Flat Appl) x (THead (Bind b) u1 t3)) H11:subst0 i v0 v1 x ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (H2 . . . H11 . H8)
we proved or (pr0 x v2) (ex2 T λw2:T.pr0 x w2 λw2:T.subst0 i v3 v2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x (THead (Bind b) u1 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind b) u1 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H12:pr0 x v2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x (THead (Bind b) u1 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind b) u1 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (pr0_upsilon . H0 . . H12 . . H3 . . H5)
we proved
pr0
THead (Flat Appl) x (THead (Bind b) u1 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
by (or_introl . . previous)
or
pr0
THead (Flat Appl) x (THead (Bind b) u1 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind b) u1 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H12:ex2 T λw2:T.pr0 x w2 λw2:T.subst0 i v3 v2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x (THead (Bind b) u1 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind b) u1 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H12 to prove
or
pr0
THead (Flat Appl) x (THead (Bind b) u1 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind b) u1 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x0:T H13:pr0 x x0 H14:subst0 i v3 v2 x0 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x (THead (Bind b) u1 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind b) u1 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H13 . . H3 . . H5)
pr0
THead (Flat Appl) x (THead (Bind b) u1 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O x0) t4)
end of h1
(h2)
by (le_O_n .)
we proved le O i
by (subst0_lift_ge_s . . . . H14 . previous .)
we proved subst0 (s (Bind b) i) v3 (lift (S O) O v2) (lift (S O) O x0)
by (subst0_fst . . . . previous . .)
we proved
subst0
s (Bind b) i
v3
THead (Flat Appl) (lift (S O) O v2) t4
THead (Flat Appl) (lift (S O) O x0) t4
by (subst0_snd . . . . . previous .)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O x0) t4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind b) u1 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x (THead (Bind b) u1 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind b) u1 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x (THead (Bind b) u1 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind b) u1 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proved
or
pr0
THead (Flat Appl) x (THead (Bind b) u1 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x (THead (Bind b) u1 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (eq_ind_r . . . previous . H10)
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or3_intro1 : H9:ex2 T λt5:T.eq T w1 (THead (Flat Appl) v1 t5) λt5:T.subst0 (s (Flat Appl) i) v0 (THead (Bind b) u1 t3) t5 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H9 to prove
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x:T H10:eq T w1 (THead (Flat Appl) v1 x) H11:subst0 (s (Flat Appl) i) v0 (THead (Bind b) u1 t3) x ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (subst0_gen_head . . . . . . H11)
we proved
or3
ex2 T λu2:T.eq T x (THead (Bind b) u2 t3) λu2:T.subst0 (s (Flat Appl) i) v0 u1 u2
ex2
T
λt2:T.eq T x (THead (Bind b) u1 t2)
λt2:T.subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 t2
ex3_2
T
T
λu2:T.λt2:T.eq T x (THead (Bind b) u2 t2)
λu2:T.λ:T.subst0 (s (Flat Appl) i) v0 u1 u2
λ:T.λt2:T.subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 t2
we proceed by induction on the previous result to prove
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or3_intro0 : H12:ex2 T λu3:T.eq T x (THead (Bind b) u3 t3) λu3:T.subst0 (s (Flat Appl) i) v0 u1 u3 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H12 to prove
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x0:T H13:eq T x (THead (Bind b) x0 t3) H14:subst0 (s (Flat Appl) i) v0 u1 x0 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(H15)
we proceed by induction on H13 to prove eq T w1 (THead (Flat Appl) v1 (THead (Bind b) x0 t3))
case refl_equal : ⇒
the thesis becomes the hypothesis H10
eq T w1 (THead (Flat Appl) v1 (THead (Bind b) x0 t3))
end of H15
by (H4 . . . H14 . H8)
we proved or (pr0 x0 u2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 (s (Flat Appl) i) v3 u2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H16:pr0 x0 u2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (pr0_upsilon . H0 . . H1 . . H16 . . H5)
we proved
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
by (or_introl . . previous)
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H16:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 (s (Flat Appl) i) v3 u2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H16 to prove
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x1:T H17:pr0 x0 x1 H18:subst0 (s (Flat Appl) i) v3 u2 x1 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H1 . . H17 . . H5)
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 t3)
THead (Bind b) x1 (THead (Flat Appl) (lift (S O) O v2) t4)
end of h1
(h2)
consider H18
we proved subst0 (s (Flat Appl) i) v3 u2 x1
that is equivalent to subst0 i v3 u2 x1
by (subst0_fst . . . . previous . .)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) x1 (THead (Flat Appl) (lift (S O) O v2) t4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proved
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (eq_ind_r . . . previous . H15)
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or3_intro1 : H12:ex2 T λt5:T.eq T x (THead (Bind b) u1 t5) λt5:T.subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 t5 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H12 to prove
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x0:T H13:eq T x (THead (Bind b) u1 x0) H14:subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 x0 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(H15)
we proceed by induction on H13 to prove eq T w1 (THead (Flat Appl) v1 (THead (Bind b) u1 x0))
case refl_equal : ⇒
the thesis becomes the hypothesis H10
eq T w1 (THead (Flat Appl) v1 (THead (Bind b) u1 x0))
end of H15
by (H6 . . . H14 . H8)
we proved or (pr0 x0 t4) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) v1 (THead (Bind b) u1 x0)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) u1 x0)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H16:pr0 x0 t4 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind b) u1 x0)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) u1 x0)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (pr0_upsilon . H0 . . H1 . . H3 . . H16)
we proved
pr0
THead (Flat Appl) v1 (THead (Bind b) u1 x0)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
by (or_introl . . previous)
or
pr0
THead (Flat Appl) v1 (THead (Bind b) u1 x0)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) u1 x0)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H16:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind b) u1 x0)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) u1 x0)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H16 to prove
or
pr0
THead (Flat Appl) v1 (THead (Bind b) u1 x0)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) u1 x0)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x1:T H17:pr0 x0 x1 H18:subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 x1 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind b) u1 x0)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) u1 x0)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H1 . . H3 . . H17)
pr0
THead (Flat Appl) v1 (THead (Bind b) u1 x0)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) x1)
end of h1
(h2)
consider H18
we proved subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 x1
that is equivalent to subst0 (s (Flat Appl) (s (Bind b) i)) v3 t4 x1
by (subst0_snd . . . . . previous .)
we proved
subst0
s (Bind b) i
v3
THead (Flat Appl) (lift (S O) O v2) t4
THead (Flat Appl) (lift (S O) O v2) x1
by (subst0_snd . . . . . previous .)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) x1)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) u1 x0)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) v1 (THead (Bind b) u1 x0)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) u1 x0)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) v1 (THead (Bind b) u1 x0)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) u1 x0)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proved
or
pr0
THead (Flat Appl) v1 (THead (Bind b) u1 x0)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) u1 x0)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (eq_ind_r . . . previous . H15)
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or3_intro2 : H12:ex3_2 T T λu3:T.λt5:T.eq T x (THead (Bind b) u3 t5) λu3:T.λ:T.subst0 (s (Flat Appl) i) v0 u1 u3 λ:T.λt5:T.subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 t5 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H12 to prove
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex3_2_intro : x0:T x1:T H13:eq T x (THead (Bind b) x0 x1) H14:subst0 (s (Flat Appl) i) v0 u1 x0 H15:subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 x1 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(H16)
we proceed by induction on H13 to prove eq T w1 (THead (Flat Appl) v1 (THead (Bind b) x0 x1))
case refl_equal : ⇒
the thesis becomes the hypothesis H10
eq T w1 (THead (Flat Appl) v1 (THead (Bind b) x0 x1))
end of H16
by (H6 . . . H15 . H8)
we proved or (pr0 x1 t4) (ex2 T λw2:T.pr0 x1 w2 λw2:T.subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H17:pr0 x1 t4 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (H4 . . . H14 . H8)
we proved or (pr0 x0 u2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 (s (Flat Appl) i) v3 u2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H18:pr0 x0 u2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (pr0_upsilon . H0 . . H1 . . H18 . . H17)
we proved
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
by (or_introl . . previous)
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H18:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 (s (Flat Appl) i) v3 u2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H18 to prove
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x2:T H19:pr0 x0 x2 H20:subst0 (s (Flat Appl) i) v3 u2 x2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H1 . . H19 . . H17)
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) x2 (THead (Flat Appl) (lift (S O) O v2) t4)
end of h1
(h2)
consider H20
we proved subst0 (s (Flat Appl) i) v3 u2 x2
that is equivalent to subst0 i v3 u2 x2
by (subst0_fst . . . . previous . .)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) x2 (THead (Flat Appl) (lift (S O) O v2) t4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H17:ex2 T λw2:T.pr0 x1 w2 λw2:T.subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H17 to prove
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x2:T H18:pr0 x1 x2 H19:subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 x2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (H4 . . . H14 . H8)
we proved or (pr0 x0 u2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 (s (Flat Appl) i) v3 u2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H20:pr0 x0 u2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H1 . . H20 . . H18)
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) x2)
end of h1
(h2)
consider H19
we proved subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 x2
that is equivalent to subst0 (s (Flat Appl) (s (Bind b) i)) v3 t4 x2
by (subst0_snd . . . . . previous .)
we proved
subst0
s (Bind b) i
v3
THead (Flat Appl) (lift (S O) O v2) t4
THead (Flat Appl) (lift (S O) O v2) x2
by (subst0_snd . . . . . previous .)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) x2)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H20:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 (s (Flat Appl) i) v3 u2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H20 to prove
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x3:T H21:pr0 x0 x3 H22:subst0 (s (Flat Appl) i) v3 u2 x3 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H1 . . H21 . . H18)
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) x3 (THead (Flat Appl) (lift (S O) O v2) x2)
end of h1
(h2)
(h1)
consider H22
we proved subst0 (s (Flat Appl) i) v3 u2 x3
subst0 i v3 u2 x3
end of h1
(h2)
consider H19
we proved subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 x2
that is equivalent to subst0 (s (Flat Appl) (s (Bind b) i)) v3 t4 x2
by (subst0_snd . . . . . previous .)
subst0
s (Bind b) i
v3
THead (Flat Appl) (lift (S O) O v2) t4
THead (Flat Appl) (lift (S O) O v2) x2
end of h2
by (subst0_both . . . . h1 . . . h2)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) x3 (THead (Flat Appl) (lift (S O) O v2) x2)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proved
or
pr0
THead (Flat Appl) v1 (THead (Bind b) x0 x1)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (eq_ind_r . . . previous . H16)
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or3_intro2 : H9:ex3_2 T T λu3:T.λt5:T.eq T w1 (THead (Flat Appl) u3 t5) λu3:T.λ:T.subst0 i v0 v1 u3 λ:T.λt5:T.subst0 (s (Flat Appl) i) v0 (THead (Bind b) u1 t3) t5 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H9 to prove
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex3_2_intro : x0:T x1:T H10:eq T w1 (THead (Flat Appl) x0 x1) H11:subst0 i v0 v1 x0 H12:subst0 (s (Flat Appl) i) v0 (THead (Bind b) u1 t3) x1 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (subst0_gen_head . . . . . . H12)
we proved
or3
ex2 T λu2:T.eq T x1 (THead (Bind b) u2 t3) λu2:T.subst0 (s (Flat Appl) i) v0 u1 u2
ex2
T
λt2:T.eq T x1 (THead (Bind b) u1 t2)
λt2:T.subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 t2
ex3_2
T
T
λu2:T.λt2:T.eq T x1 (THead (Bind b) u2 t2)
λu2:T.λ:T.subst0 (s (Flat Appl) i) v0 u1 u2
λ:T.λt2:T.subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 t2
we proceed by induction on the previous result to prove
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or3_intro0 : H13:ex2 T λu3:T.eq T x1 (THead (Bind b) u3 t3) λu3:T.subst0 (s (Flat Appl) i) v0 u1 u3 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H13 to prove
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x:T H14:eq T x1 (THead (Bind b) x t3) H15:subst0 (s (Flat Appl) i) v0 u1 x ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(H16)
we proceed by induction on H14 to prove eq T w1 (THead (Flat Appl) x0 (THead (Bind b) x t3))
case refl_equal : ⇒
the thesis becomes the hypothesis H10
eq T w1 (THead (Flat Appl) x0 (THead (Bind b) x t3))
end of H16
by (H4 . . . H15 . H8)
we proved or (pr0 x u2) (ex2 T λw2:T.pr0 x w2 λw2:T.subst0 (s (Flat Appl) i) v3 u2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H17:pr0 x u2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (H2 . . . H11 . H8)
we proved or (pr0 x0 v2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H18:pr0 x0 v2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (pr0_upsilon . H0 . . H18 . . H17 . . H5)
we proved
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
by (or_introl . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H18:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H18 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x2:T H19:pr0 x0 x2 H20:subst0 i v3 v2 x2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H19 . . H17 . . H5)
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O x2) t4)
end of h1
(h2)
by (le_O_n .)
we proved le O i
by (subst0_lift_ge_s . . . . H20 . previous .)
we proved subst0 (s (Bind b) i) v3 (lift (S O) O v2) (lift (S O) O x2)
by (subst0_fst . . . . previous . .)
we proved
subst0
s (Bind b) i
v3
THead (Flat Appl) (lift (S O) O v2) t4
THead (Flat Appl) (lift (S O) O x2) t4
by (subst0_snd . . . . . previous .)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O x2) t4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H17:ex2 T λw2:T.pr0 x w2 λw2:T.subst0 (s (Flat Appl) i) v3 u2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H17 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x2:T H18:pr0 x x2 H19:subst0 (s (Flat Appl) i) v3 u2 x2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (H2 . . . H11 . H8)
we proved or (pr0 x0 v2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H20:pr0 x0 v2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H20 . . H18 . . H5)
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) x2 (THead (Flat Appl) (lift (S O) O v2) t4)
end of h1
(h2)
consider H19
we proved subst0 (s (Flat Appl) i) v3 u2 x2
that is equivalent to subst0 i v3 u2 x2
by (subst0_fst . . . . previous . .)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) x2 (THead (Flat Appl) (lift (S O) O v2) t4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H20:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H20 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x3:T H21:pr0 x0 x3 H22:subst0 i v3 v2 x3 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H21 . . H18 . . H5)
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) x2 (THead (Flat Appl) (lift (S O) O x3) t4)
end of h1
(h2)
(h1)
consider H19
we proved subst0 (s (Flat Appl) i) v3 u2 x2
subst0 i v3 u2 x2
end of h1
(h2)
by (le_O_n .)
we proved le O i
by (subst0_lift_ge_s . . . . H22 . previous .)
we proved subst0 (s (Bind b) i) v3 (lift (S O) O v2) (lift (S O) O x3)
by (subst0_fst . . . . previous . .)
subst0
s (Bind b) i
v3
THead (Flat Appl) (lift (S O) O v2) t4
THead (Flat Appl) (lift (S O) O x3) t4
end of h2
by (subst0_both . . . . h1 . . . h2)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) x2 (THead (Flat Appl) (lift (S O) O x3) t4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proved
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x t3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (eq_ind_r . . . previous . H16)
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or3_intro1 : H13:ex2 T λt5:T.eq T x1 (THead (Bind b) u1 t5) λt5:T.subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 t5 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H13 to prove
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x:T H14:eq T x1 (THead (Bind b) u1 x) H15:subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 x ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(H16)
we proceed by induction on H14 to prove eq T w1 (THead (Flat Appl) x0 (THead (Bind b) u1 x))
case refl_equal : ⇒
the thesis becomes the hypothesis H10
eq T w1 (THead (Flat Appl) x0 (THead (Bind b) u1 x))
end of H16
by (H6 . . . H15 . H8)
we proved or (pr0 x t4) (ex2 T λw2:T.pr0 x w2 λw2:T.subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H17:pr0 x t4 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (H2 . . . H11 . H8)
we proved or (pr0 x0 v2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H18:pr0 x0 v2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (pr0_upsilon . H0 . . H18 . . H3 . . H17)
we proved
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
by (or_introl . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H18:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H18 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x2:T H19:pr0 x0 x2 H20:subst0 i v3 v2 x2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H19 . . H3 . . H17)
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O x2) t4)
end of h1
(h2)
by (le_O_n .)
we proved le O i
by (subst0_lift_ge_s . . . . H20 . previous .)
we proved subst0 (s (Bind b) i) v3 (lift (S O) O v2) (lift (S O) O x2)
by (subst0_fst . . . . previous . .)
we proved
subst0
s (Bind b) i
v3
THead (Flat Appl) (lift (S O) O v2) t4
THead (Flat Appl) (lift (S O) O x2) t4
by (subst0_snd . . . . . previous .)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O x2) t4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H17:ex2 T λw2:T.pr0 x w2 λw2:T.subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H17 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x2:T H18:pr0 x x2 H19:subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 x2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (H2 . . . H11 . H8)
we proved or (pr0 x0 v2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H20:pr0 x0 v2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H20 . . H3 . . H18)
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) x2)
end of h1
(h2)
consider H19
we proved subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 x2
that is equivalent to subst0 (s (Flat Appl) (s (Bind b) i)) v3 t4 x2
by (subst0_snd . . . . . previous .)
we proved
subst0
s (Bind b) i
v3
THead (Flat Appl) (lift (S O) O v2) t4
THead (Flat Appl) (lift (S O) O v2) x2
by (subst0_snd . . . . . previous .)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) x2)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H20:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H20 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x3:T H21:pr0 x0 x3 H22:subst0 i v3 v2 x3 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H21 . . H3 . . H18)
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O x3) x2)
end of h1
(h2)
(h1)
by (le_O_n .)
we proved le O i
by (subst0_lift_ge_s . . . . H22 . previous .)
subst0 (s (Bind b) i) v3 (lift (S O) O v2) (lift (S O) O x3)
end of h1
(h2)
consider H19
we proved subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 x2
subst0 (s (Flat Appl) (s (Bind b) i)) v3 t4 x2
end of h2
by (subst0_both . . . . h1 . . . h2)
we proved
subst0
s (Bind b) i
v3
THead (Flat Appl) (lift (S O) O v2) t4
THead (Flat Appl) (lift (S O) O x3) x2
by (subst0_snd . . . . . previous .)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O x3) x2)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proved
or
pr0
THead (Flat Appl) x0 (THead (Bind b) u1 x)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (eq_ind_r . . . previous . H16)
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or3_intro2 : H13:ex3_2 T T λu3:T.λt5:T.eq T x1 (THead (Bind b) u3 t5) λu3:T.λ:T.subst0 (s (Flat Appl) i) v0 u1 u3 λ:T.λt5:T.subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 t5 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H13 to prove
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex3_2_intro : x2:T x3:T H14:eq T x1 (THead (Bind b) x2 x3) H15:subst0 (s (Flat Appl) i) v0 u1 x2 H16:subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 x3 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(H17)
we proceed by induction on H14 to prove eq T w1 (THead (Flat Appl) x0 (THead (Bind b) x2 x3))
case refl_equal : ⇒
the thesis becomes the hypothesis H10
eq T w1 (THead (Flat Appl) x0 (THead (Bind b) x2 x3))
end of H17
by (H6 . . . H16 . H8)
we proved or (pr0 x3 t4) (ex2 T λw2:T.pr0 x3 w2 λw2:T.subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H18:pr0 x3 t4 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (H4 . . . H15 . H8)
we proved or (pr0 x2 u2) (ex2 T λw2:T.pr0 x2 w2 λw2:T.subst0 (s (Flat Appl) i) v3 u2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H19:pr0 x2 u2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (H2 . . . H11 . H8)
we proved or (pr0 x0 v2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H20:pr0 x0 v2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (pr0_upsilon . H0 . . H20 . . H19 . . H18)
we proved
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
by (or_introl . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H20:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H20 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x:T H21:pr0 x0 x H22:subst0 i v3 v2 x ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H21 . . H19 . . H18)
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O x) t4)
end of h1
(h2)
by (le_O_n .)
we proved le O i
by (subst0_lift_ge_s . . . . H22 . previous .)
we proved subst0 (s (Bind b) i) v3 (lift (S O) O v2) (lift (S O) O x)
by (subst0_fst . . . . previous . .)
we proved
subst0
s (Bind b) i
v3
THead (Flat Appl) (lift (S O) O v2) t4
THead (Flat Appl) (lift (S O) O x) t4
by (subst0_snd . . . . . previous .)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O x) t4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H19:ex2 T λw2:T.pr0 x2 w2 λw2:T.subst0 (s (Flat Appl) i) v3 u2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H19 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x:T H20:pr0 x2 x H21:subst0 (s (Flat Appl) i) v3 u2 x ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (H2 . . . H11 . H8)
we proved or (pr0 x0 v2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H22:pr0 x0 v2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H22 . . H20 . . H18)
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) x (THead (Flat Appl) (lift (S O) O v2) t4)
end of h1
(h2)
consider H21
we proved subst0 (s (Flat Appl) i) v3 u2 x
that is equivalent to subst0 i v3 u2 x
by (subst0_fst . . . . previous . .)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) x (THead (Flat Appl) (lift (S O) O v2) t4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H22:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H22 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x4:T H23:pr0 x0 x4 H24:subst0 i v3 v2 x4 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H23 . . H20 . . H18)
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) x (THead (Flat Appl) (lift (S O) O x4) t4)
end of h1
(h2)
(h1)
consider H21
we proved subst0 (s (Flat Appl) i) v3 u2 x
subst0 i v3 u2 x
end of h1
(h2)
by (le_O_n .)
we proved le O i
by (subst0_lift_ge_s . . . . H24 . previous .)
we proved subst0 (s (Bind b) i) v3 (lift (S O) O v2) (lift (S O) O x4)
by (subst0_fst . . . . previous . .)
subst0
s (Bind b) i
v3
THead (Flat Appl) (lift (S O) O v2) t4
THead (Flat Appl) (lift (S O) O x4) t4
end of h2
by (subst0_both . . . . h1 . . . h2)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) x (THead (Flat Appl) (lift (S O) O x4) t4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H18:ex2 T λw2:T.pr0 x3 w2 λw2:T.subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H18 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x:T H19:pr0 x3 x H20:subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 x ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (H4 . . . H15 . H8)
we proved or (pr0 x2 u2) (ex2 T λw2:T.pr0 x2 w2 λw2:T.subst0 (s (Flat Appl) i) v3 u2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H21:pr0 x2 u2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (H2 . . . H11 . H8)
we proved or (pr0 x0 v2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H22:pr0 x0 v2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H22 . . H21 . . H19)
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) x)
end of h1
(h2)
consider H20
we proved subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 x
that is equivalent to subst0 (s (Flat Appl) (s (Bind b) i)) v3 t4 x
by (subst0_snd . . . . . previous .)
we proved
subst0
s (Bind b) i
v3
THead (Flat Appl) (lift (S O) O v2) t4
THead (Flat Appl) (lift (S O) O v2) x
by (subst0_snd . . . . . previous .)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) x)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H22:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H22 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x4:T H23:pr0 x0 x4 H24:subst0 i v3 v2 x4 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H23 . . H21 . . H19)
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O x4) x)
end of h1
(h2)
(h1)
by (le_O_n .)
we proved le O i
by (subst0_lift_ge_s . . . . H24 . previous .)
subst0 (s (Bind b) i) v3 (lift (S O) O v2) (lift (S O) O x4)
end of h1
(h2)
consider H20
we proved subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 x
subst0 (s (Flat Appl) (s (Bind b) i)) v3 t4 x
end of h2
by (subst0_both . . . . h1 . . . h2)
we proved
subst0
s (Bind b) i
v3
THead (Flat Appl) (lift (S O) O v2) t4
THead (Flat Appl) (lift (S O) O x4) x
by (subst0_snd . . . . . previous .)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O x4) x)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H21:ex2 T λw2:T.pr0 x2 w2 λw2:T.subst0 (s (Flat Appl) i) v3 u2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H21 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x4:T H22:pr0 x2 x4 H23:subst0 (s (Flat Appl) i) v3 u2 x4 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (H2 . . . H11 . H8)
we proved or (pr0 x0 v2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2)
we proceed by induction on the previous result to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_introl : H24:pr0 x0 v2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H24 . . H22 . . H19)
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) x4 (THead (Flat Appl) (lift (S O) O v2) x)
end of h1
(h2)
(h1)
consider H23
we proved subst0 (s (Flat Appl) i) v3 u2 x4
subst0 i v3 u2 x4
end of h1
(h2)
consider H20
we proved subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 x
that is equivalent to subst0 (s (Flat Appl) (s (Bind b) i)) v3 t4 x
by (subst0_snd . . . . . previous .)
subst0
s (Bind b) i
v3
THead (Flat Appl) (lift (S O) O v2) t4
THead (Flat Appl) (lift (S O) O v2) x
end of h2
by (subst0_both . . . . h1 . . . h2)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) x4 (THead (Flat Appl) (lift (S O) O v2) x)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case or_intror : H24:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v3 v2 w2 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proceed by induction on H24 to prove
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case ex_intro2 : x5:T H25:pr0 x0 x5 H26:subst0 i v3 v2 x5 ⇒
the thesis becomes
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
(h1)
by (pr0_upsilon . H0 . . H25 . . H22 . . H19)
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) x4 (THead (Flat Appl) (lift (S O) O x5) x)
end of h1
(h2)
(h1)
consider H23
we proved subst0 (s (Flat Appl) i) v3 u2 x4
subst0 i v3 u2 x4
end of h1
(h2)
(h1)
by (le_O_n .)
we proved le O i
by (subst0_lift_ge_s . . . . H26 . previous .)
subst0 (s (Bind b) i) v3 (lift (S O) O v2) (lift (S O) O x5)
end of h1
(h2)
consider H20
we proved subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 x
subst0 (s (Flat Appl) (s (Bind b) i)) v3 t4 x
end of h2
by (subst0_both . . . . h1 . . . h2)
subst0
s (Bind b) i
v3
THead (Flat Appl) (lift (S O) O v2) t4
THead (Flat Appl) (lift (S O) O x5) x
end of h2
by (subst0_both . . . . h1 . . . h2)
subst0
i
v3
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
THead (Bind b) x4 (THead (Flat Appl) (lift (S O) O x5) x)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (or_intror . . previous)
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proved
or
pr0
THead (Flat Appl) x0 (THead (Bind b) x2 x3)
THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)
ex2
T
λw2:T.pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
by (eq_ind_r . . . previous . H17)
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
we proved
or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
∀v0:T
.∀w1:T
.∀i:nat
.∀H7:subst0 i v0 (THead (Flat Appl) v1 (THead (Bind b) u1 t3)) w1
.∀v3:T
.∀H8:pr0 v0 v3
.or
pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))
ex2
T
λw2:T.pr0 w1 w2
λw2:T.subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2
case pr0_delta : u1:T u2:T H0:pr0 u1 u2 t3:T t4:T H2:pr0 t3 t4 w:T H4:subst0 O u2 t4 w ⇒
the thesis becomes
∀v1:T
.∀w1:T
.∀i:nat
.∀H5:subst0 i v1 (THead (Bind Abbr) u1 t3) w1
.∀v2:T
.∀H6:pr0 v1 v2
.or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
(H1) by induction hypothesis we know ∀v1:T.∀w1:T.∀i:nat.(subst0 i v1 u1 w1)→∀v2:T.(pr0 v1 v2)→(or (pr0 w1 u2) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 u2 w2))
(H3) by induction hypothesis we know ∀v1:T.∀w1:T.∀i:nat.(subst0 i v1 t3 w1)→∀v2:T.(pr0 v1 v2)→(or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2))
assume v1: T
assume w1: T
assume i: nat
suppose H5: subst0 i v1 (THead (Bind Abbr) u1 t3) w1
assume v2: T
suppose H6: pr0 v1 v2
by (subst0_gen_head . . . . . . H5)
we proved
or3
ex2 T λu2:T.eq T w1 (THead (Bind Abbr) u2 t3) λu2:T.subst0 i v1 u1 u2
ex2 T λt2:T.eq T w1 (THead (Bind Abbr) u1 t2) λt2:T.subst0 (s (Bind Abbr) i) v1 t3 t2
ex3_2
T
T
λu2:T.λt2:T.eq T w1 (THead (Bind Abbr) u2 t2)
λu2:T.λ:T.subst0 i v1 u1 u2
λ:T.λt2:T.subst0 (s (Bind Abbr) i) v1 t3 t2
we proceed by induction on the previous result to prove
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case or3_intro0 : H7:ex2 T λu3:T.eq T w1 (THead (Bind Abbr) u3 t3) λu3:T.subst0 i v1 u1 u3 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
we proceed by induction on H7 to prove
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case ex_intro2 : x:T H8:eq T w1 (THead (Bind Abbr) x t3) H9:subst0 i v1 u1 x ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (H1 . . . H9 . H6)
we proved or (pr0 x u2) (ex2 T λw2:T.pr0 x w2 λw2:T.subst0 i v2 u2 w2)
we proceed by induction on the previous result to prove
or
pr0 (THead (Bind Abbr) x t3) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x t3) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case or_introl : H10:pr0 x u2 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x t3) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x t3) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (pr0_delta . . H10 . . H2 . H4)
we proved pr0 (THead (Bind Abbr) x t3) (THead (Bind Abbr) u2 w)
by (or_introl . . previous)
or
pr0 (THead (Bind Abbr) x t3) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x t3) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case or_intror : H10:ex2 T λw2:T.pr0 x w2 λw2:T.subst0 i v2 u2 w2 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x t3) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x t3) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
we proceed by induction on H10 to prove
or
pr0 (THead (Bind Abbr) x t3) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x t3) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case ex_intro2 : x0:T H11:pr0 x x0 H12:subst0 i v2 u2 x0 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x t3) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x t3) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (subst0_subst0_back . . . . H4 . . . H12)
we proved ex2 T λt:T.subst0 O x0 t4 t λt:T.subst0 (S (plus i O)) v2 w t
we proceed by induction on the previous result to prove
or
pr0 (THead (Bind Abbr) x t3) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x t3) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case ex_intro2 : x1:T H13:subst0 O x0 t4 x1 H14:subst0 (S (plus i O)) v2 w x1 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x t3) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x t3) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
(H15)
by (plus_n_O .)
we proved eq nat i (plus i O)
by (sym_eq . . . previous)
we proved eq nat (plus i O) i
by (f_equal . . . . . previous)
eq nat (S (plus i O)) (S i)
end of H15
(H16)
we proceed by induction on H15 to prove subst0 (S i) v2 w x1
case refl_equal : ⇒
the thesis becomes the hypothesis H14
subst0 (S i) v2 w x1
end of H16
(h1)
by (pr0_delta . . H11 . . H2 . H13)
pr0 (THead (Bind Abbr) x t3) (THead (Bind Abbr) x0 x1)
end of h1
(h2)
consider H16
we proved subst0 (S i) v2 w x1
that is equivalent to subst0 (s (Bind Abbr) i) v2 w x1
by (subst0_both . . . . H12 . . . previous)
subst0 i v2 (THead (Bind Abbr) u2 w) (THead (Bind Abbr) x0 x1)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved ex2 T λw2:T.pr0 (THead (Bind Abbr) x t3) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (or_intror . . previous)
or
pr0 (THead (Bind Abbr) x t3) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x t3) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
or
pr0 (THead (Bind Abbr) x t3) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x t3) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
or
pr0 (THead (Bind Abbr) x t3) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x t3) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
we proved
or
pr0 (THead (Bind Abbr) x t3) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x t3) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (eq_ind_r . . . previous . H8)
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case or3_intro1 : H7:ex2 T λt5:T.eq T w1 (THead (Bind Abbr) u1 t5) λt5:T.subst0 (s (Bind Abbr) i) v1 t3 t5 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
we proceed by induction on H7 to prove
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case ex_intro2 : x:T H8:eq T w1 (THead (Bind Abbr) u1 x) H9:subst0 (s (Bind Abbr) i) v1 t3 x ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (H3 . . . H9 . H6)
we proved or (pr0 x t4) (ex2 T λw2:T.pr0 x w2 λw2:T.subst0 (s (Bind Abbr) i) v2 t4 w2)
we proceed by induction on the previous result to prove
or
pr0 (THead (Bind Abbr) u1 x) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) u1 x) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case or_introl : H10:pr0 x t4 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) u1 x) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) u1 x) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (pr0_delta . . H0 . . H10 . H4)
we proved pr0 (THead (Bind Abbr) u1 x) (THead (Bind Abbr) u2 w)
by (or_introl . . previous)
or
pr0 (THead (Bind Abbr) u1 x) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) u1 x) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case or_intror : H10:ex2 T λw2:T.pr0 x w2 λw2:T.subst0 (s (Bind Abbr) i) v2 t4 w2 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) u1 x) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) u1 x) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
we proceed by induction on H10 to prove
or
pr0 (THead (Bind Abbr) u1 x) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) u1 x) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case ex_intro2 : x0:T H11:pr0 x x0 H12:subst0 (s (Bind Abbr) i) v2 t4 x0 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) u1 x) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) u1 x) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (O_S .)
we proved not (eq nat O (S i))
by (sym_not_eq . . . previous)
we proved not (eq nat (S i) O)
that is equivalent to not (eq nat (s (Bind Abbr) i) O)
by (subst0_confluence_neq . . . . H12 . . . H4 previous)
we proved ex2 T λt:T.subst0 O u2 x0 t λt:T.subst0 (s (Bind Abbr) i) v2 w t
we proceed by induction on the previous result to prove
or
pr0 (THead (Bind Abbr) u1 x) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) u1 x) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case ex_intro2 : x1:T H13:subst0 O u2 x0 x1 H14:subst0 (s (Bind Abbr) i) v2 w x1 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) u1 x) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) u1 x) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
(h1)
by (pr0_delta . . H0 . . H11 . H13)
pr0 (THead (Bind Abbr) u1 x) (THead (Bind Abbr) u2 x1)
end of h1
(h2)
by (subst0_snd . . . . . H14 .)
subst0 i v2 (THead (Bind Abbr) u2 w) (THead (Bind Abbr) u2 x1)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved ex2 T λw2:T.pr0 (THead (Bind Abbr) u1 x) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (or_intror . . previous)
or
pr0 (THead (Bind Abbr) u1 x) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) u1 x) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
or
pr0 (THead (Bind Abbr) u1 x) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) u1 x) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
or
pr0 (THead (Bind Abbr) u1 x) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) u1 x) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
we proved
or
pr0 (THead (Bind Abbr) u1 x) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) u1 x) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (eq_ind_r . . . previous . H8)
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case or3_intro2 : H7:ex3_2 T T λu3:T.λt5:T.eq T w1 (THead (Bind Abbr) u3 t5) λu3:T.λ:T.subst0 i v1 u1 u3 λ:T.λt5:T.subst0 (s (Bind Abbr) i) v1 t3 t5 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
we proceed by induction on H7 to prove
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case ex3_2_intro : x0:T x1:T H8:eq T w1 (THead (Bind Abbr) x0 x1) H9:subst0 i v1 u1 x0 H10:subst0 (s (Bind Abbr) i) v1 t3 x1 ⇒
the thesis becomes
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (H3 . . . H10 . H6)
we proved or (pr0 x1 t4) (ex2 T λw2:T.pr0 x1 w2 λw2:T.subst0 (s (Bind Abbr) i) v2 t4 w2)
we proceed by induction on the previous result to prove
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case or_introl : H11:pr0 x1 t4 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (H1 . . . H9 . H6)
we proved or (pr0 x0 u2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v2 u2 w2)
we proceed by induction on the previous result to prove
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case or_introl : H12:pr0 x0 u2 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (pr0_delta . . H12 . . H11 . H4)
we proved pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
by (or_introl . . previous)
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case or_intror : H12:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v2 u2 w2 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
we proceed by induction on H12 to prove
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case ex_intro2 : x:T H13:pr0 x0 x H14:subst0 i v2 u2 x ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (subst0_subst0_back . . . . H4 . . . H14)
we proved ex2 T λt:T.subst0 O x t4 t λt:T.subst0 (S (plus i O)) v2 w t
we proceed by induction on the previous result to prove
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case ex_intro2 : x2:T H15:subst0 O x t4 x2 H16:subst0 (S (plus i O)) v2 w x2 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
(H17)
by (plus_n_O .)
we proved eq nat i (plus i O)
by (sym_eq . . . previous)
we proved eq nat (plus i O) i
by (f_equal . . . . . previous)
eq nat (S (plus i O)) (S i)
end of H17
(H18)
we proceed by induction on H17 to prove subst0 (S i) v2 w x2
case refl_equal : ⇒
the thesis becomes the hypothesis H16
subst0 (S i) v2 w x2
end of H18
(h1)
by (pr0_delta . . H13 . . H11 . H15)
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) x x2)
end of h1
(h2)
consider H18
we proved subst0 (S i) v2 w x2
that is equivalent to subst0 (s (Bind Abbr) i) v2 w x2
by (subst0_both . . . . H14 . . . previous)
subst0 i v2 (THead (Bind Abbr) u2 w) (THead (Bind Abbr) x x2)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (or_intror . . previous)
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case or_intror : H11:ex2 T λw2:T.pr0 x1 w2 λw2:T.subst0 (s (Bind Abbr) i) v2 t4 w2 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
we proceed by induction on H11 to prove
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case ex_intro2 : x:T H12:pr0 x1 x H13:subst0 (s (Bind Abbr) i) v2 t4 x ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (H1 . . . H9 . H6)
we proved or (pr0 x0 u2) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v2 u2 w2)
we proceed by induction on the previous result to prove
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case or_introl : H14:pr0 x0 u2 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (O_S .)
we proved not (eq nat O (S i))
by (sym_not_eq . . . previous)
we proved not (eq nat (S i) O)
that is equivalent to not (eq nat (s (Bind Abbr) i) O)
by (subst0_confluence_neq . . . . H13 . . . H4 previous)
we proved ex2 T λt:T.subst0 O u2 x t λt:T.subst0 (s (Bind Abbr) i) v2 w t
we proceed by induction on the previous result to prove
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case ex_intro2 : x2:T H15:subst0 O u2 x x2 H16:subst0 (s (Bind Abbr) i) v2 w x2 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
(h1)
by (pr0_delta . . H14 . . H12 . H15)
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 x2)
end of h1
(h2)
by (subst0_snd . . . . . H16 .)
subst0 i v2 (THead (Bind Abbr) u2 w) (THead (Bind Abbr) u2 x2)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (or_intror . . previous)
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case or_intror : H14:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v2 u2 w2 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
we proceed by induction on H14 to prove
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case ex_intro2 : x2:T H15:pr0 x0 x2 H16:subst0 i v2 u2 x2 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (subst0_subst0_back . . . . H4 . . . H16)
we proved ex2 T λt:T.subst0 O x2 t4 t λt:T.subst0 (S (plus i O)) v2 w t
we proceed by induction on the previous result to prove
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case ex_intro2 : x3:T H17:subst0 O x2 t4 x3 H18:subst0 (S (plus i O)) v2 w x3 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
(H19)
by (plus_n_O .)
we proved eq nat i (plus i O)
by (sym_eq . . . previous)
we proved eq nat (plus i O) i
by (f_equal . . . . . previous)
eq nat (S (plus i O)) (S i)
end of H19
(H20)
we proceed by induction on H19 to prove subst0 (S i) v2 w x3
case refl_equal : ⇒
the thesis becomes the hypothesis H18
subst0 (S i) v2 w x3
end of H20
by (O_S .)
we proved not (eq nat O (S i))
that is equivalent to not (eq nat O (s (Bind Abbr) i))
by (subst0_confluence_neq . . . . H17 . . . H13 previous)
we proved ex2 T λt:T.subst0 (s (Bind Abbr) i) v2 x3 t λt:T.subst0 O x2 x t
we proceed by induction on the previous result to prove
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case ex_intro2 : x4:T H21:subst0 (s (Bind Abbr) i) v2 x3 x4 H22:subst0 O x2 x x4 ⇒
the thesis becomes
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
(h1)
by (pr0_delta . . H15 . . H12 . H22)
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) x2 x4)
end of h1
(h2)
consider H20
we proved subst0 (S i) v2 w x3
that is equivalent to subst0 (s (Bind Abbr) i) v2 w x3
by (subst0_trans . . . . previous . H21)
we proved subst0 (s (Bind Abbr) i) v2 w x4
by (subst0_both . . . . H16 . . . previous)
subst0 i v2 (THead (Bind Abbr) u2 w) (THead (Bind Abbr) x2 x4)
end of h2
by (ex_intro2 . . . . h1 h2)
we proved ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (or_intror . . previous)
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
we proved
or
pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 (THead (Bind Abbr) x0 x1) w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
by (eq_ind_r . . . previous . H8)
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
we proved
or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
∀v1:T
.∀w1:T
.∀i:nat
.∀H5:subst0 i v1 (THead (Bind Abbr) u1 t3) w1
.∀v2:T
.∀H6:pr0 v1 v2
.or
pr0 w1 (THead (Bind Abbr) u2 w)
ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 (THead (Bind Abbr) u2 w) w2
case pr0_zeta : b:B H0:not (eq B b Abst) t3:T t4:T H1:pr0 t3 t4 u:T ⇒
the thesis becomes
∀v1:T
.∀w1:T
.∀i:nat
.∀H3:subst0 i v1 (THead (Bind b) u (lift (S O) O t3)) w1
.∀v2:T.∀H4:(pr0 v1 v2).(or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2))
(H2) by induction hypothesis we know ∀v1:T.∀w1:T.∀i:nat.(subst0 i v1 t3 w1)→∀v2:T.(pr0 v1 v2)→(or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2))
assume v1: T
assume w1: T
assume i: nat
suppose H3: subst0 i v1 (THead (Bind b) u (lift (S O) O t3)) w1
assume v2: T
suppose H4: pr0 v1 v2
by (subst0_gen_head . . . . . . H3)
we proved
or3
ex2 T λu2:T.eq T w1 (THead (Bind b) u2 (lift (S O) O t3)) λu2:T.subst0 i v1 u u2
ex2
T
λt2:T.eq T w1 (THead (Bind b) u t2)
λt2:T.subst0 (s (Bind b) i) v1 (lift (S O) O t3) t2
ex3_2
T
T
λu2:T.λt2:T.eq T w1 (THead (Bind b) u2 t2)
λu2:T.λ:T.subst0 i v1 u u2
λ:T.λt2:T.subst0 (s (Bind b) i) v1 (lift (S O) O t3) t2
we proceed by induction on the previous result to prove or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
case or3_intro0 : H5:ex2 T λu2:T.eq T w1 (THead (Bind b) u2 (lift (S O) O t3)) λu2:T.subst0 i v1 u u2 ⇒
the thesis becomes or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
we proceed by induction on H5 to prove or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
case ex_intro2 : x:T H6:eq T w1 (THead (Bind b) x (lift (S O) O t3)) :subst0 i v1 u x ⇒
the thesis becomes or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
by (pr0_zeta . H0 . . H1 .)
we proved pr0 (THead (Bind b) x (lift (S O) O t3)) t4
by (or_introl . . previous)
we proved
or
pr0 (THead (Bind b) x (lift (S O) O t3)) t4
ex2 T λw2:T.pr0 (THead (Bind b) x (lift (S O) O t3)) w2 λw2:T.subst0 i v2 t4 w2
by (eq_ind_r . . . previous . H6)
or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
case or3_intro1 : H5:ex2 T λt5:T.eq T w1 (THead (Bind b) u t5) λt5:T.subst0 (s (Bind b) i) v1 (lift (S O) O t3) t5 ⇒
the thesis becomes or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
we proceed by induction on H5 to prove or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
case ex_intro2 : x:T H6:eq T w1 (THead (Bind b) u x) H7:subst0 (s (Bind b) i) v1 (lift (S O) O t3) x ⇒
the thesis becomes or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
by (le_O_n .)
we proved le O i
by (le_n_S . . previous)
we proved le (S O) (S i)
that is equivalent to le (plus O (S O)) (s (Bind b) i)
by (subst0_gen_lift_ge . . . . . . H7 previous)
we proved
ex2 T λt2:T.eq T x (lift (S O) O t2) λt2:T.subst0 (minus (s (Bind b) i) (S O)) v1 t3 t2
we proceed by induction on the previous result to prove or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
case ex_intro2 : x0:T H8:eq T x (lift (S O) O x0) H9:subst0 (minus (s (Bind b) i) (S O)) v1 t3 x0 ⇒
the thesis becomes or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
(H10)
we proceed by induction on H8 to prove eq T w1 (THead (Bind b) u (lift (S O) O x0))
case refl_equal : ⇒
the thesis becomes the hypothesis H6
eq T w1 (THead (Bind b) u (lift (S O) O x0))
end of H10
(H11)
(h1)
consider H9
we proved subst0 (minus (s (Bind b) i) (S O)) v1 t3 x0
subst0 (minus i O) v1 t3 x0
end of h1
(h2)
by (minus_n_O .)
eq nat i (minus i O)
end of h2
by (eq_ind_r . . . h1 . h2)
subst0 i v1 t3 x0
end of H11
by (H2 . . . H11 . H4)
we proved or (pr0 x0 t4) (ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v2 t4 w2)
we proceed by induction on the previous result to prove
or
pr0 (THead (Bind b) u (lift (S O) O x0)) t4
ex2 T λw2:T.pr0 (THead (Bind b) u (lift (S O) O x0)) w2 λw2:T.subst0 i v2 t4 w2
case or_introl : H12:pr0 x0 t4 ⇒
the thesis becomes
or
pr0 (THead (Bind b) u (lift (S O) O x0)) t4
ex2 T λw2:T.pr0 (THead (Bind b) u (lift (S O) O x0)) w2 λw2:T.subst0 i v2 t4 w2
by (pr0_zeta . H0 . . H12 .)
we proved pr0 (THead (Bind b) u (lift (S O) O x0)) t4
by (or_introl . . previous)
or
pr0 (THead (Bind b) u (lift (S O) O x0)) t4
ex2 T λw2:T.pr0 (THead (Bind b) u (lift (S O) O x0)) w2 λw2:T.subst0 i v2 t4 w2
case or_intror : H12:ex2 T λw2:T.pr0 x0 w2 λw2:T.subst0 i v2 t4 w2 ⇒
the thesis becomes
or
pr0 (THead (Bind b) u (lift (S O) O x0)) t4
ex2 T λw2:T.pr0 (THead (Bind b) u (lift (S O) O x0)) w2 λw2:T.subst0 i v2 t4 w2
we proceed by induction on H12 to prove
or
pr0 (THead (Bind b) u (lift (S O) O x0)) t4
ex2 T λw2:T.pr0 (THead (Bind b) u (lift (S O) O x0)) w2 λw2:T.subst0 i v2 t4 w2
case ex_intro2 : x1:T H13:pr0 x0 x1 H14:subst0 i v2 t4 x1 ⇒
the thesis becomes
or
pr0 (THead (Bind b) u (lift (S O) O x0)) t4
ex2 T λw2:T.pr0 (THead (Bind b) u (lift (S O) O x0)) w2 λw2:T.subst0 i v2 t4 w2
by (pr0_zeta . H0 . . H13 .)
we proved pr0 (THead (Bind b) u (lift (S O) O x0)) x1
by (ex_intro2 . . . . previous H14)
we proved ex2 T λw2:T.pr0 (THead (Bind b) u (lift (S O) O x0)) w2 λw2:T.subst0 i v2 t4 w2
by (or_intror . . previous)
or
pr0 (THead (Bind b) u (lift (S O) O x0)) t4
ex2 T λw2:T.pr0 (THead (Bind b) u (lift (S O) O x0)) w2 λw2:T.subst0 i v2 t4 w2
or
pr0 (THead (Bind b) u (lift (S O) O x0)) t4
ex2 T λw2:T.pr0 (THead (Bind b) u (lift (S O) O x0)) w2 λw2:T.subst0 i v2 t4 w2
we proved
or
pr0 (THead (Bind b) u (lift (S O) O x0)) t4
ex2 T λw2:T.pr0 (THead (Bind b) u (lift (S O) O x0)) w2 λw2:T.subst0 i v2 t4 w2
by (eq_ind_r . . . previous . H10)
or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
case or3_intro2 : H5:ex3_2 T T λu2:T.λt5:T.eq T w1 (THead (Bind b) u2 t5) λu2:T.λ:T.subst0 i v1 u u2 λ:T.λt5:T.subst0 (s (Bind b) i) v1 (lift (S O) O t3) t5 ⇒
the thesis becomes or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
we proceed by induction on H5 to prove or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
case ex3_2_intro : x0:T x1:T H6:eq T w1 (THead (Bind b) x0 x1) :subst0 i v1 u x0 H8:subst0 (s (Bind b) i) v1 (lift (S O) O t3) x1 ⇒
the thesis becomes or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
by (le_O_n .)
we proved le O i
by (le_n_S . . previous)
we proved le (S O) (S i)
that is equivalent to le (plus O (S O)) (s (Bind b) i)
by (subst0_gen_lift_ge . . . . . . H8 previous)
we proved ex2 T λt2:T.eq T x1 (lift (S O) O t2) λt2:T.subst0 (minus (s (Bind b) i) (S O)) v1 t3 t2
we proceed by induction on the previous result to prove or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
case ex_intro2 : x:T H9:eq T x1 (lift (S O) O x) H10:subst0 (minus (s (Bind b) i) (S O)) v1 t3 x ⇒
the thesis becomes or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
(H11)
we proceed by induction on H9 to prove eq T w1 (THead (Bind b) x0 (lift (S O) O x))
case refl_equal : ⇒
the thesis becomes the hypothesis H6
eq T w1 (THead (Bind b) x0 (lift (S O) O x))
end of H11
(H12)
(h1)
consider H10
we proved subst0 (minus (s (Bind b) i) (S O)) v1 t3 x
subst0 (minus i O) v1 t3 x
end of h1
(h2)
by (minus_n_O .)
eq nat i (minus i O)
end of h2
by (eq_ind_r . . . h1 . h2)
subst0 i v1 t3 x
end of H12
by (H2 . . . H12 . H4)
we proved or (pr0 x t4) (ex2 T λw2:T.pr0 x w2 λw2:T.subst0 i v2 t4 w2)
we proceed by induction on the previous result to prove
or
pr0 (THead (Bind b) x0 (lift (S O) O x)) t4
ex2 T λw2:T.pr0 (THead (Bind b) x0 (lift (S O) O x)) w2 λw2:T.subst0 i v2 t4 w2
case or_introl : H13:pr0 x t4 ⇒
the thesis becomes
or
pr0 (THead (Bind b) x0 (lift (S O) O x)) t4
ex2 T λw2:T.pr0 (THead (Bind b) x0 (lift (S O) O x)) w2 λw2:T.subst0 i v2 t4 w2
by (pr0_zeta . H0 . . H13 .)
we proved pr0 (THead (Bind b) x0 (lift (S O) O x)) t4
by (or_introl . . previous)
or
pr0 (THead (Bind b) x0 (lift (S O) O x)) t4
ex2 T λw2:T.pr0 (THead (Bind b) x0 (lift (S O) O x)) w2 λw2:T.subst0 i v2 t4 w2
case or_intror : H13:ex2 T λw2:T.pr0 x w2 λw2:T.subst0 i v2 t4 w2 ⇒
the thesis becomes
or
pr0 (THead (Bind b) x0 (lift (S O) O x)) t4
ex2 T λw2:T.pr0 (THead (Bind b) x0 (lift (S O) O x)) w2 λw2:T.subst0 i v2 t4 w2
we proceed by induction on H13 to prove
or
pr0 (THead (Bind b) x0 (lift (S O) O x)) t4
ex2 T λw2:T.pr0 (THead (Bind b) x0 (lift (S O) O x)) w2 λw2:T.subst0 i v2 t4 w2
case ex_intro2 : x2:T H14:pr0 x x2 H15:subst0 i v2 t4 x2 ⇒
the thesis becomes
or
pr0 (THead (Bind b) x0 (lift (S O) O x)) t4
ex2 T λw2:T.pr0 (THead (Bind b) x0 (lift (S O) O x)) w2 λw2:T.subst0 i v2 t4 w2
by (pr0_zeta . H0 . . H14 .)
we proved pr0 (THead (Bind b) x0 (lift (S O) O x)) x2
by (ex_intro2 . . . . previous H15)
we proved ex2 T λw2:T.pr0 (THead (Bind b) x0 (lift (S O) O x)) w2 λw2:T.subst0 i v2 t4 w2
by (or_intror . . previous)
or
pr0 (THead (Bind b) x0 (lift (S O) O x)) t4
ex2 T λw2:T.pr0 (THead (Bind b) x0 (lift (S O) O x)) w2 λw2:T.subst0 i v2 t4 w2
or
pr0 (THead (Bind b) x0 (lift (S O) O x)) t4
ex2 T λw2:T.pr0 (THead (Bind b) x0 (lift (S O) O x)) w2 λw2:T.subst0 i v2 t4 w2
we proved
or
pr0 (THead (Bind b) x0 (lift (S O) O x)) t4
ex2 T λw2:T.pr0 (THead (Bind b) x0 (lift (S O) O x)) w2 λw2:T.subst0 i v2 t4 w2
by (eq_ind_r . . . previous . H11)
or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
we proved or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
∀v1:T
.∀w1:T
.∀i:nat
.∀H3:subst0 i v1 (THead (Bind b) u (lift (S O) O t3)) w1
.∀v2:T.∀H4:(pr0 v1 v2).(or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2))
case pr0_tau : t3:T t4:T H0:pr0 t3 t4 u:T ⇒
the thesis becomes
∀v1:T.∀w1:T.∀i:nat.∀H2:(subst0 i v1 (THead (Flat Cast) u t3) w1).∀v2:T.∀H3:(pr0 v1 v2).(or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2))
(H1) by induction hypothesis we know ∀v1:T.∀w1:T.∀i:nat.(subst0 i v1 t3 w1)→∀v2:T.(pr0 v1 v2)→(or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2))
assume v1: T
assume w1: T
assume i: nat
suppose H2: subst0 i v1 (THead (Flat Cast) u t3) w1
assume v2: T
suppose H3: pr0 v1 v2
by (subst0_gen_head . . . . . . H2)
we proved
or3
ex2 T λu2:T.eq T w1 (THead (Flat Cast) u2 t3) λu2:T.subst0 i v1 u u2
ex2 T λt2:T.eq T w1 (THead (Flat Cast) u t2) λt2:T.subst0 (s (Flat Cast) i) v1 t3 t2
ex3_2
T
T
λu2:T.λt2:T.eq T w1 (THead (Flat Cast) u2 t2)
λu2:T.λ:T.subst0 i v1 u u2
λ:T.λt2:T.subst0 (s (Flat Cast) i) v1 t3 t2
we proceed by induction on the previous result to prove or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
case or3_intro0 : H4:ex2 T λu2:T.eq T w1 (THead (Flat Cast) u2 t3) λu2:T.subst0 i v1 u u2 ⇒
the thesis becomes or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
we proceed by induction on H4 to prove or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
case ex_intro2 : x:T H5:eq T w1 (THead (Flat Cast) x t3) :subst0 i v1 u x ⇒
the thesis becomes or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
by (pr0_tau . . H0 .)
we proved pr0 (THead (Flat Cast) x t3) t4
by (or_introl . . previous)
we proved
or
pr0 (THead (Flat Cast) x t3) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) x t3) w2 λw2:T.subst0 i v2 t4 w2
by (eq_ind_r . . . previous . H5)
or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
case or3_intro1 : H4:ex2 T λt5:T.eq T w1 (THead (Flat Cast) u t5) λt5:T.subst0 (s (Flat Cast) i) v1 t3 t5 ⇒
the thesis becomes or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
we proceed by induction on H4 to prove or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
case ex_intro2 : x:T H5:eq T w1 (THead (Flat Cast) u x) H6:subst0 (s (Flat Cast) i) v1 t3 x ⇒
the thesis becomes or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
by (H1 . . . H6 . H3)
we proved or (pr0 x t4) (ex2 T λw2:T.pr0 x w2 λw2:T.subst0 (s (Flat Cast) i) v2 t4 w2)
we proceed by induction on the previous result to prove
or
pr0 (THead (Flat Cast) u x) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) u x) w2 λw2:T.subst0 i v2 t4 w2
case or_introl : H7:pr0 x t4 ⇒
the thesis becomes
or
pr0 (THead (Flat Cast) u x) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) u x) w2 λw2:T.subst0 i v2 t4 w2
by (pr0_tau . . H7 .)
we proved pr0 (THead (Flat Cast) u x) t4
by (or_introl . . previous)
or
pr0 (THead (Flat Cast) u x) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) u x) w2 λw2:T.subst0 i v2 t4 w2
case or_intror : H7:ex2 T λw2:T.pr0 x w2 λw2:T.subst0 (s (Flat Cast) i) v2 t4 w2 ⇒
the thesis becomes
or
pr0 (THead (Flat Cast) u x) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) u x) w2 λw2:T.subst0 i v2 t4 w2
we proceed by induction on H7 to prove
or
pr0 (THead (Flat Cast) u x) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) u x) w2 λw2:T.subst0 i v2 t4 w2
case ex_intro2 : x0:T H8:pr0 x x0 H9:subst0 (s (Flat Cast) i) v2 t4 x0 ⇒
the thesis becomes
or
pr0 (THead (Flat Cast) u x) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) u x) w2 λw2:T.subst0 i v2 t4 w2
(h1)
by (pr0_tau . . H8 .)
pr0 (THead (Flat Cast) u x) x0
end of h1
(h2)
consider H9
we proved subst0 (s (Flat Cast) i) v2 t4 x0
subst0 i v2 t4 x0
end of h2
by (ex_intro2 . . . . h1 h2)
we proved ex2 T λw2:T.pr0 (THead (Flat Cast) u x) w2 λw2:T.subst0 i v2 t4 w2
by (or_intror . . previous)
or
pr0 (THead (Flat Cast) u x) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) u x) w2 λw2:T.subst0 i v2 t4 w2
or
pr0 (THead (Flat Cast) u x) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) u x) w2 λw2:T.subst0 i v2 t4 w2
we proved
or
pr0 (THead (Flat Cast) u x) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) u x) w2 λw2:T.subst0 i v2 t4 w2
by (eq_ind_r . . . previous . H5)
or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
case or3_intro2 : H4:ex3_2 T T λu2:T.λt5:T.eq T w1 (THead (Flat Cast) u2 t5) λu2:T.λ:T.subst0 i v1 u u2 λ:T.λt5:T.subst0 (s (Flat Cast) i) v1 t3 t5 ⇒
the thesis becomes or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
we proceed by induction on H4 to prove or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
case ex3_2_intro : x0:T x1:T H5:eq T w1 (THead (Flat Cast) x0 x1) :subst0 i v1 u x0 H7:subst0 (s (Flat Cast) i) v1 t3 x1 ⇒
the thesis becomes or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
by (H1 . . . H7 . H3)
we proved or (pr0 x1 t4) (ex2 T λw2:T.pr0 x1 w2 λw2:T.subst0 (s (Flat Cast) i) v2 t4 w2)
we proceed by induction on the previous result to prove
or
pr0 (THead (Flat Cast) x0 x1) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) x0 x1) w2 λw2:T.subst0 i v2 t4 w2
case or_introl : H8:pr0 x1 t4 ⇒
the thesis becomes
or
pr0 (THead (Flat Cast) x0 x1) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) x0 x1) w2 λw2:T.subst0 i v2 t4 w2
by (pr0_tau . . H8 .)
we proved pr0 (THead (Flat Cast) x0 x1) t4
by (or_introl . . previous)
or
pr0 (THead (Flat Cast) x0 x1) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) x0 x1) w2 λw2:T.subst0 i v2 t4 w2
case or_intror : H8:ex2 T λw2:T.pr0 x1 w2 λw2:T.subst0 (s (Flat Cast) i) v2 t4 w2 ⇒
the thesis becomes
or
pr0 (THead (Flat Cast) x0 x1) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) x0 x1) w2 λw2:T.subst0 i v2 t4 w2
we proceed by induction on H8 to prove
or
pr0 (THead (Flat Cast) x0 x1) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) x0 x1) w2 λw2:T.subst0 i v2 t4 w2
case ex_intro2 : x:T H9:pr0 x1 x H10:subst0 (s (Flat Cast) i) v2 t4 x ⇒
the thesis becomes
or
pr0 (THead (Flat Cast) x0 x1) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) x0 x1) w2 λw2:T.subst0 i v2 t4 w2
(h1)
by (pr0_tau . . H9 .)
pr0 (THead (Flat Cast) x0 x1) x
end of h1
(h2)
consider H10
we proved subst0 (s (Flat Cast) i) v2 t4 x
subst0 i v2 t4 x
end of h2
by (ex_intro2 . . . . h1 h2)
we proved ex2 T λw2:T.pr0 (THead (Flat Cast) x0 x1) w2 λw2:T.subst0 i v2 t4 w2
by (or_intror . . previous)
or
pr0 (THead (Flat Cast) x0 x1) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) x0 x1) w2 λw2:T.subst0 i v2 t4 w2
or
pr0 (THead (Flat Cast) x0 x1) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) x0 x1) w2 λw2:T.subst0 i v2 t4 w2
we proved
or
pr0 (THead (Flat Cast) x0 x1) t4
ex2 T λw2:T.pr0 (THead (Flat Cast) x0 x1) w2 λw2:T.subst0 i v2 t4 w2
by (eq_ind_r . . . previous . H5)
or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
we proved or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2)
∀v1:T.∀w1:T.∀i:nat.∀H2:(subst0 i v1 (THead (Flat Cast) u t3) w1).∀v2:T.∀H3:(pr0 v1 v2).(or (pr0 w1 t4) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t4 w2))
we proved ∀v1:T.∀w1:T.∀i:nat.(subst0 i v1 t1 w1)→∀v2:T.(pr0 v1 v2)→(or (pr0 w1 t2) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t2 w2))
we proved
∀t1:T.∀t2:T.(pr0 t1 t2)→∀v1:T.∀w1:T.∀i:nat.(subst0 i v1 t1 w1)→∀v2:T.(pr0 v1 v2)→(or (pr0 w1 t2) (ex2 T λw2:T.pr0 w1 w2 λw2:T.subst0 i v2 t2 w2))