DEFINITION subst1_gen_lift_ge()
TYPE =
∀u:T
.∀t1:T
.∀x:T
.∀i:nat
.∀h:nat
.∀d:nat
.subst1 i u (lift h d t1) x
→(le (plus d h) i
→ex2 T λt2:T.eq T x (lift h d t2) λt2:T.subst1 (minus i h) u t1 t2)
BODY =
assume u: T
assume t1: T
assume x: T
assume i: nat
assume h: nat
assume d: nat
suppose H: subst1 i u (lift h d t1) x
suppose H0: le (plus d h) i
we proceed by induction on H to prove ex2 T λt2:T.eq T x (lift h d t2) λt2:T.subst1 (minus i h) u t1 t2
case subst1_refl : ⇒
the thesis becomes ex2 T λt2:T.eq T (lift h d t1) (lift h d t2) λt2:T.subst1 (minus i h) u t1 t2
(h1)
by (refl_equal . .)
eq T (lift h d t1) (lift h d t1)
end of h1
(h2)
by (subst1_refl . . .)
subst1 (minus i h) u t1 t1
end of h2
by (ex_intro2 . . . . h1 h2)
ex2 T λt2:T.eq T (lift h d t1) (lift h d t2) λt2:T.subst1 (minus i h) u t1 t2
case subst1_single : t2:T H1:subst0 i u (lift h d t1) t2 ⇒
the thesis becomes ex2 T λt3:T.eq T t2 (lift h d t3) λt3:T.subst1 (minus i h) u t1 t3
by (subst0_gen_lift_ge . . . . . . H1 H0)
we proved ex2 T λt2:T.eq T t2 (lift h d t2) λt2:T.subst0 (minus i h) u t1 t2
we proceed by induction on the previous result to prove ex2 T λt3:T.eq T t2 (lift h d t3) λt3:T.subst1 (minus i h) u t1 t3
case ex_intro2 : x0:T H2:eq T t2 (lift h d x0) H3:subst0 (minus i h) u t1 x0 ⇒
the thesis becomes ex2 T λt3:T.eq T t2 (lift h d t3) λt3:T.subst1 (minus i h) u t1 t3
by (subst1_single . . . . H3)
we proved subst1 (minus i h) u t1 x0
by (ex_intro2 . . . . H2 previous)
ex2 T λt3:T.eq T t2 (lift h d t3) λt3:T.subst1 (minus i h) u t1 t3
ex2 T λt3:T.eq T t2 (lift h d t3) λt3:T.subst1 (minus i h) u t1 t3
we proved ex2 T λt2:T.eq T x (lift h d t2) λt2:T.subst1 (minus i h) u t1 t2
we proved
∀u:T
.∀t1:T
.∀x:T
.∀i:nat
.∀h:nat
.∀d:nat
.subst1 i u (lift h d t1) x
→(le (plus d h) i
→ex2 T λt2:T.eq T x (lift h d t2) λt2:T.subst1 (minus i h) u t1 t2)