X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_1%2Fsubst1%2Fprops.ma;h=f7bf1d15cdc3c14635c2374e49a90cdaaf6de2ad;hb=57ae1762497a5f3ea75740e2908e04adb8642cc2;hp=637b5017f634ea3823033c5186bb840d31706411;hpb=685c36442ffed93a7bb0de464d35478821884c77;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_1/subst1/props.ma b/matita/matita/contribs/lambdadelta/basic_1/subst1/props.ma index 637b5017f..f7bf1d15c 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/subst1/props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/subst1/props.ma @@ -24,333 +24,142 @@ i v u1 u2) \to (\forall (k: K).(\forall (t1: T).(\forall (t2: T).((subst1 (s k i) v t1 t2) \to (subst1 i v (THead k u1 t1) (THead k u2 t2)))))))))) \def \lambda (v: T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (i: nat).(\lambda -(H: (subst1 i v u1 u2)).(let TMP_3 \def (\lambda (t: T).(\forall (k: -K).(\forall (t1: T).(\forall (t2: T).((subst1 (s k i) v t1 t2) \to (let TMP_1 -\def (THead k u1 t1) in (let TMP_2 \def (THead k t t2) in (subst1 i v TMP_1 -TMP_2)))))))) in (let TMP_14 \def (\lambda (k: K).(\lambda (t1: T).(\lambda -(t2: T).(\lambda (H0: (subst1 (s k i) v t1 t2)).(let TMP_4 \def (s k i) in -(let TMP_7 \def (\lambda (t: T).(let TMP_5 \def (THead k u1 t1) in (let TMP_6 -\def (THead k u1 t) in (subst1 i v TMP_5 TMP_6)))) in (let TMP_8 \def (THead -k u1 t1) in (let TMP_9 \def (subst1_refl i v TMP_8) in (let TMP_13 \def -(\lambda (t3: T).(\lambda (H1: (subst0 (s k i) v t1 t3)).(let TMP_10 \def -(THead k u1 t1) in (let TMP_11 \def (THead k u1 t3) in (let TMP_12 \def -(subst0_snd k v t3 t1 i H1 u1) in (subst1_single i v TMP_10 TMP_11 -TMP_12)))))) in (subst1_ind TMP_4 v t1 TMP_7 TMP_9 TMP_13 t2 H0)))))))))) in -(let TMP_27 \def (\lambda (t2: T).(\lambda (H0: (subst0 i v u1 t2)).(\lambda -(k: K).(\lambda (t1: T).(\lambda (t0: T).(\lambda (H1: (subst1 (s k i) v t1 -t0)).(let TMP_15 \def (s k i) in (let TMP_18 \def (\lambda (t: T).(let TMP_16 -\def (THead k u1 t1) in (let TMP_17 \def (THead k t2 t) in (subst1 i v TMP_16 -TMP_17)))) in (let TMP_19 \def (THead k u1 t1) in (let TMP_20 \def (THead k -t2 t1) in (let TMP_21 \def (subst0_fst v t2 u1 i H0 t1 k) in (let TMP_22 \def -(subst1_single i v TMP_19 TMP_20 TMP_21) in (let TMP_26 \def (\lambda (t3: -T).(\lambda (H2: (subst0 (s k i) v t1 t3)).(let TMP_23 \def (THead k u1 t1) -in (let TMP_24 \def (THead k t2 t3) in (let TMP_25 \def (subst0_both v u1 t2 -i H0 k t1 t3 H2) in (subst1_single i v TMP_23 TMP_24 TMP_25)))))) in -(subst1_ind TMP_15 v t1 TMP_18 TMP_22 TMP_26 t0 H1)))))))))))))) in -(subst1_ind i v u1 TMP_3 TMP_14 TMP_27 u2 H)))))))). +(H: (subst1 i v u1 u2)).(subst1_ind i v u1 (\lambda (t: T).(\forall (k: +K).(\forall (t1: T).(\forall (t2: T).((subst1 (s k i) v t1 t2) \to (subst1 i +v (THead k u1 t1) (THead k t t2))))))) (\lambda (k: K).(\lambda (t1: +T).(\lambda (t2: T).(\lambda (H0: (subst1 (s k i) v t1 t2)).(subst1_ind (s k +i) v t1 (\lambda (t: T).(subst1 i v (THead k u1 t1) (THead k u1 t))) +(subst1_refl i v (THead k u1 t1)) (\lambda (t3: T).(\lambda (H1: (subst0 (s k +i) v t1 t3)).(subst1_single i v (THead k u1 t1) (THead k u1 t3) (subst0_snd k +v t3 t1 i H1 u1)))) t2 H0))))) (\lambda (t2: T).(\lambda (H0: (subst0 i v u1 +t2)).(\lambda (k: K).(\lambda (t1: T).(\lambda (t0: T).(\lambda (H1: (subst1 +(s k i) v t1 t0)).(subst1_ind (s k i) v t1 (\lambda (t: T).(subst1 i v (THead +k u1 t1) (THead k t2 t))) (subst1_single i v (THead k u1 t1) (THead k t2 t1) +(subst0_fst v t2 u1 i H0 t1 k)) (\lambda (t3: T).(\lambda (H2: (subst0 (s k +i) v t1 t3)).(subst1_single i v (THead k u1 t1) (THead k t2 t3) (subst0_both +v u1 t2 i H0 k t1 t3 H2)))) t0 H1))))))) u2 H))))). -theorem subst1_lift_lt: +lemma subst1_lift_lt: \forall (t1: T).(\forall (t2: T).(\forall (u: T).(\forall (i: nat).((subst1 i u t1 t2) \to (\forall (d: nat).((lt i d) \to (\forall (h: nat).(subst1 i (lift h (minus d (S i)) u) (lift h d t1) (lift h d t2))))))))) \def \lambda (t1: T).(\lambda (t2: T).(\lambda (u: T).(\lambda (i: nat).(\lambda -(H: (subst1 i u t1 t2)).(let TMP_6 \def (\lambda (t: T).(\forall (d: -nat).((lt i d) \to (\forall (h: nat).(let TMP_1 \def (S i) in (let TMP_2 \def -(minus d TMP_1) in (let TMP_3 \def (lift h TMP_2 u) in (let TMP_4 \def (lift -h d t1) in (let TMP_5 \def (lift h d t) in (subst1 i TMP_3 TMP_4 -TMP_5)))))))))) in (let TMP_11 \def (\lambda (d: nat).(\lambda (_: (lt i -d)).(\lambda (h: nat).(let TMP_7 \def (S i) in (let TMP_8 \def (minus d -TMP_7) in (let TMP_9 \def (lift h TMP_8 u) in (let TMP_10 \def (lift h d t1) -in (subst1_refl i TMP_9 TMP_10)))))))) in (let TMP_18 \def (\lambda (t3: -T).(\lambda (H0: (subst0 i u t1 t3)).(\lambda (d: nat).(\lambda (H1: (lt i -d)).(\lambda (h: nat).(let TMP_12 \def (S i) in (let TMP_13 \def (minus d -TMP_12) in (let TMP_14 \def (lift h TMP_13 u) in (let TMP_15 \def (lift h d -t1) in (let TMP_16 \def (lift h d t3) in (let TMP_17 \def (subst0_lift_lt t1 -t3 u i H0 d H1 h) in (subst1_single i TMP_14 TMP_15 TMP_16 TMP_17)))))))))))) -in (subst1_ind i u t1 TMP_6 TMP_11 TMP_18 t2 H)))))))). +(H: (subst1 i u t1 t2)).(subst1_ind i u t1 (\lambda (t: T).(\forall (d: +nat).((lt i d) \to (\forall (h: nat).(subst1 i (lift h (minus d (S i)) u) +(lift h d t1) (lift h d t)))))) (\lambda (d: nat).(\lambda (_: (lt i +d)).(\lambda (h: nat).(subst1_refl i (lift h (minus d (S i)) u) (lift h d +t1))))) (\lambda (t3: T).(\lambda (H0: (subst0 i u t1 t3)).(\lambda (d: +nat).(\lambda (H1: (lt i d)).(\lambda (h: nat).(subst1_single i (lift h +(minus d (S i)) u) (lift h d t1) (lift h d t3) (subst0_lift_lt t1 t3 u i H0 d +H1 h))))))) t2 H))))). -theorem subst1_lift_ge: +lemma subst1_lift_ge: \forall (t1: T).(\forall (t2: T).(\forall (u: T).(\forall (i: nat).(\forall (h: nat).((subst1 i u t1 t2) \to (\forall (d: nat).((le d i) \to (subst1 (plus i h) u (lift h d t1) (lift h d t2))))))))) \def \lambda (t1: T).(\lambda (t2: T).(\lambda (u: T).(\lambda (i: nat).(\lambda -(h: nat).(\lambda (H: (subst1 i u t1 t2)).(let TMP_4 \def (\lambda (t: -T).(\forall (d: nat).((le d i) \to (let TMP_1 \def (plus i h) in (let TMP_2 -\def (lift h d t1) in (let TMP_3 \def (lift h d t) in (subst1 TMP_1 u TMP_2 -TMP_3))))))) in (let TMP_7 \def (\lambda (d: nat).(\lambda (_: (le d i)).(let -TMP_5 \def (plus i h) in (let TMP_6 \def (lift h d t1) in (subst1_refl TMP_5 -u TMP_6))))) in (let TMP_12 \def (\lambda (t3: T).(\lambda (H0: (subst0 i u -t1 t3)).(\lambda (d: nat).(\lambda (H1: (le d i)).(let TMP_8 \def (plus i h) -in (let TMP_9 \def (lift h d t1) in (let TMP_10 \def (lift h d t3) in (let -TMP_11 \def (subst0_lift_ge t1 t3 u i h H0 d H1) in (subst1_single TMP_8 u -TMP_9 TMP_10 TMP_11))))))))) in (subst1_ind i u t1 TMP_4 TMP_7 TMP_12 t2 -H))))))))). +(h: nat).(\lambda (H: (subst1 i u t1 t2)).(subst1_ind i u t1 (\lambda (t: +T).(\forall (d: nat).((le d i) \to (subst1 (plus i h) u (lift h d t1) (lift h +d t))))) (\lambda (d: nat).(\lambda (_: (le d i)).(subst1_refl (plus i h) u +(lift h d t1)))) (\lambda (t3: T).(\lambda (H0: (subst0 i u t1 t3)).(\lambda +(d: nat).(\lambda (H1: (le d i)).(subst1_single (plus i h) u (lift h d t1) +(lift h d t3) (subst0_lift_ge t1 t3 u i h H0 d H1)))))) t2 H)))))). -theorem subst1_ex: +lemma subst1_ex: \forall (u: T).(\forall (t1: T).(\forall (d: nat).(ex T (\lambda (t2: T).(subst1 d u t1 (lift (S O) d t2)))))) \def - \lambda (u: T).(\lambda (t1: T).(let TMP_4 \def (\lambda (t: T).(\forall (d: -nat).(let TMP_3 \def (\lambda (t2: T).(let TMP_1 \def (S O) in (let TMP_2 -\def (lift TMP_1 d t2) in (subst1 d u t TMP_2)))) in (ex T TMP_3)))) in (let -TMP_21 \def (\lambda (n: nat).(\lambda (d: nat).(let TMP_8 \def (\lambda (t2: -T).(let TMP_5 \def (TSort n) in (let TMP_6 \def (S O) in (let TMP_7 \def -(lift TMP_6 d t2) in (subst1 d u TMP_5 TMP_7))))) in (let TMP_9 \def (TSort -n) in (let TMP_10 \def (TSort n) in (let TMP_12 \def (\lambda (t: T).(let -TMP_11 \def (TSort n) in (subst1 d u TMP_11 t))) in (let TMP_13 \def (TSort -n) in (let TMP_14 \def (subst1_refl d u TMP_13) in (let TMP_15 \def (S O) in -(let TMP_16 \def (TSort n) in (let TMP_17 \def (lift TMP_15 d TMP_16) in (let -TMP_18 \def (S O) in (let TMP_19 \def (lift_sort n TMP_18 d) in (let TMP_20 -\def (eq_ind_r T TMP_10 TMP_12 TMP_14 TMP_17 TMP_19) in (ex_intro T TMP_8 -TMP_9 TMP_20))))))))))))))) in (let TMP_92 \def (\lambda (n: nat).(\lambda -(d: nat).(let TMP_25 \def (\lambda (t2: T).(let TMP_22 \def (TLRef n) in (let -TMP_23 \def (S O) in (let TMP_24 \def (lift TMP_23 d t2) in (subst1 d u -TMP_22 TMP_24))))) in (let TMP_26 \def (ex T TMP_25) in (let TMP_43 \def -(\lambda (H: (lt n d)).(let TMP_30 \def (\lambda (t2: T).(let TMP_27 \def -(TLRef n) in (let TMP_28 \def (S O) in (let TMP_29 \def (lift TMP_28 d t2) in -(subst1 d u TMP_27 TMP_29))))) in (let TMP_31 \def (TLRef n) in (let TMP_32 -\def (TLRef n) in (let TMP_34 \def (\lambda (t: T).(let TMP_33 \def (TLRef n) -in (subst1 d u TMP_33 t))) in (let TMP_35 \def (TLRef n) in (let TMP_36 \def -(subst1_refl d u TMP_35) in (let TMP_37 \def (S O) in (let TMP_38 \def (TLRef -n) in (let TMP_39 \def (lift TMP_37 d TMP_38) in (let TMP_40 \def (S O) in -(let TMP_41 \def (lift_lref_lt n TMP_40 d H) in (let TMP_42 \def (eq_ind_r T -TMP_32 TMP_34 TMP_36 TMP_39 TMP_41) in (ex_intro T TMP_30 TMP_31 -TMP_42)))))))))))))) in (let TMP_73 \def (\lambda (H: (eq nat n d)).(let -TMP_48 \def (\lambda (n0: nat).(let TMP_47 \def (\lambda (t2: T).(let TMP_44 -\def (TLRef n) in (let TMP_45 \def (S O) in (let TMP_46 \def (lift TMP_45 n0 -t2) in (subst1 n0 u TMP_44 TMP_46))))) in (ex T TMP_47))) in (let TMP_52 \def -(\lambda (t2: T).(let TMP_49 \def (TLRef n) in (let TMP_50 \def (S O) in (let -TMP_51 \def (lift TMP_50 n t2) in (subst1 n u TMP_49 TMP_51))))) in (let -TMP_53 \def (lift n O u) in (let TMP_54 \def (S O) in (let TMP_55 \def (plus -TMP_54 n) in (let TMP_56 \def (lift TMP_55 O u) in (let TMP_58 \def (\lambda -(t: T).(let TMP_57 \def (TLRef n) in (subst1 n u TMP_57 t))) in (let TMP_59 -\def (TLRef n) in (let TMP_60 \def (S n) in (let TMP_61 \def (lift TMP_60 O -u) in (let TMP_62 \def (subst0_lref u n) in (let TMP_63 \def (subst1_single n -u TMP_59 TMP_61 TMP_62) in (let TMP_64 \def (S O) in (let TMP_65 \def (lift n -O u) in (let TMP_66 \def (lift TMP_64 n TMP_65) in (let TMP_67 \def (S O) in -(let TMP_68 \def (le_plus_r O n) in (let TMP_69 \def (le_O_n n) in (let -TMP_70 \def (lift_free u n TMP_67 O n TMP_68 TMP_69) in (let TMP_71 \def -(eq_ind_r T TMP_56 TMP_58 TMP_63 TMP_66 TMP_70) in (let TMP_72 \def (ex_intro -T TMP_52 TMP_53 TMP_71) in (eq_ind nat n TMP_48 TMP_72 d -H))))))))))))))))))))))) in (let TMP_91 \def (\lambda (H: (lt d n)).(let -TMP_77 \def (\lambda (t2: T).(let TMP_74 \def (TLRef n) in (let TMP_75 \def -(S O) in (let TMP_76 \def (lift TMP_75 d t2) in (subst1 d u TMP_74 -TMP_76))))) in (let TMP_78 \def (pred n) in (let TMP_79 \def (TLRef TMP_78) -in (let TMP_80 \def (TLRef n) in (let TMP_82 \def (\lambda (t: T).(let TMP_81 -\def (TLRef n) in (subst1 d u TMP_81 t))) in (let TMP_83 \def (TLRef n) in -(let TMP_84 \def (subst1_refl d u TMP_83) in (let TMP_85 \def (S O) in (let -TMP_86 \def (pred n) in (let TMP_87 \def (TLRef TMP_86) in (let TMP_88 \def -(lift TMP_85 d TMP_87) in (let TMP_89 \def (lift_lref_gt d n H) in (let -TMP_90 \def (eq_ind_r T TMP_80 TMP_82 TMP_84 TMP_88 TMP_89) in (ex_intro T -TMP_77 TMP_79 TMP_90))))))))))))))) in (lt_eq_gt_e n d TMP_26 TMP_43 TMP_73 -TMP_91)))))))) in (let TMP_139 \def (\lambda (k: K).(\lambda (t: T).(\lambda -(H: ((\forall (d: nat).(ex T (\lambda (t2: T).(subst1 d u t (lift (S O) d -t2))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (d: nat).(ex T (\lambda -(t2: T).(subst1 d u t0 (lift (S O) d t2))))))).(\lambda (d: nat).(let H_x -\def (H d) in (let H1 \def H_x in (let TMP_95 \def (\lambda (t2: T).(let -TMP_93 \def (S O) in (let TMP_94 \def (lift TMP_93 d t2) in (subst1 d u t -TMP_94)))) in (let TMP_99 \def (\lambda (t2: T).(let TMP_96 \def (THead k t -t0) in (let TMP_97 \def (S O) in (let TMP_98 \def (lift TMP_97 d t2) in -(subst1 d u TMP_96 TMP_98))))) in (let TMP_100 \def (ex T TMP_99) in (let -TMP_138 \def (\lambda (x: T).(\lambda (H2: (subst1 d u t (lift (S O) d -x))).(let TMP_101 \def (s k d) in (let H_x0 \def (H0 TMP_101) in (let H3 \def -H_x0 in (let TMP_106 \def (\lambda (t2: T).(let TMP_102 \def (s k d) in (let -TMP_103 \def (S O) in (let TMP_104 \def (s k d) in (let TMP_105 \def (lift -TMP_103 TMP_104 t2) in (subst1 TMP_102 u t0 TMP_105)))))) in (let TMP_110 -\def (\lambda (t2: T).(let TMP_107 \def (THead k t t0) in (let TMP_108 \def -(S O) in (let TMP_109 \def (lift TMP_108 d t2) in (subst1 d u TMP_107 -TMP_109))))) in (let TMP_111 \def (ex T TMP_110) in (let TMP_137 \def -(\lambda (x0: T).(\lambda (H4: (subst1 (s k d) u t0 (lift (S O) (s k d) -x0))).(let TMP_115 \def (\lambda (t2: T).(let TMP_112 \def (THead k t t0) in -(let TMP_113 \def (S O) in (let TMP_114 \def (lift TMP_113 d t2) in (subst1 d -u TMP_112 TMP_114))))) in (let TMP_116 \def (THead k x x0) in (let TMP_117 -\def (S O) in (let TMP_118 \def (lift TMP_117 d x) in (let TMP_119 \def (S O) -in (let TMP_120 \def (s k d) in (let TMP_121 \def (lift TMP_119 TMP_120 x0) -in (let TMP_122 \def (THead k TMP_118 TMP_121) in (let TMP_124 \def (\lambda -(t2: T).(let TMP_123 \def (THead k t t0) in (subst1 d u TMP_123 t2))) in (let -TMP_125 \def (S O) in (let TMP_126 \def (lift TMP_125 d x) in (let TMP_127 -\def (S O) in (let TMP_128 \def (s k d) in (let TMP_129 \def (lift TMP_127 -TMP_128 x0) in (let TMP_130 \def (subst1_head u t TMP_126 d H2 k t0 TMP_129 -H4) in (let TMP_131 \def (S O) in (let TMP_132 \def (THead k x x0) in (let -TMP_133 \def (lift TMP_131 d TMP_132) in (let TMP_134 \def (S O) in (let -TMP_135 \def (lift_head k x x0 TMP_134 d) in (let TMP_136 \def (eq_ind_r T -TMP_122 TMP_124 TMP_130 TMP_133 TMP_135) in (ex_intro T TMP_115 TMP_116 -TMP_136)))))))))))))))))))))))) in (ex_ind T TMP_106 TMP_111 TMP_137 -H3)))))))))) in (ex_ind T TMP_95 TMP_100 TMP_138 H1))))))))))))) in (T_ind -TMP_4 TMP_21 TMP_92 TMP_139 t1)))))). + \lambda (u: T).(\lambda (t1: T).(T_ind (\lambda (t: T).(\forall (d: nat).(ex +T (\lambda (t2: T).(subst1 d u t (lift (S O) d t2)))))) (\lambda (n: +nat).(\lambda (d: nat).(ex_intro T (\lambda (t2: T).(subst1 d u (TSort n) +(lift (S O) d t2))) (TSort n) (eq_ind_r T (TSort n) (\lambda (t: T).(subst1 d +u (TSort n) t)) (subst1_refl d u (TSort n)) (lift (S O) d (TSort n)) +(lift_sort n (S O) d))))) (\lambda (n: nat).(\lambda (d: nat).(lt_eq_gt_e n d +(ex T (\lambda (t2: T).(subst1 d u (TLRef n) (lift (S O) d t2)))) (\lambda +(H: (lt n d)).(ex_intro T (\lambda (t2: T).(subst1 d u (TLRef n) (lift (S O) +d t2))) (TLRef n) (eq_ind_r T (TLRef n) (\lambda (t: T).(subst1 d u (TLRef n) +t)) (subst1_refl d u (TLRef n)) (lift (S O) d (TLRef n)) (lift_lref_lt n (S +O) d H)))) (\lambda (H: (eq nat n d)).(eq_ind nat n (\lambda (n0: nat).(ex T +(\lambda (t2: T).(subst1 n0 u (TLRef n) (lift (S O) n0 t2))))) (ex_intro T +(\lambda (t2: T).(subst1 n u (TLRef n) (lift (S O) n t2))) (lift n O u) +(eq_ind_r T (lift (plus (S O) n) O u) (\lambda (t: T).(subst1 n u (TLRef n) +t)) (subst1_single n u (TLRef n) (lift (S n) O u) (subst0_lref u n)) (lift (S +O) n (lift n O u)) (lift_free u n (S O) O n (le_plus_r O n) (le_O_n n)))) d +H)) (\lambda (H: (lt d n)).(ex_intro T (\lambda (t2: T).(subst1 d u (TLRef n) +(lift (S O) d t2))) (TLRef (pred n)) (eq_ind_r T (TLRef n) (\lambda (t: +T).(subst1 d u (TLRef n) t)) (subst1_refl d u (TLRef n)) (lift (S O) d (TLRef +(pred n))) (lift_lref_gt d n H))))))) (\lambda (k: K).(\lambda (t: +T).(\lambda (H: ((\forall (d: nat).(ex T (\lambda (t2: T).(subst1 d u t (lift +(S O) d t2))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (d: nat).(ex T +(\lambda (t2: T).(subst1 d u t0 (lift (S O) d t2))))))).(\lambda (d: +nat).(let H_x \def (H d) in (let H1 \def H_x in (ex_ind T (\lambda (t2: +T).(subst1 d u t (lift (S O) d t2))) (ex T (\lambda (t2: T).(subst1 d u +(THead k t t0) (lift (S O) d t2)))) (\lambda (x: T).(\lambda (H2: (subst1 d u +t (lift (S O) d x))).(let H_x0 \def (H0 (s k d)) in (let H3 \def H_x0 in +(ex_ind T (\lambda (t2: T).(subst1 (s k d) u t0 (lift (S O) (s k d) t2))) (ex +T (\lambda (t2: T).(subst1 d u (THead k t t0) (lift (S O) d t2)))) (\lambda +(x0: T).(\lambda (H4: (subst1 (s k d) u t0 (lift (S O) (s k d) +x0))).(ex_intro T (\lambda (t2: T).(subst1 d u (THead k t t0) (lift (S O) d +t2))) (THead k x x0) (eq_ind_r T (THead k (lift (S O) d x) (lift (S O) (s k +d) x0)) (\lambda (t2: T).(subst1 d u (THead k t t0) t2)) (subst1_head u t +(lift (S O) d x) d H2 k t0 (lift (S O) (s k d) x0) H4) (lift (S O) d (THead k +x x0)) (lift_head k x x0 (S O) d))))) H3))))) H1))))))))) t1)). -theorem subst1_lift_S: +lemma subst1_lift_S: \forall (u: T).(\forall (i: nat).(\forall (h: nat).((le h i) \to (subst1 i (TLRef h) (lift (S h) (S i) u) (lift (S h) i u))))) \def - \lambda (u: T).(let TMP_7 \def (\lambda (t: T).(\forall (i: nat).(\forall -(h: nat).((le h i) \to (let TMP_1 \def (TLRef h) in (let TMP_2 \def (S h) in -(let TMP_3 \def (S i) in (let TMP_4 \def (lift TMP_2 TMP_3 t) in (let TMP_5 -\def (S h) in (let TMP_6 \def (lift TMP_5 i t) in (subst1 i TMP_1 TMP_4 -TMP_6))))))))))) in (let TMP_34 \def (\lambda (n: nat).(\lambda (i: -nat).(\lambda (h: nat).(\lambda (_: (le h i)).(let TMP_8 \def (TSort n) in -(let TMP_13 \def (\lambda (t: T).(let TMP_9 \def (TLRef h) in (let TMP_10 -\def (S h) in (let TMP_11 \def (TSort n) in (let TMP_12 \def (lift TMP_10 i -TMP_11) in (subst1 i TMP_9 t TMP_12)))))) in (let TMP_14 \def (TSort n) in -(let TMP_17 \def (\lambda (t: T).(let TMP_15 \def (TLRef h) in (let TMP_16 -\def (TSort n) in (subst1 i TMP_15 TMP_16 t)))) in (let TMP_18 \def (TLRef h) -in (let TMP_19 \def (TSort n) in (let TMP_20 \def (subst1_refl i TMP_18 -TMP_19) in (let TMP_21 \def (S h) in (let TMP_22 \def (TSort n) in (let -TMP_23 \def (lift TMP_21 i TMP_22) in (let TMP_24 \def (S h) in (let TMP_25 -\def (lift_sort n TMP_24 i) in (let TMP_26 \def (eq_ind_r T TMP_14 TMP_17 -TMP_20 TMP_23 TMP_25) in (let TMP_27 \def (S h) in (let TMP_28 \def (S i) in -(let TMP_29 \def (TSort n) in (let TMP_30 \def (lift TMP_27 TMP_28 TMP_29) in -(let TMP_31 \def (S h) in (let TMP_32 \def (S i) in (let TMP_33 \def -(lift_sort n TMP_31 TMP_32) in (eq_ind_r T TMP_8 TMP_13 TMP_26 TMP_30 -TMP_33))))))))))))))))))))))))) in (let TMP_220 \def (\lambda (n: -nat).(\lambda (i: nat).(\lambda (h: nat).(\lambda (H: (le h i)).(let TMP_35 -\def (TLRef h) in (let TMP_36 \def (S h) in (let TMP_37 \def (S i) in (let -TMP_38 \def (TLRef n) in (let TMP_39 \def (lift TMP_36 TMP_37 TMP_38) in (let -TMP_40 \def (S h) in (let TMP_41 \def (TLRef n) in (let TMP_42 \def (lift -TMP_40 i TMP_41) in (let TMP_43 \def (subst1 i TMP_35 TMP_39 TMP_42) in (let -TMP_79 \def (\lambda (H0: (lt n i)).(let TMP_44 \def (TLRef n) in (let TMP_49 -\def (\lambda (t: T).(let TMP_45 \def (TLRef h) in (let TMP_46 \def (S h) in -(let TMP_47 \def (TLRef n) in (let TMP_48 \def (lift TMP_46 i TMP_47) in -(subst1 i TMP_45 t TMP_48)))))) in (let TMP_50 \def (TLRef n) in (let TMP_53 -\def (\lambda (t: T).(let TMP_51 \def (TLRef h) in (let TMP_52 \def (TLRef n) -in (subst1 i TMP_51 TMP_52 t)))) in (let TMP_54 \def (TLRef h) in (let TMP_55 -\def (TLRef n) in (let TMP_56 \def (subst1_refl i TMP_54 TMP_55) in (let -TMP_57 \def (S h) in (let TMP_58 \def (TLRef n) in (let TMP_59 \def (lift -TMP_57 i TMP_58) in (let TMP_60 \def (S h) in (let TMP_61 \def (lift_lref_lt -n TMP_60 i H0) in (let TMP_62 \def (eq_ind_r T TMP_50 TMP_53 TMP_56 TMP_59 -TMP_61) in (let TMP_63 \def (S h) in (let TMP_64 \def (S i) in (let TMP_65 -\def (TLRef n) in (let TMP_66 \def (lift TMP_63 TMP_64 TMP_65) in (let TMP_67 -\def (S h) in (let TMP_68 \def (S i) in (let TMP_69 \def (S n) in (let TMP_70 -\def (S i) in (let TMP_71 \def (S n) in (let TMP_72 \def (S TMP_71) in (let -TMP_73 \def (S i) in (let TMP_74 \def (S n) in (let TMP_75 \def (le_n_S -TMP_74 i H0) in (let TMP_76 \def (le_S TMP_72 TMP_73 TMP_75) in (let TMP_77 -\def (le_S_n TMP_69 TMP_70 TMP_76) in (let TMP_78 \def (lift_lref_lt n TMP_67 -TMP_68 TMP_77) in (eq_ind_r T TMP_44 TMP_49 TMP_62 TMP_66 -TMP_78))))))))))))))))))))))))))))))) in (let TMP_174 \def (\lambda (H0: (eq -nat n i)).(let TMP_80 \def (\lambda (n0: nat).(le h n0)) in (let H1 \def -(eq_ind_r nat i TMP_80 H n H0) in (let TMP_89 \def (\lambda (n0: nat).(let -TMP_81 \def (TLRef h) in (let TMP_82 \def (S h) in (let TMP_83 \def (S n0) in -(let TMP_84 \def (TLRef n) in (let TMP_85 \def (lift TMP_82 TMP_83 TMP_84) in -(let TMP_86 \def (S h) in (let TMP_87 \def (TLRef n) in (let TMP_88 \def -(lift TMP_86 n0 TMP_87) in (subst1 n0 TMP_81 TMP_85 TMP_88)))))))))) in (let -TMP_90 \def (TLRef n) in (let TMP_95 \def (\lambda (t: T).(let TMP_91 \def -(TLRef h) in (let TMP_92 \def (S h) in (let TMP_93 \def (TLRef n) in (let -TMP_94 \def (lift TMP_92 n TMP_93) in (subst1 n TMP_91 t TMP_94)))))) in (let -TMP_96 \def (S h) in (let TMP_97 \def (plus n TMP_96) in (let TMP_98 \def -(TLRef TMP_97) in (let TMP_101 \def (\lambda (t: T).(let TMP_99 \def (TLRef -h) in (let TMP_100 \def (TLRef n) in (subst1 n TMP_99 TMP_100 t)))) in (let -TMP_102 \def (plus n h) in (let TMP_103 \def (S TMP_102) in (let TMP_107 \def -(\lambda (n0: nat).(let TMP_104 \def (TLRef h) in (let TMP_105 \def (TLRef n) -in (let TMP_106 \def (TLRef n0) in (subst1 n TMP_104 TMP_105 TMP_106))))) in -(let TMP_108 \def (plus h n) in (let TMP_113 \def (\lambda (n0: nat).(let -TMP_109 \def (TLRef h) in (let TMP_110 \def (TLRef n) in (let TMP_111 \def (S -n0) in (let TMP_112 \def (TLRef TMP_111) in (subst1 n TMP_109 TMP_110 -TMP_112)))))) in (let TMP_114 \def (S n) in (let TMP_115 \def (plus h -TMP_114) in (let TMP_119 \def (\lambda (n0: nat).(let TMP_116 \def (TLRef h) -in (let TMP_117 \def (TLRef n) in (let TMP_118 \def (TLRef n0) in (subst1 n -TMP_116 TMP_117 TMP_118))))) in (let TMP_120 \def (S n) in (let TMP_121 \def -(TLRef h) in (let TMP_122 \def (lift TMP_120 O TMP_121) in (let TMP_125 \def -(\lambda (t: T).(let TMP_123 \def (TLRef h) in (let TMP_124 \def (TLRef n) in -(subst1 n TMP_123 TMP_124 t)))) in (let TMP_126 \def (TLRef h) in (let -TMP_127 \def (TLRef n) in (let TMP_128 \def (S n) in (let TMP_129 \def (TLRef -h) in (let TMP_130 \def (lift TMP_128 O TMP_129) in (let TMP_131 \def (TLRef -h) in (let TMP_132 \def (subst0_lref TMP_131 n) in (let TMP_133 \def -(subst1_single n TMP_126 TMP_127 TMP_130 TMP_132) in (let TMP_134 \def (S n) -in (let TMP_135 \def (plus h TMP_134) in (let TMP_136 \def (TLRef TMP_135) in -(let TMP_137 \def (S n) in (let TMP_138 \def (le_O_n h) in (let TMP_139 \def -(lift_lref_ge h TMP_137 O TMP_138) in (let TMP_140 \def (eq_ind T TMP_122 -TMP_125 TMP_133 TMP_136 TMP_139) in (let TMP_141 \def (plus h n) in (let -TMP_142 \def (S TMP_141) in (let TMP_143 \def (plus h n) in (let TMP_144 \def -(S TMP_143) in (let TMP_145 \def (S n) in (let TMP_146 \def (plus h TMP_145) -in (let TMP_147 \def (plus_n_Sm h n) in (let TMP_148 \def (sym_eq nat TMP_144 -TMP_146 TMP_147) in (let TMP_149 \def (eq_ind nat TMP_115 TMP_119 TMP_140 -TMP_142 TMP_148) in (let TMP_150 \def (plus n h) in (let TMP_151 \def -(plus_sym n h) in (let TMP_152 \def (eq_ind_r nat TMP_108 TMP_113 TMP_149 -TMP_150 TMP_151) in (let TMP_153 \def (S h) in (let TMP_154 \def (plus n -TMP_153) in (let TMP_155 \def (plus_n_Sm n h) in (let TMP_156 \def (eq_ind -nat TMP_103 TMP_107 TMP_152 TMP_154 TMP_155) in (let TMP_157 \def (S h) in -(let TMP_158 \def (TLRef n) in (let TMP_159 \def (lift TMP_157 n TMP_158) in -(let TMP_160 \def (S h) in (let TMP_161 \def (le_n n) in (let TMP_162 \def -(lift_lref_ge n TMP_160 n TMP_161) in (let TMP_163 \def (eq_ind_r T TMP_98 -TMP_101 TMP_156 TMP_159 TMP_162) in (let TMP_164 \def (S h) in (let TMP_165 -\def (S n) in (let TMP_166 \def (TLRef n) in (let TMP_167 \def (lift TMP_164 -TMP_165 TMP_166) in (let TMP_168 \def (S h) in (let TMP_169 \def (S n) in -(let TMP_170 \def (S n) in (let TMP_171 \def (le_n TMP_170) in (let TMP_172 -\def (lift_lref_lt n TMP_168 TMP_169 TMP_171) in (let TMP_173 \def (eq_ind_r -T TMP_90 TMP_95 TMP_163 TMP_167 TMP_172) in (eq_ind nat n TMP_89 TMP_173 i -H0))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) in -(let TMP_219 \def (\lambda (H0: (lt i n)).(let TMP_175 \def (S h) in (let -TMP_176 \def (plus n TMP_175) in (let TMP_177 \def (TLRef TMP_176) in (let -TMP_182 \def (\lambda (t: T).(let TMP_178 \def (TLRef h) in (let TMP_179 \def -(S h) in (let TMP_180 \def (TLRef n) in (let TMP_181 \def (lift TMP_179 i -TMP_180) in (subst1 i TMP_178 t TMP_181)))))) in (let TMP_183 \def (S h) in -(let TMP_184 \def (plus n TMP_183) in (let TMP_185 \def (TLRef TMP_184) in -(let TMP_190 \def (\lambda (t: T).(let TMP_186 \def (TLRef h) in (let TMP_187 -\def (S h) in (let TMP_188 \def (plus n TMP_187) in (let TMP_189 \def (TLRef -TMP_188) in (subst1 i TMP_186 TMP_189 t)))))) in (let TMP_191 \def (TLRef h) -in (let TMP_192 \def (S h) in (let TMP_193 \def (plus n TMP_192) in (let -TMP_194 \def (TLRef TMP_193) in (let TMP_195 \def (subst1_refl i TMP_191 -TMP_194) in (let TMP_196 \def (S h) in (let TMP_197 \def (TLRef n) in (let -TMP_198 \def (lift TMP_196 i TMP_197) in (let TMP_199 \def (S h) in (let -TMP_200 \def (S i) in (let TMP_201 \def (S n) in (let TMP_202 \def (S i) in -(let TMP_203 \def (S TMP_202) in (let TMP_204 \def (S n) in (let TMP_205 \def -(S i) in (let TMP_206 \def (le_n_S TMP_205 n H0) in (let TMP_207 \def (le_S -TMP_203 TMP_204 TMP_206) in (let TMP_208 \def (le_S_n TMP_200 TMP_201 -TMP_207) in (let TMP_209 \def (le_S_n i n TMP_208) in (let TMP_210 \def -(lift_lref_ge n TMP_199 i TMP_209) in (let TMP_211 \def (eq_ind_r T TMP_185 -TMP_190 TMP_195 TMP_198 TMP_210) in (let TMP_212 \def (S h) in (let TMP_213 -\def (S i) in (let TMP_214 \def (TLRef n) in (let TMP_215 \def (lift TMP_212 -TMP_213 TMP_214) in (let TMP_216 \def (S h) in (let TMP_217 \def (S i) in -(let TMP_218 \def (lift_lref_ge n TMP_216 TMP_217 H0) in (eq_ind_r T TMP_177 -TMP_182 TMP_211 TMP_215 TMP_218)))))))))))))))))))))))))))))))))))))) in -(lt_eq_gt_e n i TMP_43 TMP_79 TMP_174 TMP_219))))))))))))))))) in (let -TMP_297 \def (\lambda (k: K).(\lambda (t: T).(\lambda (H: ((\forall (i: + \lambda (u: T).(T_ind (\lambda (t: T).(\forall (i: nat).(\forall (h: +nat).((le h i) \to (subst1 i (TLRef h) (lift (S h) (S i) t) (lift (S h) i +t)))))) (\lambda (n: nat).(\lambda (i: nat).(\lambda (h: nat).(\lambda (_: +(le h i)).(eq_ind_r T (TSort n) (\lambda (t: T).(subst1 i (TLRef h) t (lift +(S h) i (TSort n)))) (eq_ind_r T (TSort n) (\lambda (t: T).(subst1 i (TLRef +h) (TSort n) t)) (subst1_refl i (TLRef h) (TSort n)) (lift (S h) i (TSort n)) +(lift_sort n (S h) i)) (lift (S h) (S i) (TSort n)) (lift_sort n (S h) (S +i))))))) (\lambda (n: nat).(\lambda (i: nat).(\lambda (h: nat).(\lambda (H: +(le h i)).(lt_eq_gt_e n i (subst1 i (TLRef h) (lift (S h) (S i) (TLRef n)) +(lift (S h) i (TLRef n))) (\lambda (H0: (lt n i)).(eq_ind_r T (TLRef n) +(\lambda (t: T).(subst1 i (TLRef h) t (lift (S h) i (TLRef n)))) (eq_ind_r T +(TLRef n) (\lambda (t: T).(subst1 i (TLRef h) (TLRef n) t)) (subst1_refl i +(TLRef h) (TLRef n)) (lift (S h) i (TLRef n)) (lift_lref_lt n (S h) i H0)) +(lift (S h) (S i) (TLRef n)) (lift_lref_lt n (S h) (S i) (le_S_n (S n) (S i) +(le_S (S (S n)) (S i) (le_n_S (S n) i H0)))))) (\lambda (H0: (eq nat n +i)).(let H1 \def (eq_ind_r nat i (\lambda (n0: nat).(le h n0)) H n H0) in +(eq_ind nat n (\lambda (n0: nat).(subst1 n0 (TLRef h) (lift (S h) (S n0) +(TLRef n)) (lift (S h) n0 (TLRef n)))) (eq_ind_r T (TLRef n) (\lambda (t: +T).(subst1 n (TLRef h) t (lift (S h) n (TLRef n)))) (eq_ind_r T (TLRef (plus +n (S h))) (\lambda (t: T).(subst1 n (TLRef h) (TLRef n) t)) (eq_ind nat (S +(plus n h)) (\lambda (n0: nat).(subst1 n (TLRef h) (TLRef n) (TLRef n0))) +(eq_ind_r nat (plus h n) (\lambda (n0: nat).(subst1 n (TLRef h) (TLRef n) +(TLRef (S n0)))) (eq_ind nat (plus h (S n)) (\lambda (n0: nat).(subst1 n +(TLRef h) (TLRef n) (TLRef n0))) (eq_ind T (lift (S n) O (TLRef h)) (\lambda +(t: T).(subst1 n (TLRef h) (TLRef n) t)) (subst1_single n (TLRef h) (TLRef n) +(lift (S n) O (TLRef h)) (subst0_lref (TLRef h) n)) (TLRef (plus h (S n))) +(lift_lref_ge h (S n) O (le_O_n h))) (S (plus h n)) (sym_eq nat (S (plus h +n)) (plus h (S n)) (plus_n_Sm h n))) (plus n h) (plus_sym n h)) (plus n (S +h)) (plus_n_Sm n h)) (lift (S h) n (TLRef n)) (lift_lref_ge n (S h) n (le_n +n))) (lift (S h) (S n) (TLRef n)) (lift_lref_lt n (S h) (S n) (le_n (S n)))) +i H0))) (\lambda (H0: (lt i n)).(eq_ind_r T (TLRef (plus n (S h))) (\lambda +(t: T).(subst1 i (TLRef h) t (lift (S h) i (TLRef n)))) (eq_ind_r T (TLRef +(plus n (S h))) (\lambda (t: T).(subst1 i (TLRef h) (TLRef (plus n (S h))) +t)) (subst1_refl i (TLRef h) (TLRef (plus n (S h)))) (lift (S h) i (TLRef n)) +(lift_lref_ge n (S h) i (le_S_n i n (le_S_n (S i) (S n) (le_S (S (S i)) (S n) +(le_n_S (S i) n H0)))))) (lift (S h) (S i) (TLRef n)) (lift_lref_ge n (S h) +(S i) H0)))))))) (\lambda (k: K).(\lambda (t: T).(\lambda (H: ((\forall (i: nat).(\forall (h: nat).((le h i) \to (subst1 i (TLRef h) (lift (S h) (S i) t) (lift (S h) i t))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (i: nat).(\forall (h: nat).((le h i) \to (subst1 i (TLRef h) (lift (S h) (S i) t0) (lift (S h) i t0))))))).(\lambda (i: nat).(\lambda (h: nat).(\lambda (H1: -(le h i)).(let TMP_221 \def (S h) in (let TMP_222 \def (S i) in (let TMP_223 -\def (lift TMP_221 TMP_222 t) in (let TMP_224 \def (S h) in (let TMP_225 \def -(S i) in (let TMP_226 \def (s k TMP_225) in (let TMP_227 \def (lift TMP_224 -TMP_226 t0) in (let TMP_228 \def (THead k TMP_223 TMP_227) in (let TMP_233 -\def (\lambda (t1: T).(let TMP_229 \def (TLRef h) in (let TMP_230 \def (S h) -in (let TMP_231 \def (THead k t t0) in (let TMP_232 \def (lift TMP_230 i -TMP_231) in (subst1 i TMP_229 t1 TMP_232)))))) in (let TMP_234 \def (S h) in -(let TMP_235 \def (lift TMP_234 i t) in (let TMP_236 \def (S h) in (let -TMP_237 \def (s k i) in (let TMP_238 \def (lift TMP_236 TMP_237 t0) in (let -TMP_239 \def (THead k TMP_235 TMP_238) in (let TMP_249 \def (\lambda (t1: -T).(let TMP_240 \def (TLRef h) in (let TMP_241 \def (S h) in (let TMP_242 -\def (S i) in (let TMP_243 \def (lift TMP_241 TMP_242 t) in (let TMP_244 \def -(S h) in (let TMP_245 \def (S i) in (let TMP_246 \def (s k TMP_245) in (let -TMP_247 \def (lift TMP_244 TMP_246 t0) in (let TMP_248 \def (THead k TMP_243 -TMP_247) in (subst1 i TMP_240 TMP_248 t1))))))))))) in (let TMP_250 \def -(TLRef h) in (let TMP_251 \def (S h) in (let TMP_252 \def (S i) in (let -TMP_253 \def (lift TMP_251 TMP_252 t) in (let TMP_254 \def (S h) in (let -TMP_255 \def (lift TMP_254 i t) in (let TMP_256 \def (H i h H1) in (let -TMP_257 \def (S h) in (let TMP_258 \def (S i) in (let TMP_259 \def (s k -TMP_258) in (let TMP_260 \def (lift TMP_257 TMP_259 t0) in (let TMP_261 \def -(S h) in (let TMP_262 \def (s k i) in (let TMP_263 \def (lift TMP_261 TMP_262 -t0) in (let TMP_264 \def (s k i) in (let TMP_265 \def (S TMP_264) in (let -TMP_273 \def (\lambda (n: nat).(let TMP_266 \def (s k i) in (let TMP_267 \def -(TLRef h) in (let TMP_268 \def (S h) in (let TMP_269 \def (lift TMP_268 n t0) -in (let TMP_270 \def (S h) in (let TMP_271 \def (s k i) in (let TMP_272 \def -(lift TMP_270 TMP_271 t0) in (subst1 TMP_266 TMP_267 TMP_269 TMP_272))))))))) -in (let TMP_274 \def (s k i) in (let TMP_275 \def (s k i) in (let TMP_276 -\def (s_inc k i) in (let TMP_277 \def (le_trans h i TMP_275 H1 TMP_276) in -(let TMP_278 \def (H0 TMP_274 h TMP_277) in (let TMP_279 \def (S i) in (let -TMP_280 \def (s k TMP_279) in (let TMP_281 \def (s_S k i) in (let TMP_282 -\def (eq_ind_r nat TMP_265 TMP_273 TMP_278 TMP_280 TMP_281) in (let TMP_283 -\def (subst1_head TMP_250 TMP_253 TMP_255 i TMP_256 k TMP_260 TMP_263 -TMP_282) in (let TMP_284 \def (S h) in (let TMP_285 \def (THead k t t0) in -(let TMP_286 \def (lift TMP_284 i TMP_285) in (let TMP_287 \def (S h) in (let -TMP_288 \def (lift_head k t t0 TMP_287 i) in (let TMP_289 \def (eq_ind_r T -TMP_239 TMP_249 TMP_283 TMP_286 TMP_288) in (let TMP_290 \def (S h) in (let -TMP_291 \def (S i) in (let TMP_292 \def (THead k t t0) in (let TMP_293 \def -(lift TMP_290 TMP_291 TMP_292) in (let TMP_294 \def (S h) in (let TMP_295 -\def (S i) in (let TMP_296 \def (lift_head k t t0 TMP_294 TMP_295) in -(eq_ind_r T TMP_228 TMP_233 TMP_289 TMP_293 -TMP_296))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) in -(T_ind TMP_7 TMP_34 TMP_220 TMP_297 u))))). +(le h i)).(eq_ind_r T (THead k (lift (S h) (S i) t) (lift (S h) (s k (S i)) +t0)) (\lambda (t1: T).(subst1 i (TLRef h) t1 (lift (S h) i (THead k t t0)))) +(eq_ind_r T (THead k (lift (S h) i t) (lift (S h) (s k i) t0)) (\lambda (t1: +T).(subst1 i (TLRef h) (THead k (lift (S h) (S i) t) (lift (S h) (s k (S i)) +t0)) t1)) (subst1_head (TLRef h) (lift (S h) (S i) t) (lift (S h) i t) i (H i +h H1) k (lift (S h) (s k (S i)) t0) (lift (S h) (s k i) t0) (eq_ind_r nat (S +(s k i)) (\lambda (n: nat).(subst1 (s k i) (TLRef h) (lift (S h) n t0) (lift +(S h) (s k i) t0))) (H0 (s k i) h (le_trans h i (s k i) H1 (s_inc k i))) (s k +(S i)) (s_S k i))) (lift (S h) i (THead k t t0)) (lift_head k t t0 (S h) i)) +(lift (S h) (S i) (THead k t t0)) (lift_head k t t0 (S h) (S i))))))))))) u).