From: Ferruccio Guidi Date: Wed, 4 Feb 2015 20:31:51 +0000 (+0000) Subject: components C r flt app lift X-Git-Tag: make_still_working~752 X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=commitdiff_plain;h=6d1bb99e7f355d826c07285ba46b6b13a4abaefc components C r flt app lift --- diff --git a/matita/matita/contribs/lambdadelta/basic_1/C/defs.ma b/matita/matita/contribs/lambdadelta/basic_1/C/defs.ma index cecc08267..85763067f 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/C/defs.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/C/defs.ma @@ -14,32 +14,29 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/T/defs.ma". +include "basic_1/T/defs.ma". -inductive C: Set \def +inductive C: Type[0] \def | CSort: nat \to C | CHead: C \to (K \to (T \to C)). -definition cweight: - C \to nat -\def - let rec cweight (c: C) on c: nat \def (match c with [(CSort _) \Rightarrow O -| (CHead c0 _ t) \Rightarrow (plus (cweight c0) (tweight t))]) in cweight. +let rec cweight (c: C) on c: nat \def match c with [(CSort _) \Rightarrow O | +(CHead c0 _ t) \Rightarrow (let TMP_1 \def (cweight c0) in (let TMP_2 \def +(tweight t) in (plus TMP_1 TMP_2)))]. definition clt: C \to (C \to Prop) \def - \lambda (c1: C).(\lambda (c2: C).(lt (cweight c1) (cweight c2))). + \lambda (c1: C).(\lambda (c2: C).(let TMP_1 \def (cweight c1) in (let TMP_2 +\def (cweight c2) in (lt TMP_1 TMP_2)))). definition cle: C \to (C \to Prop) \def - \lambda (c1: C).(\lambda (c2: C).(le (cweight c1) (cweight c2))). + \lambda (c1: C).(\lambda (c2: C).(let TMP_1 \def (cweight c1) in (let TMP_2 +\def (cweight c2) in (le TMP_1 TMP_2)))). -definition CTail: - K \to (T \to (C \to C)) -\def - let rec CTail (k: K) (t: T) (c: C) on c: C \def (match c with [(CSort n) -\Rightarrow (CHead (CSort n) k t) | (CHead d h u) \Rightarrow (CHead (CTail k -t d) h u)]) in CTail. +let rec CTail (k: K) (t: T) (c: C) on c: C \def match c with [(CSort n) +\Rightarrow (let TMP_2 \def (CSort n) in (CHead TMP_2 k t)) | (CHead d h u) +\Rightarrow (let TMP_1 \def (CTail k t d) in (CHead TMP_1 h u))]. diff --git a/matita/matita/contribs/lambdadelta/basic_1/C/fwd.ma b/matita/matita/contribs/lambdadelta/basic_1/C/fwd.ma new file mode 100644 index 000000000..37410a778 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/basic_1/C/fwd.ma @@ -0,0 +1,64 @@ +(**************************************************************************) +(* ___ *) +(* ||M|| *) +(* ||A|| A project by Andrea Asperti *) +(* ||T|| *) +(* ||I|| Developers: *) +(* ||T|| The HELM team. *) +(* ||A|| http://helm.cs.unibo.it *) +(* \ / *) +(* \ / This file is distributed under the terms of the *) +(* v GNU General Public License Version 2 *) +(* *) +(**************************************************************************) + +(* This file was automatically generated: do not edit *********************) + +include "basic_1/C/defs.ma". + +let rec C_rect (P: (C \to Type[0])) (f: (\forall (n: nat).(P (CSort n)))) +(f0: (\forall (c: C).((P c) \to (\forall (k: K).(\forall (t: T).(P (CHead c k +t))))))) (c: C) on c: P c \def match c with [(CSort n) \Rightarrow (f n) | +(CHead c0 k t) \Rightarrow (let TMP_1 \def ((C_rect P f f0) c0) in (f0 c0 +TMP_1 k t))]. + +theorem C_ind: + \forall (P: ((C \to Prop))).(((\forall (n: nat).(P (CSort n)))) \to +(((\forall (c: C).((P c) \to (\forall (k: K).(\forall (t: T).(P (CHead c k +t))))))) \to (\forall (c: C).(P c)))) +\def + \lambda (P: ((C \to Prop))).(C_rect P). + +theorem clt_wf__q_ind: + \forall (P: ((C \to Prop))).(((\forall (n: nat).((\lambda (P0: ((C \to +Prop))).(\lambda (n0: nat).(\forall (c: C).((eq nat (cweight c) n0) \to (P0 +c))))) P n))) \to (\forall (c: C).(P c))) +\def + let Q \def (\lambda (P: ((C \to Prop))).(\lambda (n: nat).(\forall (c: +C).((eq nat (cweight c) n) \to (P c))))) in (\lambda (P: ((C \to +Prop))).(\lambda (H: ((\forall (n: nat).(\forall (c: C).((eq nat (cweight c) +n) \to (P c)))))).(\lambda (c: C).(let TMP_1 \def (cweight c) in (let TMP_2 +\def (cweight c) in (let TMP_3 \def (refl_equal nat TMP_2) in (H TMP_1 c +TMP_3))))))). + +theorem clt_wf_ind: + \forall (P: ((C \to Prop))).(((\forall (c: C).(((\forall (d: C).((clt d c) +\to (P d)))) \to (P c)))) \to (\forall (c: C).(P c))) +\def + let Q \def (\lambda (P: ((C \to Prop))).(\lambda (n: nat).(\forall (c: +C).((eq nat (cweight c) n) \to (P c))))) in (\lambda (P: ((C \to +Prop))).(\lambda (H: ((\forall (c: C).(((\forall (d: C).((lt (cweight d) +(cweight c)) \to (P d)))) \to (P c))))).(\lambda (c: C).(let TMP_1 \def +(\lambda (c0: C).(P c0)) in (let TMP_11 \def (\lambda (n: nat).(let TMP_2 +\def (\lambda (c0: C).(P c0)) in (let TMP_3 \def (Q TMP_2) in (let TMP_10 +\def (\lambda (n0: nat).(\lambda (H0: ((\forall (m: nat).((lt m n0) \to (Q +(\lambda (c0: C).(P c0)) m))))).(\lambda (c0: C).(\lambda (H1: (eq nat +(cweight c0) n0)).(let TMP_4 \def (\lambda (n1: nat).(\forall (m: nat).((lt m +n1) \to (\forall (c1: C).((eq nat (cweight c1) m) \to (P c1)))))) in (let +TMP_5 \def (cweight c0) in (let H2 \def (eq_ind_r nat n0 TMP_4 H0 TMP_5 H1) +in (let TMP_9 \def (\lambda (d: C).(\lambda (H3: (lt (cweight d) (cweight +c0))).(let TMP_6 \def (cweight d) in (let TMP_7 \def (cweight d) in (let +TMP_8 \def (refl_equal nat TMP_7) in (H2 TMP_6 H3 d TMP_8)))))) in (H c0 +TMP_9))))))))) in (lt_wf_ind n TMP_3 TMP_10))))) in (clt_wf__q_ind TMP_1 +TMP_11 c)))))). + diff --git a/matita/matita/contribs/lambdadelta/basic_1/C/props.ma b/matita/matita/contribs/lambdadelta/basic_1/C/props.ma index 878abb3bc..6a35f3d9b 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/C/props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/C/props.ma @@ -14,103 +14,107 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/C/defs.ma". +include "basic_1/C/fwd.ma". -include "Basic-1/T/props.ma". +include "basic_1/T/props.ma". + +theorem cle_r: + \forall (c: C).(cle c c) +\def + \lambda (c: C).(let TMP_3 \def (\lambda (c0: C).(let TMP_1 \def (cweight c0) +in (let TMP_2 \def (cweight c0) in (le TMP_1 TMP_2)))) in (let TMP_4 \def +(\lambda (_: nat).(le_O_n O)) in (let TMP_8 \def (\lambda (c0: C).(\lambda +(_: (le (cweight c0) (cweight c0))).(\lambda (_: K).(\lambda (t: T).(let +TMP_5 \def (cweight c0) in (let TMP_6 \def (tweight t) in (let TMP_7 \def +(plus TMP_5 TMP_6) in (le_n TMP_7)))))))) in (C_ind TMP_3 TMP_4 TMP_8 c)))). + +theorem cle_head: + \forall (c1: C).(\forall (c2: C).((cle c1 c2) \to (\forall (u1: T).(\forall +(u2: T).((tle u1 u2) \to (\forall (k: K).(cle (CHead c1 k u1) (CHead c2 k +u2)))))))) +\def + \lambda (c1: C).(\lambda (c2: C).(\lambda (H: (le (cweight c1) (cweight +c2))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H0: (le (tweight u1) +(tweight u2))).(\lambda (_: K).(let TMP_1 \def (cweight c1) in (let TMP_2 +\def (cweight c2) in (let TMP_3 \def (tweight u1) in (let TMP_4 \def (tweight +u2) in (le_plus_plus TMP_1 TMP_2 TMP_3 TMP_4 H H0))))))))))). + +theorem cle_trans_head: + \forall (c1: C).(\forall (c2: C).((cle c1 c2) \to (\forall (k: K).(\forall +(u: T).(cle c1 (CHead c2 k u)))))) +\def + \lambda (c1: C).(\lambda (c2: C).(\lambda (H: (le (cweight c1) (cweight +c2))).(\lambda (_: K).(\lambda (u: T).(let TMP_1 \def (cweight c1) in (let +TMP_2 \def (cweight c2) in (let TMP_3 \def (tweight u) in (le_plus_trans +TMP_1 TMP_2 TMP_3 H)))))))). theorem clt_cong: \forall (c: C).(\forall (d: C).((clt c d) \to (\forall (k: K).(\forall (t: T).(clt (CHead c k t) (CHead d k t)))))) \def \lambda (c: C).(\lambda (d: C).(\lambda (H: (lt (cweight c) (cweight -d))).(\lambda (_: K).(\lambda (t: T).(lt_reg_r (cweight c) (cweight d) -(tweight t) H))))). -(* COMMENTS -Initial nodes: 33 -END *) +d))).(\lambda (_: K).(\lambda (t: T).(let TMP_1 \def (cweight c) in (let +TMP_2 \def (cweight d) in (let TMP_3 \def (tweight t) in (lt_reg_r TMP_1 +TMP_2 TMP_3 H)))))))). theorem clt_head: \forall (k: K).(\forall (c: C).(\forall (u: T).(clt c (CHead c k u)))) \def - \lambda (_: K).(\lambda (c: C).(\lambda (u: T).(eq_ind_r nat (plus (cweight -c) O) (\lambda (n: nat).(lt n (plus (cweight c) (tweight u)))) -(le_lt_plus_plus (cweight c) (cweight c) O (tweight u) (le_n (cweight c)) -(tweight_lt u)) (cweight c) (plus_n_O (cweight c))))). -(* COMMENTS -Initial nodes: 69 -END *) - -theorem clt_wf__q_ind: - \forall (P: ((C \to Prop))).(((\forall (n: nat).((\lambda (P0: ((C \to -Prop))).(\lambda (n0: nat).(\forall (c: C).((eq nat (cweight c) n0) \to (P0 -c))))) P n))) \to (\forall (c: C).(P c))) -\def - let Q \def (\lambda (P: ((C \to Prop))).(\lambda (n: nat).(\forall (c: -C).((eq nat (cweight c) n) \to (P c))))) in (\lambda (P: ((C \to -Prop))).(\lambda (H: ((\forall (n: nat).(\forall (c: C).((eq nat (cweight c) -n) \to (P c)))))).(\lambda (c: C).(H (cweight c) c (refl_equal nat (cweight -c)))))). -(* COMMENTS -Initial nodes: 61 -END *) - -theorem clt_wf_ind: - \forall (P: ((C \to Prop))).(((\forall (c: C).(((\forall (d: C).((clt d c) -\to (P d)))) \to (P c)))) \to (\forall (c: C).(P c))) -\def - let Q \def (\lambda (P: ((C \to Prop))).(\lambda (n: nat).(\forall (c: -C).((eq nat (cweight c) n) \to (P c))))) in (\lambda (P: ((C \to -Prop))).(\lambda (H: ((\forall (c: C).(((\forall (d: C).((lt (cweight d) -(cweight c)) \to (P d)))) \to (P c))))).(\lambda (c: C).(clt_wf__q_ind -(\lambda (c0: C).(P c0)) (\lambda (n: nat).(lt_wf_ind n (Q (\lambda (c0: -C).(P c0))) (\lambda (n0: nat).(\lambda (H0: ((\forall (m: nat).((lt m n0) -\to (Q (\lambda (c0: C).(P c0)) m))))).(\lambda (c0: C).(\lambda (H1: (eq nat -(cweight c0) n0)).(let H2 \def (eq_ind_r nat n0 (\lambda (n1: nat).(\forall -(m: nat).((lt m n1) \to (\forall (c1: C).((eq nat (cweight c1) m) \to (P -c1)))))) H0 (cweight c0) H1) in (H c0 (\lambda (d: C).(\lambda (H3: (lt -(cweight d) (cweight c0))).(H2 (cweight d) H3 d (refl_equal nat (cweight -d))))))))))))) c)))). -(* COMMENTS -Initial nodes: 179 -END *) + \lambda (_: K).(\lambda (c: C).(\lambda (u: T).(let TMP_1 \def (cweight c) +in (let TMP_2 \def (plus TMP_1 O) in (let TMP_6 \def (\lambda (n: nat).(let +TMP_3 \def (cweight c) in (let TMP_4 \def (tweight u) in (let TMP_5 \def +(plus TMP_3 TMP_4) in (lt n TMP_5))))) in (let TMP_7 \def (tweight u) in (let +TMP_8 \def (cweight c) in (let TMP_9 \def (tweight_lt u) in (let TMP_10 \def +(lt_reg_l O TMP_7 TMP_8 TMP_9) in (let TMP_11 \def (cweight c) in (let TMP_12 +\def (cweight c) in (let TMP_13 \def (plus_n_O TMP_12) in (eq_ind_r nat TMP_2 +TMP_6 TMP_10 TMP_11 TMP_13))))))))))))). theorem chead_ctail: \forall (c: C).(\forall (t: T).(\forall (k: K).(ex_3 K C T (\lambda (h: K).(\lambda (d: C).(\lambda (u: T).(eq C (CHead c k t) (CTail h u d)))))))) \def - \lambda (c: C).(C_ind (\lambda (c0: C).(\forall (t: T).(\forall (k: K).(ex_3 -K C T (\lambda (h: K).(\lambda (d: C).(\lambda (u: T).(eq C (CHead c0 k t) -(CTail h u d))))))))) (\lambda (n: nat).(\lambda (t: T).(\lambda (k: -K).(ex_3_intro K C T (\lambda (h: K).(\lambda (d: C).(\lambda (u: T).(eq C -(CHead (CSort n) k t) (CTail h u d))))) k (CSort n) t (refl_equal C (CHead -(CSort n) k t)))))) (\lambda (c0: C).(\lambda (H: ((\forall (t: T).(\forall -(k: K).(ex_3 K C T (\lambda (h: K).(\lambda (d: C).(\lambda (u: T).(eq C -(CHead c0 k t) (CTail h u d)))))))))).(\lambda (k: K).(\lambda (t: -T).(\lambda (t0: T).(\lambda (k0: K).(let H_x \def (H t k) in (let H0 \def -H_x in (ex_3_ind K C T (\lambda (h: K).(\lambda (d: C).(\lambda (u: T).(eq C -(CHead c0 k t) (CTail h u d))))) (ex_3 K C T (\lambda (h: K).(\lambda (d: -C).(\lambda (u: T).(eq C (CHead (CHead c0 k t) k0 t0) (CTail h u d)))))) -(\lambda (x0: K).(\lambda (x1: C).(\lambda (x2: T).(\lambda (H1: (eq C (CHead -c0 k t) (CTail x0 x2 x1))).(eq_ind_r C (CTail x0 x2 x1) (\lambda (c1: -C).(ex_3 K C T (\lambda (h: K).(\lambda (d: C).(\lambda (u: T).(eq C (CHead -c1 k0 t0) (CTail h u d))))))) (ex_3_intro K C T (\lambda (h: K).(\lambda (d: -C).(\lambda (u: T).(eq C (CHead (CTail x0 x2 x1) k0 t0) (CTail h u d))))) x0 -(CHead x1 k0 t0) x2 (refl_equal C (CHead (CTail x0 x2 x1) k0 t0))) (CHead c0 -k t) H1))))) H0))))))))) c). -(* COMMENTS -Initial nodes: 395 -END *) + \lambda (c: C).(let TMP_4 \def (\lambda (c0: C).(\forall (t: T).(\forall (k: +K).(let TMP_3 \def (\lambda (h: K).(\lambda (d: C).(\lambda (u: T).(let TMP_1 +\def (CHead c0 k t) in (let TMP_2 \def (CTail h u d) in (eq C TMP_1 +TMP_2)))))) in (ex_3 K C T TMP_3))))) in (let TMP_13 \def (\lambda (n: +nat).(\lambda (t: T).(\lambda (k: K).(let TMP_8 \def (\lambda (h: K).(\lambda +(d: C).(\lambda (u: T).(let TMP_5 \def (CSort n) in (let TMP_6 \def (CHead +TMP_5 k t) in (let TMP_7 \def (CTail h u d) in (eq C TMP_6 TMP_7))))))) in +(let TMP_9 \def (CSort n) in (let TMP_10 \def (CSort n) in (let TMP_11 \def +(CHead TMP_10 k t) in (let TMP_12 \def (refl_equal C TMP_11) in (ex_3_intro K +C T TMP_8 k TMP_9 t TMP_12))))))))) in (let TMP_38 \def (\lambda (c0: +C).(\lambda (H: ((\forall (t: T).(\forall (k: K).(ex_3 K C T (\lambda (h: +K).(\lambda (d: C).(\lambda (u: T).(eq C (CHead c0 k t) (CTail h u +d)))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (t0: T).(\lambda (k0: +K).(let H_x \def (H t k) in (let H0 \def H_x in (let TMP_16 \def (\lambda (h: +K).(\lambda (d: C).(\lambda (u: T).(let TMP_14 \def (CHead c0 k t) in (let +TMP_15 \def (CTail h u d) in (eq C TMP_14 TMP_15)))))) in (let TMP_20 \def +(\lambda (h: K).(\lambda (d: C).(\lambda (u: T).(let TMP_17 \def (CHead c0 k +t) in (let TMP_18 \def (CHead TMP_17 k0 t0) in (let TMP_19 \def (CTail h u d) +in (eq C TMP_18 TMP_19))))))) in (let TMP_21 \def (ex_3 K C T TMP_20) in (let +TMP_37 \def (\lambda (x0: K).(\lambda (x1: C).(\lambda (x2: T).(\lambda (H1: +(eq C (CHead c0 k t) (CTail x0 x2 x1))).(let TMP_22 \def (CTail x0 x2 x1) in +(let TMP_26 \def (\lambda (c1: C).(let TMP_25 \def (\lambda (h: K).(\lambda +(d: C).(\lambda (u: T).(let TMP_23 \def (CHead c1 k0 t0) in (let TMP_24 \def +(CTail h u d) in (eq C TMP_23 TMP_24)))))) in (ex_3 K C T TMP_25))) in (let +TMP_30 \def (\lambda (h: K).(\lambda (d: C).(\lambda (u: T).(let TMP_27 \def +(CTail x0 x2 x1) in (let TMP_28 \def (CHead TMP_27 k0 t0) in (let TMP_29 \def +(CTail h u d) in (eq C TMP_28 TMP_29))))))) in (let TMP_31 \def (CHead x1 k0 +t0) in (let TMP_32 \def (CTail x0 x2 x1) in (let TMP_33 \def (CHead TMP_32 k0 +t0) in (let TMP_34 \def (refl_equal C TMP_33) in (let TMP_35 \def (ex_3_intro +K C T TMP_30 x0 TMP_31 x2 TMP_34) in (let TMP_36 \def (CHead c0 k t) in +(eq_ind_r C TMP_22 TMP_26 TMP_35 TMP_36 H1)))))))))))))) in (ex_3_ind K C T +TMP_16 TMP_21 TMP_37 H0))))))))))))) in (C_ind TMP_4 TMP_13 TMP_38 c)))). theorem clt_thead: \forall (k: K).(\forall (u: T).(\forall (c: C).(clt c (CTail k u c)))) \def - \lambda (k: K).(\lambda (u: T).(\lambda (c: C).(C_ind (\lambda (c0: C).(clt -c0 (CTail k u c0))) (\lambda (n: nat).(clt_head k (CSort n) u)) (\lambda (c0: -C).(\lambda (H: (clt c0 (CTail k u c0))).(\lambda (k0: K).(\lambda (t: -T).(clt_cong c0 (CTail k u c0) H k0 t))))) c))). -(* COMMENTS -Initial nodes: 71 -END *) + \lambda (k: K).(\lambda (u: T).(\lambda (c: C).(let TMP_2 \def (\lambda (c0: +C).(let TMP_1 \def (CTail k u c0) in (clt c0 TMP_1))) in (let TMP_4 \def +(\lambda (n: nat).(let TMP_3 \def (CSort n) in (clt_head k TMP_3 u))) in (let +TMP_6 \def (\lambda (c0: C).(\lambda (H: (clt c0 (CTail k u c0))).(\lambda +(k0: K).(\lambda (t: T).(let TMP_5 \def (CTail k u c0) in (clt_cong c0 TMP_5 +H k0 t)))))) in (C_ind TMP_2 TMP_4 TMP_6 c)))))). theorem c_tail_ind: \forall (P: ((C \to Prop))).(((\forall (n: nat).(P (CSort n)))) \to @@ -119,21 +123,25 @@ c))))))) \to (\forall (c: C).(P c)))) \def \lambda (P: ((C \to Prop))).(\lambda (H: ((\forall (n: nat).(P (CSort n))))).(\lambda (H0: ((\forall (c: C).((P c) \to (\forall (k: K).(\forall (t: -T).(P (CTail k t c)))))))).(\lambda (c: C).(clt_wf_ind (\lambda (c0: C).(P -c0)) (\lambda (c0: C).(C_ind (\lambda (c1: C).(((\forall (d: C).((clt d c1) -\to (P d)))) \to (P c1))) (\lambda (n: nat).(\lambda (_: ((\forall (d: -C).((clt d (CSort n)) \to (P d))))).(H n))) (\lambda (c1: C).(\lambda (_: -((((\forall (d: C).((clt d c1) \to (P d)))) \to (P c1)))).(\lambda (k: -K).(\lambda (t: T).(\lambda (H2: ((\forall (d: C).((clt d (CHead c1 k t)) \to -(P d))))).(let H_x \def (chead_ctail c1 t k) in (let H3 \def H_x in (ex_3_ind -K C T (\lambda (h: K).(\lambda (d: C).(\lambda (u: T).(eq C (CHead c1 k t) -(CTail h u d))))) (P (CHead c1 k t)) (\lambda (x0: K).(\lambda (x1: -C).(\lambda (x2: T).(\lambda (H4: (eq C (CHead c1 k t) (CTail x0 x2 -x1))).(eq_ind_r C (CTail x0 x2 x1) (\lambda (c2: C).(P c2)) (let H5 \def -(eq_ind C (CHead c1 k t) (\lambda (c2: C).(\forall (d: C).((clt d c2) \to (P -d)))) H2 (CTail x0 x2 x1) H4) in (H0 x1 (H5 x1 (clt_thead x0 x2 x1)) x0 x2)) -(CHead c1 k t) H4))))) H3)))))))) c0)) c)))). -(* COMMENTS -Initial nodes: 295 -END *) +T).(P (CTail k t c)))))))).(\lambda (c: C).(let TMP_1 \def (\lambda (c0: +C).(P c0)) in (let TMP_20 \def (\lambda (c0: C).(let TMP_2 \def (\lambda (c1: +C).(((\forall (d: C).((clt d c1) \to (P d)))) \to (P c1))) in (let TMP_3 \def +(\lambda (n: nat).(\lambda (_: ((\forall (d: C).((clt d (CSort n)) \to (P +d))))).(H n))) in (let TMP_19 \def (\lambda (c1: C).(\lambda (_: ((((\forall +(d: C).((clt d c1) \to (P d)))) \to (P c1)))).(\lambda (k: K).(\lambda (t: +T).(\lambda (H2: ((\forall (d: C).((clt d (CHead c1 k t)) \to (P d))))).(let +H_x \def (chead_ctail c1 t k) in (let H3 \def H_x in (let TMP_6 \def (\lambda +(h: K).(\lambda (d: C).(\lambda (u: T).(let TMP_4 \def (CHead c1 k t) in (let +TMP_5 \def (CTail h u d) in (eq C TMP_4 TMP_5)))))) in (let TMP_7 \def (CHead +c1 k t) in (let TMP_8 \def (P TMP_7) in (let TMP_18 \def (\lambda (x0: +K).(\lambda (x1: C).(\lambda (x2: T).(\lambda (H4: (eq C (CHead c1 k t) +(CTail x0 x2 x1))).(let TMP_9 \def (CTail x0 x2 x1) in (let TMP_10 \def +(\lambda (c2: C).(P c2)) in (let TMP_11 \def (CHead c1 k t) in (let TMP_12 +\def (\lambda (c2: C).(\forall (d: C).((clt d c2) \to (P d)))) in (let TMP_13 +\def (CTail x0 x2 x1) in (let H5 \def (eq_ind C TMP_11 TMP_12 H2 TMP_13 H4) +in (let TMP_14 \def (clt_thead x0 x2 x1) in (let TMP_15 \def (H5 x1 TMP_14) +in (let TMP_16 \def (H0 x1 TMP_15 x0 x2) in (let TMP_17 \def (CHead c1 k t) +in (eq_ind_r C TMP_9 TMP_10 TMP_16 TMP_17 H4))))))))))))))) in (ex_3_ind K C +T TMP_6 TMP_8 TMP_18 H3)))))))))))) in (C_ind TMP_2 TMP_3 TMP_19 c0))))) in +(clt_wf_ind TMP_1 TMP_20 c)))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/T/defs.ma b/matita/matita/contribs/lambdadelta/basic_1/T/defs.ma index 313ac01ae..f200518bf 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/T/defs.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/T/defs.ma @@ -39,3 +39,9 @@ O) | (TLRef _) \Rightarrow (S O) | (THead _ u t0) \Rightarrow (let TMP_1 \def (tweight u) in (let TMP_2 \def (tweight t0) in (let TMP_3 \def (plus TMP_1 TMP_2) in (S TMP_3))))]. +definition tle: + T \to (T \to Prop) +\def + \lambda (t1: T).(\lambda (t2: T).(let TMP_1 \def (tweight t1) in (let TMP_2 +\def (tweight t2) in (le TMP_1 TMP_2)))). + diff --git a/matita/matita/contribs/lambdadelta/basic_1/T/props.ma b/matita/matita/contribs/lambdadelta/basic_1/T/props.ma index cce311989..3b756e98d 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/T/props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/T/props.ma @@ -62,3 +62,16 @@ TMP_9 \def (tweight t1) in (let TMP_10 \def (plus TMP_8 TMP_9) in (let TMP_11 in (let TMP_14 \def (le_plus_trans TMP_11 TMP_12 TMP_13 H) in (le_S TMP_7 TMP_10 TMP_14)))))))))))))) in (T_ind TMP_2 TMP_4 TMP_6 TMP_15 t))))). +theorem tle_r: + \forall (t: T).(tle t t) +\def + \lambda (t: T).(let TMP_3 \def (\lambda (t0: T).(let TMP_1 \def (tweight t0) +in (let TMP_2 \def (tweight t0) in (le TMP_1 TMP_2)))) in (let TMP_5 \def +(\lambda (_: nat).(let TMP_4 \def (S O) in (le_n TMP_4))) in (let TMP_7 \def +(\lambda (_: nat).(let TMP_6 \def (S O) in (le_n TMP_6))) in (let TMP_12 \def +(\lambda (_: K).(\lambda (t0: T).(\lambda (_: (le (tweight t0) (tweight +t0))).(\lambda (t1: T).(\lambda (_: (le (tweight t1) (tweight t1))).(let +TMP_8 \def (tweight t0) in (let TMP_9 \def (tweight t1) in (let TMP_10 \def +(plus TMP_8 TMP_9) in (let TMP_11 \def (S TMP_10) in (le_n TMP_11)))))))))) +in (T_ind TMP_3 TMP_5 TMP_7 TMP_12 t))))). + diff --git a/matita/matita/contribs/lambdadelta/basic_1/app/defs.ma b/matita/matita/contribs/lambdadelta/basic_1/app/defs.ma index 9cf1e37d1..9522c7344 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/app/defs.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/app/defs.ma @@ -14,18 +14,12 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/C/defs.ma". +include "basic_1/C/defs.ma". -definition cbk: - C \to nat -\def - let rec cbk (c: C) on c: nat \def (match c with [(CSort m) \Rightarrow m | -(CHead c0 _ _) \Rightarrow (cbk c0)]) in cbk. +let rec cbk (c: C) on c: nat \def match c with [(CSort m) \Rightarrow m | +(CHead c0 _ _) \Rightarrow (cbk c0)]. -definition app1: - C \to (T \to T) -\def - let rec app1 (c: C) on c: (T \to T) \def (\lambda (t: T).(match c with -[(CSort _) \Rightarrow t | (CHead c0 k u) \Rightarrow (app1 c0 (THead k u -t))])) in app1. +let rec app1 (c: C) on c: T \to T \def \lambda (t: T).(match c with [(CSort +_) \Rightarrow t | (CHead c0 k u) \Rightarrow (let TMP_1 \def (THead k u t) +in (app1 c0 TMP_1))]). diff --git a/matita/matita/contribs/lambdadelta/basic_1/flt/defs.ma b/matita/matita/contribs/lambdadelta/basic_1/flt/defs.ma index 3191e1e38..c4e7ed73f 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/flt/defs.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/flt/defs.ma @@ -14,16 +14,18 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/C/defs.ma". +include "basic_1/C/defs.ma". definition fweight: C \to (T \to nat) \def - \lambda (c: C).(\lambda (t: T).(plus (cweight c) (tweight t))). + \lambda (c: C).(\lambda (t: T).(let TMP_1 \def (cweight c) in (let TMP_2 +\def (tweight t) in (plus TMP_1 TMP_2)))). definition flt: C \to (T \to (C \to (T \to Prop))) \def - \lambda (c1: C).(\lambda (t1: T).(\lambda (c2: C).(\lambda (t2: T).(lt -(fweight c1 t1) (fweight c2 t2))))). + \lambda (c1: C).(\lambda (t1: T).(\lambda (c2: C).(\lambda (t2: T).(let +TMP_1 \def (fweight c1 t1) in (let TMP_2 \def (fweight c2 t2) in (lt TMP_1 +TMP_2)))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/flt/fwd.ma b/matita/matita/contribs/lambdadelta/basic_1/flt/fwd.ma new file mode 100644 index 000000000..b5bf9f87b --- /dev/null +++ b/matita/matita/contribs/lambdadelta/basic_1/flt/fwd.ma @@ -0,0 +1,53 @@ +(**************************************************************************) +(* ___ *) +(* ||M|| *) +(* ||A|| A project by Andrea Asperti *) +(* ||T|| *) +(* ||I|| Developers: *) +(* ||T|| The HELM team. *) +(* ||A|| http://helm.cs.unibo.it *) +(* \ / *) +(* \ / This file is distributed under the terms of the *) +(* v GNU General Public License Version 2 *) +(* *) +(**************************************************************************) + +(* This file was automatically generated: do not edit *********************) + +include "basic_1/flt/defs.ma". + +theorem flt_wf__q_ind: + \forall (P: ((C \to (T \to Prop)))).(((\forall (n: nat).((\lambda (P0: ((C +\to (T \to Prop)))).(\lambda (n0: nat).(\forall (c: C).(\forall (t: T).((eq +nat (fweight c t) n0) \to (P0 c t)))))) P n))) \to (\forall (c: C).(\forall +(t: T).(P c t)))) +\def + let Q \def (\lambda (P: ((C \to (T \to Prop)))).(\lambda (n: nat).(\forall +(c: C).(\forall (t: T).((eq nat (fweight c t) n) \to (P c t)))))) in (\lambda +(P: ((C \to (T \to Prop)))).(\lambda (H: ((\forall (n: nat).(\forall (c: +C).(\forall (t: T).((eq nat (fweight c t) n) \to (P c t))))))).(\lambda (c: +C).(\lambda (t: T).(let TMP_1 \def (fweight c t) in (let TMP_2 \def (fweight +c t) in (let TMP_3 \def (refl_equal nat TMP_2) in (H TMP_1 c t TMP_3)))))))). + +theorem flt_wf_ind: + \forall (P: ((C \to (T \to Prop)))).(((\forall (c2: C).(\forall (t2: +T).(((\forall (c1: C).(\forall (t1: T).((flt c1 t1 c2 t2) \to (P c1 t1))))) +\to (P c2 t2))))) \to (\forall (c: C).(\forall (t: T).(P c t)))) +\def + let Q \def (\lambda (P: ((C \to (T \to Prop)))).(\lambda (n: nat).(\forall +(c: C).(\forall (t: T).((eq nat (fweight c t) n) \to (P c t)))))) in (\lambda +(P: ((C \to (T \to Prop)))).(\lambda (H: ((\forall (c2: C).(\forall (t2: +T).(((\forall (c1: C).(\forall (t1: T).((flt c1 t1 c2 t2) \to (P c1 t1))))) +\to (P c2 t2)))))).(\lambda (c: C).(\lambda (t: T).(let TMP_9 \def (\lambda +(n: nat).(let TMP_1 \def (Q P) in (let TMP_8 \def (\lambda (n0: nat).(\lambda +(H0: ((\forall (m: nat).((lt m n0) \to (Q P m))))).(\lambda (c0: C).(\lambda +(t0: T).(\lambda (H1: (eq nat (fweight c0 t0) n0)).(let TMP_2 \def (\lambda +(n1: nat).(\forall (m: nat).((lt m n1) \to (\forall (c1: C).(\forall (t1: +T).((eq nat (fweight c1 t1) m) \to (P c1 t1))))))) in (let TMP_3 \def +(fweight c0 t0) in (let H2 \def (eq_ind_r nat n0 TMP_2 H0 TMP_3 H1) in (let +TMP_7 \def (\lambda (c1: C).(\lambda (t1: T).(\lambda (H3: (flt c1 t1 c0 +t0)).(let TMP_4 \def (fweight c1 t1) in (let TMP_5 \def (fweight c1 t1) in +(let TMP_6 \def (refl_equal nat TMP_5) in (H2 TMP_4 H3 c1 t1 TMP_6))))))) in +(H c0 t0 TMP_7)))))))))) in (lt_wf_ind n TMP_1 TMP_8)))) in (flt_wf__q_ind P +TMP_9 c t)))))). + diff --git a/matita/matita/contribs/lambdadelta/basic_1/flt/props.ma b/matita/matita/contribs/lambdadelta/basic_1/flt/props.ma index 57df41528..8c69278e3 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/flt/props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/flt/props.ma @@ -14,60 +14,76 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/flt/defs.ma". +include "basic_1/flt/defs.ma". -include "Basic-1/C/props.ma". +include "basic_1/C/props.ma". theorem flt_thead_sx: \forall (k: K).(\forall (c: C).(\forall (u: T).(\forall (t: T).(flt c u c (THead k u t))))) \def - \lambda (_: K).(\lambda (c: C).(\lambda (u: T).(\lambda (t: -T).(le_lt_plus_plus (cweight c) (cweight c) (tweight u) (S (plus (tweight u) -(tweight t))) (le_n (cweight c)) (le_n_S (tweight u) (plus (tweight u) -(tweight t)) (le_plus_l (tweight u) (tweight t))))))). -(* COMMENTS -Initial nodes: 65 -END *) + \lambda (_: K).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(let TMP_1 +\def (tweight u) in (let TMP_2 \def (tweight u) in (let TMP_3 \def (tweight +t) in (let TMP_4 \def (plus TMP_2 TMP_3) in (let TMP_5 \def (S TMP_4) in (let +TMP_6 \def (cweight c) in (let TMP_7 \def (tweight u) in (let TMP_8 \def +(tweight u) in (let TMP_9 \def (tweight t) in (let TMP_10 \def (plus TMP_8 +TMP_9) in (let TMP_11 \def (tweight u) in (let TMP_12 \def (tweight t) in +(let TMP_13 \def (le_plus_l TMP_11 TMP_12) in (let TMP_14 \def (le_n_S TMP_7 +TMP_10 TMP_13) in (lt_reg_l TMP_1 TMP_5 TMP_6 TMP_14)))))))))))))))))). theorem flt_thead_dx: \forall (k: K).(\forall (c: C).(\forall (u: T).(\forall (t: T).(flt c t c (THead k u t))))) \def - \lambda (_: K).(\lambda (c: C).(\lambda (u: T).(\lambda (t: -T).(le_lt_plus_plus (cweight c) (cweight c) (tweight t) (S (plus (tweight u) -(tweight t))) (le_n (cweight c)) (le_n_S (tweight t) (plus (tweight u) -(tweight t)) (le_plus_r (tweight u) (tweight t))))))). -(* COMMENTS -Initial nodes: 65 -END *) + \lambda (_: K).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(let TMP_1 +\def (tweight t) in (let TMP_2 \def (tweight u) in (let TMP_3 \def (tweight +t) in (let TMP_4 \def (plus TMP_2 TMP_3) in (let TMP_5 \def (S TMP_4) in (let +TMP_6 \def (cweight c) in (let TMP_7 \def (tweight t) in (let TMP_8 \def +(tweight u) in (let TMP_9 \def (tweight t) in (let TMP_10 \def (plus TMP_8 +TMP_9) in (let TMP_11 \def (tweight u) in (let TMP_12 \def (tweight t) in +(let TMP_13 \def (le_plus_r TMP_11 TMP_12) in (let TMP_14 \def (le_n_S TMP_7 +TMP_10 TMP_13) in (lt_reg_l TMP_1 TMP_5 TMP_6 TMP_14)))))))))))))))))). theorem flt_shift: \forall (k: K).(\forall (c: C).(\forall (u: T).(\forall (t: T).(flt (CHead c k u) t c (THead k u t))))) \def - \lambda (_: K).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(eq_ind nat -(S (plus (cweight c) (plus (tweight u) (tweight t)))) (\lambda (n: nat).(lt -(plus (plus (cweight c) (tweight u)) (tweight t)) n)) (eq_ind_r nat (plus -(plus (cweight c) (tweight u)) (tweight t)) (\lambda (n: nat).(lt (plus (plus -(cweight c) (tweight u)) (tweight t)) (S n))) (le_n (S (plus (plus (cweight -c) (tweight u)) (tweight t)))) (plus (cweight c) (plus (tweight u) (tweight -t))) (plus_assoc_l (cweight c) (tweight u) (tweight t))) (plus (cweight c) (S -(plus (tweight u) (tweight t)))) (plus_n_Sm (cweight c) (plus (tweight u) -(tweight t))))))). -(* COMMENTS -Initial nodes: 179 -END *) + \lambda (_: K).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(let TMP_1 +\def (cweight c) in (let TMP_2 \def (tweight u) in (let TMP_3 \def (tweight +t) in (let TMP_4 \def (plus TMP_2 TMP_3) in (let TMP_5 \def (plus TMP_1 +TMP_4) in (let TMP_6 \def (S TMP_5) in (let TMP_12 \def (\lambda (n: +nat).(let TMP_7 \def (cweight c) in (let TMP_8 \def (tweight u) in (let TMP_9 +\def (plus TMP_7 TMP_8) in (let TMP_10 \def (tweight t) in (let TMP_11 \def +(plus TMP_9 TMP_10) in (lt TMP_11 n))))))) in (let TMP_13 \def (cweight c) in +(let TMP_14 \def (tweight u) in (let TMP_15 \def (plus TMP_13 TMP_14) in (let +TMP_16 \def (tweight t) in (let TMP_17 \def (plus TMP_15 TMP_16) in (let +TMP_24 \def (\lambda (n: nat).(let TMP_18 \def (cweight c) in (let TMP_19 +\def (tweight u) in (let TMP_20 \def (plus TMP_18 TMP_19) in (let TMP_21 \def +(tweight t) in (let TMP_22 \def (plus TMP_20 TMP_21) in (let TMP_23 \def (S +n) in (lt TMP_22 TMP_23)))))))) in (let TMP_25 \def (cweight c) in (let +TMP_26 \def (tweight u) in (let TMP_27 \def (plus TMP_25 TMP_26) in (let +TMP_28 \def (tweight t) in (let TMP_29 \def (plus TMP_27 TMP_28) in (let +TMP_30 \def (S TMP_29) in (let TMP_31 \def (le_n TMP_30) in (let TMP_32 \def +(cweight c) in (let TMP_33 \def (tweight u) in (let TMP_34 \def (tweight t) +in (let TMP_35 \def (plus TMP_33 TMP_34) in (let TMP_36 \def (plus TMP_32 +TMP_35) in (let TMP_37 \def (cweight c) in (let TMP_38 \def (tweight u) in +(let TMP_39 \def (tweight t) in (let TMP_40 \def (plus_assoc_l TMP_37 TMP_38 +TMP_39) in (let TMP_41 \def (eq_ind_r nat TMP_17 TMP_24 TMP_31 TMP_36 TMP_40) +in (let TMP_42 \def (cweight c) in (let TMP_43 \def (tweight u) in (let +TMP_44 \def (tweight t) in (let TMP_45 \def (plus TMP_43 TMP_44) in (let +TMP_46 \def (S TMP_45) in (let TMP_47 \def (plus TMP_42 TMP_46) in (let +TMP_48 \def (cweight c) in (let TMP_49 \def (tweight u) in (let TMP_50 \def +(tweight t) in (let TMP_51 \def (plus TMP_49 TMP_50) in (let TMP_52 \def +(plus_n_Sm TMP_48 TMP_51) in (eq_ind nat TMP_6 TMP_12 TMP_41 TMP_47 +TMP_52))))))))))))))))))))))))))))))))))))))))))))). theorem flt_arith0: \forall (k: K).(\forall (c: C).(\forall (t: T).(\forall (i: nat).(flt c t (CHead c k t) (TLRef i))))) \def - \lambda (_: K).(\lambda (c: C).(\lambda (t: T).(\lambda (_: -nat).(lt_x_plus_x_Sy (plus (cweight c) (tweight t)) O)))). -(* COMMENTS -Initial nodes: 21 -END *) + \lambda (_: K).(\lambda (c: C).(\lambda (t: T).(\lambda (_: nat).(let TMP_1 +\def (cweight c) in (let TMP_2 \def (tweight t) in (let TMP_3 \def (plus +TMP_1 TMP_2) in (lt_x_plus_x_Sy TMP_3 O))))))). theorem flt_arith1: \forall (k1: K).(\forall (c1: C).(\forall (c2: C).(\forall (t1: T).((cle @@ -76,16 +92,25 @@ nat).(flt c1 t1 (CHead c2 k2 t2) (TLRef i))))))))) \def \lambda (_: K).(\lambda (c1: C).(\lambda (c2: C).(\lambda (t1: T).(\lambda (H: (le (plus (cweight c1) (tweight t1)) (cweight c2))).(\lambda (_: -K).(\lambda (t2: T).(\lambda (_: nat).(le_lt_trans (plus (cweight c1) -(tweight t1)) (cweight c2) (plus (plus (cweight c2) (tweight t2)) (S O)) H -(eq_ind_r nat (plus (S O) (plus (cweight c2) (tweight t2))) (\lambda (n: -nat).(lt (cweight c2) n)) (le_lt_n_Sm (cweight c2) (plus (cweight c2) -(tweight t2)) (le_plus_l (cweight c2) (tweight t2))) (plus (plus (cweight c2) -(tweight t2)) (S O)) (plus_sym (plus (cweight c2) (tweight t2)) (S -O))))))))))). -(* COMMENTS -Initial nodes: 151 -END *) +K).(\lambda (t2: T).(\lambda (_: nat).(let TMP_1 \def (cweight c1) in (let +TMP_2 \def (tweight t1) in (let TMP_3 \def (plus TMP_1 TMP_2) in (let TMP_4 +\def (cweight c2) in (let TMP_5 \def (cweight c2) in (let TMP_6 \def (tweight +t2) in (let TMP_7 \def (plus TMP_5 TMP_6) in (let TMP_8 \def (S O) in (let +TMP_9 \def (plus TMP_7 TMP_8) in (let TMP_10 \def (S O) in (let TMP_11 \def +(cweight c2) in (let TMP_12 \def (tweight t2) in (let TMP_13 \def (plus +TMP_11 TMP_12) in (let TMP_14 \def (plus TMP_10 TMP_13) in (let TMP_16 \def +(\lambda (n: nat).(let TMP_15 \def (cweight c2) in (lt TMP_15 n))) in (let +TMP_17 \def (cweight c2) in (let TMP_18 \def (cweight c2) in (let TMP_19 \def +(tweight t2) in (let TMP_20 \def (plus TMP_18 TMP_19) in (let TMP_21 \def +(cweight c2) in (let TMP_22 \def (tweight t2) in (let TMP_23 \def (le_plus_l +TMP_21 TMP_22) in (let TMP_24 \def (le_lt_n_Sm TMP_17 TMP_20 TMP_23) in (let +TMP_25 \def (cweight c2) in (let TMP_26 \def (tweight t2) in (let TMP_27 \def +(plus TMP_25 TMP_26) in (let TMP_28 \def (S O) in (let TMP_29 \def (plus +TMP_27 TMP_28) in (let TMP_30 \def (cweight c2) in (let TMP_31 \def (tweight +t2) in (let TMP_32 \def (plus TMP_30 TMP_31) in (let TMP_33 \def (S O) in +(let TMP_34 \def (plus_sym TMP_32 TMP_33) in (let TMP_35 \def (eq_ind_r nat +TMP_14 TMP_16 TMP_24 TMP_29 TMP_34) in (le_lt_trans TMP_3 TMP_4 TMP_9 H +TMP_35)))))))))))))))))))))))))))))))))))))))))). theorem flt_arith2: \forall (c1: C).(\forall (c2: C).(\forall (t1: T).(\forall (i: nat).((flt c1 @@ -94,13 +119,36 @@ c1 t1 (CHead c2 k2 t2) (TLRef j))))))))) \def \lambda (c1: C).(\lambda (c2: C).(\lambda (t1: T).(\lambda (_: nat).(\lambda (H: (lt (plus (cweight c1) (tweight t1)) (plus (cweight c2) (S O)))).(\lambda -(_: K).(\lambda (t2: T).(\lambda (_: nat).(lt_le_trans (plus (cweight c1) -(tweight t1)) (plus (cweight c2) (S O)) (plus (plus (cweight c2) (tweight -t2)) (S O)) H (le_plus_plus (cweight c2) (plus (cweight c2) (tweight t2)) (S -O) (S O) (le_plus_l (cweight c2) (tweight t2)) (le_n (S O))))))))))). -(* COMMENTS -Initial nodes: 115 -END *) +(_: K).(\lambda (t2: T).(\lambda (_: nat).(let TMP_1 \def (cweight c1) in +(let TMP_2 \def (tweight t1) in (let TMP_3 \def (plus TMP_1 TMP_2) in (let +TMP_4 \def (cweight c2) in (let TMP_5 \def (S O) in (let TMP_6 \def (plus +TMP_4 TMP_5) in (let TMP_7 \def (cweight c2) in (let TMP_8 \def (tweight t2) +in (let TMP_9 \def (plus TMP_7 TMP_8) in (let TMP_10 \def (S O) in (let +TMP_11 \def (plus TMP_9 TMP_10) in (let TMP_12 \def (cweight c2) in (let +TMP_13 \def (cweight c2) in (let TMP_14 \def (tweight t2) in (let TMP_15 \def +(plus TMP_13 TMP_14) in (let TMP_16 \def (S O) in (let TMP_17 \def (S O) in +(let TMP_18 \def (cweight c2) in (let TMP_19 \def (tweight t2) in (let TMP_20 +\def (le_plus_l TMP_18 TMP_19) in (let TMP_21 \def (S O) in (let TMP_22 \def +(le_n TMP_21) in (let TMP_23 \def (le_plus_plus TMP_12 TMP_15 TMP_16 TMP_17 +TMP_20 TMP_22) in (lt_le_trans TMP_3 TMP_6 TMP_11 H +TMP_23))))))))))))))))))))))))))))))). + +theorem cle_flt_trans: + \forall (c1: C).(\forall (c2: C).((cle c1 c2) \to (\forall (c3: C).(\forall +(u2: T).(\forall (u3: T).((flt c2 u2 c3 u3) \to (flt c1 u2 c3 u3))))))) +\def + \lambda (c1: C).(\lambda (c2: C).(\lambda (H: (le (cweight c1) (cweight +c2))).(\lambda (c3: C).(\lambda (u2: T).(\lambda (u3: T).(\lambda (H0: (lt +(plus (cweight c2) (tweight u2)) (plus (cweight c3) (tweight u3)))).(let +TMP_1 \def (cweight c1) in (let TMP_2 \def (tweight u2) in (let TMP_3 \def +(plus TMP_1 TMP_2) in (let TMP_4 \def (cweight c2) in (let TMP_5 \def +(tweight u2) in (let TMP_6 \def (plus TMP_4 TMP_5) in (let TMP_7 \def +(cweight c3) in (let TMP_8 \def (tweight u3) in (let TMP_9 \def (plus TMP_7 +TMP_8) in (let TMP_10 \def (cweight c1) in (let TMP_11 \def (cweight c2) in +(let TMP_12 \def (tweight u2) in (let TMP_13 \def (tweight u2) in (let TMP_14 +\def (tweight u2) in (let TMP_15 \def (le_n TMP_14) in (let TMP_16 \def +(le_plus_plus TMP_10 TMP_11 TMP_12 TMP_13 H TMP_15) in (le_lt_trans TMP_3 +TMP_6 TMP_9 TMP_16 H0))))))))))))))))))))))). theorem flt_trans: \forall (c1: C).(\forall (c2: C).(\forall (t1: T).(\forall (t2: T).((flt c1 @@ -109,46 +157,7 @@ c1 t1 c3 t3)))))))) \def \lambda (c1: C).(\lambda (c2: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (lt (fweight c1 t1) (fweight c2 t2))).(\lambda (c3: C).(\lambda (t3: -T).(\lambda (H0: (lt (fweight c2 t2) (fweight c3 t3))).(lt_trans (fweight c1 -t1) (fweight c2 t2) (fweight c3 t3) H H0)))))))). -(* COMMENTS -Initial nodes: 63 -END *) - -theorem flt_wf__q_ind: - \forall (P: ((C \to (T \to Prop)))).(((\forall (n: nat).((\lambda (P0: ((C -\to (T \to Prop)))).(\lambda (n0: nat).(\forall (c: C).(\forall (t: T).((eq -nat (fweight c t) n0) \to (P0 c t)))))) P n))) \to (\forall (c: C).(\forall -(t: T).(P c t)))) -\def - let Q \def (\lambda (P: ((C \to (T \to Prop)))).(\lambda (n: nat).(\forall -(c: C).(\forall (t: T).((eq nat (fweight c t) n) \to (P c t)))))) in (\lambda -(P: ((C \to (T \to Prop)))).(\lambda (H: ((\forall (n: nat).(\forall (c: -C).(\forall (t: T).((eq nat (fweight c t) n) \to (P c t))))))).(\lambda (c: -C).(\lambda (t: T).(H (fweight c t) c t (refl_equal nat (fweight c t))))))). -(* COMMENTS -Initial nodes: 85 -END *) - -theorem flt_wf_ind: - \forall (P: ((C \to (T \to Prop)))).(((\forall (c2: C).(\forall (t2: -T).(((\forall (c1: C).(\forall (t1: T).((flt c1 t1 c2 t2) \to (P c1 t1))))) -\to (P c2 t2))))) \to (\forall (c: C).(\forall (t: T).(P c t)))) -\def - let Q \def (\lambda (P: ((C \to (T \to Prop)))).(\lambda (n: nat).(\forall -(c: C).(\forall (t: T).((eq nat (fweight c t) n) \to (P c t)))))) in (\lambda -(P: ((C \to (T \to Prop)))).(\lambda (H: ((\forall (c2: C).(\forall (t2: -T).(((\forall (c1: C).(\forall (t1: T).((flt c1 t1 c2 t2) \to (P c1 t1))))) -\to (P c2 t2)))))).(\lambda (c: C).(\lambda (t: T).(flt_wf__q_ind P (\lambda -(n: nat).(lt_wf_ind n (Q P) (\lambda (n0: nat).(\lambda (H0: ((\forall (m: -nat).((lt m n0) \to (Q P m))))).(\lambda (c0: C).(\lambda (t0: T).(\lambda -(H1: (eq nat (fweight c0 t0) n0)).(let H2 \def (eq_ind_r nat n0 (\lambda (n1: -nat).(\forall (m: nat).((lt m n1) \to (\forall (c1: C).(\forall (t1: T).((eq -nat (fweight c1 t1) m) \to (P c1 t1))))))) H0 (fweight c0 t0) H1) in (H c0 t0 -(\lambda (c1: C).(\lambda (t1: T).(\lambda (H3: (flt c1 t1 c0 t0)).(H2 -(fweight c1 t1) H3 c1 t1 (refl_equal nat (fweight c1 t1))))))))))))))) c -t))))). -(* COMMENTS -Initial nodes: 211 -END *) +T).(\lambda (H0: (lt (fweight c2 t2) (fweight c3 t3))).(let TMP_1 \def +(fweight c1 t1) in (let TMP_2 \def (fweight c2 t2) in (let TMP_3 \def +(fweight c3 t3) in (lt_trans TMP_1 TMP_2 TMP_3 H H0))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/lift/defs.ma b/matita/matita/contribs/lambdadelta/basic_1/lift/defs.ma index 046506672..0ebbb480a 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/lift/defs.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/lift/defs.ma @@ -14,29 +14,24 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/tlist/defs.ma". +include "basic_1/tlist/defs.ma". -include "Basic-1/s/defs.ma". +include "basic_1/s/defs.ma". -definition lref_map: - ((nat \to nat)) \to (nat \to (T \to T)) -\def - let rec lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T \def (match t -with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match -(blt i d) with [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u -t0) \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in -lref_map. +let rec lref_map (f: (nat \to nat)) (d: nat) (t: T) on t: T \def match t with +[(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (let TMP_4 \def +(match (blt i d) with [true \Rightarrow i | false \Rightarrow (f i)]) in +(TLRef TMP_4)) | (THead k u t0) \Rightarrow (let TMP_1 \def (lref_map f d u) +in (let TMP_2 \def (s k d) in (let TMP_3 \def (lref_map f TMP_2 t0) in (THead +k TMP_1 TMP_3))))]. definition lift: nat \to (nat \to (T \to T)) \def - \lambda (h: nat).(\lambda (i: nat).(\lambda (t: T).(lref_map (\lambda (x: -nat).(plus x h)) i t))). + \lambda (h: nat).(\lambda (i: nat).(\lambda (t: T).(let TMP_1 \def (\lambda +(x: nat).(plus x h)) in (lref_map TMP_1 i t)))). -definition lifts: - nat \to (nat \to (TList \to TList)) -\def - let rec lifts (h: nat) (d: nat) (ts: TList) on ts: TList \def (match ts with -[TNil \Rightarrow TNil | (TCons t ts0) \Rightarrow (TCons (lift h d t) (lifts -h d ts0))]) in lifts. +let rec lifts (h: nat) (d: nat) (ts: TList) on ts: TList \def match ts with +[TNil \Rightarrow TNil | (TCons t ts0) \Rightarrow (let TMP_1 \def (lift h d +t) in (let TMP_2 \def (lifts h d ts0) in (TCons TMP_1 TMP_2)))]. diff --git a/matita/matita/contribs/lambdadelta/basic_1/lift/fwd.ma b/matita/matita/contribs/lambdadelta/basic_1/lift/fwd.ma index 324fed2fb..11d21eb53 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/lift/fwd.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/lift/fwd.ma @@ -14,178 +14,198 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/lift/defs.ma". - -theorem lift_sort: - \forall (n: nat).(\forall (h: nat).(\forall (d: nat).(eq T (lift h d (TSort -n)) (TSort n)))) -\def - \lambda (n: nat).(\lambda (_: nat).(\lambda (_: nat).(refl_equal T (TSort -n)))). -(* COMMENTS -Initial nodes: 13 -END *) - -theorem lift_lref_lt: - \forall (n: nat).(\forall (h: nat).(\forall (d: nat).((lt n d) \to (eq T -(lift h d (TLRef n)) (TLRef n))))) -\def - \lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (lt n -d)).(eq_ind bool true (\lambda (b: bool).(eq T (TLRef (match b with [true -\Rightarrow n | false \Rightarrow (plus n h)])) (TLRef n))) (refl_equal T -(TLRef n)) (blt n d) (sym_eq bool (blt n d) true (lt_blt d n H)))))). -(* COMMENTS -Initial nodes: 72 -END *) - -theorem lift_lref_ge: - \forall (n: nat).(\forall (h: nat).(\forall (d: nat).((le d n) \to (eq T -(lift h d (TLRef n)) (TLRef (plus n h)))))) -\def - \lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (le d -n)).(eq_ind bool false (\lambda (b: bool).(eq T (TLRef (match b with [true -\Rightarrow n | false \Rightarrow (plus n h)])) (TLRef (plus n h)))) -(refl_equal T (TLRef (plus n h))) (blt n d) (sym_eq bool (blt n d) false -(le_bge d n H)))))). -(* COMMENTS -Initial nodes: 80 -END *) - -theorem lift_head: - \forall (k: K).(\forall (u: T).(\forall (t: T).(\forall (h: nat).(\forall -(d: nat).(eq T (lift h d (THead k u t)) (THead k (lift h d u) (lift h (s k d) -t))))))) -\def - \lambda (k: K).(\lambda (u: T).(\lambda (t: T).(\lambda (h: nat).(\lambda -(d: nat).(refl_equal T (THead k (lift h d u) (lift h (s k d) t))))))). -(* COMMENTS -Initial nodes: 37 -END *) - -theorem lift_bind: - \forall (b: B).(\forall (u: T).(\forall (t: T).(\forall (h: nat).(\forall -(d: nat).(eq T (lift h d (THead (Bind b) u t)) (THead (Bind b) (lift h d u) -(lift h (S d) t))))))) -\def - \lambda (b: B).(\lambda (u: T).(\lambda (t: T).(\lambda (h: nat).(\lambda -(d: nat).(refl_equal T (THead (Bind b) (lift h d u) (lift h (S d) t))))))). -(* COMMENTS -Initial nodes: 37 -END *) - -theorem lift_flat: - \forall (f: F).(\forall (u: T).(\forall (t: T).(\forall (h: nat).(\forall -(d: nat).(eq T (lift h d (THead (Flat f) u t)) (THead (Flat f) (lift h d u) -(lift h d t))))))) -\def - \lambda (f: F).(\lambda (u: T).(\lambda (t: T).(\lambda (h: nat).(\lambda -(d: nat).(refl_equal T (THead (Flat f) (lift h d u) (lift h d t))))))). -(* COMMENTS -Initial nodes: 35 -END *) +include "basic_1/lift/props.ma". theorem lift_gen_sort: \forall (h: nat).(\forall (d: nat).(\forall (n: nat).(\forall (t: T).((eq T (TSort n) (lift h d t)) \to (eq T t (TSort n)))))) \def - \lambda (h: nat).(\lambda (d: nat).(\lambda (n: nat).(\lambda (t: T).(T_ind -(\lambda (t0: T).((eq T (TSort n) (lift h d t0)) \to (eq T t0 (TSort n)))) -(\lambda (n0: nat).(\lambda (H: (eq T (TSort n) (lift h d (TSort -n0)))).(sym_eq T (TSort n) (TSort n0) H))) (\lambda (n0: nat).(\lambda (H: -(eq T (TSort n) (lift h d (TLRef n0)))).(lt_le_e n0 d (eq T (TLRef n0) (TSort -n)) (\lambda (_: (lt n0 d)).(let H1 \def (eq_ind T (lift h d (TLRef n0)) -(\lambda (t0: T).(eq T (TSort n) t0)) H (TLRef n0) (lift_lref_lt n0 h d (let -H1 \def (eq_ind T (TSort n) (\lambda (ee: T).(match ee in T return (\lambda -(_: T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | -(THead _ _ _) \Rightarrow False])) I (lift h d (TLRef n0)) H) in (False_ind -(lt n0 d) H1)))) in (let H2 \def (eq_ind T (TSort n) (\lambda (ee: T).(match -ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | -(TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (TLRef n0) -H1) in (False_ind (eq T (TLRef n0) (TSort n)) H2)))) (\lambda (_: (le d -n0)).(let H1 \def (eq_ind T (lift h d (TLRef n0)) (\lambda (t0: T).(eq T -(TSort n) t0)) H (TLRef (plus n0 h)) (lift_lref_ge n0 h d (let H1 \def -(eq_ind T (TSort n) (\lambda (ee: T).(match ee in T return (\lambda (_: -T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | -(THead _ _ _) \Rightarrow False])) I (lift h d (TLRef n0)) H) in (False_ind -(le d n0) H1)))) in (let H2 \def (eq_ind T (TSort n) (\lambda (ee: T).(match -ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | -(TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (TLRef -(plus n0 h)) H1) in (False_ind (eq T (TLRef n0) (TSort n)) H2))))))) (\lambda -(k: K).(\lambda (t0: T).(\lambda (_: (((eq T (TSort n) (lift h d t0)) \to (eq -T t0 (TSort n))))).(\lambda (t1: T).(\lambda (_: (((eq T (TSort n) (lift h d -t1)) \to (eq T t1 (TSort n))))).(\lambda (H1: (eq T (TSort n) (lift h d -(THead k t0 t1)))).(let H2 \def (eq_ind T (lift h d (THead k t0 t1)) (\lambda -(t2: T).(eq T (TSort n) t2)) H1 (THead k (lift h d t0) (lift h (s k d) t1)) -(lift_head k t0 t1 h d)) in (let H3 \def (eq_ind T (TSort n) (\lambda (ee: -T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow -True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I -(THead k (lift h d t0) (lift h (s k d) t1)) H2) in (False_ind (eq T (THead k -t0 t1) (TSort n)) H3))))))))) t)))). -(* COMMENTS -Initial nodes: 613 -END *) + \lambda (h: nat).(\lambda (d: nat).(\lambda (n: nat).(\lambda (t: T).(let +TMP_2 \def (\lambda (t0: T).((eq T (TSort n) (lift h d t0)) \to (let TMP_1 +\def (TSort n) in (eq T t0 TMP_1)))) in (let TMP_5 \def (\lambda (n0: +nat).(\lambda (H: (eq T (TSort n) (lift h d (TSort n0)))).(let TMP_3 \def +(TSort n) in (let TMP_4 \def (TSort n0) in (sym_eq T TMP_3 TMP_4 H))))) in +(let TMP_49 \def (\lambda (n0: nat).(\lambda (H: (eq T (TSort n) (lift h d +(TLRef n0)))).(let TMP_6 \def (TLRef n0) in (let TMP_7 \def (TSort n) in (let +TMP_8 \def (eq T TMP_6 TMP_7) in (let TMP_27 \def (\lambda (_: (lt n0 +d)).(let TMP_9 \def (TLRef n0) in (let TMP_10 \def (lift h d TMP_9) in (let +TMP_12 \def (\lambda (t0: T).(let TMP_11 \def (TSort n) in (eq T TMP_11 t0))) +in (let TMP_13 \def (TLRef n0) in (let TMP_14 \def (TSort n) in (let TMP_15 +\def (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow True | (TLRef _) +\Rightarrow False | (THead _ _ _) \Rightarrow False])) in (let TMP_16 \def +(TLRef n0) in (let TMP_17 \def (lift h d TMP_16) in (let H1 \def (eq_ind T +TMP_14 TMP_15 I TMP_17 H) in (let TMP_18 \def (lt n0 d) in (let TMP_19 \def +(False_ind TMP_18 H1) in (let TMP_20 \def (lift_lref_lt n0 h d TMP_19) in +(let H1 \def (eq_ind T TMP_10 TMP_12 H TMP_13 TMP_20) in (let TMP_21 \def +(TSort n) in (let TMP_22 \def (\lambda (ee: T).(match ee with [(TSort _) +\Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow +False])) in (let TMP_23 \def (TLRef n0) in (let H2 \def (eq_ind T TMP_21 +TMP_22 I TMP_23 H1) in (let TMP_24 \def (TLRef n0) in (let TMP_25 \def (TSort +n) in (let TMP_26 \def (eq T TMP_24 TMP_25) in (False_ind TMP_26 +H2)))))))))))))))))))))) in (let TMP_48 \def (\lambda (_: (le d n0)).(let +TMP_28 \def (TLRef n0) in (let TMP_29 \def (lift h d TMP_28) in (let TMP_31 +\def (\lambda (t0: T).(let TMP_30 \def (TSort n) in (eq T TMP_30 t0))) in +(let TMP_32 \def (plus n0 h) in (let TMP_33 \def (TLRef TMP_32) in (let +TMP_34 \def (TSort n) in (let TMP_35 \def (\lambda (ee: T).(match ee with +[(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) +\Rightarrow False])) in (let TMP_36 \def (TLRef n0) in (let TMP_37 \def (lift +h d TMP_36) in (let H1 \def (eq_ind T TMP_34 TMP_35 I TMP_37 H) in (let +TMP_38 \def (le d n0) in (let TMP_39 \def (False_ind TMP_38 H1) in (let +TMP_40 \def (lift_lref_ge n0 h d TMP_39) in (let H1 \def (eq_ind T TMP_29 +TMP_31 H TMP_33 TMP_40) in (let TMP_41 \def (TSort n) in (let TMP_42 \def +(\lambda (ee: T).(match ee with [(TSort _) \Rightarrow True | (TLRef _) +\Rightarrow False | (THead _ _ _) \Rightarrow False])) in (let TMP_43 \def +(plus n0 h) in (let TMP_44 \def (TLRef TMP_43) in (let H2 \def (eq_ind T +TMP_41 TMP_42 I TMP_44 H1) in (let TMP_45 \def (TLRef n0) in (let TMP_46 \def +(TSort n) in (let TMP_47 \def (eq T TMP_45 TMP_46) in (False_ind TMP_47 +H2)))))))))))))))))))))))) in (lt_le_e n0 d TMP_8 TMP_27 TMP_48)))))))) in +(let TMP_68 \def (\lambda (k: K).(\lambda (t0: T).(\lambda (_: (((eq T (TSort +n) (lift h d t0)) \to (eq T t0 (TSort n))))).(\lambda (t1: T).(\lambda (_: +(((eq T (TSort n) (lift h d t1)) \to (eq T t1 (TSort n))))).(\lambda (H1: (eq +T (TSort n) (lift h d (THead k t0 t1)))).(let TMP_50 \def (THead k t0 t1) in +(let TMP_51 \def (lift h d TMP_50) in (let TMP_53 \def (\lambda (t2: T).(let +TMP_52 \def (TSort n) in (eq T TMP_52 t2))) in (let TMP_54 \def (lift h d t0) +in (let TMP_55 \def (s k d) in (let TMP_56 \def (lift h TMP_55 t1) in (let +TMP_57 \def (THead k TMP_54 TMP_56) in (let TMP_58 \def (lift_head k t0 t1 h +d) in (let H2 \def (eq_ind T TMP_51 TMP_53 H1 TMP_57 TMP_58) in (let TMP_59 +\def (TSort n) in (let TMP_60 \def (\lambda (ee: T).(match ee with [(TSort _) +\Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow +False])) in (let TMP_61 \def (lift h d t0) in (let TMP_62 \def (s k d) in +(let TMP_63 \def (lift h TMP_62 t1) in (let TMP_64 \def (THead k TMP_61 +TMP_63) in (let H3 \def (eq_ind T TMP_59 TMP_60 I TMP_64 H2) in (let TMP_65 +\def (THead k t0 t1) in (let TMP_66 \def (TSort n) in (let TMP_67 \def (eq T +TMP_65 TMP_66) in (False_ind TMP_67 H3)))))))))))))))))))))))))) in (T_ind +TMP_2 TMP_5 TMP_49 TMP_68 t)))))))). theorem lift_gen_lref: \forall (t: T).(\forall (d: nat).(\forall (h: nat).(\forall (i: nat).((eq T (TLRef i) (lift h d t)) \to (or (land (lt i d) (eq T t (TLRef i))) (land (le (plus d h) i) (eq T t (TLRef (minus i h))))))))) \def - \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (d: nat).(\forall (h: + \lambda (t: T).(let TMP_11 \def (\lambda (t0: T).(\forall (d: nat).(\forall +(h: nat).(\forall (i: nat).((eq T (TLRef i) (lift h d t0)) \to (let TMP_1 +\def (lt i d) in (let TMP_2 \def (TLRef i) in (let TMP_3 \def (eq T t0 TMP_2) +in (let TMP_4 \def (land TMP_1 TMP_3) in (let TMP_5 \def (plus d h) in (let +TMP_6 \def (le TMP_5 i) in (let TMP_7 \def (minus i h) in (let TMP_8 \def +(TLRef TMP_7) in (let TMP_9 \def (eq T t0 TMP_8) in (let TMP_10 \def (land +TMP_6 TMP_9) in (or TMP_4 TMP_10)))))))))))))))) in (let TMP_34 \def (\lambda +(n: nat).(\lambda (d: nat).(\lambda (h: nat).(\lambda (i: nat).(\lambda (H: +(eq T (TLRef i) (lift h d (TSort n)))).(let TMP_12 \def (TSort n) in (let +TMP_13 \def (lift h d TMP_12) in (let TMP_15 \def (\lambda (t0: T).(let +TMP_14 \def (TLRef i) in (eq T TMP_14 t0))) in (let TMP_16 \def (TSort n) in +(let TMP_17 \def (lift_sort n h d) in (let H0 \def (eq_ind T TMP_13 TMP_15 H +TMP_16 TMP_17) in (let TMP_18 \def (TLRef i) in (let TMP_19 \def (\lambda +(ee: T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow +True | (THead _ _ _) \Rightarrow False])) in (let TMP_20 \def (TSort n) in +(let H1 \def (eq_ind T TMP_18 TMP_19 I TMP_20 H0) in (let TMP_21 \def (lt i +d) in (let TMP_22 \def (TSort n) in (let TMP_23 \def (TLRef i) in (let TMP_24 +\def (eq T TMP_22 TMP_23) in (let TMP_25 \def (land TMP_21 TMP_24) in (let +TMP_26 \def (plus d h) in (let TMP_27 \def (le TMP_26 i) in (let TMP_28 \def +(TSort n) in (let TMP_29 \def (minus i h) in (let TMP_30 \def (TLRef TMP_29) +in (let TMP_31 \def (eq T TMP_28 TMP_30) in (let TMP_32 \def (land TMP_27 +TMP_31) in (let TMP_33 \def (or TMP_25 TMP_32) in (False_ind TMP_33 +H1))))))))))))))))))))))))))))) in (let TMP_162 \def (\lambda (n: +nat).(\lambda (d: nat).(\lambda (h: nat).(\lambda (i: nat).(\lambda (H: (eq T +(TLRef i) (lift h d (TLRef n)))).(let TMP_35 \def (lt i d) in (let TMP_36 +\def (TLRef n) in (let TMP_37 \def (TLRef i) in (let TMP_38 \def (eq T TMP_36 +TMP_37) in (let TMP_39 \def (land TMP_35 TMP_38) in (let TMP_40 \def (plus d +h) in (let TMP_41 \def (le TMP_40 i) in (let TMP_42 \def (TLRef n) in (let +TMP_43 \def (minus i h) in (let TMP_44 \def (TLRef TMP_43) in (let TMP_45 +\def (eq T TMP_42 TMP_44) in (let TMP_46 \def (land TMP_41 TMP_45) in (let +TMP_47 \def (or TMP_39 TMP_46) in (let TMP_90 \def (\lambda (H0: (lt n +d)).(let TMP_48 \def (TLRef n) in (let TMP_49 \def (lift h d TMP_48) in (let +TMP_51 \def (\lambda (t0: T).(let TMP_50 \def (TLRef i) in (eq T TMP_50 t0))) +in (let TMP_52 \def (TLRef n) in (let TMP_53 \def (lift_lref_lt n h d H0) in +(let H1 \def (eq_ind T TMP_49 TMP_51 H TMP_52 TMP_53) in (let TMP_54 \def +(\lambda (e: T).(match e with [(TSort _) \Rightarrow i | (TLRef n0) +\Rightarrow n0 | (THead _ _ _) \Rightarrow i])) in (let TMP_55 \def (TLRef i) +in (let TMP_56 \def (TLRef n) in (let H2 \def (f_equal T nat TMP_54 TMP_55 +TMP_56 H1) in (let TMP_69 \def (\lambda (n0: nat).(let TMP_57 \def (lt n0 d) +in (let TMP_58 \def (TLRef n) in (let TMP_59 \def (TLRef n0) in (let TMP_60 +\def (eq T TMP_58 TMP_59) in (let TMP_61 \def (land TMP_57 TMP_60) in (let +TMP_62 \def (plus d h) in (let TMP_63 \def (le TMP_62 n0) in (let TMP_64 \def +(TLRef n) in (let TMP_65 \def (minus n0 h) in (let TMP_66 \def (TLRef TMP_65) +in (let TMP_67 \def (eq T TMP_64 TMP_66) in (let TMP_68 \def (land TMP_63 +TMP_67) in (or TMP_61 TMP_68)))))))))))))) in (let TMP_70 \def (lt n d) in +(let TMP_71 \def (TLRef n) in (let TMP_72 \def (TLRef n) in (let TMP_73 \def +(eq T TMP_71 TMP_72) in (let TMP_74 \def (land TMP_70 TMP_73) in (let TMP_75 +\def (plus d h) in (let TMP_76 \def (le TMP_75 n) in (let TMP_77 \def (TLRef +n) in (let TMP_78 \def (minus n h) in (let TMP_79 \def (TLRef TMP_78) in (let +TMP_80 \def (eq T TMP_77 TMP_79) in (let TMP_81 \def (land TMP_76 TMP_80) in +(let TMP_82 \def (lt n d) in (let TMP_83 \def (TLRef n) in (let TMP_84 \def +(TLRef n) in (let TMP_85 \def (eq T TMP_83 TMP_84) in (let TMP_86 \def (TLRef +n) in (let TMP_87 \def (refl_equal T TMP_86) in (let TMP_88 \def (conj TMP_82 +TMP_85 H0 TMP_87) in (let TMP_89 \def (or_introl TMP_74 TMP_81 TMP_88) in +(eq_ind_r nat n TMP_69 TMP_89 i H2))))))))))))))))))))))))))))))))) in (let +TMP_161 \def (\lambda (H0: (le d n)).(let TMP_91 \def (TLRef n) in (let +TMP_92 \def (lift h d TMP_91) in (let TMP_94 \def (\lambda (t0: T).(let +TMP_93 \def (TLRef i) in (eq T TMP_93 t0))) in (let TMP_95 \def (plus n h) in +(let TMP_96 \def (TLRef TMP_95) in (let TMP_97 \def (lift_lref_ge n h d H0) +in (let H1 \def (eq_ind T TMP_92 TMP_94 H TMP_96 TMP_97) in (let TMP_98 \def +(\lambda (e: T).(match e with [(TSort _) \Rightarrow i | (TLRef n0) +\Rightarrow n0 | (THead _ _ _) \Rightarrow i])) in (let TMP_99 \def (TLRef i) +in (let TMP_100 \def (plus n h) in (let TMP_101 \def (TLRef TMP_100) in (let +H2 \def (f_equal T nat TMP_98 TMP_99 TMP_101 H1) in (let TMP_102 \def (plus n +h) in (let TMP_115 \def (\lambda (n0: nat).(let TMP_103 \def (lt n0 d) in +(let TMP_104 \def (TLRef n) in (let TMP_105 \def (TLRef n0) in (let TMP_106 +\def (eq T TMP_104 TMP_105) in (let TMP_107 \def (land TMP_103 TMP_106) in +(let TMP_108 \def (plus d h) in (let TMP_109 \def (le TMP_108 n0) in (let +TMP_110 \def (TLRef n) in (let TMP_111 \def (minus n0 h) in (let TMP_112 \def +(TLRef TMP_111) in (let TMP_113 \def (eq T TMP_110 TMP_112) in (let TMP_114 +\def (land TMP_109 TMP_113) in (or TMP_107 TMP_114)))))))))))))) in (let +TMP_130 \def (\lambda (n0: nat).(let TMP_116 \def (plus n h) in (let TMP_117 +\def (lt TMP_116 d) in (let TMP_118 \def (TLRef n) in (let TMP_119 \def (plus +n h) in (let TMP_120 \def (TLRef TMP_119) in (let TMP_121 \def (eq T TMP_118 +TMP_120) in (let TMP_122 \def (land TMP_117 TMP_121) in (let TMP_123 \def +(plus d h) in (let TMP_124 \def (plus n h) in (let TMP_125 \def (le TMP_123 +TMP_124) in (let TMP_126 \def (TLRef n) in (let TMP_127 \def (TLRef n0) in +(let TMP_128 \def (eq T TMP_126 TMP_127) in (let TMP_129 \def (land TMP_125 +TMP_128) in (or TMP_122 TMP_129)))))))))))))))) in (let TMP_131 \def (plus n +h) in (let TMP_132 \def (lt TMP_131 d) in (let TMP_133 \def (TLRef n) in (let +TMP_134 \def (plus n h) in (let TMP_135 \def (TLRef TMP_134) in (let TMP_136 +\def (eq T TMP_133 TMP_135) in (let TMP_137 \def (land TMP_132 TMP_136) in +(let TMP_138 \def (plus d h) in (let TMP_139 \def (plus n h) in (let TMP_140 +\def (le TMP_138 TMP_139) in (let TMP_141 \def (TLRef n) in (let TMP_142 \def +(TLRef n) in (let TMP_143 \def (eq T TMP_141 TMP_142) in (let TMP_144 \def +(land TMP_140 TMP_143) in (let TMP_145 \def (plus d h) in (let TMP_146 \def +(plus n h) in (let TMP_147 \def (le TMP_145 TMP_146) in (let TMP_148 \def +(TLRef n) in (let TMP_149 \def (TLRef n) in (let TMP_150 \def (eq T TMP_148 +TMP_149) in (let TMP_151 \def (le_n h) in (let TMP_152 \def (le_plus_plus d n +h h H0 TMP_151) in (let TMP_153 \def (TLRef n) in (let TMP_154 \def +(refl_equal T TMP_153) in (let TMP_155 \def (conj TMP_147 TMP_150 TMP_152 +TMP_154) in (let TMP_156 \def (or_intror TMP_137 TMP_144 TMP_155) in (let +TMP_157 \def (plus n h) in (let TMP_158 \def (minus TMP_157 h) in (let +TMP_159 \def (minus_plus_r n h) in (let TMP_160 \def (eq_ind_r nat n TMP_130 +TMP_156 TMP_158 TMP_159) in (eq_ind_r nat TMP_102 TMP_115 TMP_160 i +H2))))))))))))))))))))))))))))))))))))))))))))))) in (lt_le_e n d TMP_47 +TMP_90 TMP_161))))))))))))))))))))) in (let TMP_191 \def (\lambda (k: +K).(\lambda (t0: T).(\lambda (_: ((\forall (d: nat).(\forall (h: nat).(\forall (i: nat).((eq T (TLRef i) (lift h d t0)) \to (or (land (lt i d) (eq T t0 (TLRef i))) (land (le (plus d h) i) (eq T t0 (TLRef (minus i -h)))))))))) (\lambda (n: nat).(\lambda (d: nat).(\lambda (h: nat).(\lambda -(i: nat).(\lambda (H: (eq T (TLRef i) (lift h d (TSort n)))).(let H0 \def -(eq_ind T (lift h d (TSort n)) (\lambda (t0: T).(eq T (TLRef i) t0)) H (TSort -n) (lift_sort n h d)) in (let H1 \def (eq_ind T (TLRef i) (\lambda (ee: -T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow -False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) I -(TSort n) H0) in (False_ind (or (land (lt i d) (eq T (TSort n) (TLRef i))) -(land (le (plus d h) i) (eq T (TSort n) (TLRef (minus i h))))) H1)))))))) -(\lambda (n: nat).(\lambda (d: nat).(\lambda (h: nat).(\lambda (i: -nat).(\lambda (H: (eq T (TLRef i) (lift h d (TLRef n)))).(lt_le_e n d (or -(land (lt i d) (eq T (TLRef n) (TLRef i))) (land (le (plus d h) i) (eq T -(TLRef n) (TLRef (minus i h))))) (\lambda (H0: (lt n d)).(let H1 \def (eq_ind -T (lift h d (TLRef n)) (\lambda (t0: T).(eq T (TLRef i) t0)) H (TLRef n) -(lift_lref_lt n h d H0)) in (let H2 \def (f_equal T nat (\lambda (e: -T).(match e in T return (\lambda (_: T).nat) with [(TSort _) \Rightarrow i | -(TLRef n0) \Rightarrow n0 | (THead _ _ _) \Rightarrow i])) (TLRef i) (TLRef -n) H1) in (eq_ind_r nat n (\lambda (n0: nat).(or (land (lt n0 d) (eq T (TLRef -n) (TLRef n0))) (land (le (plus d h) n0) (eq T (TLRef n) (TLRef (minus n0 -h)))))) (or_introl (land (lt n d) (eq T (TLRef n) (TLRef n))) (land (le (plus -d h) n) (eq T (TLRef n) (TLRef (minus n h)))) (conj (lt n d) (eq T (TLRef n) -(TLRef n)) H0 (refl_equal T (TLRef n)))) i H2)))) (\lambda (H0: (le d -n)).(let H1 \def (eq_ind T (lift h d (TLRef n)) (\lambda (t0: T).(eq T (TLRef -i) t0)) H (TLRef (plus n h)) (lift_lref_ge n h d H0)) in (let H2 \def -(f_equal T nat (\lambda (e: T).(match e in T return (\lambda (_: T).nat) with -[(TSort _) \Rightarrow i | (TLRef n0) \Rightarrow n0 | (THead _ _ _) -\Rightarrow i])) (TLRef i) (TLRef (plus n h)) H1) in (eq_ind_r nat (plus n h) -(\lambda (n0: nat).(or (land (lt n0 d) (eq T (TLRef n) (TLRef n0))) (land (le -(plus d h) n0) (eq T (TLRef n) (TLRef (minus n0 h)))))) (eq_ind_r nat n -(\lambda (n0: nat).(or (land (lt (plus n h) d) (eq T (TLRef n) (TLRef (plus n -h)))) (land (le (plus d h) (plus n h)) (eq T (TLRef n) (TLRef n0))))) -(or_intror (land (lt (plus n h) d) (eq T (TLRef n) (TLRef (plus n h)))) (land -(le (plus d h) (plus n h)) (eq T (TLRef n) (TLRef n))) (conj (le (plus d h) -(plus n h)) (eq T (TLRef n) (TLRef n)) (le_plus_plus d n h h H0 (le_n h)) -(refl_equal T (TLRef n)))) (minus (plus n h) h) (minus_plus_r n h)) i -H2)))))))))) (\lambda (k: K).(\lambda (t0: T).(\lambda (_: ((\forall (d: -nat).(\forall (h: nat).(\forall (i: nat).((eq T (TLRef i) (lift h d t0)) \to -(or (land (lt i d) (eq T t0 (TLRef i))) (land (le (plus d h) i) (eq T t0 -(TLRef (minus i h))))))))))).(\lambda (t1: T).(\lambda (_: ((\forall (d: -nat).(\forall (h: nat).(\forall (i: nat).((eq T (TLRef i) (lift h d t1)) \to -(or (land (lt i d) (eq T t1 (TLRef i))) (land (le (plus d h) i) (eq T t1 -(TLRef (minus i h))))))))))).(\lambda (d: nat).(\lambda (h: nat).(\lambda (i: -nat).(\lambda (H1: (eq T (TLRef i) (lift h d (THead k t0 t1)))).(let H2 \def -(eq_ind T (lift h d (THead k t0 t1)) (\lambda (t2: T).(eq T (TLRef i) t2)) H1 -(THead k (lift h d t0) (lift h (s k d) t1)) (lift_head k t0 t1 h d)) in (let -H3 \def (eq_ind T (TLRef i) (\lambda (ee: T).(match ee in T return (\lambda -(_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | -(THead _ _ _) \Rightarrow False])) I (THead k (lift h d t0) (lift h (s k d) -t1)) H2) in (False_ind (or (land (lt i d) (eq T (THead k t0 t1) (TLRef i))) -(land (le (plus d h) i) (eq T (THead k t0 t1) (TLRef (minus i h))))) -H3)))))))))))) t). -(* COMMENTS -Initial nodes: 1221 -END *) +h))))))))))).(\lambda (t1: T).(\lambda (_: ((\forall (d: nat).(\forall (h: +nat).(\forall (i: nat).((eq T (TLRef i) (lift h d t1)) \to (or (land (lt i d) +(eq T t1 (TLRef i))) (land (le (plus d h) i) (eq T t1 (TLRef (minus i +h))))))))))).(\lambda (d: nat).(\lambda (h: nat).(\lambda (i: nat).(\lambda +(H1: (eq T (TLRef i) (lift h d (THead k t0 t1)))).(let TMP_163 \def (THead k +t0 t1) in (let TMP_164 \def (lift h d TMP_163) in (let TMP_166 \def (\lambda +(t2: T).(let TMP_165 \def (TLRef i) in (eq T TMP_165 t2))) in (let TMP_167 +\def (lift h d t0) in (let TMP_168 \def (s k d) in (let TMP_169 \def (lift h +TMP_168 t1) in (let TMP_170 \def (THead k TMP_167 TMP_169) in (let TMP_171 +\def (lift_head k t0 t1 h d) in (let H2 \def (eq_ind T TMP_164 TMP_166 H1 +TMP_170 TMP_171) in (let TMP_172 \def (TLRef i) in (let TMP_173 \def (\lambda +(ee: T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow +True | (THead _ _ _) \Rightarrow False])) in (let TMP_174 \def (lift h d t0) +in (let TMP_175 \def (s k d) in (let TMP_176 \def (lift h TMP_175 t1) in (let +TMP_177 \def (THead k TMP_174 TMP_176) in (let H3 \def (eq_ind T TMP_172 +TMP_173 I TMP_177 H2) in (let TMP_178 \def (lt i d) in (let TMP_179 \def +(THead k t0 t1) in (let TMP_180 \def (TLRef i) in (let TMP_181 \def (eq T +TMP_179 TMP_180) in (let TMP_182 \def (land TMP_178 TMP_181) in (let TMP_183 +\def (plus d h) in (let TMP_184 \def (le TMP_183 i) in (let TMP_185 \def +(THead k t0 t1) in (let TMP_186 \def (minus i h) in (let TMP_187 \def (TLRef +TMP_186) in (let TMP_188 \def (eq T TMP_185 TMP_187) in (let TMP_189 \def +(land TMP_184 TMP_188) in (let TMP_190 \def (or TMP_182 TMP_189) in +(False_ind TMP_190 H3))))))))))))))))))))))))))))))))))))))) in (T_ind TMP_11 +TMP_34 TMP_162 TMP_191 t))))). theorem lift_gen_lref_lt: \forall (h: nat).(\forall (d: nat).(\forall (n: nat).((lt n d) \to (\forall @@ -193,21 +213,35 @@ theorem lift_gen_lref_lt: \def \lambda (h: nat).(\lambda (d: nat).(\lambda (n: nat).(\lambda (H: (lt n d)).(\lambda (t: T).(\lambda (H0: (eq T (TLRef n) (lift h d t))).(let H_x -\def (lift_gen_lref t d h n H0) in (let H1 \def H_x in (or_ind (land (lt n d) -(eq T t (TLRef n))) (land (le (plus d h) n) (eq T t (TLRef (minus n h)))) (eq -T t (TLRef n)) (\lambda (H2: (land (lt n d) (eq T t (TLRef n)))).(land_ind -(lt n d) (eq T t (TLRef n)) (eq T t (TLRef n)) (\lambda (_: (lt n -d)).(\lambda (H4: (eq T t (TLRef n))).(eq_ind_r T (TLRef n) (\lambda (t0: -T).(eq T t0 (TLRef n))) (refl_equal T (TLRef n)) t H4))) H2)) (\lambda (H2: -(land (le (plus d h) n) (eq T t (TLRef (minus n h))))).(land_ind (le (plus d -h) n) (eq T t (TLRef (minus n h))) (eq T t (TLRef n)) (\lambda (H3: (le (plus -d h) n)).(\lambda (H4: (eq T t (TLRef (minus n h)))).(eq_ind_r T (TLRef -(minus n h)) (\lambda (t0: T).(eq T t0 (TLRef n))) (le_false (plus d h) n (eq -T (TLRef (minus n h)) (TLRef n)) H3 (lt_le_S n (plus d h) (le_plus_trans (S -n) d h H))) t H4))) H2)) H1)))))))). -(* COMMENTS -Initial nodes: 363 -END *) +\def (lift_gen_lref t d h n H0) in (let H1 \def H_x in (let TMP_1 \def (lt n +d) in (let TMP_2 \def (TLRef n) in (let TMP_3 \def (eq T t TMP_2) in (let +TMP_4 \def (land TMP_1 TMP_3) in (let TMP_5 \def (plus d h) in (let TMP_6 +\def (le TMP_5 n) in (let TMP_7 \def (minus n h) in (let TMP_8 \def (TLRef +TMP_7) in (let TMP_9 \def (eq T t TMP_8) in (let TMP_10 \def (land TMP_6 +TMP_9) in (let TMP_11 \def (TLRef n) in (let TMP_12 \def (eq T t TMP_11) in +(let TMP_24 \def (\lambda (H2: (land (lt n d) (eq T t (TLRef n)))).(let +TMP_13 \def (lt n d) in (let TMP_14 \def (TLRef n) in (let TMP_15 \def (eq T +t TMP_14) in (let TMP_16 \def (TLRef n) in (let TMP_17 \def (eq T t TMP_16) +in (let TMP_23 \def (\lambda (_: (lt n d)).(\lambda (H4: (eq T t (TLRef +n))).(let TMP_18 \def (TLRef n) in (let TMP_20 \def (\lambda (t0: T).(let +TMP_19 \def (TLRef n) in (eq T t0 TMP_19))) in (let TMP_21 \def (TLRef n) in +(let TMP_22 \def (refl_equal T TMP_21) in (eq_ind_r T TMP_18 TMP_20 TMP_22 t +H4))))))) in (land_ind TMP_13 TMP_15 TMP_17 TMP_23 H2)))))))) in (let TMP_47 +\def (\lambda (H2: (land (le (plus d h) n) (eq T t (TLRef (minus n +h))))).(let TMP_25 \def (plus d h) in (let TMP_26 \def (le TMP_25 n) in (let +TMP_27 \def (minus n h) in (let TMP_28 \def (TLRef TMP_27) in (let TMP_29 +\def (eq T t TMP_28) in (let TMP_30 \def (TLRef n) in (let TMP_31 \def (eq T +t TMP_30) in (let TMP_46 \def (\lambda (H3: (le (plus d h) n)).(\lambda (H4: +(eq T t (TLRef (minus n h)))).(let TMP_32 \def (minus n h) in (let TMP_33 +\def (TLRef TMP_32) in (let TMP_35 \def (\lambda (t0: T).(let TMP_34 \def +(TLRef n) in (eq T t0 TMP_34))) in (let TMP_36 \def (plus d h) in (let TMP_37 +\def (minus n h) in (let TMP_38 \def (TLRef TMP_37) in (let TMP_39 \def +(TLRef n) in (let TMP_40 \def (eq T TMP_38 TMP_39) in (let TMP_41 \def (plus +d h) in (let TMP_42 \def (S n) in (let TMP_43 \def (le_plus_trans TMP_42 d h +H) in (let TMP_44 \def (lt_le_S n TMP_41 TMP_43) in (let TMP_45 \def +(le_false TMP_36 n TMP_40 H3 TMP_44) in (eq_ind_r T TMP_33 TMP_35 TMP_45 t +H4)))))))))))))))) in (land_ind TMP_26 TMP_29 TMP_31 TMP_46 H2)))))))))) in +(or_ind TMP_4 TMP_10 TMP_12 TMP_24 TMP_47 H1)))))))))))))))))))))). theorem lift_gen_lref_false: \forall (h: nat).(\forall (d: nat).(\forall (n: nat).((le d n) \to ((lt n @@ -217,17 +251,22 @@ theorem lift_gen_lref_false: \lambda (h: nat).(\lambda (d: nat).(\lambda (n: nat).(\lambda (H: (le d n)).(\lambda (H0: (lt n (plus d h))).(\lambda (t: T).(\lambda (H1: (eq T (TLRef n) (lift h d t))).(\lambda (P: Prop).(let H_x \def (lift_gen_lref t d -h n H1) in (let H2 \def H_x in (or_ind (land (lt n d) (eq T t (TLRef n))) -(land (le (plus d h) n) (eq T t (TLRef (minus n h)))) P (\lambda (H3: (land -(lt n d) (eq T t (TLRef n)))).(land_ind (lt n d) (eq T t (TLRef n)) P -(\lambda (H4: (lt n d)).(\lambda (_: (eq T t (TLRef n))).(le_false d n P H -H4))) H3)) (\lambda (H3: (land (le (plus d h) n) (eq T t (TLRef (minus n -h))))).(land_ind (le (plus d h) n) (eq T t (TLRef (minus n h))) P (\lambda -(H4: (le (plus d h) n)).(\lambda (_: (eq T t (TLRef (minus n h)))).(le_false -(plus d h) n P H4 H0))) H3)) H2)))))))))). -(* COMMENTS -Initial nodes: 269 -END *) +h n H1) in (let H2 \def H_x in (let TMP_1 \def (lt n d) in (let TMP_2 \def +(TLRef n) in (let TMP_3 \def (eq T t TMP_2) in (let TMP_4 \def (land TMP_1 +TMP_3) in (let TMP_5 \def (plus d h) in (let TMP_6 \def (le TMP_5 n) in (let +TMP_7 \def (minus n h) in (let TMP_8 \def (TLRef TMP_7) in (let TMP_9 \def +(eq T t TMP_8) in (let TMP_10 \def (land TMP_6 TMP_9) in (let TMP_15 \def +(\lambda (H3: (land (lt n d) (eq T t (TLRef n)))).(let TMP_11 \def (lt n d) +in (let TMP_12 \def (TLRef n) in (let TMP_13 \def (eq T t TMP_12) in (let +TMP_14 \def (\lambda (H4: (lt n d)).(\lambda (_: (eq T t (TLRef +n))).(le_false d n P H H4))) in (land_ind TMP_11 TMP_13 P TMP_14 H3)))))) in +(let TMP_23 \def (\lambda (H3: (land (le (plus d h) n) (eq T t (TLRef (minus +n h))))).(let TMP_16 \def (plus d h) in (let TMP_17 \def (le TMP_16 n) in +(let TMP_18 \def (minus n h) in (let TMP_19 \def (TLRef TMP_18) in (let +TMP_20 \def (eq T t TMP_19) in (let TMP_22 \def (\lambda (H4: (le (plus d h) +n)).(\lambda (_: (eq T t (TLRef (minus n h)))).(let TMP_21 \def (plus d h) in +(le_false TMP_21 n P H4 H0)))) in (land_ind TMP_17 TMP_20 P TMP_22 H3)))))))) +in (or_ind TMP_4 TMP_10 P TMP_15 TMP_23 H2)))))))))))))))))))))). theorem lift_gen_lref_ge: \forall (h: nat).(\forall (d: nat).(\forall (n: nat).((le d n) \to (\forall @@ -235,24 +274,44 @@ theorem lift_gen_lref_ge: \def \lambda (h: nat).(\lambda (d: nat).(\lambda (n: nat).(\lambda (H: (le d n)).(\lambda (t: T).(\lambda (H0: (eq T (TLRef (plus n h)) (lift h d -t))).(let H_x \def (lift_gen_lref t d h (plus n h) H0) in (let H1 \def H_x in -(or_ind (land (lt (plus n h) d) (eq T t (TLRef (plus n h)))) (land (le (plus -d h) (plus n h)) (eq T t (TLRef (minus (plus n h) h)))) (eq T t (TLRef n)) -(\lambda (H2: (land (lt (plus n h) d) (eq T t (TLRef (plus n h))))).(land_ind -(lt (plus n h) d) (eq T t (TLRef (plus n h))) (eq T t (TLRef n)) (\lambda -(H3: (lt (plus n h) d)).(\lambda (H4: (eq T t (TLRef (plus n h)))).(eq_ind_r -T (TLRef (plus n h)) (\lambda (t0: T).(eq T t0 (TLRef n))) (le_false d n (eq -T (TLRef (plus n h)) (TLRef n)) H (lt_le_S n d (simpl_lt_plus_r h n d -(lt_le_trans (plus n h) d (plus d h) H3 (le_plus_l d h))))) t H4))) H2)) -(\lambda (H2: (land (le (plus d h) (plus n h)) (eq T t (TLRef (minus (plus n -h) h))))).(land_ind (le (plus d h) (plus n h)) (eq T t (TLRef (minus (plus n -h) h))) (eq T t (TLRef n)) (\lambda (_: (le (plus d h) (plus n h))).(\lambda -(H4: (eq T t (TLRef (minus (plus n h) h)))).(eq_ind_r T (TLRef (minus (plus n -h) h)) (\lambda (t0: T).(eq T t0 (TLRef n))) (f_equal nat T TLRef (minus -(plus n h) h) n (minus_plus_r n h)) t H4))) H2)) H1)))))))). -(* COMMENTS -Initial nodes: 473 -END *) +t))).(let TMP_1 \def (plus n h) in (let H_x \def (lift_gen_lref t d h TMP_1 +H0) in (let H1 \def H_x in (let TMP_2 \def (plus n h) in (let TMP_3 \def (lt +TMP_2 d) in (let TMP_4 \def (plus n h) in (let TMP_5 \def (TLRef TMP_4) in +(let TMP_6 \def (eq T t TMP_5) in (let TMP_7 \def (land TMP_3 TMP_6) in (let +TMP_8 \def (plus d h) in (let TMP_9 \def (plus n h) in (let TMP_10 \def (le +TMP_8 TMP_9) in (let TMP_11 \def (plus n h) in (let TMP_12 \def (minus TMP_11 +h) in (let TMP_13 \def (TLRef TMP_12) in (let TMP_14 \def (eq T t TMP_13) in +(let TMP_15 \def (land TMP_10 TMP_14) in (let TMP_16 \def (TLRef n) in (let +TMP_17 \def (eq T t TMP_16) in (let TMP_41 \def (\lambda (H2: (land (lt (plus +n h) d) (eq T t (TLRef (plus n h))))).(let TMP_18 \def (plus n h) in (let +TMP_19 \def (lt TMP_18 d) in (let TMP_20 \def (plus n h) in (let TMP_21 \def +(TLRef TMP_20) in (let TMP_22 \def (eq T t TMP_21) in (let TMP_23 \def (TLRef +n) in (let TMP_24 \def (eq T t TMP_23) in (let TMP_40 \def (\lambda (H3: (lt +(plus n h) d)).(\lambda (H4: (eq T t (TLRef (plus n h)))).(let TMP_25 \def +(plus n h) in (let TMP_26 \def (TLRef TMP_25) in (let TMP_28 \def (\lambda +(t0: T).(let TMP_27 \def (TLRef n) in (eq T t0 TMP_27))) in (let TMP_29 \def +(plus n h) in (let TMP_30 \def (TLRef TMP_29) in (let TMP_31 \def (TLRef n) +in (let TMP_32 \def (eq T TMP_30 TMP_31) in (let TMP_33 \def (plus n h) in +(let TMP_34 \def (plus d h) in (let TMP_35 \def (le_plus_l d h) in (let +TMP_36 \def (lt_le_trans TMP_33 d TMP_34 H3 TMP_35) in (let TMP_37 \def +(simpl_lt_plus_r h n d TMP_36) in (let TMP_38 \def (lt_le_S n d TMP_37) in +(let TMP_39 \def (le_false d n TMP_32 H TMP_38) in (eq_ind_r T TMP_26 TMP_28 +TMP_39 t H4))))))))))))))))) in (land_ind TMP_19 TMP_22 TMP_24 TMP_40 +H2)))))))))) in (let TMP_61 \def (\lambda (H2: (land (le (plus d h) (plus n +h)) (eq T t (TLRef (minus (plus n h) h))))).(let TMP_42 \def (plus d h) in +(let TMP_43 \def (plus n h) in (let TMP_44 \def (le TMP_42 TMP_43) in (let +TMP_45 \def (plus n h) in (let TMP_46 \def (minus TMP_45 h) in (let TMP_47 +\def (TLRef TMP_46) in (let TMP_48 \def (eq T t TMP_47) in (let TMP_49 \def +(TLRef n) in (let TMP_50 \def (eq T t TMP_49) in (let TMP_60 \def (\lambda +(_: (le (plus d h) (plus n h))).(\lambda (H4: (eq T t (TLRef (minus (plus n +h) h)))).(let TMP_51 \def (plus n h) in (let TMP_52 \def (minus TMP_51 h) in +(let TMP_53 \def (TLRef TMP_52) in (let TMP_55 \def (\lambda (t0: T).(let +TMP_54 \def (TLRef n) in (eq T t0 TMP_54))) in (let TMP_56 \def (plus n h) in +(let TMP_57 \def (minus TMP_56 h) in (let TMP_58 \def (minus_plus_r n h) in +(let TMP_59 \def (f_equal nat T TLRef TMP_57 n TMP_58) in (eq_ind_r T TMP_53 +TMP_55 TMP_59 t H4))))))))))) in (land_ind TMP_44 TMP_48 TMP_50 TMP_60 +H2)))))))))))) in (or_ind TMP_7 TMP_15 TMP_17 TMP_41 TMP_61 +H1))))))))))))))))))))))))))). theorem lift_gen_head: \forall (k: K).(\forall (u: T).(\forall (t: T).(\forall (x: T).(\forall (h: @@ -261,40 +320,67 @@ nat).(\forall (d: nat).((eq T (THead k u t) (lift h d x)) \to (ex3_2 T T T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (s k d) z))))))))))) \def - \lambda (k: K).(\lambda (u: T).(\lambda (t: T).(\lambda (x: T).(T_ind -(\lambda (t0: T).(\forall (h: nat).(\forall (d: nat).((eq T (THead k u t) -(lift h d t0)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t0 (THead -k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda -(_: T).(\lambda (z: T).(eq T t (lift h (s k d) z))))))))) (\lambda (n: + \lambda (k: K).(\lambda (u: T).(\lambda (t: T).(\lambda (x: T).(let TMP_8 +\def (\lambda (t0: T).(\forall (h: nat).(\forall (d: nat).((eq T (THead k u +t) (lift h d t0)) \to (let TMP_2 \def (\lambda (y: T).(\lambda (z: T).(let +TMP_1 \def (THead k y z) in (eq T t0 TMP_1)))) in (let TMP_4 \def (\lambda +(y: T).(\lambda (_: T).(let TMP_3 \def (lift h d y) in (eq T u TMP_3)))) in +(let TMP_7 \def (\lambda (_: T).(\lambda (z: T).(let TMP_5 \def (s k d) in +(let TMP_6 \def (lift h TMP_5 z) in (eq T t TMP_6))))) in (ex3_2 T T TMP_2 +TMP_4 TMP_7)))))))) in (let TMP_27 \def (\lambda (n: nat).(\lambda (h: +nat).(\lambda (d: nat).(\lambda (H: (eq T (THead k u t) (lift h d (TSort +n)))).(let TMP_9 \def (TSort n) in (let TMP_10 \def (lift h d TMP_9) in (let +TMP_12 \def (\lambda (t0: T).(let TMP_11 \def (THead k u t) in (eq T TMP_11 +t0))) in (let TMP_13 \def (TSort n) in (let TMP_14 \def (lift_sort n h d) in +(let H0 \def (eq_ind T TMP_10 TMP_12 H TMP_13 TMP_14) in (let TMP_15 \def +(THead k u t) in (let TMP_16 \def (\lambda (ee: T).(match ee with [(TSort _) +\Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow +True])) in (let TMP_17 \def (TSort n) in (let H1 \def (eq_ind T TMP_15 TMP_16 +I TMP_17 H0) in (let TMP_20 \def (\lambda (y: T).(\lambda (z: T).(let TMP_18 +\def (TSort n) in (let TMP_19 \def (THead k y z) in (eq T TMP_18 TMP_19))))) +in (let TMP_22 \def (\lambda (y: T).(\lambda (_: T).(let TMP_21 \def (lift h +d y) in (eq T u TMP_21)))) in (let TMP_25 \def (\lambda (_: T).(\lambda (z: +T).(let TMP_23 \def (s k d) in (let TMP_24 \def (lift h TMP_23 z) in (eq T t +TMP_24))))) in (let TMP_26 \def (ex3_2 T T TMP_20 TMP_22 TMP_25) in +(False_ind TMP_26 H1))))))))))))))))))) in (let TMP_77 \def (\lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (eq T (THead k u t) -(lift h d (TSort n)))).(let H0 \def (eq_ind T (lift h d (TSort n)) (\lambda -(t0: T).(eq T (THead k u t) t0)) H (TSort n) (lift_sort n h d)) in (let H1 -\def (eq_ind T (THead k u t) (\lambda (ee: T).(match ee in T return (\lambda -(_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False -| (THead _ _ _) \Rightarrow True])) I (TSort n) H0) in (False_ind (ex3_2 T T -(\lambda (y: T).(\lambda (z: T).(eq T (TSort n) (THead k y z)))) (\lambda (y: -T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: -T).(eq T t (lift h (s k d) z))))) H1))))))) (\lambda (n: nat).(\lambda (h: -nat).(\lambda (d: nat).(\lambda (H: (eq T (THead k u t) (lift h d (TLRef -n)))).(lt_le_e n d (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) -(THead k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) -(\lambda (_: T).(\lambda (z: T).(eq T t (lift h (s k d) z))))) (\lambda (H0: -(lt n d)).(let H1 \def (eq_ind T (lift h d (TLRef n)) (\lambda (t0: T).(eq T -(THead k u t) t0)) H (TLRef n) (lift_lref_lt n h d H0)) in (let H2 \def -(eq_ind T (THead k u t) (\lambda (ee: T).(match ee in T return (\lambda (_: -T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | -(THead _ _ _) \Rightarrow True])) I (TLRef n) H1) in (False_ind (ex3_2 T T -(\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead k y z)))) (\lambda (y: -T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: -T).(eq T t (lift h (s k d) z))))) H2)))) (\lambda (H0: (le d n)).(let H1 \def -(eq_ind T (lift h d (TLRef n)) (\lambda (t0: T).(eq T (THead k u t) t0)) H -(TLRef (plus n h)) (lift_lref_ge n h d H0)) in (let H2 \def (eq_ind T (THead -k u t) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) with -[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) -\Rightarrow True])) I (TLRef (plus n h)) H1) in (False_ind (ex3_2 T T -(\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead k y z)))) (\lambda (y: -T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: -T).(eq T t (lift h (s k d) z))))) H2))))))))) (\lambda (k0: K).(\lambda (t0: +(lift h d (TLRef n)))).(let TMP_30 \def (\lambda (y: T).(\lambda (z: T).(let +TMP_28 \def (TLRef n) in (let TMP_29 \def (THead k y z) in (eq T TMP_28 +TMP_29))))) in (let TMP_32 \def (\lambda (y: T).(\lambda (_: T).(let TMP_31 +\def (lift h d y) in (eq T u TMP_31)))) in (let TMP_35 \def (\lambda (_: +T).(\lambda (z: T).(let TMP_33 \def (s k d) in (let TMP_34 \def (lift h +TMP_33 z) in (eq T t TMP_34))))) in (let TMP_36 \def (ex3_2 T T TMP_30 TMP_32 +TMP_35) in (let TMP_55 \def (\lambda (H0: (lt n d)).(let TMP_37 \def (TLRef +n) in (let TMP_38 \def (lift h d TMP_37) in (let TMP_40 \def (\lambda (t0: +T).(let TMP_39 \def (THead k u t) in (eq T TMP_39 t0))) in (let TMP_41 \def +(TLRef n) in (let TMP_42 \def (lift_lref_lt n h d H0) in (let H1 \def (eq_ind +T TMP_38 TMP_40 H TMP_41 TMP_42) in (let TMP_43 \def (THead k u t) in (let +TMP_44 \def (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow False | +(TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) in (let +TMP_45 \def (TLRef n) in (let H2 \def (eq_ind T TMP_43 TMP_44 I TMP_45 H1) in +(let TMP_48 \def (\lambda (y: T).(\lambda (z: T).(let TMP_46 \def (TLRef n) +in (let TMP_47 \def (THead k y z) in (eq T TMP_46 TMP_47))))) in (let TMP_50 +\def (\lambda (y: T).(\lambda (_: T).(let TMP_49 \def (lift h d y) in (eq T u +TMP_49)))) in (let TMP_53 \def (\lambda (_: T).(\lambda (z: T).(let TMP_51 +\def (s k d) in (let TMP_52 \def (lift h TMP_51 z) in (eq T t TMP_52))))) in +(let TMP_54 \def (ex3_2 T T TMP_48 TMP_50 TMP_53) in (False_ind TMP_54 +H2)))))))))))))))) in (let TMP_76 \def (\lambda (H0: (le d n)).(let TMP_56 +\def (TLRef n) in (let TMP_57 \def (lift h d TMP_56) in (let TMP_59 \def +(\lambda (t0: T).(let TMP_58 \def (THead k u t) in (eq T TMP_58 t0))) in (let +TMP_60 \def (plus n h) in (let TMP_61 \def (TLRef TMP_60) in (let TMP_62 \def +(lift_lref_ge n h d H0) in (let H1 \def (eq_ind T TMP_57 TMP_59 H TMP_61 +TMP_62) in (let TMP_63 \def (THead k u t) in (let TMP_64 \def (\lambda (ee: +T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False +| (THead _ _ _) \Rightarrow True])) in (let TMP_65 \def (plus n h) in (let +TMP_66 \def (TLRef TMP_65) in (let H2 \def (eq_ind T TMP_63 TMP_64 I TMP_66 +H1) in (let TMP_69 \def (\lambda (y: T).(\lambda (z: T).(let TMP_67 \def +(TLRef n) in (let TMP_68 \def (THead k y z) in (eq T TMP_67 TMP_68))))) in +(let TMP_71 \def (\lambda (y: T).(\lambda (_: T).(let TMP_70 \def (lift h d +y) in (eq T u TMP_70)))) in (let TMP_74 \def (\lambda (_: T).(\lambda (z: +T).(let TMP_72 \def (s k d) in (let TMP_73 \def (lift h TMP_72 z) in (eq T t +TMP_73))))) in (let TMP_75 \def (ex3_2 T T TMP_69 TMP_71 TMP_74) in +(False_ind TMP_75 H2)))))))))))))))))) in (lt_le_e n d TMP_36 TMP_55 +TMP_76))))))))))) in (let TMP_205 \def (\lambda (k0: K).(\lambda (t0: T).(\lambda (H: ((\forall (h: nat).(\forall (d: nat).((eq T (THead k u t) (lift h d t0)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t0 (THead k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda @@ -304,59 +390,105 @@ T).(\lambda (H0: ((\forall (h: nat).(\forall (d: nat).((eq T (THead k u t) k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (s k d) z)))))))))).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1: (eq T (THead k u t) (lift h d (THead k0 -t0 t1)))).(let H2 \def (eq_ind T (lift h d (THead k0 t0 t1)) (\lambda (t2: -T).(eq T (THead k u t) t2)) H1 (THead k0 (lift h d t0) (lift h (s k0 d) t1)) -(lift_head k0 t0 t1 h d)) in (let H3 \def (f_equal T K (\lambda (e: T).(match -e in T return (\lambda (_: T).K) with [(TSort _) \Rightarrow k | (TLRef _) -\Rightarrow k | (THead k1 _ _) \Rightarrow k1])) (THead k u t) (THead k0 -(lift h d t0) (lift h (s k0 d) t1)) H2) in ((let H4 \def (f_equal T T -(\lambda (e: T).(match e in T return (\lambda (_: T).T) with [(TSort _) -\Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t2 _) \Rightarrow t2])) -(THead k u t) (THead k0 (lift h d t0) (lift h (s k0 d) t1)) H2) in ((let H5 -\def (f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) -with [(TSort _) \Rightarrow t | (TLRef _) \Rightarrow t | (THead _ _ t2) -\Rightarrow t2])) (THead k u t) (THead k0 (lift h d t0) (lift h (s k0 d) t1)) -H2) in (\lambda (H6: (eq T u (lift h d t0))).(\lambda (H7: (eq K k k0)).(let -H8 \def (eq_ind_r K k0 (\lambda (k1: K).(eq T t (lift h (s k1 d) t1))) H5 k -H7) in (eq_ind K k (\lambda (k1: K).(ex3_2 T T (\lambda (y: T).(\lambda (z: -T).(eq T (THead k1 t0 t1) (THead k y z)))) (\lambda (y: T).(\lambda (_: -T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (s -k d) z)))))) (let H9 \def (eq_ind T t (\lambda (t2: T).(\forall (h0: -nat).(\forall (d0: nat).((eq T (THead k u t2) (lift h0 d0 t1)) \to (ex3_2 T T -(\lambda (y: T).(\lambda (z: T).(eq T t1 (THead k y z)))) (\lambda (y: -T).(\lambda (_: T).(eq T u (lift h0 d0 y)))) (\lambda (_: T).(\lambda (z: -T).(eq T t2 (lift h0 (s k d0) z))))))))) H0 (lift h (s k d) t1) H8) in (let -H10 \def (eq_ind T t (\lambda (t2: T).(\forall (h0: nat).(\forall (d0: -nat).((eq T (THead k u t2) (lift h0 d0 t0)) \to (ex3_2 T T (\lambda (y: -T).(\lambda (z: T).(eq T t0 (THead k y z)))) (\lambda (y: T).(\lambda (_: -T).(eq T u (lift h0 d0 y)))) (\lambda (_: T).(\lambda (z: T).(eq T t2 (lift -h0 (s k d0) z))))))))) H (lift h (s k d) t1) H8) in (eq_ind_r T (lift h (s k -d) t1) (\lambda (t2: T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T -(THead k t0 t1) (THead k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u -(lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t2 (lift h (s k d) -z)))))) (let H11 \def (eq_ind T u (\lambda (t2: T).(\forall (h0: -nat).(\forall (d0: nat).((eq T (THead k t2 (lift h (s k d) t1)) (lift h0 d0 -t0)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t0 (THead k y z)))) -(\lambda (y: T).(\lambda (_: T).(eq T t2 (lift h0 d0 y)))) (\lambda (_: -T).(\lambda (z: T).(eq T (lift h (s k d) t1) (lift h0 (s k d0) z))))))))) H10 -(lift h d t0) H6) in (let H12 \def (eq_ind T u (\lambda (t2: T).(\forall (h0: +t0 t1)))).(let TMP_78 \def (THead k0 t0 t1) in (let TMP_79 \def (lift h d +TMP_78) in (let TMP_81 \def (\lambda (t2: T).(let TMP_80 \def (THead k u t) +in (eq T TMP_80 t2))) in (let TMP_82 \def (lift h d t0) in (let TMP_83 \def +(s k0 d) in (let TMP_84 \def (lift h TMP_83 t1) in (let TMP_85 \def (THead k0 +TMP_82 TMP_84) in (let TMP_86 \def (lift_head k0 t0 t1 h d) in (let H2 \def +(eq_ind T TMP_79 TMP_81 H1 TMP_85 TMP_86) in (let TMP_87 \def (\lambda (e: +T).(match e with [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead +k1 _ _) \Rightarrow k1])) in (let TMP_88 \def (THead k u t) in (let TMP_89 +\def (lift h d t0) in (let TMP_90 \def (s k0 d) in (let TMP_91 \def (lift h +TMP_90 t1) in (let TMP_92 \def (THead k0 TMP_89 TMP_91) in (let H3 \def +(f_equal T K TMP_87 TMP_88 TMP_92 H2) in (let TMP_93 \def (\lambda (e: +T).(match e with [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | (THead +_ t2 _) \Rightarrow t2])) in (let TMP_94 \def (THead k u t) in (let TMP_95 +\def (lift h d t0) in (let TMP_96 \def (s k0 d) in (let TMP_97 \def (lift h +TMP_96 t1) in (let TMP_98 \def (THead k0 TMP_95 TMP_97) in (let H4 \def +(f_equal T T TMP_93 TMP_94 TMP_98 H2) in (let TMP_99 \def (\lambda (e: +T).(match e with [(TSort _) \Rightarrow t | (TLRef _) \Rightarrow t | (THead +_ _ t2) \Rightarrow t2])) in (let TMP_100 \def (THead k u t) in (let TMP_101 +\def (lift h d t0) in (let TMP_102 \def (s k0 d) in (let TMP_103 \def (lift h +TMP_102 t1) in (let TMP_104 \def (THead k0 TMP_101 TMP_103) in (let H5 \def +(f_equal T T TMP_99 TMP_100 TMP_104 H2) in (let TMP_203 \def (\lambda (H6: +(eq T u (lift h d t0))).(\lambda (H7: (eq K k k0)).(let TMP_107 \def (\lambda +(k1: K).(let TMP_105 \def (s k1 d) in (let TMP_106 \def (lift h TMP_105 t1) +in (eq T t TMP_106)))) in (let H8 \def (eq_ind_r K k0 TMP_107 H5 k H7) in +(let TMP_116 \def (\lambda (k1: K).(let TMP_110 \def (\lambda (y: T).(\lambda +(z: T).(let TMP_108 \def (THead k1 t0 t1) in (let TMP_109 \def (THead k y z) +in (eq T TMP_108 TMP_109))))) in (let TMP_112 \def (\lambda (y: T).(\lambda +(_: T).(let TMP_111 \def (lift h d y) in (eq T u TMP_111)))) in (let TMP_115 +\def (\lambda (_: T).(\lambda (z: T).(let TMP_113 \def (s k d) in (let +TMP_114 \def (lift h TMP_113 z) in (eq T t TMP_114))))) in (ex3_2 T T TMP_110 +TMP_112 TMP_115))))) in (let TMP_124 \def (\lambda (t2: T).(\forall (h0: +nat).(\forall (d0: nat).((eq T (THead k u t2) (lift h0 d0 t1)) \to (let +TMP_118 \def (\lambda (y: T).(\lambda (z: T).(let TMP_117 \def (THead k y z) +in (eq T t1 TMP_117)))) in (let TMP_120 \def (\lambda (y: T).(\lambda (_: +T).(let TMP_119 \def (lift h0 d0 y) in (eq T u TMP_119)))) in (let TMP_123 +\def (\lambda (_: T).(\lambda (z: T).(let TMP_121 \def (s k d0) in (let +TMP_122 \def (lift h0 TMP_121 z) in (eq T t2 TMP_122))))) in (ex3_2 T T +TMP_118 TMP_120 TMP_123)))))))) in (let TMP_125 \def (s k d) in (let TMP_126 +\def (lift h TMP_125 t1) in (let H9 \def (eq_ind T t TMP_124 H0 TMP_126 H8) +in (let TMP_134 \def (\lambda (t2: T).(\forall (h0: nat).(\forall (d0: +nat).((eq T (THead k u t2) (lift h0 d0 t0)) \to (let TMP_128 \def (\lambda +(y: T).(\lambda (z: T).(let TMP_127 \def (THead k y z) in (eq T t0 +TMP_127)))) in (let TMP_130 \def (\lambda (y: T).(\lambda (_: T).(let TMP_129 +\def (lift h0 d0 y) in (eq T u TMP_129)))) in (let TMP_133 \def (\lambda (_: +T).(\lambda (z: T).(let TMP_131 \def (s k d0) in (let TMP_132 \def (lift h0 +TMP_131 z) in (eq T t2 TMP_132))))) in (ex3_2 T T TMP_128 TMP_130 +TMP_133)))))))) in (let TMP_135 \def (s k d) in (let TMP_136 \def (lift h +TMP_135 t1) in (let H10 \def (eq_ind T t TMP_134 H TMP_136 H8) in (let +TMP_137 \def (s k d) in (let TMP_138 \def (lift h TMP_137 t1) in (let TMP_147 +\def (\lambda (t2: T).(let TMP_141 \def (\lambda (y: T).(\lambda (z: T).(let +TMP_139 \def (THead k t0 t1) in (let TMP_140 \def (THead k y z) in (eq T +TMP_139 TMP_140))))) in (let TMP_143 \def (\lambda (y: T).(\lambda (_: +T).(let TMP_142 \def (lift h d y) in (eq T u TMP_142)))) in (let TMP_146 \def +(\lambda (_: T).(\lambda (z: T).(let TMP_144 \def (s k d) in (let TMP_145 +\def (lift h TMP_144 z) in (eq T t2 TMP_145))))) in (ex3_2 T T TMP_141 +TMP_143 TMP_146))))) in (let TMP_157 \def (\lambda (t2: T).(\forall (h0: nat).(\forall (d0: nat).((eq T (THead k t2 (lift h (s k d) t1)) (lift h0 d0 -t1)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t1 (THead k y z)))) -(\lambda (y: T).(\lambda (_: T).(eq T t2 (lift h0 d0 y)))) (\lambda (_: -T).(\lambda (z: T).(eq T (lift h (s k d) t1) (lift h0 (s k d0) z))))))))) H9 -(lift h d t0) H6) in (eq_ind_r T (lift h d t0) (\lambda (t2: T).(ex3_2 T T -(\lambda (y: T).(\lambda (z: T).(eq T (THead k t0 t1) (THead k y z)))) -(\lambda (y: T).(\lambda (_: T).(eq T t2 (lift h d y)))) (\lambda (_: -T).(\lambda (z: T).(eq T (lift h (s k d) t1) (lift h (s k d) z)))))) -(ex3_2_intro T T (\lambda (y: T).(\lambda (z: T).(eq T (THead k t0 t1) (THead -k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d t0) (lift h d y)))) -(\lambda (_: T).(\lambda (z: T).(eq T (lift h (s k d) t1) (lift h (s k d) -z)))) t0 t1 (refl_equal T (THead k t0 t1)) (refl_equal T (lift h d t0)) -(refl_equal T (lift h (s k d) t1))) u H6))) t H8))) k0 H7))))) H4)) -H3))))))))))) x)))). -(* COMMENTS -Initial nodes: 2083 -END *) +t0)) \to (let TMP_149 \def (\lambda (y: T).(\lambda (z: T).(let TMP_148 \def +(THead k y z) in (eq T t0 TMP_148)))) in (let TMP_151 \def (\lambda (y: +T).(\lambda (_: T).(let TMP_150 \def (lift h0 d0 y) in (eq T t2 TMP_150)))) +in (let TMP_156 \def (\lambda (_: T).(\lambda (z: T).(let TMP_152 \def (s k +d) in (let TMP_153 \def (lift h TMP_152 t1) in (let TMP_154 \def (s k d0) in +(let TMP_155 \def (lift h0 TMP_154 z) in (eq T TMP_153 TMP_155))))))) in +(ex3_2 T T TMP_149 TMP_151 TMP_156)))))))) in (let TMP_158 \def (lift h d t0) +in (let H11 \def (eq_ind T u TMP_157 H10 TMP_158 H6) in (let TMP_168 \def +(\lambda (t2: T).(\forall (h0: nat).(\forall (d0: nat).((eq T (THead k t2 +(lift h (s k d) t1)) (lift h0 d0 t1)) \to (let TMP_160 \def (\lambda (y: +T).(\lambda (z: T).(let TMP_159 \def (THead k y z) in (eq T t1 TMP_159)))) in +(let TMP_162 \def (\lambda (y: T).(\lambda (_: T).(let TMP_161 \def (lift h0 +d0 y) in (eq T t2 TMP_161)))) in (let TMP_167 \def (\lambda (_: T).(\lambda +(z: T).(let TMP_163 \def (s k d) in (let TMP_164 \def (lift h TMP_163 t1) in +(let TMP_165 \def (s k d0) in (let TMP_166 \def (lift h0 TMP_165 z) in (eq T +TMP_164 TMP_166))))))) in (ex3_2 T T TMP_160 TMP_162 TMP_167)))))))) in (let +TMP_169 \def (lift h d t0) in (let H12 \def (eq_ind T u TMP_168 H9 TMP_169 +H6) in (let TMP_170 \def (lift h d t0) in (let TMP_181 \def (\lambda (t2: +T).(let TMP_173 \def (\lambda (y: T).(\lambda (z: T).(let TMP_171 \def (THead +k t0 t1) in (let TMP_172 \def (THead k y z) in (eq T TMP_171 TMP_172))))) in +(let TMP_175 \def (\lambda (y: T).(\lambda (_: T).(let TMP_174 \def (lift h d +y) in (eq T t2 TMP_174)))) in (let TMP_180 \def (\lambda (_: T).(\lambda (z: +T).(let TMP_176 \def (s k d) in (let TMP_177 \def (lift h TMP_176 t1) in (let +TMP_178 \def (s k d) in (let TMP_179 \def (lift h TMP_178 z) in (eq T TMP_177 +TMP_179))))))) in (ex3_2 T T TMP_173 TMP_175 TMP_180))))) in (let TMP_184 +\def (\lambda (y: T).(\lambda (z: T).(let TMP_182 \def (THead k t0 t1) in +(let TMP_183 \def (THead k y z) in (eq T TMP_182 TMP_183))))) in (let TMP_187 +\def (\lambda (y: T).(\lambda (_: T).(let TMP_185 \def (lift h d t0) in (let +TMP_186 \def (lift h d y) in (eq T TMP_185 TMP_186))))) in (let TMP_192 \def +(\lambda (_: T).(\lambda (z: T).(let TMP_188 \def (s k d) in (let TMP_189 +\def (lift h TMP_188 t1) in (let TMP_190 \def (s k d) in (let TMP_191 \def +(lift h TMP_190 z) in (eq T TMP_189 TMP_191))))))) in (let TMP_193 \def +(THead k t0 t1) in (let TMP_194 \def (refl_equal T TMP_193) in (let TMP_195 +\def (lift h d t0) in (let TMP_196 \def (refl_equal T TMP_195) in (let +TMP_197 \def (s k d) in (let TMP_198 \def (lift h TMP_197 t1) in (let TMP_199 +\def (refl_equal T TMP_198) in (let TMP_200 \def (ex3_2_intro T T TMP_184 +TMP_187 TMP_192 t0 t1 TMP_194 TMP_196 TMP_199) in (let TMP_201 \def (eq_ind_r +T TMP_170 TMP_181 TMP_200 u H6) in (let TMP_202 \def (eq_ind_r T TMP_138 +TMP_147 TMP_201 t H8) in (eq_ind K k TMP_116 TMP_202 k0 +H7)))))))))))))))))))))))))))))))))))))) in (let TMP_204 \def (TMP_203 H4) in +(TMP_204 H3))))))))))))))))))))))))))))))))))))))))) in (T_ind TMP_8 TMP_27 +TMP_77 TMP_205 x)))))))). theorem lift_gen_bind: \forall (b: B).(\forall (u: T).(\forall (t: T).(\forall (x: T).(\forall (h: @@ -367,33 +499,60 @@ T).(eq T t (lift h (S d) z))))))))))) \def \lambda (b: B).(\lambda (u: T).(\lambda (t: T).(\lambda (x: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (eq T (THead (Bind b) u t) (lift h d -x))).(let H_x \def (lift_gen_head (Bind b) u t x h d H) in (let H0 \def H_x -in (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x (THead (Bind b) y -z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: -T).(\lambda (z: T).(eq T t (lift h (S d) z)))) (ex3_2 T T (\lambda (y: -T).(\lambda (z: T).(eq T x (THead (Bind b) y z)))) (\lambda (y: T).(\lambda -(_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift -h (S d) z))))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H1: (eq T x (THead +x))).(let TMP_1 \def (Bind b) in (let H_x \def (lift_gen_head TMP_1 u t x h d +H) in (let H0 \def H_x in (let TMP_4 \def (\lambda (y: T).(\lambda (z: +T).(let TMP_2 \def (Bind b) in (let TMP_3 \def (THead TMP_2 y z) in (eq T x +TMP_3))))) in (let TMP_6 \def (\lambda (y: T).(\lambda (_: T).(let TMP_5 \def +(lift h d y) in (eq T u TMP_5)))) in (let TMP_9 \def (\lambda (_: T).(\lambda +(z: T).(let TMP_7 \def (S d) in (let TMP_8 \def (lift h TMP_7 z) in (eq T t +TMP_8))))) in (let TMP_12 \def (\lambda (y: T).(\lambda (z: T).(let TMP_10 +\def (Bind b) in (let TMP_11 \def (THead TMP_10 y z) in (eq T x TMP_11))))) +in (let TMP_14 \def (\lambda (y: T).(\lambda (_: T).(let TMP_13 \def (lift h +d y) in (eq T u TMP_13)))) in (let TMP_17 \def (\lambda (_: T).(\lambda (z: +T).(let TMP_15 \def (S d) in (let TMP_16 \def (lift h TMP_15 z) in (eq T t +TMP_16))))) in (let TMP_18 \def (ex3_2 T T TMP_12 TMP_14 TMP_17) in (let +TMP_81 \def (\lambda (x0: T).(\lambda (x1: T).(\lambda (H1: (eq T x (THead (Bind b) x0 x1))).(\lambda (H2: (eq T u (lift h d x0))).(\lambda (H3: (eq T t -(lift h (S d) x1))).(eq_ind_r T (THead (Bind b) x0 x1) (\lambda (t0: -T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t0 (THead (Bind b) y -z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: -T).(\lambda (z: T).(eq T t (lift h (S d) z)))))) (eq_ind_r T (lift h (S d) -x1) (\lambda (t0: T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead -(Bind b) x0 x1) (THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T -u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t0 (lift h (S d) -z)))))) (eq_ind_r T (lift h d x0) (\lambda (t0: T).(ex3_2 T T (\lambda (y: -T).(\lambda (z: T).(eq T (THead (Bind b) x0 x1) (THead (Bind b) y z)))) -(\lambda (y: T).(\lambda (_: T).(eq T t0 (lift h d y)))) (\lambda (_: -T).(\lambda (z: T).(eq T (lift h (S d) x1) (lift h (S d) z)))))) (ex3_2_intro -T T (\lambda (y: T).(\lambda (z: T).(eq T (THead (Bind b) x0 x1) (THead (Bind -b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d x0) (lift h d -y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h (S d) x1) (lift h (S d) -z)))) x0 x1 (refl_equal T (THead (Bind b) x0 x1)) (refl_equal T (lift h d -x0)) (refl_equal T (lift h (S d) x1))) u H2) t H3) x H1)))))) H0))))))))). -(* COMMENTS -Initial nodes: 637 -END *) +(lift h (S d) x1))).(let TMP_19 \def (Bind b) in (let TMP_20 \def (THead +TMP_19 x0 x1) in (let TMP_29 \def (\lambda (t0: T).(let TMP_23 \def (\lambda +(y: T).(\lambda (z: T).(let TMP_21 \def (Bind b) in (let TMP_22 \def (THead +TMP_21 y z) in (eq T t0 TMP_22))))) in (let TMP_25 \def (\lambda (y: +T).(\lambda (_: T).(let TMP_24 \def (lift h d y) in (eq T u TMP_24)))) in +(let TMP_28 \def (\lambda (_: T).(\lambda (z: T).(let TMP_26 \def (S d) in +(let TMP_27 \def (lift h TMP_26 z) in (eq T t TMP_27))))) in (ex3_2 T T +TMP_23 TMP_25 TMP_28))))) in (let TMP_30 \def (S d) in (let TMP_31 \def (lift +h TMP_30 x1) in (let TMP_42 \def (\lambda (t0: T).(let TMP_36 \def (\lambda +(y: T).(\lambda (z: T).(let TMP_32 \def (Bind b) in (let TMP_33 \def (THead +TMP_32 x0 x1) in (let TMP_34 \def (Bind b) in (let TMP_35 \def (THead TMP_34 +y z) in (eq T TMP_33 TMP_35))))))) in (let TMP_38 \def (\lambda (y: +T).(\lambda (_: T).(let TMP_37 \def (lift h d y) in (eq T u TMP_37)))) in +(let TMP_41 \def (\lambda (_: T).(\lambda (z: T).(let TMP_39 \def (S d) in +(let TMP_40 \def (lift h TMP_39 z) in (eq T t0 TMP_40))))) in (ex3_2 T T +TMP_36 TMP_38 TMP_41))))) in (let TMP_43 \def (lift h d x0) in (let TMP_56 +\def (\lambda (t0: T).(let TMP_48 \def (\lambda (y: T).(\lambda (z: T).(let +TMP_44 \def (Bind b) in (let TMP_45 \def (THead TMP_44 x0 x1) in (let TMP_46 +\def (Bind b) in (let TMP_47 \def (THead TMP_46 y z) in (eq T TMP_45 +TMP_47))))))) in (let TMP_50 \def (\lambda (y: T).(\lambda (_: T).(let TMP_49 +\def (lift h d y) in (eq T t0 TMP_49)))) in (let TMP_55 \def (\lambda (_: +T).(\lambda (z: T).(let TMP_51 \def (S d) in (let TMP_52 \def (lift h TMP_51 +x1) in (let TMP_53 \def (S d) in (let TMP_54 \def (lift h TMP_53 z) in (eq T +TMP_52 TMP_54))))))) in (ex3_2 T T TMP_48 TMP_50 TMP_55))))) in (let TMP_61 +\def (\lambda (y: T).(\lambda (z: T).(let TMP_57 \def (Bind b) in (let TMP_58 +\def (THead TMP_57 x0 x1) in (let TMP_59 \def (Bind b) in (let TMP_60 \def +(THead TMP_59 y z) in (eq T TMP_58 TMP_60))))))) in (let TMP_64 \def (\lambda +(y: T).(\lambda (_: T).(let TMP_62 \def (lift h d x0) in (let TMP_63 \def +(lift h d y) in (eq T TMP_62 TMP_63))))) in (let TMP_69 \def (\lambda (_: +T).(\lambda (z: T).(let TMP_65 \def (S d) in (let TMP_66 \def (lift h TMP_65 +x1) in (let TMP_67 \def (S d) in (let TMP_68 \def (lift h TMP_67 z) in (eq T +TMP_66 TMP_68))))))) in (let TMP_70 \def (Bind b) in (let TMP_71 \def (THead +TMP_70 x0 x1) in (let TMP_72 \def (refl_equal T TMP_71) in (let TMP_73 \def +(lift h d x0) in (let TMP_74 \def (refl_equal T TMP_73) in (let TMP_75 \def +(S d) in (let TMP_76 \def (lift h TMP_75 x1) in (let TMP_77 \def (refl_equal +T TMP_76) in (let TMP_78 \def (ex3_2_intro T T TMP_61 TMP_64 TMP_69 x0 x1 +TMP_72 TMP_74 TMP_77) in (let TMP_79 \def (eq_ind_r T TMP_43 TMP_56 TMP_78 u +H2) in (let TMP_80 \def (eq_ind_r T TMP_31 TMP_42 TMP_79 t H3) in (eq_ind_r T +TMP_20 TMP_29 TMP_80 x H1)))))))))))))))))))))))))))) in (ex3_2_ind T T TMP_4 +TMP_6 TMP_9 TMP_18 TMP_81 H0)))))))))))))))))). theorem lift_gen_flat: \forall (f: F).(\forall (u: T).(\forall (t: T).(\forall (x: T).(\forall (h: @@ -404,31 +563,710 @@ T).(eq T t (lift h d z))))))))))) \def \lambda (f: F).(\lambda (u: T).(\lambda (t: T).(\lambda (x: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (eq T (THead (Flat f) u t) (lift h d -x))).(let H_x \def (lift_gen_head (Flat f) u t x h d H) in (let H0 \def H_x -in (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x (THead (Flat f) y -z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: -T).(\lambda (z: T).(eq T t (lift h d z)))) (ex3_2 T T (\lambda (y: -T).(\lambda (z: T).(eq T x (THead (Flat f) y z)))) (\lambda (y: T).(\lambda -(_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift -h d z))))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H1: (eq T x (THead -(Flat f) x0 x1))).(\lambda (H2: (eq T u (lift h d x0))).(\lambda (H3: (eq T t -(lift h d x1))).(eq_ind_r T (THead (Flat f) x0 x1) (\lambda (t0: T).(ex3_2 T -T (\lambda (y: T).(\lambda (z: T).(eq T t0 (THead (Flat f) y z)))) (\lambda -(y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: -T).(eq T t (lift h d z)))))) (eq_ind_r T (lift h d x1) (\lambda (t0: -T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead (Flat f) x0 x1) -(THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d -y)))) (\lambda (_: T).(\lambda (z: T).(eq T t0 (lift h d z)))))) (eq_ind_r T -(lift h d x0) (\lambda (t0: T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq -T (THead (Flat f) x0 x1) (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: -T).(eq T t0 (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h d -x1) (lift h d z)))))) (ex3_2_intro T T (\lambda (y: T).(\lambda (z: T).(eq T -(THead (Flat f) x0 x1) (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: -T).(eq T (lift h d x0) (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T -(lift h d x1) (lift h d z)))) x0 x1 (refl_equal T (THead (Flat f) x0 x1)) -(refl_equal T (lift h d x0)) (refl_equal T (lift h d x1))) u H2) t H3) x -H1)))))) H0))))))))). -(* COMMENTS -Initial nodes: 615 -END *) +x))).(let TMP_1 \def (Flat f) in (let H_x \def (lift_gen_head TMP_1 u t x h d +H) in (let H0 \def H_x in (let TMP_4 \def (\lambda (y: T).(\lambda (z: +T).(let TMP_2 \def (Flat f) in (let TMP_3 \def (THead TMP_2 y z) in (eq T x +TMP_3))))) in (let TMP_6 \def (\lambda (y: T).(\lambda (_: T).(let TMP_5 \def +(lift h d y) in (eq T u TMP_5)))) in (let TMP_8 \def (\lambda (_: T).(\lambda +(z: T).(let TMP_7 \def (lift h d z) in (eq T t TMP_7)))) in (let TMP_11 \def +(\lambda (y: T).(\lambda (z: T).(let TMP_9 \def (Flat f) in (let TMP_10 \def +(THead TMP_9 y z) in (eq T x TMP_10))))) in (let TMP_13 \def (\lambda (y: +T).(\lambda (_: T).(let TMP_12 \def (lift h d y) in (eq T u TMP_12)))) in +(let TMP_15 \def (\lambda (_: T).(\lambda (z: T).(let TMP_14 \def (lift h d +z) in (eq T t TMP_14)))) in (let TMP_16 \def (ex3_2 T T TMP_11 TMP_13 TMP_15) +in (let TMP_71 \def (\lambda (x0: T).(\lambda (x1: T).(\lambda (H1: (eq T x +(THead (Flat f) x0 x1))).(\lambda (H2: (eq T u (lift h d x0))).(\lambda (H3: +(eq T t (lift h d x1))).(let TMP_17 \def (Flat f) in (let TMP_18 \def (THead +TMP_17 x0 x1) in (let TMP_26 \def (\lambda (t0: T).(let TMP_21 \def (\lambda +(y: T).(\lambda (z: T).(let TMP_19 \def (Flat f) in (let TMP_20 \def (THead +TMP_19 y z) in (eq T t0 TMP_20))))) in (let TMP_23 \def (\lambda (y: +T).(\lambda (_: T).(let TMP_22 \def (lift h d y) in (eq T u TMP_22)))) in +(let TMP_25 \def (\lambda (_: T).(\lambda (z: T).(let TMP_24 \def (lift h d +z) in (eq T t TMP_24)))) in (ex3_2 T T TMP_21 TMP_23 TMP_25))))) in (let +TMP_27 \def (lift h d x1) in (let TMP_37 \def (\lambda (t0: T).(let TMP_32 +\def (\lambda (y: T).(\lambda (z: T).(let TMP_28 \def (Flat f) in (let TMP_29 +\def (THead TMP_28 x0 x1) in (let TMP_30 \def (Flat f) in (let TMP_31 \def +(THead TMP_30 y z) in (eq T TMP_29 TMP_31))))))) in (let TMP_34 \def (\lambda +(y: T).(\lambda (_: T).(let TMP_33 \def (lift h d y) in (eq T u TMP_33)))) in +(let TMP_36 \def (\lambda (_: T).(\lambda (z: T).(let TMP_35 \def (lift h d +z) in (eq T t0 TMP_35)))) in (ex3_2 T T TMP_32 TMP_34 TMP_36))))) in (let +TMP_38 \def (lift h d x0) in (let TMP_49 \def (\lambda (t0: T).(let TMP_43 +\def (\lambda (y: T).(\lambda (z: T).(let TMP_39 \def (Flat f) in (let TMP_40 +\def (THead TMP_39 x0 x1) in (let TMP_41 \def (Flat f) in (let TMP_42 \def +(THead TMP_41 y z) in (eq T TMP_40 TMP_42))))))) in (let TMP_45 \def (\lambda +(y: T).(\lambda (_: T).(let TMP_44 \def (lift h d y) in (eq T t0 TMP_44)))) +in (let TMP_48 \def (\lambda (_: T).(\lambda (z: T).(let TMP_46 \def (lift h +d x1) in (let TMP_47 \def (lift h d z) in (eq T TMP_46 TMP_47))))) in (ex3_2 +T T TMP_43 TMP_45 TMP_48))))) in (let TMP_54 \def (\lambda (y: T).(\lambda +(z: T).(let TMP_50 \def (Flat f) in (let TMP_51 \def (THead TMP_50 x0 x1) in +(let TMP_52 \def (Flat f) in (let TMP_53 \def (THead TMP_52 y z) in (eq T +TMP_51 TMP_53))))))) in (let TMP_57 \def (\lambda (y: T).(\lambda (_: T).(let +TMP_55 \def (lift h d x0) in (let TMP_56 \def (lift h d y) in (eq T TMP_55 +TMP_56))))) in (let TMP_60 \def (\lambda (_: T).(\lambda (z: T).(let TMP_58 +\def (lift h d x1) in (let TMP_59 \def (lift h d z) in (eq T TMP_58 +TMP_59))))) in (let TMP_61 \def (Flat f) in (let TMP_62 \def (THead TMP_61 x0 +x1) in (let TMP_63 \def (refl_equal T TMP_62) in (let TMP_64 \def (lift h d +x0) in (let TMP_65 \def (refl_equal T TMP_64) in (let TMP_66 \def (lift h d +x1) in (let TMP_67 \def (refl_equal T TMP_66) in (let TMP_68 \def +(ex3_2_intro T T TMP_54 TMP_57 TMP_60 x0 x1 TMP_63 TMP_65 TMP_67) in (let +TMP_69 \def (eq_ind_r T TMP_38 TMP_49 TMP_68 u H2) in (let TMP_70 \def +(eq_ind_r T TMP_27 TMP_37 TMP_69 t H3) in (eq_ind_r T TMP_18 TMP_26 TMP_70 x +H1)))))))))))))))))))))))))) in (ex3_2_ind T T TMP_4 TMP_6 TMP_8 TMP_16 +TMP_71 H0)))))))))))))))))). + +theorem lift_inj: + \forall (x: T).(\forall (t: T).(\forall (h: nat).(\forall (d: nat).((eq T +(lift h d x) (lift h d t)) \to (eq T x t))))) +\def + \lambda (x: T).(let TMP_1 \def (\lambda (t: T).(\forall (t0: T).(\forall (h: +nat).(\forall (d: nat).((eq T (lift h d t) (lift h d t0)) \to (eq T t +t0)))))) in (let TMP_10 \def (\lambda (n: nat).(\lambda (t: T).(\lambda (h: +nat).(\lambda (d: nat).(\lambda (H: (eq T (lift h d (TSort n)) (lift h d +t))).(let TMP_2 \def (TSort n) in (let TMP_3 \def (lift h d TMP_2) in (let +TMP_5 \def (\lambda (t0: T).(let TMP_4 \def (lift h d t) in (eq T t0 TMP_4))) +in (let TMP_6 \def (TSort n) in (let TMP_7 \def (lift_sort n h d) in (let H0 +\def (eq_ind T TMP_3 TMP_5 H TMP_6 TMP_7) in (let TMP_8 \def (TSort n) in +(let TMP_9 \def (lift_gen_sort h d n t H0) in (sym_eq T t TMP_8 +TMP_9)))))))))))))) in (let TMP_34 \def (\lambda (n: nat).(\lambda (t: +T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (eq T (lift h d (TLRef +n)) (lift h d t))).(let TMP_11 \def (TLRef n) in (let TMP_12 \def (eq T +TMP_11 t) in (let TMP_23 \def (\lambda (H0: (lt n d)).(let TMP_13 \def (TLRef +n) in (let TMP_14 \def (lift h d TMP_13) in (let TMP_16 \def (\lambda (t0: +T).(let TMP_15 \def (lift h d t) in (eq T t0 TMP_15))) in (let TMP_17 \def +(TLRef n) in (let TMP_18 \def (lift_lref_lt n h d H0) in (let H1 \def (eq_ind +T TMP_14 TMP_16 H TMP_17 TMP_18) in (let TMP_19 \def (TLRef n) in (let TMP_20 +\def (le_n d) in (let TMP_21 \def (lt_le_trans n d d H0 TMP_20) in (let +TMP_22 \def (lift_gen_lref_lt h d n TMP_21 t H1) in (sym_eq T t TMP_19 +TMP_22)))))))))))) in (let TMP_33 \def (\lambda (H0: (le d n)).(let TMP_24 +\def (TLRef n) in (let TMP_25 \def (lift h d TMP_24) in (let TMP_27 \def +(\lambda (t0: T).(let TMP_26 \def (lift h d t) in (eq T t0 TMP_26))) in (let +TMP_28 \def (plus n h) in (let TMP_29 \def (TLRef TMP_28) in (let TMP_30 \def +(lift_lref_ge n h d H0) in (let H1 \def (eq_ind T TMP_25 TMP_27 H TMP_29 +TMP_30) in (let TMP_31 \def (TLRef n) in (let TMP_32 \def (lift_gen_lref_ge h +d n H0 t H1) in (sym_eq T t TMP_31 TMP_32))))))))))) in (lt_le_e n d TMP_12 +TMP_23 TMP_33)))))))))) in (let TMP_140 \def (\lambda (k: K).(let TMP_36 \def +(\lambda (k0: K).(\forall (t: T).(((\forall (t0: T).(\forall (h: +nat).(\forall (d: nat).((eq T (lift h d t) (lift h d t0)) \to (eq T t +t0)))))) \to (\forall (t0: T).(((\forall (t1: T).(\forall (h: nat).(\forall +(d: nat).((eq T (lift h d t0) (lift h d t1)) \to (eq T t0 t1)))))) \to +(\forall (t1: T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d (THead +k0 t t0)) (lift h d t1)) \to (let TMP_35 \def (THead k0 t t0) in (eq T TMP_35 +t1))))))))))) in (let TMP_90 \def (\lambda (b: B).(\lambda (t: T).(\lambda +(H: ((\forall (t0: T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t) +(lift h d t0)) \to (eq T t t0))))))).(\lambda (t0: T).(\lambda (H0: ((\forall +(t1: T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d +t1)) \to (eq T t0 t1))))))).(\lambda (t1: T).(\lambda (h: nat).(\lambda (d: +nat).(\lambda (H1: (eq T (lift h d (THead (Bind b) t t0)) (lift h d +t1))).(let TMP_37 \def (Bind b) in (let TMP_38 \def (THead TMP_37 t t0) in +(let TMP_39 \def (lift h d TMP_38) in (let TMP_41 \def (\lambda (t2: T).(let +TMP_40 \def (lift h d t1) in (eq T t2 TMP_40))) in (let TMP_42 \def (Bind b) +in (let TMP_43 \def (lift h d t) in (let TMP_44 \def (S d) in (let TMP_45 +\def (lift h TMP_44 t0) in (let TMP_46 \def (THead TMP_42 TMP_43 TMP_45) in +(let TMP_47 \def (lift_bind b t t0 h d) in (let H2 \def (eq_ind T TMP_39 +TMP_41 H1 TMP_46 TMP_47) in (let TMP_50 \def (\lambda (y: T).(\lambda (z: +T).(let TMP_48 \def (Bind b) in (let TMP_49 \def (THead TMP_48 y z) in (eq T +t1 TMP_49))))) in (let TMP_53 \def (\lambda (y: T).(\lambda (_: T).(let +TMP_51 \def (lift h d t) in (let TMP_52 \def (lift h d y) in (eq T TMP_51 +TMP_52))))) in (let TMP_58 \def (\lambda (_: T).(\lambda (z: T).(let TMP_54 +\def (S d) in (let TMP_55 \def (lift h TMP_54 t0) in (let TMP_56 \def (S d) +in (let TMP_57 \def (lift h TMP_56 z) in (eq T TMP_55 TMP_57))))))) in (let +TMP_59 \def (Bind b) in (let TMP_60 \def (THead TMP_59 t t0) in (let TMP_61 +\def (eq T TMP_60 t1) in (let TMP_85 \def (\lambda (x0: T).(\lambda (x1: +T).(\lambda (H3: (eq T t1 (THead (Bind b) x0 x1))).(\lambda (H4: (eq T (lift +h d t) (lift h d x0))).(\lambda (H5: (eq T (lift h (S d) t0) (lift h (S d) +x1))).(let TMP_62 \def (Bind b) in (let TMP_63 \def (THead TMP_62 x0 x1) in +(let TMP_66 \def (\lambda (t2: T).(let TMP_64 \def (Bind b) in (let TMP_65 +\def (THead TMP_64 t t0) in (eq T TMP_65 t2)))) in (let TMP_67 \def (Bind b) +in (let TMP_68 \def (THead TMP_67 x0 x1) in (let TMP_69 \def (Bind b) in (let +TMP_70 \def (THead TMP_69 t t0) in (let TMP_71 \def (Bind b) in (let TMP_72 +\def (THead TMP_71 t t0) in (let TMP_73 \def (Bind b) in (let TMP_74 \def +(THead TMP_73 x0 x1) in (let TMP_75 \def (Bind b) in (let TMP_76 \def (Bind +b) in (let TMP_77 \def (Bind b) in (let TMP_78 \def (refl_equal K TMP_77) in +(let TMP_79 \def (H x0 h d H4) in (let TMP_80 \def (S d) in (let TMP_81 \def +(H0 x1 h TMP_80 H5) in (let TMP_82 \def (f_equal3 K T T T THead TMP_75 TMP_76 +t x0 t0 x1 TMP_78 TMP_79 TMP_81) in (let TMP_83 \def (sym_eq T TMP_72 TMP_74 +TMP_82) in (let TMP_84 \def (sym_eq T TMP_68 TMP_70 TMP_83) in (eq_ind_r T +TMP_63 TMP_66 TMP_84 t1 H3))))))))))))))))))))))))))) in (let TMP_86 \def +(lift h d t) in (let TMP_87 \def (S d) in (let TMP_88 \def (lift h TMP_87 t0) +in (let TMP_89 \def (lift_gen_bind b TMP_86 TMP_88 t1 h d H2) in (ex3_2_ind T +T TMP_50 TMP_53 TMP_58 TMP_61 TMP_85 TMP_89)))))))))))))))))))))))))))))))) +in (let TMP_139 \def (\lambda (f: F).(\lambda (t: T).(\lambda (H: ((\forall +(t0: T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t) (lift h d +t0)) \to (eq T t t0))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (t1: +T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t1)) +\to (eq T t0 t1))))))).(\lambda (t1: T).(\lambda (h: nat).(\lambda (d: +nat).(\lambda (H1: (eq T (lift h d (THead (Flat f) t t0)) (lift h d +t1))).(let TMP_91 \def (Flat f) in (let TMP_92 \def (THead TMP_91 t t0) in +(let TMP_93 \def (lift h d TMP_92) in (let TMP_95 \def (\lambda (t2: T).(let +TMP_94 \def (lift h d t1) in (eq T t2 TMP_94))) in (let TMP_96 \def (Flat f) +in (let TMP_97 \def (lift h d t) in (let TMP_98 \def (lift h d t0) in (let +TMP_99 \def (THead TMP_96 TMP_97 TMP_98) in (let TMP_100 \def (lift_flat f t +t0 h d) in (let H2 \def (eq_ind T TMP_93 TMP_95 H1 TMP_99 TMP_100) in (let +TMP_103 \def (\lambda (y: T).(\lambda (z: T).(let TMP_101 \def (Flat f) in +(let TMP_102 \def (THead TMP_101 y z) in (eq T t1 TMP_102))))) in (let +TMP_106 \def (\lambda (y: T).(\lambda (_: T).(let TMP_104 \def (lift h d t) +in (let TMP_105 \def (lift h d y) in (eq T TMP_104 TMP_105))))) in (let +TMP_109 \def (\lambda (_: T).(\lambda (z: T).(let TMP_107 \def (lift h d t0) +in (let TMP_108 \def (lift h d z) in (eq T TMP_107 TMP_108))))) in (let +TMP_110 \def (Flat f) in (let TMP_111 \def (THead TMP_110 t t0) in (let +TMP_112 \def (eq T TMP_111 t1) in (let TMP_135 \def (\lambda (x0: T).(\lambda +(x1: T).(\lambda (H3: (eq T t1 (THead (Flat f) x0 x1))).(\lambda (H4: (eq T +(lift h d t) (lift h d x0))).(\lambda (H5: (eq T (lift h d t0) (lift h d +x1))).(let TMP_113 \def (Flat f) in (let TMP_114 \def (THead TMP_113 x0 x1) +in (let TMP_117 \def (\lambda (t2: T).(let TMP_115 \def (Flat f) in (let +TMP_116 \def (THead TMP_115 t t0) in (eq T TMP_116 t2)))) in (let TMP_118 +\def (Flat f) in (let TMP_119 \def (THead TMP_118 x0 x1) in (let TMP_120 \def +(Flat f) in (let TMP_121 \def (THead TMP_120 t t0) in (let TMP_122 \def (Flat +f) in (let TMP_123 \def (THead TMP_122 t t0) in (let TMP_124 \def (Flat f) in +(let TMP_125 \def (THead TMP_124 x0 x1) in (let TMP_126 \def (Flat f) in (let +TMP_127 \def (Flat f) in (let TMP_128 \def (Flat f) in (let TMP_129 \def +(refl_equal K TMP_128) in (let TMP_130 \def (H x0 h d H4) in (let TMP_131 +\def (H0 x1 h d H5) in (let TMP_132 \def (f_equal3 K T T T THead TMP_126 +TMP_127 t x0 t0 x1 TMP_129 TMP_130 TMP_131) in (let TMP_133 \def (sym_eq T +TMP_123 TMP_125 TMP_132) in (let TMP_134 \def (sym_eq T TMP_119 TMP_121 +TMP_133) in (eq_ind_r T TMP_114 TMP_117 TMP_134 t1 +H3)))))))))))))))))))))))))) in (let TMP_136 \def (lift h d t) in (let +TMP_137 \def (lift h d t0) in (let TMP_138 \def (lift_gen_flat f TMP_136 +TMP_137 t1 h d H2) in (ex3_2_ind T T TMP_103 TMP_106 TMP_109 TMP_112 TMP_135 +TMP_138)))))))))))))))))))))))))))))) in (K_ind TMP_36 TMP_90 TMP_139 k))))) +in (T_ind TMP_1 TMP_10 TMP_34 TMP_140 x))))). + +theorem lift_gen_lift: + \forall (t1: T).(\forall (x: T).(\forall (h1: nat).(\forall (h2: +nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to ((eq T (lift h1 d1 +t1) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1 +t2))) (\lambda (t2: T).(eq T t1 (lift h2 d2 t2))))))))))) +\def + \lambda (t1: T).(let TMP_5 \def (\lambda (t: T).(\forall (x: T).(\forall +(h1: nat).(\forall (h2: nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 +d2) \to ((eq T (lift h1 d1 t) (lift h2 (plus d2 h1) x)) \to (let TMP_2 \def +(\lambda (t2: T).(let TMP_1 \def (lift h1 d1 t2) in (eq T x TMP_1))) in (let +TMP_4 \def (\lambda (t2: T).(let TMP_3 \def (lift h2 d2 t2) in (eq T t +TMP_3))) in (ex2 T TMP_2 TMP_4))))))))))) in (let TMP_48 \def (\lambda (n: +nat).(\lambda (x: T).(\lambda (h1: nat).(\lambda (h2: nat).(\lambda (d1: +nat).(\lambda (d2: nat).(\lambda (_: (le d1 d2)).(\lambda (H0: (eq T (lift h1 +d1 (TSort n)) (lift h2 (plus d2 h1) x))).(let TMP_6 \def (TSort n) in (let +TMP_7 \def (lift h1 d1 TMP_6) in (let TMP_10 \def (\lambda (t: T).(let TMP_8 +\def (plus d2 h1) in (let TMP_9 \def (lift h2 TMP_8 x) in (eq T t TMP_9)))) +in (let TMP_11 \def (TSort n) in (let TMP_12 \def (lift_sort n h1 d1) in (let +H1 \def (eq_ind T TMP_7 TMP_10 H0 TMP_11 TMP_12) in (let TMP_13 \def (TSort +n) in (let TMP_19 \def (\lambda (t: T).(let TMP_15 \def (\lambda (t2: T).(let +TMP_14 \def (lift h1 d1 t2) in (eq T t TMP_14))) in (let TMP_18 \def (\lambda +(t2: T).(let TMP_16 \def (TSort n) in (let TMP_17 \def (lift h2 d2 t2) in (eq +T TMP_16 TMP_17)))) in (ex2 T TMP_15 TMP_18)))) in (let TMP_22 \def (\lambda +(t2: T).(let TMP_20 \def (TSort n) in (let TMP_21 \def (lift h1 d1 t2) in (eq +T TMP_20 TMP_21)))) in (let TMP_25 \def (\lambda (t2: T).(let TMP_23 \def +(TSort n) in (let TMP_24 \def (lift h2 d2 t2) in (eq T TMP_23 TMP_24)))) in +(let TMP_26 \def (TSort n) in (let TMP_27 \def (TSort n) in (let TMP_29 \def +(\lambda (t: T).(let TMP_28 \def (TSort n) in (eq T TMP_28 t))) in (let +TMP_30 \def (TSort n) in (let TMP_31 \def (refl_equal T TMP_30) in (let +TMP_32 \def (TSort n) in (let TMP_33 \def (lift h1 d1 TMP_32) in (let TMP_34 +\def (lift_sort n h1 d1) in (let TMP_35 \def (eq_ind_r T TMP_27 TMP_29 TMP_31 +TMP_33 TMP_34) in (let TMP_36 \def (TSort n) in (let TMP_38 \def (\lambda (t: +T).(let TMP_37 \def (TSort n) in (eq T TMP_37 t))) in (let TMP_39 \def (TSort +n) in (let TMP_40 \def (refl_equal T TMP_39) in (let TMP_41 \def (TSort n) in +(let TMP_42 \def (lift h2 d2 TMP_41) in (let TMP_43 \def (lift_sort n h2 d2) +in (let TMP_44 \def (eq_ind_r T TMP_36 TMP_38 TMP_40 TMP_42 TMP_43) in (let +TMP_45 \def (ex_intro2 T TMP_22 TMP_25 TMP_26 TMP_35 TMP_44) in (let TMP_46 +\def (plus d2 h1) in (let TMP_47 \def (lift_gen_sort h2 TMP_46 n x H1) in +(eq_ind_r T TMP_13 TMP_19 TMP_45 x +TMP_47))))))))))))))))))))))))))))))))))))))) in (let TMP_325 \def (\lambda +(n: nat).(\lambda (x: T).(\lambda (h1: nat).(\lambda (h2: nat).(\lambda (d1: +nat).(\lambda (d2: nat).(\lambda (H: (le d1 d2)).(\lambda (H0: (eq T (lift h1 +d1 (TLRef n)) (lift h2 (plus d2 h1) x))).(let TMP_50 \def (\lambda (t2: +T).(let TMP_49 \def (lift h1 d1 t2) in (eq T x TMP_49))) in (let TMP_53 \def +(\lambda (t2: T).(let TMP_51 \def (TLRef n) in (let TMP_52 \def (lift h2 d2 +t2) in (eq T TMP_51 TMP_52)))) in (let TMP_54 \def (ex2 T TMP_50 TMP_53) in +(let TMP_101 \def (\lambda (H1: (lt n d1)).(let TMP_55 \def (TLRef n) in (let +TMP_56 \def (lift h1 d1 TMP_55) in (let TMP_59 \def (\lambda (t: T).(let +TMP_57 \def (plus d2 h1) in (let TMP_58 \def (lift h2 TMP_57 x) in (eq T t +TMP_58)))) in (let TMP_60 \def (TLRef n) in (let TMP_61 \def (lift_lref_lt n +h1 d1 H1) in (let H2 \def (eq_ind T TMP_56 TMP_59 H0 TMP_60 TMP_61) in (let +TMP_62 \def (TLRef n) in (let TMP_68 \def (\lambda (t: T).(let TMP_64 \def +(\lambda (t2: T).(let TMP_63 \def (lift h1 d1 t2) in (eq T t TMP_63))) in +(let TMP_67 \def (\lambda (t2: T).(let TMP_65 \def (TLRef n) in (let TMP_66 +\def (lift h2 d2 t2) in (eq T TMP_65 TMP_66)))) in (ex2 T TMP_64 TMP_67)))) +in (let TMP_71 \def (\lambda (t2: T).(let TMP_69 \def (TLRef n) in (let +TMP_70 \def (lift h1 d1 t2) in (eq T TMP_69 TMP_70)))) in (let TMP_74 \def +(\lambda (t2: T).(let TMP_72 \def (TLRef n) in (let TMP_73 \def (lift h2 d2 +t2) in (eq T TMP_72 TMP_73)))) in (let TMP_75 \def (TLRef n) in (let TMP_76 +\def (TLRef n) in (let TMP_78 \def (\lambda (t: T).(let TMP_77 \def (TLRef n) +in (eq T TMP_77 t))) in (let TMP_79 \def (TLRef n) in (let TMP_80 \def +(refl_equal T TMP_79) in (let TMP_81 \def (TLRef n) in (let TMP_82 \def (lift +h1 d1 TMP_81) in (let TMP_83 \def (lift_lref_lt n h1 d1 H1) in (let TMP_84 +\def (eq_ind_r T TMP_76 TMP_78 TMP_80 TMP_82 TMP_83) in (let TMP_85 \def +(TLRef n) in (let TMP_87 \def (\lambda (t: T).(let TMP_86 \def (TLRef n) in +(eq T TMP_86 t))) in (let TMP_88 \def (TLRef n) in (let TMP_89 \def +(refl_equal T TMP_88) in (let TMP_90 \def (TLRef n) in (let TMP_91 \def (lift +h2 d2 TMP_90) in (let TMP_92 \def (lt_le_trans n d1 d2 H1 H) in (let TMP_93 +\def (lift_lref_lt n h2 d2 TMP_92) in (let TMP_94 \def (eq_ind_r T TMP_85 +TMP_87 TMP_89 TMP_91 TMP_93) in (let TMP_95 \def (ex_intro2 T TMP_71 TMP_74 +TMP_75 TMP_84 TMP_94) in (let TMP_96 \def (plus d2 h1) in (let TMP_97 \def +(plus d2 h1) in (let TMP_98 \def (le_plus_trans d1 d2 h1 H) in (let TMP_99 +\def (lt_le_trans n d1 TMP_97 H1 TMP_98) in (let TMP_100 \def +(lift_gen_lref_lt h2 TMP_96 n TMP_99 x H2) in (eq_ind_r T TMP_62 TMP_68 +TMP_95 x TMP_100)))))))))))))))))))))))))))))))))))) in (let TMP_324 \def +(\lambda (H1: (le d1 n)).(let TMP_102 \def (TLRef n) in (let TMP_103 \def +(lift h1 d1 TMP_102) in (let TMP_106 \def (\lambda (t: T).(let TMP_104 \def +(plus d2 h1) in (let TMP_105 \def (lift h2 TMP_104 x) in (eq T t TMP_105)))) +in (let TMP_107 \def (plus n h1) in (let TMP_108 \def (TLRef TMP_107) in (let +TMP_109 \def (lift_lref_ge n h1 d1 H1) in (let H2 \def (eq_ind T TMP_103 +TMP_106 H0 TMP_108 TMP_109) in (let TMP_111 \def (\lambda (t2: T).(let +TMP_110 \def (lift h1 d1 t2) in (eq T x TMP_110))) in (let TMP_114 \def +(\lambda (t2: T).(let TMP_112 \def (TLRef n) in (let TMP_113 \def (lift h2 d2 +t2) in (eq T TMP_112 TMP_113)))) in (let TMP_115 \def (ex2 T TMP_111 TMP_114) +in (let TMP_158 \def (\lambda (H3: (lt n d2)).(let TMP_116 \def (plus n h1) +in (let TMP_117 \def (TLRef TMP_116) in (let TMP_123 \def (\lambda (t: +T).(let TMP_119 \def (\lambda (t2: T).(let TMP_118 \def (lift h1 d1 t2) in +(eq T t TMP_118))) in (let TMP_122 \def (\lambda (t2: T).(let TMP_120 \def +(TLRef n) in (let TMP_121 \def (lift h2 d2 t2) in (eq T TMP_120 TMP_121)))) +in (ex2 T TMP_119 TMP_122)))) in (let TMP_127 \def (\lambda (t2: T).(let +TMP_124 \def (plus n h1) in (let TMP_125 \def (TLRef TMP_124) in (let TMP_126 +\def (lift h1 d1 t2) in (eq T TMP_125 TMP_126))))) in (let TMP_130 \def +(\lambda (t2: T).(let TMP_128 \def (TLRef n) in (let TMP_129 \def (lift h2 d2 +t2) in (eq T TMP_128 TMP_129)))) in (let TMP_131 \def (TLRef n) in (let +TMP_132 \def (plus n h1) in (let TMP_133 \def (TLRef TMP_132) in (let TMP_136 +\def (\lambda (t: T).(let TMP_134 \def (plus n h1) in (let TMP_135 \def +(TLRef TMP_134) in (eq T TMP_135 t)))) in (let TMP_137 \def (plus n h1) in +(let TMP_138 \def (TLRef TMP_137) in (let TMP_139 \def (refl_equal T TMP_138) +in (let TMP_140 \def (TLRef n) in (let TMP_141 \def (lift h1 d1 TMP_140) in +(let TMP_142 \def (lift_lref_ge n h1 d1 H1) in (let TMP_143 \def (eq_ind_r T +TMP_133 TMP_136 TMP_139 TMP_141 TMP_142) in (let TMP_144 \def (TLRef n) in +(let TMP_146 \def (\lambda (t: T).(let TMP_145 \def (TLRef n) in (eq T +TMP_145 t))) in (let TMP_147 \def (TLRef n) in (let TMP_148 \def (refl_equal +T TMP_147) in (let TMP_149 \def (TLRef n) in (let TMP_150 \def (lift h2 d2 +TMP_149) in (let TMP_151 \def (lift_lref_lt n h2 d2 H3) in (let TMP_152 \def +(eq_ind_r T TMP_144 TMP_146 TMP_148 TMP_150 TMP_151) in (let TMP_153 \def +(ex_intro2 T TMP_127 TMP_130 TMP_131 TMP_143 TMP_152) in (let TMP_154 \def +(plus d2 h1) in (let TMP_155 \def (plus n h1) in (let TMP_156 \def (lt_reg_r +n d2 h1 H3) in (let TMP_157 \def (lift_gen_lref_lt h2 TMP_154 TMP_155 TMP_156 +x H2) in (eq_ind_r T TMP_117 TMP_123 TMP_153 x +TMP_157))))))))))))))))))))))))))))))) in (let TMP_323 \def (\lambda (H3: (le +d2 n)).(let TMP_159 \def (plus d2 h2) in (let TMP_161 \def (\lambda (t2: +T).(let TMP_160 \def (lift h1 d1 t2) in (eq T x TMP_160))) in (let TMP_164 +\def (\lambda (t2: T).(let TMP_162 \def (TLRef n) in (let TMP_163 \def (lift +h2 d2 t2) in (eq T TMP_162 TMP_163)))) in (let TMP_165 \def (ex2 T TMP_161 +TMP_164) in (let TMP_186 \def (\lambda (H4: (lt n (plus d2 h2))).(let TMP_166 +\def (plus d2 h1) in (let TMP_167 \def (plus n h1) in (let TMP_168 \def (le_n +h1) in (let TMP_169 \def (le_plus_plus d2 n h1 h1 H3 TMP_168) in (let TMP_170 +\def (plus d2 h2) in (let TMP_171 \def (plus TMP_170 h1) in (let TMP_173 \def +(\lambda (n0: nat).(let TMP_172 \def (plus n h1) in (lt TMP_172 n0))) in (let +TMP_174 \def (plus d2 h2) in (let TMP_175 \def (lt_reg_r n TMP_174 h1 H4) in +(let TMP_176 \def (plus d2 h1) in (let TMP_177 \def (plus TMP_176 h2) in (let +TMP_178 \def (plus_permute_2_in_3 d2 h1 h2) in (let TMP_179 \def (eq_ind_r +nat TMP_171 TMP_173 TMP_175 TMP_177 TMP_178) in (let TMP_181 \def (\lambda +(t2: T).(let TMP_180 \def (lift h1 d1 t2) in (eq T x TMP_180))) in (let +TMP_184 \def (\lambda (t2: T).(let TMP_182 \def (TLRef n) in (let TMP_183 +\def (lift h2 d2 t2) in (eq T TMP_182 TMP_183)))) in (let TMP_185 \def (ex2 T +TMP_181 TMP_184) in (lift_gen_lref_false h2 TMP_166 TMP_167 TMP_169 TMP_179 x +H2 TMP_185)))))))))))))))))) in (let TMP_322 \def (\lambda (H4: (le (plus d2 +h2) n)).(let TMP_187 \def (plus n h1) in (let TMP_191 \def (\lambda (n0: +nat).(let TMP_188 \def (TLRef n0) in (let TMP_189 \def (plus d2 h1) in (let +TMP_190 \def (lift h2 TMP_189 x) in (eq T TMP_188 TMP_190))))) in (let +TMP_192 \def (plus n h1) in (let TMP_193 \def (minus TMP_192 h2) in (let +TMP_194 \def (plus TMP_193 h2) in (let TMP_195 \def (plus n h1) in (let +TMP_196 \def (plus d2 h2) in (let TMP_197 \def (le_plus_r d2 h2) in (let +TMP_198 \def (le_trans h2 TMP_196 n TMP_197 H4) in (let TMP_199 \def +(le_plus_trans h2 n h1 TMP_198) in (let TMP_200 \def (le_plus_minus_sym h2 +TMP_195 TMP_199) in (let H5 \def (eq_ind nat TMP_187 TMP_191 H2 TMP_194 +TMP_200) in (let TMP_201 \def (plus n h1) in (let TMP_202 \def (minus TMP_201 +h2) in (let TMP_203 \def (TLRef TMP_202) in (let TMP_209 \def (\lambda (t: +T).(let TMP_205 \def (\lambda (t2: T).(let TMP_204 \def (lift h1 d1 t2) in +(eq T t TMP_204))) in (let TMP_208 \def (\lambda (t2: T).(let TMP_206 \def +(TLRef n) in (let TMP_207 \def (lift h2 d2 t2) in (eq T TMP_206 TMP_207)))) +in (ex2 T TMP_205 TMP_208)))) in (let TMP_214 \def (\lambda (t2: T).(let +TMP_210 \def (plus n h1) in (let TMP_211 \def (minus TMP_210 h2) in (let +TMP_212 \def (TLRef TMP_211) in (let TMP_213 \def (lift h1 d1 t2) in (eq T +TMP_212 TMP_213)))))) in (let TMP_217 \def (\lambda (t2: T).(let TMP_215 \def +(TLRef n) in (let TMP_216 \def (lift h2 d2 t2) in (eq T TMP_215 TMP_216)))) +in (let TMP_218 \def (minus n h2) in (let TMP_219 \def (TLRef TMP_218) in +(let TMP_220 \def (minus n h2) in (let TMP_221 \def (plus TMP_220 h1) in (let +TMP_226 \def (\lambda (n0: nat).(let TMP_222 \def (TLRef n0) in (let TMP_223 +\def (minus n h2) in (let TMP_224 \def (TLRef TMP_223) in (let TMP_225 \def +(lift h1 d1 TMP_224) in (eq T TMP_222 TMP_225)))))) in (let TMP_227 \def +(minus n h2) in (let TMP_228 \def (plus TMP_227 h1) in (let TMP_229 \def +(TLRef TMP_228) in (let TMP_233 \def (\lambda (t: T).(let TMP_230 \def (minus +n h2) in (let TMP_231 \def (plus TMP_230 h1) in (let TMP_232 \def (TLRef +TMP_231) in (eq T TMP_232 t))))) in (let TMP_234 \def (minus n h2) in (let +TMP_235 \def (plus TMP_234 h1) in (let TMP_236 \def (TLRef TMP_235) in (let +TMP_237 \def (refl_equal T TMP_236) in (let TMP_238 \def (minus n h2) in (let +TMP_239 \def (TLRef TMP_238) in (let TMP_240 \def (lift h1 d1 TMP_239) in +(let TMP_241 \def (minus n h2) in (let TMP_242 \def (minus n h2) in (let +TMP_243 \def (le_minus d2 n h2 H4) in (let TMP_244 \def (le_trans d1 d2 +TMP_242 H TMP_243) in (let TMP_245 \def (lift_lref_ge TMP_241 h1 d1 TMP_244) +in (let TMP_246 \def (eq_ind_r T TMP_229 TMP_233 TMP_237 TMP_240 TMP_245) in +(let TMP_247 \def (plus n h1) in (let TMP_248 \def (minus TMP_247 h2) in (let +TMP_249 \def (plus d2 h2) in (let TMP_250 \def (le_plus_r d2 h2) in (let +TMP_251 \def (le_trans h2 TMP_249 n TMP_250 H4) in (let TMP_252 \def +(le_minus_plus h2 n TMP_251 h1) in (let TMP_253 \def (eq_ind_r nat TMP_221 +TMP_226 TMP_246 TMP_248 TMP_252) in (let TMP_254 \def (minus n h2) in (let +TMP_255 \def (plus TMP_254 h2) in (let TMP_260 \def (\lambda (n0: nat).(let +TMP_256 \def (TLRef n0) in (let TMP_257 \def (minus n0 h2) in (let TMP_258 +\def (TLRef TMP_257) in (let TMP_259 \def (lift h2 d2 TMP_258) in (eq T +TMP_256 TMP_259)))))) in (let TMP_261 \def (minus n h2) in (let TMP_262 \def +(plus TMP_261 h2) in (let TMP_263 \def (minus TMP_262 h2) in (let TMP_264 +\def (plus TMP_263 h2) in (let TMP_265 \def (TLRef TMP_264) in (let TMP_269 +\def (\lambda (t: T).(let TMP_266 \def (minus n h2) in (let TMP_267 \def +(plus TMP_266 h2) in (let TMP_268 \def (TLRef TMP_267) in (eq T TMP_268 +t))))) in (let TMP_270 \def (minus n h2) in (let TMP_271 \def (plus TMP_270 +h2) in (let TMP_272 \def (minus TMP_271 h2) in (let TMP_273 \def (plus +TMP_272 h2) in (let TMP_274 \def (TLRef TMP_273) in (let TMP_275 \def (minus +n h2) in (let TMP_276 \def (plus TMP_275 h2) in (let TMP_277 \def (TLRef +TMP_276) in (let TMP_278 \def (minus n h2) in (let TMP_279 \def (plus TMP_278 +h2) in (let TMP_280 \def (minus TMP_279 h2) in (let TMP_281 \def (plus +TMP_280 h2) in (let TMP_282 \def (minus n h2) in (let TMP_283 \def (plus +TMP_282 h2) in (let TMP_284 \def (minus n h2) in (let TMP_285 \def (plus +TMP_284 h2) in (let TMP_286 \def (minus TMP_285 h2) in (let TMP_287 \def +(minus n h2) in (let TMP_288 \def (minus n h2) in (let TMP_289 \def +(minus_plus_r TMP_288 h2) in (let TMP_290 \def (refl_equal nat h2) in (let +TMP_291 \def (f_equal2 nat nat nat plus TMP_286 TMP_287 h2 h2 TMP_289 +TMP_290) in (let TMP_292 \def (f_equal nat T TLRef TMP_281 TMP_283 TMP_291) +in (let TMP_293 \def (sym_eq T TMP_274 TMP_277 TMP_292) in (let TMP_294 \def +(minus n h2) in (let TMP_295 \def (plus TMP_294 h2) in (let TMP_296 \def +(minus TMP_295 h2) in (let TMP_297 \def (TLRef TMP_296) in (let TMP_298 \def +(lift h2 d2 TMP_297) in (let TMP_299 \def (minus n h2) in (let TMP_300 \def +(plus TMP_299 h2) in (let TMP_301 \def (minus TMP_300 h2) in (let TMP_302 +\def (minus n h2) in (let TMP_303 \def (plus TMP_302 h2) in (let TMP_304 \def +(minus n h2) in (let TMP_305 \def (le_minus d2 n h2 H4) in (let TMP_306 \def +(le_n h2) in (let TMP_307 \def (le_plus_plus d2 TMP_304 h2 h2 TMP_305 +TMP_306) in (let TMP_308 \def (le_minus d2 TMP_303 h2 TMP_307) in (let +TMP_309 \def (lift_lref_ge TMP_301 h2 d2 TMP_308) in (let TMP_310 \def +(eq_ind_r T TMP_265 TMP_269 TMP_293 TMP_298 TMP_309) in (let TMP_311 \def +(plus d2 h2) in (let TMP_312 \def (le_plus_r d2 h2) in (let TMP_313 \def +(le_trans h2 TMP_311 n TMP_312 H4) in (let TMP_314 \def (le_plus_minus_sym h2 +n TMP_313) in (let TMP_315 \def (eq_ind_r nat TMP_255 TMP_260 TMP_310 n +TMP_314) in (let TMP_316 \def (ex_intro2 T TMP_214 TMP_217 TMP_219 TMP_253 +TMP_315) in (let TMP_317 \def (plus d2 h1) in (let TMP_318 \def (plus n h1) +in (let TMP_319 \def (minus TMP_318 h2) in (let TMP_320 \def (arith0 h2 d2 n +H4 h1) in (let TMP_321 \def (lift_gen_lref_ge h2 TMP_317 TMP_319 TMP_320 x +H5) in (eq_ind_r T TMP_203 TMP_209 TMP_316 x +TMP_321))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +))))))))))))))))))))))))))))))))))))))) in (lt_le_e n TMP_159 TMP_165 TMP_186 +TMP_322)))))))) in (lt_le_e n d2 TMP_115 TMP_158 TMP_323)))))))))))))) in +(lt_le_e n d1 TMP_54 TMP_101 TMP_324)))))))))))))) in (let TMP_720 \def +(\lambda (k: K).(\lambda (t: T).(\lambda (H: ((\forall (x: T).(\forall (h1: +nat).(\forall (h2: nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to +((eq T (lift h1 d1 t) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: +T).(eq T x (lift h1 d1 t2))) (\lambda (t2: T).(eq T t (lift h2 d2 +t2))))))))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (x: T).(\forall (h1: +nat).(\forall (h2: nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to +((eq T (lift h1 d1 t0) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: +T).(eq T x (lift h1 d1 t2))) (\lambda (t2: T).(eq T t0 (lift h2 d2 +t2))))))))))))).(\lambda (x: T).(\lambda (h1: nat).(\lambda (h2: +nat).(\lambda (d1: nat).(\lambda (d2: nat).(\lambda (H1: (le d1 d2)).(\lambda +(H2: (eq T (lift h1 d1 (THead k t t0)) (lift h2 (plus d2 h1) x))).(let +TMP_331 \def (\lambda (k0: K).((eq T (lift h1 d1 (THead k0 t t0)) (lift h2 +(plus d2 h1) x)) \to (let TMP_327 \def (\lambda (t2: T).(let TMP_326 \def +(lift h1 d1 t2) in (eq T x TMP_326))) in (let TMP_330 \def (\lambda (t2: +T).(let TMP_328 \def (THead k0 t t0) in (let TMP_329 \def (lift h2 d2 t2) in +(eq T TMP_328 TMP_329)))) in (ex2 T TMP_327 TMP_330))))) in (let TMP_540 \def +(\lambda (b: B).(\lambda (H3: (eq T (lift h1 d1 (THead (Bind b) t t0)) (lift +h2 (plus d2 h1) x))).(let TMP_332 \def (Bind b) in (let TMP_333 \def (THead +TMP_332 t t0) in (let TMP_334 \def (lift h1 d1 TMP_333) in (let TMP_337 \def +(\lambda (t2: T).(let TMP_335 \def (plus d2 h1) in (let TMP_336 \def (lift h2 +TMP_335 x) in (eq T t2 TMP_336)))) in (let TMP_338 \def (Bind b) in (let +TMP_339 \def (lift h1 d1 t) in (let TMP_340 \def (S d1) in (let TMP_341 \def +(lift h1 TMP_340 t0) in (let TMP_342 \def (THead TMP_338 TMP_339 TMP_341) in +(let TMP_343 \def (lift_bind b t t0 h1 d1) in (let H4 \def (eq_ind T TMP_334 +TMP_337 H3 TMP_342 TMP_343) in (let TMP_346 \def (\lambda (y: T).(\lambda (z: +T).(let TMP_344 \def (Bind b) in (let TMP_345 \def (THead TMP_344 y z) in (eq +T x TMP_345))))) in (let TMP_350 \def (\lambda (y: T).(\lambda (_: T).(let +TMP_347 \def (lift h1 d1 t) in (let TMP_348 \def (plus d2 h1) in (let TMP_349 +\def (lift h2 TMP_348 y) in (eq T TMP_347 TMP_349)))))) in (let TMP_356 \def +(\lambda (_: T).(\lambda (z: T).(let TMP_351 \def (S d1) in (let TMP_352 \def +(lift h1 TMP_351 t0) in (let TMP_353 \def (plus d2 h1) in (let TMP_354 \def +(S TMP_353) in (let TMP_355 \def (lift h2 TMP_354 z) in (eq T TMP_352 +TMP_355)))))))) in (let TMP_358 \def (\lambda (t2: T).(let TMP_357 \def (lift +h1 d1 t2) in (eq T x TMP_357))) in (let TMP_362 \def (\lambda (t2: T).(let +TMP_359 \def (Bind b) in (let TMP_360 \def (THead TMP_359 t t0) in (let +TMP_361 \def (lift h2 d2 t2) in (eq T TMP_360 TMP_361))))) in (let TMP_363 +\def (ex2 T TMP_358 TMP_362) in (let TMP_534 \def (\lambda (x0: T).(\lambda +(x1: T).(\lambda (H5: (eq T x (THead (Bind b) x0 x1))).(\lambda (H6: (eq T +(lift h1 d1 t) (lift h2 (plus d2 h1) x0))).(\lambda (H7: (eq T (lift h1 (S +d1) t0) (lift h2 (S (plus d2 h1)) x1))).(let TMP_364 \def (Bind b) in (let +TMP_365 \def (THead TMP_364 x0 x1) in (let TMP_372 \def (\lambda (t2: T).(let +TMP_367 \def (\lambda (t3: T).(let TMP_366 \def (lift h1 d1 t3) in (eq T t2 +TMP_366))) in (let TMP_371 \def (\lambda (t3: T).(let TMP_368 \def (Bind b) +in (let TMP_369 \def (THead TMP_368 t t0) in (let TMP_370 \def (lift h2 d2 +t3) in (eq T TMP_369 TMP_370))))) in (ex2 T TMP_367 TMP_371)))) in (let +TMP_374 \def (\lambda (t2: T).(let TMP_373 \def (lift h1 d1 t2) in (eq T x0 +TMP_373))) in (let TMP_376 \def (\lambda (t2: T).(let TMP_375 \def (lift h2 +d2 t2) in (eq T t TMP_375))) in (let TMP_380 \def (\lambda (t2: T).(let +TMP_377 \def (Bind b) in (let TMP_378 \def (THead TMP_377 x0 x1) in (let +TMP_379 \def (lift h1 d1 t2) in (eq T TMP_378 TMP_379))))) in (let TMP_384 +\def (\lambda (t2: T).(let TMP_381 \def (Bind b) in (let TMP_382 \def (THead +TMP_381 t t0) in (let TMP_383 \def (lift h2 d2 t2) in (eq T TMP_382 +TMP_383))))) in (let TMP_385 \def (ex2 T TMP_380 TMP_384) in (let TMP_531 +\def (\lambda (x2: T).(\lambda (H8: (eq T x0 (lift h1 d1 x2))).(\lambda (H9: +(eq T t (lift h2 d2 x2))).(let TMP_386 \def (lift h1 d1 x2) in (let TMP_395 +\def (\lambda (t2: T).(let TMP_390 \def (\lambda (t3: T).(let TMP_387 \def +(Bind b) in (let TMP_388 \def (THead TMP_387 t2 x1) in (let TMP_389 \def +(lift h1 d1 t3) in (eq T TMP_388 TMP_389))))) in (let TMP_394 \def (\lambda +(t3: T).(let TMP_391 \def (Bind b) in (let TMP_392 \def (THead TMP_391 t t0) +in (let TMP_393 \def (lift h2 d2 t3) in (eq T TMP_392 TMP_393))))) in (ex2 T +TMP_390 TMP_394)))) in (let TMP_396 \def (lift h2 d2 x2) in (let TMP_406 \def +(\lambda (t2: T).(let TMP_401 \def (\lambda (t3: T).(let TMP_397 \def (Bind +b) in (let TMP_398 \def (lift h1 d1 x2) in (let TMP_399 \def (THead TMP_397 +TMP_398 x1) in (let TMP_400 \def (lift h1 d1 t3) in (eq T TMP_399 +TMP_400)))))) in (let TMP_405 \def (\lambda (t3: T).(let TMP_402 \def (Bind +b) in (let TMP_403 \def (THead TMP_402 t2 t0) in (let TMP_404 \def (lift h2 +d2 t3) in (eq T TMP_403 TMP_404))))) in (ex2 T TMP_401 TMP_405)))) in (let +TMP_407 \def (S d2) in (let TMP_408 \def (plus TMP_407 h1) in (let H10 \def +(refl_equal nat TMP_408) in (let TMP_409 \def (plus d2 h1) in (let TMP_410 +\def (S TMP_409) in (let TMP_414 \def (\lambda (n: nat).(let TMP_411 \def (S +d1) in (let TMP_412 \def (lift h1 TMP_411 t0) in (let TMP_413 \def (lift h2 n +x1) in (eq T TMP_412 TMP_413))))) in (let TMP_415 \def (S d2) in (let TMP_416 +\def (plus TMP_415 h1) in (let H11 \def (eq_ind nat TMP_410 TMP_414 H7 +TMP_416 H10) in (let TMP_419 \def (\lambda (t2: T).(let TMP_417 \def (S d1) +in (let TMP_418 \def (lift h1 TMP_417 t2) in (eq T x1 TMP_418)))) in (let +TMP_422 \def (\lambda (t2: T).(let TMP_420 \def (S d2) in (let TMP_421 \def +(lift h2 TMP_420 t2) in (eq T t0 TMP_421)))) in (let TMP_427 \def (\lambda +(t2: T).(let TMP_423 \def (Bind b) in (let TMP_424 \def (lift h1 d1 x2) in +(let TMP_425 \def (THead TMP_423 TMP_424 x1) in (let TMP_426 \def (lift h1 d1 +t2) in (eq T TMP_425 TMP_426)))))) in (let TMP_432 \def (\lambda (t2: T).(let +TMP_428 \def (Bind b) in (let TMP_429 \def (lift h2 d2 x2) in (let TMP_430 +\def (THead TMP_428 TMP_429 t0) in (let TMP_431 \def (lift h2 d2 t2) in (eq T +TMP_430 TMP_431)))))) in (let TMP_433 \def (ex2 T TMP_427 TMP_432) in (let +TMP_524 \def (\lambda (x3: T).(\lambda (H12: (eq T x1 (lift h1 (S d1) +x3))).(\lambda (H13: (eq T t0 (lift h2 (S d2) x3))).(let TMP_434 \def (S d1) +in (let TMP_435 \def (lift h1 TMP_434 x3) in (let TMP_446 \def (\lambda (t2: +T).(let TMP_440 \def (\lambda (t3: T).(let TMP_436 \def (Bind b) in (let +TMP_437 \def (lift h1 d1 x2) in (let TMP_438 \def (THead TMP_436 TMP_437 t2) +in (let TMP_439 \def (lift h1 d1 t3) in (eq T TMP_438 TMP_439)))))) in (let +TMP_445 \def (\lambda (t3: T).(let TMP_441 \def (Bind b) in (let TMP_442 \def +(lift h2 d2 x2) in (let TMP_443 \def (THead TMP_441 TMP_442 t0) in (let +TMP_444 \def (lift h2 d2 t3) in (eq T TMP_443 TMP_444)))))) in (ex2 T TMP_440 +TMP_445)))) in (let TMP_447 \def (S d2) in (let TMP_448 \def (lift h2 TMP_447 +x3) in (let TMP_461 \def (\lambda (t2: T).(let TMP_455 \def (\lambda (t3: +T).(let TMP_449 \def (Bind b) in (let TMP_450 \def (lift h1 d1 x2) in (let +TMP_451 \def (S d1) in (let TMP_452 \def (lift h1 TMP_451 x3) in (let TMP_453 +\def (THead TMP_449 TMP_450 TMP_452) in (let TMP_454 \def (lift h1 d1 t3) in +(eq T TMP_453 TMP_454)))))))) in (let TMP_460 \def (\lambda (t3: T).(let +TMP_456 \def (Bind b) in (let TMP_457 \def (lift h2 d2 x2) in (let TMP_458 +\def (THead TMP_456 TMP_457 t2) in (let TMP_459 \def (lift h2 d2 t3) in (eq T +TMP_458 TMP_459)))))) in (ex2 T TMP_455 TMP_460)))) in (let TMP_468 \def +(\lambda (t2: T).(let TMP_462 \def (Bind b) in (let TMP_463 \def (lift h1 d1 +x2) in (let TMP_464 \def (S d1) in (let TMP_465 \def (lift h1 TMP_464 x3) in +(let TMP_466 \def (THead TMP_462 TMP_463 TMP_465) in (let TMP_467 \def (lift +h1 d1 t2) in (eq T TMP_466 TMP_467)))))))) in (let TMP_475 \def (\lambda (t2: +T).(let TMP_469 \def (Bind b) in (let TMP_470 \def (lift h2 d2 x2) in (let +TMP_471 \def (S d2) in (let TMP_472 \def (lift h2 TMP_471 x3) in (let TMP_473 +\def (THead TMP_469 TMP_470 TMP_472) in (let TMP_474 \def (lift h2 d2 t2) in +(eq T TMP_473 TMP_474)))))))) in (let TMP_476 \def (Bind b) in (let TMP_477 +\def (THead TMP_476 x2 x3) in (let TMP_478 \def (Bind b) in (let TMP_479 \def +(lift h1 d1 x2) in (let TMP_480 \def (S d1) in (let TMP_481 \def (lift h1 +TMP_480 x3) in (let TMP_482 \def (THead TMP_478 TMP_479 TMP_481) in (let +TMP_488 \def (\lambda (t2: T).(let TMP_483 \def (Bind b) in (let TMP_484 \def +(lift h1 d1 x2) in (let TMP_485 \def (S d1) in (let TMP_486 \def (lift h1 +TMP_485 x3) in (let TMP_487 \def (THead TMP_483 TMP_484 TMP_486) in (eq T +TMP_487 t2))))))) in (let TMP_489 \def (Bind b) in (let TMP_490 \def (lift h1 +d1 x2) in (let TMP_491 \def (S d1) in (let TMP_492 \def (lift h1 TMP_491 x3) +in (let TMP_493 \def (THead TMP_489 TMP_490 TMP_492) in (let TMP_494 \def +(refl_equal T TMP_493) in (let TMP_495 \def (Bind b) in (let TMP_496 \def +(THead TMP_495 x2 x3) in (let TMP_497 \def (lift h1 d1 TMP_496) in (let +TMP_498 \def (lift_bind b x2 x3 h1 d1) in (let TMP_499 \def (eq_ind_r T +TMP_482 TMP_488 TMP_494 TMP_497 TMP_498) in (let TMP_500 \def (Bind b) in +(let TMP_501 \def (lift h2 d2 x2) in (let TMP_502 \def (S d2) in (let TMP_503 +\def (lift h2 TMP_502 x3) in (let TMP_504 \def (THead TMP_500 TMP_501 +TMP_503) in (let TMP_510 \def (\lambda (t2: T).(let TMP_505 \def (Bind b) in +(let TMP_506 \def (lift h2 d2 x2) in (let TMP_507 \def (S d2) in (let TMP_508 +\def (lift h2 TMP_507 x3) in (let TMP_509 \def (THead TMP_505 TMP_506 +TMP_508) in (eq T TMP_509 t2))))))) in (let TMP_511 \def (Bind b) in (let +TMP_512 \def (lift h2 d2 x2) in (let TMP_513 \def (S d2) in (let TMP_514 \def +(lift h2 TMP_513 x3) in (let TMP_515 \def (THead TMP_511 TMP_512 TMP_514) in +(let TMP_516 \def (refl_equal T TMP_515) in (let TMP_517 \def (Bind b) in +(let TMP_518 \def (THead TMP_517 x2 x3) in (let TMP_519 \def (lift h2 d2 +TMP_518) in (let TMP_520 \def (lift_bind b x2 x3 h2 d2) in (let TMP_521 \def +(eq_ind_r T TMP_504 TMP_510 TMP_516 TMP_519 TMP_520) in (let TMP_522 \def +(ex_intro2 T TMP_468 TMP_475 TMP_477 TMP_499 TMP_521) in (let TMP_523 \def +(eq_ind_r T TMP_448 TMP_461 TMP_522 t0 H13) in (eq_ind_r T TMP_435 TMP_446 +TMP_523 x1 H12)))))))))))))))))))))))))))))))))))))))))))))))))) in (let +TMP_525 \def (S d1) in (let TMP_526 \def (S d2) in (let TMP_527 \def (le_n_S +d1 d2 H1) in (let TMP_528 \def (H0 x1 h1 h2 TMP_525 TMP_526 TMP_527 H11) in +(let TMP_529 \def (ex2_ind T TMP_419 TMP_422 TMP_433 TMP_524 TMP_528) in (let +TMP_530 \def (eq_ind_r T TMP_396 TMP_406 TMP_529 t H9) in (eq_ind_r T TMP_386 +TMP_395 TMP_530 x0 H8))))))))))))))))))))))))))))) in (let TMP_532 \def (H x0 +h1 h2 d1 d2 H1 H6) in (let TMP_533 \def (ex2_ind T TMP_374 TMP_376 TMP_385 +TMP_531 TMP_532) in (eq_ind_r T TMP_365 TMP_372 TMP_533 x H5))))))))))))))))) +in (let TMP_535 \def (lift h1 d1 t) in (let TMP_536 \def (S d1) in (let +TMP_537 \def (lift h1 TMP_536 t0) in (let TMP_538 \def (plus d2 h1) in (let +TMP_539 \def (lift_gen_bind b TMP_535 TMP_537 x h2 TMP_538 H4) in (ex3_2_ind +T T TMP_346 TMP_350 TMP_356 TMP_363 TMP_534 TMP_539)))))))))))))))))))))))))) +in (let TMP_719 \def (\lambda (f: F).(\lambda (H3: (eq T (lift h1 d1 (THead +(Flat f) t t0)) (lift h2 (plus d2 h1) x))).(let TMP_541 \def (Flat f) in (let +TMP_542 \def (THead TMP_541 t t0) in (let TMP_543 \def (lift h1 d1 TMP_542) +in (let TMP_546 \def (\lambda (t2: T).(let TMP_544 \def (plus d2 h1) in (let +TMP_545 \def (lift h2 TMP_544 x) in (eq T t2 TMP_545)))) in (let TMP_547 \def +(Flat f) in (let TMP_548 \def (lift h1 d1 t) in (let TMP_549 \def (lift h1 d1 +t0) in (let TMP_550 \def (THead TMP_547 TMP_548 TMP_549) in (let TMP_551 \def +(lift_flat f t t0 h1 d1) in (let H4 \def (eq_ind T TMP_543 TMP_546 H3 TMP_550 +TMP_551) in (let TMP_554 \def (\lambda (y: T).(\lambda (z: T).(let TMP_552 +\def (Flat f) in (let TMP_553 \def (THead TMP_552 y z) in (eq T x +TMP_553))))) in (let TMP_558 \def (\lambda (y: T).(\lambda (_: T).(let +TMP_555 \def (lift h1 d1 t) in (let TMP_556 \def (plus d2 h1) in (let TMP_557 +\def (lift h2 TMP_556 y) in (eq T TMP_555 TMP_557)))))) in (let TMP_562 \def +(\lambda (_: T).(\lambda (z: T).(let TMP_559 \def (lift h1 d1 t0) in (let +TMP_560 \def (plus d2 h1) in (let TMP_561 \def (lift h2 TMP_560 z) in (eq T +TMP_559 TMP_561)))))) in (let TMP_564 \def (\lambda (t2: T).(let TMP_563 \def +(lift h1 d1 t2) in (eq T x TMP_563))) in (let TMP_568 \def (\lambda (t2: +T).(let TMP_565 \def (Flat f) in (let TMP_566 \def (THead TMP_565 t t0) in +(let TMP_567 \def (lift h2 d2 t2) in (eq T TMP_566 TMP_567))))) in (let +TMP_569 \def (ex2 T TMP_564 TMP_568) in (let TMP_714 \def (\lambda (x0: +T).(\lambda (x1: T).(\lambda (H5: (eq T x (THead (Flat f) x0 x1))).(\lambda +(H6: (eq T (lift h1 d1 t) (lift h2 (plus d2 h1) x0))).(\lambda (H7: (eq T +(lift h1 d1 t0) (lift h2 (plus d2 h1) x1))).(let TMP_570 \def (Flat f) in +(let TMP_571 \def (THead TMP_570 x0 x1) in (let TMP_578 \def (\lambda (t2: +T).(let TMP_573 \def (\lambda (t3: T).(let TMP_572 \def (lift h1 d1 t3) in +(eq T t2 TMP_572))) in (let TMP_577 \def (\lambda (t3: T).(let TMP_574 \def +(Flat f) in (let TMP_575 \def (THead TMP_574 t t0) in (let TMP_576 \def (lift +h2 d2 t3) in (eq T TMP_575 TMP_576))))) in (ex2 T TMP_573 TMP_577)))) in (let +TMP_580 \def (\lambda (t2: T).(let TMP_579 \def (lift h1 d1 t2) in (eq T x0 +TMP_579))) in (let TMP_582 \def (\lambda (t2: T).(let TMP_581 \def (lift h2 +d2 t2) in (eq T t TMP_581))) in (let TMP_586 \def (\lambda (t2: T).(let +TMP_583 \def (Flat f) in (let TMP_584 \def (THead TMP_583 x0 x1) in (let +TMP_585 \def (lift h1 d1 t2) in (eq T TMP_584 TMP_585))))) in (let TMP_590 +\def (\lambda (t2: T).(let TMP_587 \def (Flat f) in (let TMP_588 \def (THead +TMP_587 t t0) in (let TMP_589 \def (lift h2 d2 t2) in (eq T TMP_588 +TMP_589))))) in (let TMP_591 \def (ex2 T TMP_586 TMP_590) in (let TMP_711 +\def (\lambda (x2: T).(\lambda (H8: (eq T x0 (lift h1 d1 x2))).(\lambda (H9: +(eq T t (lift h2 d2 x2))).(let TMP_592 \def (lift h1 d1 x2) in (let TMP_601 +\def (\lambda (t2: T).(let TMP_596 \def (\lambda (t3: T).(let TMP_593 \def +(Flat f) in (let TMP_594 \def (THead TMP_593 t2 x1) in (let TMP_595 \def +(lift h1 d1 t3) in (eq T TMP_594 TMP_595))))) in (let TMP_600 \def (\lambda +(t3: T).(let TMP_597 \def (Flat f) in (let TMP_598 \def (THead TMP_597 t t0) +in (let TMP_599 \def (lift h2 d2 t3) in (eq T TMP_598 TMP_599))))) in (ex2 T +TMP_596 TMP_600)))) in (let TMP_602 \def (lift h2 d2 x2) in (let TMP_612 \def +(\lambda (t2: T).(let TMP_607 \def (\lambda (t3: T).(let TMP_603 \def (Flat +f) in (let TMP_604 \def (lift h1 d1 x2) in (let TMP_605 \def (THead TMP_603 +TMP_604 x1) in (let TMP_606 \def (lift h1 d1 t3) in (eq T TMP_605 +TMP_606)))))) in (let TMP_611 \def (\lambda (t3: T).(let TMP_608 \def (Flat +f) in (let TMP_609 \def (THead TMP_608 t2 t0) in (let TMP_610 \def (lift h2 +d2 t3) in (eq T TMP_609 TMP_610))))) in (ex2 T TMP_607 TMP_611)))) in (let +TMP_614 \def (\lambda (t2: T).(let TMP_613 \def (lift h1 d1 t2) in (eq T x1 +TMP_613))) in (let TMP_616 \def (\lambda (t2: T).(let TMP_615 \def (lift h2 +d2 t2) in (eq T t0 TMP_615))) in (let TMP_621 \def (\lambda (t2: T).(let +TMP_617 \def (Flat f) in (let TMP_618 \def (lift h1 d1 x2) in (let TMP_619 +\def (THead TMP_617 TMP_618 x1) in (let TMP_620 \def (lift h1 d1 t2) in (eq T +TMP_619 TMP_620)))))) in (let TMP_626 \def (\lambda (t2: T).(let TMP_622 \def +(Flat f) in (let TMP_623 \def (lift h2 d2 x2) in (let TMP_624 \def (THead +TMP_622 TMP_623 t0) in (let TMP_625 \def (lift h2 d2 t2) in (eq T TMP_624 +TMP_625)))))) in (let TMP_627 \def (ex2 T TMP_621 TMP_626) in (let TMP_707 +\def (\lambda (x3: T).(\lambda (H10: (eq T x1 (lift h1 d1 x3))).(\lambda +(H11: (eq T t0 (lift h2 d2 x3))).(let TMP_628 \def (lift h1 d1 x3) in (let +TMP_639 \def (\lambda (t2: T).(let TMP_633 \def (\lambda (t3: T).(let TMP_629 +\def (Flat f) in (let TMP_630 \def (lift h1 d1 x2) in (let TMP_631 \def +(THead TMP_629 TMP_630 t2) in (let TMP_632 \def (lift h1 d1 t3) in (eq T +TMP_631 TMP_632)))))) in (let TMP_638 \def (\lambda (t3: T).(let TMP_634 \def +(Flat f) in (let TMP_635 \def (lift h2 d2 x2) in (let TMP_636 \def (THead +TMP_634 TMP_635 t0) in (let TMP_637 \def (lift h2 d2 t3) in (eq T TMP_636 +TMP_637)))))) in (ex2 T TMP_633 TMP_638)))) in (let TMP_640 \def (lift h2 d2 +x3) in (let TMP_652 \def (\lambda (t2: T).(let TMP_646 \def (\lambda (t3: +T).(let TMP_641 \def (Flat f) in (let TMP_642 \def (lift h1 d1 x2) in (let +TMP_643 \def (lift h1 d1 x3) in (let TMP_644 \def (THead TMP_641 TMP_642 +TMP_643) in (let TMP_645 \def (lift h1 d1 t3) in (eq T TMP_644 TMP_645))))))) +in (let TMP_651 \def (\lambda (t3: T).(let TMP_647 \def (Flat f) in (let +TMP_648 \def (lift h2 d2 x2) in (let TMP_649 \def (THead TMP_647 TMP_648 t2) +in (let TMP_650 \def (lift h2 d2 t3) in (eq T TMP_649 TMP_650)))))) in (ex2 T +TMP_646 TMP_651)))) in (let TMP_658 \def (\lambda (t2: T).(let TMP_653 \def +(Flat f) in (let TMP_654 \def (lift h1 d1 x2) in (let TMP_655 \def (lift h1 +d1 x3) in (let TMP_656 \def (THead TMP_653 TMP_654 TMP_655) in (let TMP_657 +\def (lift h1 d1 t2) in (eq T TMP_656 TMP_657))))))) in (let TMP_664 \def +(\lambda (t2: T).(let TMP_659 \def (Flat f) in (let TMP_660 \def (lift h2 d2 +x2) in (let TMP_661 \def (lift h2 d2 x3) in (let TMP_662 \def (THead TMP_659 +TMP_660 TMP_661) in (let TMP_663 \def (lift h2 d2 t2) in (eq T TMP_662 +TMP_663))))))) in (let TMP_665 \def (Flat f) in (let TMP_666 \def (THead +TMP_665 x2 x3) in (let TMP_667 \def (Flat f) in (let TMP_668 \def (lift h1 d1 +x2) in (let TMP_669 \def (lift h1 d1 x3) in (let TMP_670 \def (THead TMP_667 +TMP_668 TMP_669) in (let TMP_675 \def (\lambda (t2: T).(let TMP_671 \def +(Flat f) in (let TMP_672 \def (lift h1 d1 x2) in (let TMP_673 \def (lift h1 +d1 x3) in (let TMP_674 \def (THead TMP_671 TMP_672 TMP_673) in (eq T TMP_674 +t2)))))) in (let TMP_676 \def (Flat f) in (let TMP_677 \def (lift h1 d1 x2) +in (let TMP_678 \def (lift h1 d1 x3) in (let TMP_679 \def (THead TMP_676 +TMP_677 TMP_678) in (let TMP_680 \def (refl_equal T TMP_679) in (let TMP_681 +\def (Flat f) in (let TMP_682 \def (THead TMP_681 x2 x3) in (let TMP_683 \def +(lift h1 d1 TMP_682) in (let TMP_684 \def (lift_flat f x2 x3 h1 d1) in (let +TMP_685 \def (eq_ind_r T TMP_670 TMP_675 TMP_680 TMP_683 TMP_684) in (let +TMP_686 \def (Flat f) in (let TMP_687 \def (lift h2 d2 x2) in (let TMP_688 +\def (lift h2 d2 x3) in (let TMP_689 \def (THead TMP_686 TMP_687 TMP_688) in +(let TMP_694 \def (\lambda (t2: T).(let TMP_690 \def (Flat f) in (let TMP_691 +\def (lift h2 d2 x2) in (let TMP_692 \def (lift h2 d2 x3) in (let TMP_693 +\def (THead TMP_690 TMP_691 TMP_692) in (eq T TMP_693 t2)))))) in (let +TMP_695 \def (Flat f) in (let TMP_696 \def (lift h2 d2 x2) in (let TMP_697 +\def (lift h2 d2 x3) in (let TMP_698 \def (THead TMP_695 TMP_696 TMP_697) in +(let TMP_699 \def (refl_equal T TMP_698) in (let TMP_700 \def (Flat f) in +(let TMP_701 \def (THead TMP_700 x2 x3) in (let TMP_702 \def (lift h2 d2 +TMP_701) in (let TMP_703 \def (lift_flat f x2 x3 h2 d2) in (let TMP_704 \def +(eq_ind_r T TMP_689 TMP_694 TMP_699 TMP_702 TMP_703) in (let TMP_705 \def +(ex_intro2 T TMP_658 TMP_664 TMP_666 TMP_685 TMP_704) in (let TMP_706 \def +(eq_ind_r T TMP_640 TMP_652 TMP_705 t0 H11) in (eq_ind_r T TMP_628 TMP_639 +TMP_706 x1 H10)))))))))))))))))))))))))))))))))))))))))))) in (let TMP_708 +\def (H0 x1 h1 h2 d1 d2 H1 H7) in (let TMP_709 \def (ex2_ind T TMP_614 +TMP_616 TMP_627 TMP_707 TMP_708) in (let TMP_710 \def (eq_ind_r T TMP_602 +TMP_612 TMP_709 t H9) in (eq_ind_r T TMP_592 TMP_601 TMP_710 x0 +H8))))))))))))))))) in (let TMP_712 \def (H x0 h1 h2 d1 d2 H1 H6) in (let +TMP_713 \def (ex2_ind T TMP_580 TMP_582 TMP_591 TMP_711 TMP_712) in (eq_ind_r +T TMP_571 TMP_578 TMP_713 x H5))))))))))))))))) in (let TMP_715 \def (lift h1 +d1 t) in (let TMP_716 \def (lift h1 d1 t0) in (let TMP_717 \def (plus d2 h1) +in (let TMP_718 \def (lift_gen_flat f TMP_715 TMP_716 x h2 TMP_717 H4) in +(ex3_2_ind T T TMP_554 TMP_558 TMP_562 TMP_569 TMP_714 +TMP_718)))))))))))))))))))))))) in (K_ind TMP_331 TMP_540 TMP_719 k +H2)))))))))))))))) in (T_ind TMP_5 TMP_48 TMP_325 TMP_720 t1))))). + +theorem lifts_inj: + \forall (xs: TList).(\forall (ts: TList).(\forall (h: nat).(\forall (d: +nat).((eq TList (lifts h d xs) (lifts h d ts)) \to (eq TList xs ts))))) +\def + \lambda (xs: TList).(let TMP_1 \def (\lambda (t: TList).(\forall (ts: +TList).(\forall (h: nat).(\forall (d: nat).((eq TList (lifts h d t) (lifts h +d ts)) \to (eq TList t ts)))))) in (let TMP_11 \def (\lambda (ts: TList).(let +TMP_2 \def (\lambda (t: TList).(\forall (h: nat).(\forall (d: nat).((eq TList +(lifts h d TNil) (lifts h d t)) \to (eq TList TNil t))))) in (let TMP_3 \def +(\lambda (_: nat).(\lambda (_: nat).(\lambda (_: (eq TList TNil +TNil)).(refl_equal TList TNil)))) in (let TMP_10 \def (\lambda (t: +T).(\lambda (t0: TList).(\lambda (_: ((\forall (h: nat).(\forall (d: +nat).((eq TList TNil (lifts h d t0)) \to (eq TList TNil t0)))))).(\lambda (h: +nat).(\lambda (d: nat).(\lambda (H0: (eq TList TNil (TCons (lift h d t) +(lifts h d t0)))).(let TMP_4 \def (\lambda (ee: TList).(match ee with [TNil +\Rightarrow True | (TCons _ _) \Rightarrow False])) in (let TMP_5 \def (lift +h d t) in (let TMP_6 \def (lifts h d t0) in (let TMP_7 \def (TCons TMP_5 +TMP_6) in (let H1 \def (eq_ind TList TNil TMP_4 I TMP_7 H0) in (let TMP_8 +\def (TCons t t0) in (let TMP_9 \def (eq TList TNil TMP_8) in (False_ind +TMP_9 H1)))))))))))))) in (TList_ind TMP_2 TMP_3 TMP_10 ts))))) in (let +TMP_53 \def (\lambda (t: T).(\lambda (t0: TList).(\lambda (H: ((\forall (ts: +TList).(\forall (h: nat).(\forall (d: nat).((eq TList (lifts h d t0) (lifts h +d ts)) \to (eq TList t0 ts))))))).(\lambda (ts: TList).(let TMP_13 \def +(\lambda (t1: TList).(\forall (h: nat).(\forall (d: nat).((eq TList (lifts h +d (TCons t t0)) (lifts h d t1)) \to (let TMP_12 \def (TCons t t0) in (eq +TList TMP_12 t1)))))) in (let TMP_20 \def (\lambda (h: nat).(\lambda (d: +nat).(\lambda (H0: (eq TList (TCons (lift h d t) (lifts h d t0)) TNil)).(let +TMP_14 \def (lift h d t) in (let TMP_15 \def (lifts h d t0) in (let TMP_16 +\def (TCons TMP_14 TMP_15) in (let TMP_17 \def (\lambda (ee: TList).(match ee +with [TNil \Rightarrow False | (TCons _ _) \Rightarrow True])) in (let H1 +\def (eq_ind TList TMP_16 TMP_17 I TNil H0) in (let TMP_18 \def (TCons t t0) +in (let TMP_19 \def (eq TList TMP_18 TNil) in (False_ind TMP_19 H1))))))))))) +in (let TMP_52 \def (\lambda (t1: T).(\lambda (t2: TList).(\lambda (_: +((\forall (h: nat).(\forall (d: nat).((eq TList (TCons (lift h d t) (lifts h +d t0)) (lifts h d t2)) \to (eq TList (TCons t t0) t2)))))).(\lambda (h: +nat).(\lambda (d: nat).(\lambda (H1: (eq TList (TCons (lift h d t) (lifts h d +t0)) (TCons (lift h d t1) (lifts h d t2)))).(let TMP_27 \def (\lambda (e: +TList).(match e with [TNil \Rightarrow (let TMP_25 \def lref_map in (let +TMP_26 \def (\lambda (x: nat).(plus x h)) in (TMP_25 TMP_26 d t))) | (TCons +t3 _) \Rightarrow t3])) in (let TMP_28 \def (lift h d t) in (let TMP_29 \def +(lifts h d t0) in (let TMP_30 \def (TCons TMP_28 TMP_29) in (let TMP_31 \def +(lift h d t1) in (let TMP_32 \def (lifts h d t2) in (let TMP_33 \def (TCons +TMP_31 TMP_32) in (let H2 \def (f_equal TList T TMP_27 TMP_30 TMP_33 H1) in +(let TMP_37 \def (\lambda (e: TList).(match e with [TNil \Rightarrow (let +TMP_36 \def lifts in (TMP_36 h d t0)) | (TCons _ t3) \Rightarrow t3])) in +(let TMP_38 \def (lift h d t) in (let TMP_39 \def (lifts h d t0) in (let +TMP_40 \def (TCons TMP_38 TMP_39) in (let TMP_41 \def (lift h d t1) in (let +TMP_42 \def (lifts h d t2) in (let TMP_43 \def (TCons TMP_41 TMP_42) in (let +H3 \def (f_equal TList TList TMP_37 TMP_40 TMP_43 H1) in (let TMP_51 \def +(\lambda (H4: (eq T (lift h d t) (lift h d t1))).(let TMP_46 \def (\lambda +(t3: T).(let TMP_44 \def (TCons t t0) in (let TMP_45 \def (TCons t3 t2) in +(eq TList TMP_44 TMP_45)))) in (let TMP_47 \def (refl_equal T t) in (let +TMP_48 \def (H t2 h d H3) in (let TMP_49 \def (f_equal2 T TList TList TCons t +t t0 t2 TMP_47 TMP_48) in (let TMP_50 \def (lift_inj t t1 h d H4) in (eq_ind +T t TMP_46 TMP_49 t1 TMP_50))))))) in (TMP_51 H2)))))))))))))))))))))))) in +(TList_ind TMP_13 TMP_20 TMP_52 ts)))))))) in (TList_ind TMP_1 TMP_11 TMP_53 +xs)))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/lift/props.ma b/matita/matita/contribs/lambdadelta/basic_1/lift/props.ma index f0ed22451..97cd58e0e 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/lift/props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/lift/props.ma @@ -14,579 +14,619 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/lift/fwd.ma". +include "basic_1/lift/defs.ma". -include "Basic-1/s/props.ma". +include "basic_1/s/props.ma". + +include "basic_1/T/fwd.ma". + +theorem lift_sort: + \forall (n: nat).(\forall (h: nat).(\forall (d: nat).(eq T (lift h d (TSort +n)) (TSort n)))) +\def + \lambda (n: nat).(\lambda (_: nat).(\lambda (_: nat).(let TMP_1 \def (TSort +n) in (refl_equal T TMP_1)))). + +theorem lift_lref_lt: + \forall (n: nat).(\forall (h: nat).(\forall (d: nat).((lt n d) \to (eq T +(lift h d (TLRef n)) (TLRef n))))) +\def + \lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (lt n +d)).(let TMP_4 \def (\lambda (b: bool).(let TMP_1 \def (match b with [true +\Rightarrow n | false \Rightarrow (plus n h)]) in (let TMP_2 \def (TLRef +TMP_1) in (let TMP_3 \def (TLRef n) in (eq T TMP_2 TMP_3))))) in (let TMP_5 +\def (TLRef n) in (let TMP_6 \def (refl_equal T TMP_5) in (let TMP_7 \def +(blt n d) in (let TMP_8 \def (blt n d) in (let TMP_9 \def (lt_blt d n H) in +(let TMP_10 \def (sym_eq bool TMP_8 true TMP_9) in (eq_ind bool true TMP_4 +TMP_6 TMP_7 TMP_10))))))))))). + +theorem lift_lref_ge: + \forall (n: nat).(\forall (h: nat).(\forall (d: nat).((le d n) \to (eq T +(lift h d (TLRef n)) (TLRef (plus n h)))))) +\def + \lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (le d +n)).(let TMP_5 \def (\lambda (b: bool).(let TMP_1 \def (match b with [true +\Rightarrow n | false \Rightarrow (plus n h)]) in (let TMP_2 \def (TLRef +TMP_1) in (let TMP_3 \def (plus n h) in (let TMP_4 \def (TLRef TMP_3) in (eq +T TMP_2 TMP_4)))))) in (let TMP_6 \def (plus n h) in (let TMP_7 \def (TLRef +TMP_6) in (let TMP_8 \def (refl_equal T TMP_7) in (let TMP_9 \def (blt n d) +in (let TMP_10 \def (blt n d) in (let TMP_11 \def (le_bge d n H) in (let +TMP_12 \def (sym_eq bool TMP_10 false TMP_11) in (eq_ind bool false TMP_5 +TMP_8 TMP_9 TMP_12)))))))))))). + +theorem lift_head: + \forall (k: K).(\forall (u: T).(\forall (t: T).(\forall (h: nat).(\forall +(d: nat).(eq T (lift h d (THead k u t)) (THead k (lift h d u) (lift h (s k d) +t))))))) +\def + \lambda (k: K).(\lambda (u: T).(\lambda (t: T).(\lambda (h: nat).(\lambda +(d: nat).(let TMP_1 \def (lift h d u) in (let TMP_2 \def (s k d) in (let +TMP_3 \def (lift h TMP_2 t) in (let TMP_4 \def (THead k TMP_1 TMP_3) in +(refl_equal T TMP_4))))))))). + +theorem lift_bind: + \forall (b: B).(\forall (u: T).(\forall (t: T).(\forall (h: nat).(\forall +(d: nat).(eq T (lift h d (THead (Bind b) u t)) (THead (Bind b) (lift h d u) +(lift h (S d) t))))))) +\def + \lambda (b: B).(\lambda (u: T).(\lambda (t: T).(\lambda (h: nat).(\lambda +(d: nat).(let TMP_1 \def (Bind b) in (let TMP_2 \def (lift h d u) in (let +TMP_3 \def (S d) in (let TMP_4 \def (lift h TMP_3 t) in (let TMP_5 \def +(THead TMP_1 TMP_2 TMP_4) in (refl_equal T TMP_5)))))))))). + +theorem lift_flat: + \forall (f: F).(\forall (u: T).(\forall (t: T).(\forall (h: nat).(\forall +(d: nat).(eq T (lift h d (THead (Flat f) u t)) (THead (Flat f) (lift h d u) +(lift h d t))))))) +\def + \lambda (f: F).(\lambda (u: T).(\lambda (t: T).(\lambda (h: nat).(\lambda +(d: nat).(let TMP_1 \def (Flat f) in (let TMP_2 \def (lift h d u) in (let +TMP_3 \def (lift h d t) in (let TMP_4 \def (THead TMP_1 TMP_2 TMP_3) in +(refl_equal T TMP_4))))))))). theorem thead_x_lift_y_y: \forall (k: K).(\forall (t: T).(\forall (v: T).(\forall (h: nat).(\forall (d: nat).((eq T (THead k v (lift h d t)) t) \to (\forall (P: Prop).P)))))) \def - \lambda (k: K).(\lambda (t: T).(T_ind (\lambda (t0: T).(\forall (v: + \lambda (k: K).(\lambda (t: T).(let TMP_1 \def (\lambda (t0: T).(\forall (v: T).(\forall (h: nat).(\forall (d: nat).((eq T (THead k v (lift h d t0)) t0) -\to (\forall (P: Prop).P)))))) (\lambda (n: nat).(\lambda (v: T).(\lambda (h: -nat).(\lambda (d: nat).(\lambda (H: (eq T (THead k v (lift h d (TSort n))) -(TSort n))).(\lambda (P: Prop).(let H0 \def (eq_ind T (THead k v (lift h d -(TSort n))) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) with -[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) -\Rightarrow True])) I (TSort n) H) in (False_ind P H0)))))))) (\lambda (n: -nat).(\lambda (v: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (eq T -(THead k v (lift h d (TLRef n))) (TLRef n))).(\lambda (P: Prop).(let H0 \def -(eq_ind T (THead k v (lift h d (TLRef n))) (\lambda (ee: T).(match ee in T -return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) -\Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef n) H) in -(False_ind P H0)))))))) (\lambda (k0: K).(\lambda (t0: T).(\lambda (_: -((\forall (v: T).(\forall (h: nat).(\forall (d: nat).((eq T (THead k v (lift -h d t0)) t0) \to (\forall (P: Prop).P))))))).(\lambda (t1: T).(\lambda (H0: -((\forall (v: T).(\forall (h: nat).(\forall (d: nat).((eq T (THead k v (lift -h d t1)) t1) \to (\forall (P: Prop).P))))))).(\lambda (v: T).(\lambda (h: -nat).(\lambda (d: nat).(\lambda (H1: (eq T (THead k v (lift h d (THead k0 t0 -t1))) (THead k0 t0 t1))).(\lambda (P: Prop).(let H2 \def (f_equal T K -(\lambda (e: T).(match e in T return (\lambda (_: T).K) with [(TSort _) -\Rightarrow k | (TLRef _) \Rightarrow k | (THead k1 _ _) \Rightarrow k1])) -(THead k v (lift h d (THead k0 t0 t1))) (THead k0 t0 t1) H1) in ((let H3 \def -(f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) with -[(TSort _) \Rightarrow v | (TLRef _) \Rightarrow v | (THead _ t2 _) -\Rightarrow t2])) (THead k v (lift h d (THead k0 t0 t1))) (THead k0 t0 t1) -H1) in ((let H4 \def (f_equal T T (\lambda (e: T).(match e in T return -(\lambda (_: T).T) with [(TSort _) \Rightarrow (THead k0 ((let rec lref_map -(f: ((nat \to nat))) (d0: nat) (t2: T) on t2: T \def (match t2 with [(TSort -n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d0) -with [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k1 u t3) -\Rightarrow (THead k1 (lref_map f d0 u) (lref_map f (s k1 d0) t3))]) in -lref_map) (\lambda (x: nat).(plus x h)) d t0) ((let rec lref_map (f: ((nat -\to nat))) (d0: nat) (t2: T) on t2: T \def (match t2 with [(TSort n) -\Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d0) with -[true \Rightarrow i | false \Rightarrow (f i)])) | (THead k1 u t3) -\Rightarrow (THead k1 (lref_map f d0 u) (lref_map f (s k1 d0) t3))]) in -lref_map) (\lambda (x: nat).(plus x h)) (s k0 d) t1)) | (TLRef _) \Rightarrow -(THead k0 ((let rec lref_map (f: ((nat \to nat))) (d0: nat) (t2: T) on t2: T -\def (match t2 with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow -(TLRef (match (blt i d0) with [true \Rightarrow i | false \Rightarrow (f -i)])) | (THead k1 u t3) \Rightarrow (THead k1 (lref_map f d0 u) (lref_map f -(s k1 d0) t3))]) in lref_map) (\lambda (x: nat).(plus x h)) d t0) ((let rec -lref_map (f: ((nat \to nat))) (d0: nat) (t2: T) on t2: T \def (match t2 with -[(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i -d0) with [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k1 u t3) -\Rightarrow (THead k1 (lref_map f d0 u) (lref_map f (s k1 d0) t3))]) in -lref_map) (\lambda (x: nat).(plus x h)) (s k0 d) t1)) | (THead _ _ t2) -\Rightarrow t2])) (THead k v (lift h d (THead k0 t0 t1))) (THead k0 t0 t1) -H1) in (\lambda (_: (eq T v t0)).(\lambda (H6: (eq K k k0)).(let H7 \def -(eq_ind K k (\lambda (k1: K).(\forall (v0: T).(\forall (h0: nat).(\forall -(d0: nat).((eq T (THead k1 v0 (lift h0 d0 t1)) t1) \to (\forall (P0: -Prop).P0)))))) H0 k0 H6) in (let H8 \def (eq_ind T (lift h d (THead k0 t0 -t1)) (\lambda (t2: T).(eq T t2 t1)) H4 (THead k0 (lift h d t0) (lift h (s k0 -d) t1)) (lift_head k0 t0 t1 h d)) in (H7 (lift h d t0) h (s k0 d) H8 P)))))) -H3)) H2)))))))))))) t)). -(* COMMENTS -Initial nodes: 887 -END *) +\to (\forall (P: Prop).P)))))) in (let TMP_7 \def (\lambda (n: nat).(\lambda +(v: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (eq T (THead k v +(lift h d (TSort n))) (TSort n))).(\lambda (P: Prop).(let TMP_2 \def (TSort +n) in (let TMP_3 \def (lift h d TMP_2) in (let TMP_4 \def (THead k v TMP_3) +in (let TMP_5 \def (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow +False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) in +(let TMP_6 \def (TSort n) in (let H0 \def (eq_ind T TMP_4 TMP_5 I TMP_6 H) in +(False_ind P H0))))))))))))) in (let TMP_13 \def (\lambda (n: nat).(\lambda +(v: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (eq T (THead k v +(lift h d (TLRef n))) (TLRef n))).(\lambda (P: Prop).(let TMP_8 \def (TLRef +n) in (let TMP_9 \def (lift h d TMP_8) in (let TMP_10 \def (THead k v TMP_9) +in (let TMP_11 \def (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow +False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) in +(let TMP_12 \def (TLRef n) in (let H0 \def (eq_ind T TMP_10 TMP_11 I TMP_12 +H) in (False_ind P H0))))))))))))) in (let TMP_72 \def (\lambda (k0: +K).(\lambda (t0: T).(\lambda (_: ((\forall (v: T).(\forall (h: nat).(\forall +(d: nat).((eq T (THead k v (lift h d t0)) t0) \to (\forall (P: +Prop).P))))))).(\lambda (t1: T).(\lambda (H0: ((\forall (v: T).(\forall (h: +nat).(\forall (d: nat).((eq T (THead k v (lift h d t1)) t1) \to (\forall (P: +Prop).P))))))).(\lambda (v: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda +(H1: (eq T (THead k v (lift h d (THead k0 t0 t1))) (THead k0 t0 +t1))).(\lambda (P: Prop).(let TMP_14 \def (\lambda (e: T).(match e with +[(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k1 _ _) +\Rightarrow k1])) in (let TMP_15 \def (THead k0 t0 t1) in (let TMP_16 \def +(lift h d TMP_15) in (let TMP_17 \def (THead k v TMP_16) in (let TMP_18 \def +(THead k0 t0 t1) in (let H2 \def (f_equal T K TMP_14 TMP_17 TMP_18 H1) in +(let TMP_19 \def (\lambda (e: T).(match e with [(TSort _) \Rightarrow v | +(TLRef _) \Rightarrow v | (THead _ t2 _) \Rightarrow t2])) in (let TMP_20 +\def (THead k0 t0 t1) in (let TMP_21 \def (lift h d TMP_20) in (let TMP_22 +\def (THead k v TMP_21) in (let TMP_23 \def (THead k0 t0 t1) in (let H3 \def +(f_equal T T TMP_19 TMP_22 TMP_23 H1) in (let TMP_54 \def (\lambda (e: +T).(match e with [(TSort _) \Rightarrow (let TMP_43 \def lref_map in (let +TMP_44 \def (\lambda (x: nat).(plus x h)) in (let TMP_45 \def (TMP_43 TMP_44 +d t0) in (let TMP_50 \def lref_map in (let TMP_51 \def (\lambda (x: +nat).(plus x h)) in (let TMP_52 \def (s k0 d) in (let TMP_53 \def (TMP_50 +TMP_51 TMP_52 t1) in (THead k0 TMP_45 TMP_53)))))))) | (TLRef _) \Rightarrow +(let TMP_28 \def lref_map in (let TMP_29 \def (\lambda (x: nat).(plus x h)) +in (let TMP_30 \def (TMP_28 TMP_29 d t0) in (let TMP_35 \def lref_map in (let +TMP_36 \def (\lambda (x: nat).(plus x h)) in (let TMP_37 \def (s k0 d) in +(let TMP_38 \def (TMP_35 TMP_36 TMP_37 t1) in (THead k0 TMP_30 TMP_38)))))))) +| (THead _ _ t2) \Rightarrow t2])) in (let TMP_55 \def (THead k0 t0 t1) in +(let TMP_56 \def (lift h d TMP_55) in (let TMP_57 \def (THead k v TMP_56) in +(let TMP_58 \def (THead k0 t0 t1) in (let H4 \def (f_equal T T TMP_54 TMP_57 +TMP_58 H1) in (let TMP_70 \def (\lambda (_: (eq T v t0)).(\lambda (H6: (eq K +k k0)).(let TMP_59 \def (\lambda (k1: K).(\forall (v0: T).(\forall (h0: +nat).(\forall (d0: nat).((eq T (THead k1 v0 (lift h0 d0 t1)) t1) \to (\forall +(P0: Prop).P0)))))) in (let H7 \def (eq_ind K k TMP_59 H0 k0 H6) in (let +TMP_60 \def (THead k0 t0 t1) in (let TMP_61 \def (lift h d TMP_60) in (let +TMP_62 \def (\lambda (t2: T).(eq T t2 t1)) in (let TMP_63 \def (lift h d t0) +in (let TMP_64 \def (s k0 d) in (let TMP_65 \def (lift h TMP_64 t1) in (let +TMP_66 \def (THead k0 TMP_63 TMP_65) in (let TMP_67 \def (lift_head k0 t0 t1 +h d) in (let H8 \def (eq_ind T TMP_61 TMP_62 H4 TMP_66 TMP_67) in (let TMP_68 +\def (lift h d t0) in (let TMP_69 \def (s k0 d) in (H7 TMP_68 h TMP_69 H8 +P)))))))))))))))) in (let TMP_71 \def (TMP_70 H3) in (TMP_71 +H2))))))))))))))))))))))))))))))) in (T_ind TMP_1 TMP_7 TMP_13 TMP_72 t)))))). theorem lift_r: \forall (t: T).(\forall (d: nat).(eq T (lift O d t) t)) \def - \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (d: nat).(eq T (lift O d t0) -t0))) (\lambda (n: nat).(\lambda (_: nat).(refl_equal T (TSort n)))) (\lambda -(n: nat).(\lambda (d: nat).(lt_le_e n d (eq T (lift O d (TLRef n)) (TLRef n)) -(\lambda (H: (lt n d)).(eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T t0 (TLRef -n))) (refl_equal T (TLRef n)) (lift O d (TLRef n)) (lift_lref_lt n O d H))) -(\lambda (H: (le d n)).(eq_ind_r T (TLRef (plus n O)) (\lambda (t0: T).(eq T -t0 (TLRef n))) (f_equal nat T TLRef (plus n O) n (sym_eq nat n (plus n O) -(plus_n_O n))) (lift O d (TLRef n)) (lift_lref_ge n O d H)))))) (\lambda (k: -K).(\lambda (t0: T).(\lambda (H: ((\forall (d: nat).(eq T (lift O d t0) -t0)))).(\lambda (t1: T).(\lambda (H0: ((\forall (d: nat).(eq T (lift O d t1) -t1)))).(\lambda (d: nat).(eq_ind_r T (THead k (lift O d t0) (lift O (s k d) -t1)) (\lambda (t2: T).(eq T t2 (THead k t0 t1))) (f_equal3 K T T T THead k k -(lift O d t0) t0 (lift O (s k d) t1) t1 (refl_equal K k) (H d) (H0 (s k d))) -(lift O d (THead k t0 t1)) (lift_head k t0 t1 O d)))))))) t). -(* COMMENTS -Initial nodes: 367 -END *) + \lambda (t: T).(let TMP_2 \def (\lambda (t0: T).(\forall (d: nat).(let TMP_1 +\def (lift O d t0) in (eq T TMP_1 t0)))) in (let TMP_4 \def (\lambda (n: +nat).(\lambda (_: nat).(let TMP_3 \def (TSort n) in (refl_equal T TMP_3)))) +in (let TMP_31 \def (\lambda (n: nat).(\lambda (d: nat).(let TMP_5 \def +(TLRef n) in (let TMP_6 \def (lift O d TMP_5) in (let TMP_7 \def (TLRef n) in +(let TMP_8 \def (eq T TMP_6 TMP_7) in (let TMP_17 \def (\lambda (H: (lt n +d)).(let TMP_9 \def (TLRef n) in (let TMP_11 \def (\lambda (t0: T).(let +TMP_10 \def (TLRef n) in (eq T t0 TMP_10))) in (let TMP_12 \def (TLRef n) in +(let TMP_13 \def (refl_equal T TMP_12) in (let TMP_14 \def (TLRef n) in (let +TMP_15 \def (lift O d TMP_14) in (let TMP_16 \def (lift_lref_lt n O d H) in +(eq_ind_r T TMP_9 TMP_11 TMP_13 TMP_15 TMP_16))))))))) in (let TMP_30 \def +(\lambda (H: (le d n)).(let TMP_18 \def (plus n O) in (let TMP_19 \def (TLRef +TMP_18) in (let TMP_21 \def (\lambda (t0: T).(let TMP_20 \def (TLRef n) in +(eq T t0 TMP_20))) in (let TMP_22 \def (plus n O) in (let TMP_23 \def (plus n +O) in (let TMP_24 \def (plus_n_O n) in (let TMP_25 \def (sym_eq nat n TMP_23 +TMP_24) in (let TMP_26 \def (f_equal nat T TLRef TMP_22 n TMP_25) in (let +TMP_27 \def (TLRef n) in (let TMP_28 \def (lift O d TMP_27) in (let TMP_29 +\def (lift_lref_ge n O d H) in (eq_ind_r T TMP_19 TMP_21 TMP_26 TMP_28 +TMP_29))))))))))))) in (lt_le_e n d TMP_8 TMP_17 TMP_30))))))))) in (let +TMP_61 \def (\lambda (k: K).(\lambda (t0: T).(\lambda (H: ((\forall (d: +nat).(eq T (lift O d t0) t0)))).(\lambda (t1: T).(\lambda (H0: ((\forall (d: +nat).(eq T (lift O d t1) t1)))).(\lambda (d: nat).(let TMP_32 \def (lift O d +t0) in (let TMP_33 \def (s k d) in (let TMP_34 \def (lift O TMP_33 t1) in +(let TMP_35 \def (THead k TMP_32 TMP_34) in (let TMP_37 \def (\lambda (t2: +T).(let TMP_36 \def (THead k t0 t1) in (eq T t2 TMP_36))) in (let TMP_38 \def +(THead k t0 t1) in (let TMP_39 \def (lift O d t0) in (let TMP_40 \def (s k d) +in (let TMP_41 \def (lift O TMP_40 t1) in (let TMP_42 \def (THead k TMP_39 +TMP_41) in (let TMP_43 \def (lift O d t0) in (let TMP_44 \def (s k d) in (let +TMP_45 \def (lift O TMP_44 t1) in (let TMP_46 \def (THead k TMP_43 TMP_45) in +(let TMP_47 \def (THead k t0 t1) in (let TMP_48 \def (lift O d t0) in (let +TMP_49 \def (s k d) in (let TMP_50 \def (lift O TMP_49 t1) in (let TMP_51 +\def (refl_equal K k) in (let TMP_52 \def (H d) in (let TMP_53 \def (s k d) +in (let TMP_54 \def (H0 TMP_53) in (let TMP_55 \def (f_equal3 K T T T THead k +k TMP_48 t0 TMP_50 t1 TMP_51 TMP_52 TMP_54) in (let TMP_56 \def (sym_eq T +TMP_46 TMP_47 TMP_55) in (let TMP_57 \def (sym_eq T TMP_38 TMP_42 TMP_56) in +(let TMP_58 \def (THead k t0 t1) in (let TMP_59 \def (lift O d TMP_58) in +(let TMP_60 \def (lift_head k t0 t1 O d) in (eq_ind_r T TMP_35 TMP_37 TMP_57 +TMP_59 TMP_60))))))))))))))))))))))))))))))))))) in (T_ind TMP_2 TMP_4 TMP_31 +TMP_61 t))))). theorem lift_lref_gt: \forall (d: nat).(\forall (n: nat).((lt d n) \to (eq T (lift (S O) d (TLRef (pred n))) (TLRef n)))) \def - \lambda (d: nat).(\lambda (n: nat).(\lambda (H: (lt d n)).(eq_ind_r T (TLRef -(plus (pred n) (S O))) (\lambda (t: T).(eq T t (TLRef n))) (eq_ind nat (plus -(S O) (pred n)) (\lambda (n0: nat).(eq T (TLRef n0) (TLRef n))) (eq_ind nat n -(\lambda (n0: nat).(eq T (TLRef n0) (TLRef n))) (refl_equal T (TLRef n)) (S -(pred n)) (S_pred n d H)) (plus (pred n) (S O)) (plus_sym (S O) (pred n))) -(lift (S O) d (TLRef (pred n))) (lift_lref_ge (pred n) (S O) d (le_S_n d -(pred n) (eq_ind nat n (\lambda (n0: nat).(le (S d) n0)) H (S (pred n)) -(S_pred n d H))))))). -(* COMMENTS -Initial nodes: 193 -END *) + \lambda (d: nat).(\lambda (n: nat).(\lambda (H: (lt d n)).(let TMP_1 \def +(pred n) in (let TMP_2 \def (S O) in (let TMP_3 \def (plus TMP_1 TMP_2) in +(let TMP_4 \def (TLRef TMP_3) in (let TMP_6 \def (\lambda (t: T).(let TMP_5 +\def (TLRef n) in (eq T t TMP_5))) in (let TMP_7 \def (S O) in (let TMP_8 +\def (pred n) in (let TMP_9 \def (plus TMP_7 TMP_8) in (let TMP_12 \def +(\lambda (n0: nat).(let TMP_10 \def (TLRef n0) in (let TMP_11 \def (TLRef n) +in (eq T TMP_10 TMP_11)))) in (let TMP_15 \def (\lambda (n0: nat).(let TMP_13 +\def (TLRef n0) in (let TMP_14 \def (TLRef n) in (eq T TMP_13 TMP_14)))) in +(let TMP_16 \def (TLRef n) in (let TMP_17 \def (refl_equal T TMP_16) in (let +TMP_18 \def (pred n) in (let TMP_19 \def (S TMP_18) in (let TMP_20 \def +(S_pred n d H) in (let TMP_21 \def (eq_ind nat n TMP_15 TMP_17 TMP_19 TMP_20) +in (let TMP_22 \def (pred n) in (let TMP_23 \def (S O) in (let TMP_24 \def +(plus TMP_22 TMP_23) in (let TMP_25 \def (S O) in (let TMP_26 \def (pred n) +in (let TMP_27 \def (plus_sym TMP_25 TMP_26) in (let TMP_28 \def (eq_ind nat +TMP_9 TMP_12 TMP_21 TMP_24 TMP_27) in (let TMP_29 \def (S O) in (let TMP_30 +\def (pred n) in (let TMP_31 \def (TLRef TMP_30) in (let TMP_32 \def (lift +TMP_29 d TMP_31) in (let TMP_33 \def (pred n) in (let TMP_34 \def (S O) in +(let TMP_35 \def (pred n) in (let TMP_37 \def (\lambda (n0: nat).(let TMP_36 +\def (S d) in (le TMP_36 n0))) in (let TMP_38 \def (pred n) in (let TMP_39 +\def (S TMP_38) in (let TMP_40 \def (S_pred n d H) in (let TMP_41 \def +(eq_ind nat n TMP_37 H TMP_39 TMP_40) in (let TMP_42 \def (le_S_n d TMP_35 +TMP_41) in (let TMP_43 \def (lift_lref_ge TMP_33 TMP_34 d TMP_42) in +(eq_ind_r T TMP_4 TMP_6 TMP_28 TMP_32 +TMP_43)))))))))))))))))))))))))))))))))))))))). + +theorem lift_tle: + \forall (t: T).(\forall (h: nat).(\forall (d: nat).(tle t (lift h d t)))) +\def + \lambda (t: T).(let TMP_4 \def (\lambda (t0: T).(\forall (h: nat).(\forall +(d: nat).(let TMP_1 \def (tweight t0) in (let TMP_2 \def (lift h d t0) in +(let TMP_3 \def (tweight TMP_2) in (le TMP_1 TMP_3))))))) in (let TMP_6 \def +(\lambda (_: nat).(\lambda (_: nat).(\lambda (_: nat).(let TMP_5 \def (S O) +in (le_n TMP_5))))) in (let TMP_8 \def (\lambda (_: nat).(\lambda (_: +nat).(\lambda (_: nat).(let TMP_7 \def (S O) in (le_n TMP_7))))) in (let +TMP_31 \def (\lambda (k: K).(\lambda (t0: T).(\lambda (H: ((\forall (h: +nat).(\forall (d: nat).(le (tweight t0) (tweight (lift h d t0))))))).(\lambda +(t1: T).(\lambda (H0: ((\forall (h: nat).(\forall (d: nat).(le (tweight t1) +(tweight (lift h d t1))))))).(\lambda (h: nat).(\lambda (d: nat).(let H_y +\def (H h d) in (let TMP_9 \def (s k d) in (let H_y0 \def (H0 h TMP_9) in +(let TMP_10 \def (tweight t0) in (let TMP_11 \def (tweight t1) in (let TMP_12 +\def (plus TMP_10 TMP_11) in (let TMP_13 \def (\lambda (x: nat).(plus x h)) +in (let TMP_14 \def (lref_map TMP_13 d t0) in (let TMP_15 \def (tweight +TMP_14) in (let TMP_16 \def (\lambda (x: nat).(plus x h)) in (let TMP_17 \def +(s k d) in (let TMP_18 \def (lref_map TMP_16 TMP_17 t1) in (let TMP_19 \def +(tweight TMP_18) in (let TMP_20 \def (plus TMP_15 TMP_19) in (let TMP_21 \def +(tweight t0) in (let TMP_22 \def (\lambda (x: nat).(plus x h)) in (let TMP_23 +\def (lref_map TMP_22 d t0) in (let TMP_24 \def (tweight TMP_23) in (let +TMP_25 \def (tweight t1) in (let TMP_26 \def (\lambda (x: nat).(plus x h)) in +(let TMP_27 \def (s k d) in (let TMP_28 \def (lref_map TMP_26 TMP_27 t1) in +(let TMP_29 \def (tweight TMP_28) in (let TMP_30 \def (le_plus_plus TMP_21 +TMP_24 TMP_25 TMP_29 H_y H_y0) in (le_n_S TMP_12 TMP_20 +TMP_30)))))))))))))))))))))))))))))))) in (T_ind TMP_4 TMP_6 TMP_8 TMP_31 +t))))). theorem lifts_tapp: \forall (h: nat).(\forall (d: nat).(\forall (v: T).(\forall (vs: TList).(eq TList (lifts h d (TApp vs v)) (TApp (lifts h d vs) (lift h d v)))))) \def - \lambda (h: nat).(\lambda (d: nat).(\lambda (v: T).(\lambda (vs: -TList).(TList_ind (\lambda (t: TList).(eq TList (lifts h d (TApp t v)) (TApp -(lifts h d t) (lift h d v)))) (refl_equal TList (TCons (lift h d v) TNil)) -(\lambda (t: T).(\lambda (t0: TList).(\lambda (H: (eq TList (lifts h d (TApp -t0 v)) (TApp (lifts h d t0) (lift h d v)))).(eq_ind_r TList (TApp (lifts h d -t0) (lift h d v)) (\lambda (t1: TList).(eq TList (TCons (lift h d t) t1) -(TCons (lift h d t) (TApp (lifts h d t0) (lift h d v))))) (refl_equal TList -(TCons (lift h d t) (TApp (lifts h d t0) (lift h d v)))) (lifts h d (TApp t0 -v)) H)))) vs)))). -(* COMMENTS -Initial nodes: 215 -END *) - -theorem lift_inj: - \forall (x: T).(\forall (t: T).(\forall (h: nat).(\forall (d: nat).((eq T -(lift h d x) (lift h d t)) \to (eq T x t))))) -\def - \lambda (x: T).(T_ind (\lambda (t: T).(\forall (t0: T).(\forall (h: -nat).(\forall (d: nat).((eq T (lift h d t) (lift h d t0)) \to (eq T t -t0)))))) (\lambda (n: nat).(\lambda (t: T).(\lambda (h: nat).(\lambda (d: -nat).(\lambda (H: (eq T (lift h d (TSort n)) (lift h d t))).(let H0 \def -(eq_ind T (lift h d (TSort n)) (\lambda (t0: T).(eq T t0 (lift h d t))) H -(TSort n) (lift_sort n h d)) in (sym_eq T t (TSort n) (lift_gen_sort h d n t -H0)))))))) (\lambda (n: nat).(\lambda (t: T).(\lambda (h: nat).(\lambda (d: -nat).(\lambda (H: (eq T (lift h d (TLRef n)) (lift h d t))).(lt_le_e n d (eq -T (TLRef n) t) (\lambda (H0: (lt n d)).(let H1 \def (eq_ind T (lift h d -(TLRef n)) (\lambda (t0: T).(eq T t0 (lift h d t))) H (TLRef n) (lift_lref_lt -n h d H0)) in (sym_eq T t (TLRef n) (lift_gen_lref_lt h d n (lt_le_trans n d -d H0 (le_n d)) t H1)))) (\lambda (H0: (le d n)).(let H1 \def (eq_ind T (lift -h d (TLRef n)) (\lambda (t0: T).(eq T t0 (lift h d t))) H (TLRef (plus n h)) -(lift_lref_ge n h d H0)) in (sym_eq T t (TLRef n) (lift_gen_lref_ge h d n H0 -t H1)))))))))) (\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (t: -T).(((\forall (t0: T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t) -(lift h d t0)) \to (eq T t t0)))))) \to (\forall (t0: T).(((\forall (t1: -T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t1)) -\to (eq T t0 t1)))))) \to (\forall (t1: T).(\forall (h: nat).(\forall (d: -nat).((eq T (lift h d (THead k0 t t0)) (lift h d t1)) \to (eq T (THead k0 t -t0) t1)))))))))) (\lambda (b: B).(\lambda (t: T).(\lambda (H: ((\forall (t0: -T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t) (lift h d t0)) \to -(eq T t t0))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (t1: T).(\forall -(h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t1)) \to (eq T t0 -t1))))))).(\lambda (t1: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1: -(eq T (lift h d (THead (Bind b) t t0)) (lift h d t1))).(let H2 \def (eq_ind T -(lift h d (THead (Bind b) t t0)) (\lambda (t2: T).(eq T t2 (lift h d t1))) H1 -(THead (Bind b) (lift h d t) (lift h (S d) t0)) (lift_bind b t t0 h d)) in -(ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T t1 (THead (Bind b) y -z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d t) (lift h d y)))) -(\lambda (_: T).(\lambda (z: T).(eq T (lift h (S d) t0) (lift h (S d) z)))) -(eq T (THead (Bind b) t t0) t1) (\lambda (x0: T).(\lambda (x1: T).(\lambda -(H3: (eq T t1 (THead (Bind b) x0 x1))).(\lambda (H4: (eq T (lift h d t) (lift -h d x0))).(\lambda (H5: (eq T (lift h (S d) t0) (lift h (S d) x1))).(eq_ind_r -T (THead (Bind b) x0 x1) (\lambda (t2: T).(eq T (THead (Bind b) t t0) t2)) -(f_equal3 K T T T THead (Bind b) (Bind b) t x0 t0 x1 (refl_equal K (Bind b)) -(H x0 h d H4) (H0 x1 h (S d) H5)) t1 H3)))))) (lift_gen_bind b (lift h d t) -(lift h (S d) t0) t1 h d H2)))))))))))) (\lambda (f: F).(\lambda (t: -T).(\lambda (H: ((\forall (t0: T).(\forall (h: nat).(\forall (d: nat).((eq T -(lift h d t) (lift h d t0)) \to (eq T t t0))))))).(\lambda (t0: T).(\lambda -(H0: ((\forall (t1: T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d -t0) (lift h d t1)) \to (eq T t0 t1))))))).(\lambda (t1: T).(\lambda (h: -nat).(\lambda (d: nat).(\lambda (H1: (eq T (lift h d (THead (Flat f) t t0)) -(lift h d t1))).(let H2 \def (eq_ind T (lift h d (THead (Flat f) t t0)) -(\lambda (t2: T).(eq T t2 (lift h d t1))) H1 (THead (Flat f) (lift h d t) -(lift h d t0)) (lift_flat f t t0 h d)) in (ex3_2_ind T T (\lambda (y: -T).(\lambda (z: T).(eq T t1 (THead (Flat f) y z)))) (\lambda (y: T).(\lambda -(_: T).(eq T (lift h d t) (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq -T (lift h d t0) (lift h d z)))) (eq T (THead (Flat f) t t0) t1) (\lambda (x0: -T).(\lambda (x1: T).(\lambda (H3: (eq T t1 (THead (Flat f) x0 x1))).(\lambda -(H4: (eq T (lift h d t) (lift h d x0))).(\lambda (H5: (eq T (lift h d t0) -(lift h d x1))).(eq_ind_r T (THead (Flat f) x0 x1) (\lambda (t2: T).(eq T -(THead (Flat f) t t0) t2)) (f_equal3 K T T T THead (Flat f) (Flat f) t x0 t0 -x1 (refl_equal K (Flat f)) (H x0 h d H4) (H0 x1 h d H5)) t1 H3)))))) -(lift_gen_flat f (lift h d t) (lift h d t0) t1 h d H2)))))))))))) k)) x). -(* COMMENTS -Initial nodes: 1391 -END *) - -theorem lift_gen_lift: - \forall (t1: T).(\forall (x: T).(\forall (h1: nat).(\forall (h2: -nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to ((eq T (lift h1 d1 -t1) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1 -t2))) (\lambda (t2: T).(eq T t1 (lift h2 d2 t2))))))))))) -\def - \lambda (t1: T).(T_ind (\lambda (t: T).(\forall (x: T).(\forall (h1: -nat).(\forall (h2: nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to -((eq T (lift h1 d1 t) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: -T).(eq T x (lift h1 d1 t2))) (\lambda (t2: T).(eq T t (lift h2 d2 -t2)))))))))))) (\lambda (n: nat).(\lambda (x: T).(\lambda (h1: nat).(\lambda -(h2: nat).(\lambda (d1: nat).(\lambda (d2: nat).(\lambda (_: (le d1 -d2)).(\lambda (H0: (eq T (lift h1 d1 (TSort n)) (lift h2 (plus d2 h1) -x))).(let H1 \def (eq_ind T (lift h1 d1 (TSort n)) (\lambda (t: T).(eq T t -(lift h2 (plus d2 h1) x))) H0 (TSort n) (lift_sort n h1 d1)) in (eq_ind_r T -(TSort n) (\lambda (t: T).(ex2 T (\lambda (t2: T).(eq T t (lift h1 d1 t2))) -(\lambda (t2: T).(eq T (TSort n) (lift h2 d2 t2))))) (ex_intro2 T (\lambda -(t2: T).(eq T (TSort n) (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TSort n) -(lift h2 d2 t2))) (TSort n) (eq_ind_r T (TSort n) (\lambda (t: T).(eq T -(TSort n) t)) (refl_equal T (TSort n)) (lift h1 d1 (TSort n)) (lift_sort n h1 -d1)) (eq_ind_r T (TSort n) (\lambda (t: T).(eq T (TSort n) t)) (refl_equal T -(TSort n)) (lift h2 d2 (TSort n)) (lift_sort n h2 d2))) x (lift_gen_sort h2 -(plus d2 h1) n x H1))))))))))) (\lambda (n: nat).(\lambda (x: T).(\lambda -(h1: nat).(\lambda (h2: nat).(\lambda (d1: nat).(\lambda (d2: nat).(\lambda -(H: (le d1 d2)).(\lambda (H0: (eq T (lift h1 d1 (TLRef n)) (lift h2 (plus d2 -h1) x))).(lt_le_e n d1 (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1 t2))) -(\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2)))) (\lambda (H1: (lt n -d1)).(let H2 \def (eq_ind T (lift h1 d1 (TLRef n)) (\lambda (t: T).(eq T t -(lift h2 (plus d2 h1) x))) H0 (TLRef n) (lift_lref_lt n h1 d1 H1)) in -(eq_ind_r T (TLRef n) (\lambda (t: T).(ex2 T (\lambda (t2: T).(eq T t (lift -h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2))))) (ex_intro2 T -(\lambda (t2: T).(eq T (TLRef n) (lift h1 d1 t2))) (\lambda (t2: T).(eq T -(TLRef n) (lift h2 d2 t2))) (TLRef n) (eq_ind_r T (TLRef n) (\lambda (t: -T).(eq T (TLRef n) t)) (refl_equal T (TLRef n)) (lift h1 d1 (TLRef n)) -(lift_lref_lt n h1 d1 H1)) (eq_ind_r T (TLRef n) (\lambda (t: T).(eq T (TLRef -n) t)) (refl_equal T (TLRef n)) (lift h2 d2 (TLRef n)) (lift_lref_lt n h2 d2 -(lt_le_trans n d1 d2 H1 H)))) x (lift_gen_lref_lt h2 (plus d2 h1) n -(lt_le_trans n d1 (plus d2 h1) H1 (le_plus_trans d1 d2 h1 H)) x H2)))) -(\lambda (H1: (le d1 n)).(let H2 \def (eq_ind T (lift h1 d1 (TLRef n)) -(\lambda (t: T).(eq T t (lift h2 (plus d2 h1) x))) H0 (TLRef (plus n h1)) -(lift_lref_ge n h1 d1 H1)) in (lt_le_e n d2 (ex2 T (\lambda (t2: T).(eq T x -(lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2)))) -(\lambda (H3: (lt n d2)).(eq_ind_r T (TLRef (plus n h1)) (\lambda (t: T).(ex2 -T (\lambda (t2: T).(eq T t (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) -(lift h2 d2 t2))))) (ex_intro2 T (\lambda (t2: T).(eq T (TLRef (plus n h1)) -(lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2))) (TLRef -n) (eq_ind_r T (TLRef (plus n h1)) (\lambda (t: T).(eq T (TLRef (plus n h1)) -t)) (refl_equal T (TLRef (plus n h1))) (lift h1 d1 (TLRef n)) (lift_lref_ge n -h1 d1 H1)) (eq_ind_r T (TLRef n) (\lambda (t: T).(eq T (TLRef n) t)) -(refl_equal T (TLRef n)) (lift h2 d2 (TLRef n)) (lift_lref_lt n h2 d2 H3))) x -(lift_gen_lref_lt h2 (plus d2 h1) (plus n h1) (lt_reg_r n d2 h1 H3) x H2))) -(\lambda (H3: (le d2 n)).(lt_le_e n (plus d2 h2) (ex2 T (\lambda (t2: T).(eq -T x (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2)))) -(\lambda (H4: (lt n (plus d2 h2))).(lift_gen_lref_false h2 (plus d2 h1) (plus -n h1) (le_plus_plus d2 n h1 h1 H3 (le_n h1)) (eq_ind_r nat (plus (plus d2 h2) -h1) (\lambda (n0: nat).(lt (plus n h1) n0)) (lt_reg_r n (plus d2 h2) h1 H4) -(plus (plus d2 h1) h2) (plus_permute_2_in_3 d2 h1 h2)) x H2 (ex2 T (\lambda -(t2: T).(eq T x (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 -d2 t2)))))) (\lambda (H4: (le (plus d2 h2) n)).(let H5 \def (eq_ind nat (plus -n h1) (\lambda (n0: nat).(eq T (TLRef n0) (lift h2 (plus d2 h1) x))) H2 (plus -(minus (plus n h1) h2) h2) (le_plus_minus_sym h2 (plus n h1) (le_plus_trans -h2 n h1 (le_trans h2 (plus d2 h2) n (le_plus_r d2 h2) H4)))) in (eq_ind_r T -(TLRef (minus (plus n h1) h2)) (\lambda (t: T).(ex2 T (\lambda (t2: T).(eq T -t (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2))))) -(ex_intro2 T (\lambda (t2: T).(eq T (TLRef (minus (plus n h1) h2)) (lift h1 -d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2))) (TLRef (minus n -h2)) (eq_ind_r nat (plus (minus n h2) h1) (\lambda (n0: nat).(eq T (TLRef n0) -(lift h1 d1 (TLRef (minus n h2))))) (eq_ind_r T (TLRef (plus (minus n h2) -h1)) (\lambda (t: T).(eq T (TLRef (plus (minus n h2) h1)) t)) (refl_equal T -(TLRef (plus (minus n h2) h1))) (lift h1 d1 (TLRef (minus n h2))) -(lift_lref_ge (minus n h2) h1 d1 (le_trans d1 d2 (minus n h2) H (le_minus d2 -n h2 H4)))) (minus (plus n h1) h2) (le_minus_plus h2 n (le_trans h2 (plus d2 -h2) n (le_plus_r d2 h2) H4) h1)) (eq_ind_r nat (plus (minus n h2) h2) -(\lambda (n0: nat).(eq T (TLRef n0) (lift h2 d2 (TLRef (minus n0 h2))))) -(eq_ind_r T (TLRef (plus (minus (plus (minus n h2) h2) h2) h2)) (\lambda (t: -T).(eq T (TLRef (plus (minus n h2) h2)) t)) (f_equal nat T TLRef (plus (minus -n h2) h2) (plus (minus (plus (minus n h2) h2) h2) h2) (f_equal2 nat nat nat -plus (minus n h2) (minus (plus (minus n h2) h2) h2) h2 h2 (sym_eq nat (minus -(plus (minus n h2) h2) h2) (minus n h2) (minus_plus_r (minus n h2) h2)) -(refl_equal nat h2))) (lift h2 d2 (TLRef (minus (plus (minus n h2) h2) h2))) -(lift_lref_ge (minus (plus (minus n h2) h2) h2) h2 d2 (le_minus d2 (plus -(minus n h2) h2) h2 (le_plus_plus d2 (minus n h2) h2 h2 (le_minus d2 n h2 H4) -(le_n h2))))) n (le_plus_minus_sym h2 n (le_trans h2 (plus d2 h2) n -(le_plus_r d2 h2) H4)))) x (lift_gen_lref_ge h2 (plus d2 h1) (minus (plus n -h1) h2) (arith0 h2 d2 n H4 h1) x H5)))))))))))))))))) (\lambda (k: -K).(\lambda (t: T).(\lambda (H: ((\forall (x: T).(\forall (h1: nat).(\forall -(h2: nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to ((eq T (lift -h1 d1 t) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T x (lift -h1 d1 t2))) (\lambda (t2: T).(eq T t (lift h2 d2 t2))))))))))))).(\lambda -(t0: T).(\lambda (H0: ((\forall (x: T).(\forall (h1: nat).(\forall (h2: -nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to ((eq T (lift h1 d1 -t0) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1 -t2))) (\lambda (t2: T).(eq T t0 (lift h2 d2 t2))))))))))))).(\lambda (x: -T).(\lambda (h1: nat).(\lambda (h2: nat).(\lambda (d1: nat).(\lambda (d2: -nat).(\lambda (H1: (le d1 d2)).(\lambda (H2: (eq T (lift h1 d1 (THead k t -t0)) (lift h2 (plus d2 h1) x))).(K_ind (\lambda (k0: K).((eq T (lift h1 d1 -(THead k0 t t0)) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T -x (lift h1 d1 t2))) (\lambda (t2: T).(eq T (THead k0 t t0) (lift h2 d2 -t2)))))) (\lambda (b: B).(\lambda (H3: (eq T (lift h1 d1 (THead (Bind b) t -t0)) (lift h2 (plus d2 h1) x))).(let H4 \def (eq_ind T (lift h1 d1 (THead -(Bind b) t t0)) (\lambda (t2: T).(eq T t2 (lift h2 (plus d2 h1) x))) H3 -(THead (Bind b) (lift h1 d1 t) (lift h1 (S d1) t0)) (lift_bind b t t0 h1 d1)) -in (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x (THead (Bind b) y -z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h1 d1 t) (lift h2 (plus d2 -h1) y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h1 (S d1) t0) (lift h2 -(S (plus d2 h1)) z)))) (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1 t2))) -(\lambda (t2: T).(eq T (THead (Bind b) t t0) (lift h2 d2 t2)))) (\lambda (x0: -T).(\lambda (x1: T).(\lambda (H5: (eq T x (THead (Bind b) x0 x1))).(\lambda -(H6: (eq T (lift h1 d1 t) (lift h2 (plus d2 h1) x0))).(\lambda (H7: (eq T -(lift h1 (S d1) t0) (lift h2 (S (plus d2 h1)) x1))).(eq_ind_r T (THead (Bind -b) x0 x1) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T t2 (lift h1 d1 t3))) -(\lambda (t3: T).(eq T (THead (Bind b) t t0) (lift h2 d2 t3))))) (ex2_ind T -(\lambda (t2: T).(eq T x0 (lift h1 d1 t2))) (\lambda (t2: T).(eq T t (lift h2 -d2 t2))) (ex2 T (\lambda (t2: T).(eq T (THead (Bind b) x0 x1) (lift h1 d1 -t2))) (\lambda (t2: T).(eq T (THead (Bind b) t t0) (lift h2 d2 t2)))) -(\lambda (x2: T).(\lambda (H8: (eq T x0 (lift h1 d1 x2))).(\lambda (H9: (eq T -t (lift h2 d2 x2))).(eq_ind_r T (lift h1 d1 x2) (\lambda (t2: T).(ex2 T -(\lambda (t3: T).(eq T (THead (Bind b) t2 x1) (lift h1 d1 t3))) (\lambda (t3: -T).(eq T (THead (Bind b) t t0) (lift h2 d2 t3))))) (eq_ind_r T (lift h2 d2 -x2) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Bind b) (lift h1 -d1 x2) x1) (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Bind b) t2 t0) -(lift h2 d2 t3))))) (let H10 \def (refl_equal nat (plus (S d2) h1)) in (let -H11 \def (eq_ind nat (S (plus d2 h1)) (\lambda (n: nat).(eq T (lift h1 (S d1) -t0) (lift h2 n x1))) H7 (plus (S d2) h1) H10) in (ex2_ind T (\lambda (t2: -T).(eq T x1 (lift h1 (S d1) t2))) (\lambda (t2: T).(eq T t0 (lift h2 (S d2) -t2))) (ex2 T (\lambda (t2: T).(eq T (THead (Bind b) (lift h1 d1 x2) x1) (lift -h1 d1 t2))) (\lambda (t2: T).(eq T (THead (Bind b) (lift h2 d2 x2) t0) (lift -h2 d2 t2)))) (\lambda (x3: T).(\lambda (H12: (eq T x1 (lift h1 (S d1) -x3))).(\lambda (H13: (eq T t0 (lift h2 (S d2) x3))).(eq_ind_r T (lift h1 (S -d1) x3) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Bind b) (lift -h1 d1 x2) t2) (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Bind b) (lift -h2 d2 x2) t0) (lift h2 d2 t3))))) (eq_ind_r T (lift h2 (S d2) x3) (\lambda -(t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Bind b) (lift h1 d1 x2) (lift -h1 (S d1) x3)) (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Bind b) (lift -h2 d2 x2) t2) (lift h2 d2 t3))))) (ex_intro2 T (\lambda (t2: T).(eq T (THead -(Bind b) (lift h1 d1 x2) (lift h1 (S d1) x3)) (lift h1 d1 t2))) (\lambda (t2: -T).(eq T (THead (Bind b) (lift h2 d2 x2) (lift h2 (S d2) x3)) (lift h2 d2 -t2))) (THead (Bind b) x2 x3) (eq_ind_r T (THead (Bind b) (lift h1 d1 x2) -(lift h1 (S d1) x3)) (\lambda (t2: T).(eq T (THead (Bind b) (lift h1 d1 x2) -(lift h1 (S d1) x3)) t2)) (refl_equal T (THead (Bind b) (lift h1 d1 x2) (lift -h1 (S d1) x3))) (lift h1 d1 (THead (Bind b) x2 x3)) (lift_bind b x2 x3 h1 -d1)) (eq_ind_r T (THead (Bind b) (lift h2 d2 x2) (lift h2 (S d2) x3)) -(\lambda (t2: T).(eq T (THead (Bind b) (lift h2 d2 x2) (lift h2 (S d2) x3)) -t2)) (refl_equal T (THead (Bind b) (lift h2 d2 x2) (lift h2 (S d2) x3))) -(lift h2 d2 (THead (Bind b) x2 x3)) (lift_bind b x2 x3 h2 d2))) t0 H13) x1 -H12)))) (H0 x1 h1 h2 (S d1) (S d2) (le_n_S d1 d2 H1) H11)))) t H9) x0 H8)))) -(H x0 h1 h2 d1 d2 H1 H6)) x H5)))))) (lift_gen_bind b (lift h1 d1 t) (lift h1 -(S d1) t0) x h2 (plus d2 h1) H4))))) (\lambda (f: F).(\lambda (H3: (eq T -(lift h1 d1 (THead (Flat f) t t0)) (lift h2 (plus d2 h1) x))).(let H4 \def -(eq_ind T (lift h1 d1 (THead (Flat f) t t0)) (\lambda (t2: T).(eq T t2 (lift -h2 (plus d2 h1) x))) H3 (THead (Flat f) (lift h1 d1 t) (lift h1 d1 t0)) -(lift_flat f t t0 h1 d1)) in (ex3_2_ind T T (\lambda (y: T).(\lambda (z: -T).(eq T x (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T -(lift h1 d1 t) (lift h2 (plus d2 h1) y)))) (\lambda (_: T).(\lambda (z: -T).(eq T (lift h1 d1 t0) (lift h2 (plus d2 h1) z)))) (ex2 T (\lambda (t2: -T).(eq T x (lift h1 d1 t2))) (\lambda (t2: T).(eq T (THead (Flat f) t t0) -(lift h2 d2 t2)))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H5: (eq T x -(THead (Flat f) x0 x1))).(\lambda (H6: (eq T (lift h1 d1 t) (lift h2 (plus d2 -h1) x0))).(\lambda (H7: (eq T (lift h1 d1 t0) (lift h2 (plus d2 h1) -x1))).(eq_ind_r T (THead (Flat f) x0 x1) (\lambda (t2: T).(ex2 T (\lambda -(t3: T).(eq T t2 (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Flat f) t -t0) (lift h2 d2 t3))))) (ex2_ind T (\lambda (t2: T).(eq T x0 (lift h1 d1 -t2))) (\lambda (t2: T).(eq T t (lift h2 d2 t2))) (ex2 T (\lambda (t2: T).(eq -T (THead (Flat f) x0 x1) (lift h1 d1 t2))) (\lambda (t2: T).(eq T (THead -(Flat f) t t0) (lift h2 d2 t2)))) (\lambda (x2: T).(\lambda (H8: (eq T x0 -(lift h1 d1 x2))).(\lambda (H9: (eq T t (lift h2 d2 x2))).(eq_ind_r T (lift -h1 d1 x2) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Flat f) t2 -x1) (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Flat f) t t0) (lift h2 -d2 t3))))) (eq_ind_r T (lift h2 d2 x2) (\lambda (t2: T).(ex2 T (\lambda (t3: -T).(eq T (THead (Flat f) (lift h1 d1 x2) x1) (lift h1 d1 t3))) (\lambda (t3: -T).(eq T (THead (Flat f) t2 t0) (lift h2 d2 t3))))) (ex2_ind T (\lambda (t2: -T).(eq T x1 (lift h1 d1 t2))) (\lambda (t2: T).(eq T t0 (lift h2 d2 t2))) -(ex2 T (\lambda (t2: T).(eq T (THead (Flat f) (lift h1 d1 x2) x1) (lift h1 d1 -t2))) (\lambda (t2: T).(eq T (THead (Flat f) (lift h2 d2 x2) t0) (lift h2 d2 -t2)))) (\lambda (x3: T).(\lambda (H10: (eq T x1 (lift h1 d1 x3))).(\lambda -(H11: (eq T t0 (lift h2 d2 x3))).(eq_ind_r T (lift h1 d1 x3) (\lambda (t2: -T).(ex2 T (\lambda (t3: T).(eq T (THead (Flat f) (lift h1 d1 x2) t2) (lift h1 -d1 t3))) (\lambda (t3: T).(eq T (THead (Flat f) (lift h2 d2 x2) t0) (lift h2 -d2 t3))))) (eq_ind_r T (lift h2 d2 x3) (\lambda (t2: T).(ex2 T (\lambda (t3: -T).(eq T (THead (Flat f) (lift h1 d1 x2) (lift h1 d1 x3)) (lift h1 d1 t3))) -(\lambda (t3: T).(eq T (THead (Flat f) (lift h2 d2 x2) t2) (lift h2 d2 -t3))))) (ex_intro2 T (\lambda (t2: T).(eq T (THead (Flat f) (lift h1 d1 x2) -(lift h1 d1 x3)) (lift h1 d1 t2))) (\lambda (t2: T).(eq T (THead (Flat f) -(lift h2 d2 x2) (lift h2 d2 x3)) (lift h2 d2 t2))) (THead (Flat f) x2 x3) -(eq_ind_r T (THead (Flat f) (lift h1 d1 x2) (lift h1 d1 x3)) (\lambda (t2: -T).(eq T (THead (Flat f) (lift h1 d1 x2) (lift h1 d1 x3)) t2)) (refl_equal T -(THead (Flat f) (lift h1 d1 x2) (lift h1 d1 x3))) (lift h1 d1 (THead (Flat f) -x2 x3)) (lift_flat f x2 x3 h1 d1)) (eq_ind_r T (THead (Flat f) (lift h2 d2 -x2) (lift h2 d2 x3)) (\lambda (t2: T).(eq T (THead (Flat f) (lift h2 d2 x2) -(lift h2 d2 x3)) t2)) (refl_equal T (THead (Flat f) (lift h2 d2 x2) (lift h2 -d2 x3))) (lift h2 d2 (THead (Flat f) x2 x3)) (lift_flat f x2 x3 h2 d2))) t0 -H11) x1 H10)))) (H0 x1 h1 h2 d1 d2 H1 H7)) t H9) x0 H8)))) (H x0 h1 h2 d1 d2 -H1 H6)) x H5)))))) (lift_gen_flat f (lift h1 d1 t) (lift h1 d1 t0) x h2 (plus -d2 h1) H4))))) k H2))))))))))))) t1). -(* COMMENTS -Initial nodes: 5037 -END *) - -theorem lifts_inj: - \forall (xs: TList).(\forall (ts: TList).(\forall (h: nat).(\forall (d: -nat).((eq TList (lifts h d xs) (lifts h d ts)) \to (eq TList xs ts))))) -\def - \lambda (xs: TList).(TList_ind (\lambda (t: TList).(\forall (ts: -TList).(\forall (h: nat).(\forall (d: nat).((eq TList (lifts h d t) (lifts h -d ts)) \to (eq TList t ts)))))) (\lambda (ts: TList).(TList_ind (\lambda (t: -TList).(\forall (h: nat).(\forall (d: nat).((eq TList (lifts h d TNil) (lifts -h d t)) \to (eq TList TNil t))))) (\lambda (_: nat).(\lambda (_: -nat).(\lambda (_: (eq TList TNil TNil)).(refl_equal TList TNil)))) (\lambda -(t: T).(\lambda (t0: TList).(\lambda (_: ((\forall (h: nat).(\forall (d: -nat).((eq TList TNil (lifts h d t0)) \to (eq TList TNil t0)))))).(\lambda (h: -nat).(\lambda (d: nat).(\lambda (H0: (eq TList TNil (TCons (lift h d t) -(lifts h d t0)))).(let H1 \def (eq_ind TList TNil (\lambda (ee: TList).(match -ee in TList return (\lambda (_: TList).Prop) with [TNil \Rightarrow True | -(TCons _ _) \Rightarrow False])) I (TCons (lift h d t) (lifts h d t0)) H0) in -(False_ind (eq TList TNil (TCons t t0)) H1)))))))) ts)) (\lambda (t: -T).(\lambda (t0: TList).(\lambda (H: ((\forall (ts: TList).(\forall (h: -nat).(\forall (d: nat).((eq TList (lifts h d t0) (lifts h d ts)) \to (eq -TList t0 ts))))))).(\lambda (ts: TList).(TList_ind (\lambda (t1: -TList).(\forall (h: nat).(\forall (d: nat).((eq TList (lifts h d (TCons t -t0)) (lifts h d t1)) \to (eq TList (TCons t t0) t1))))) (\lambda (h: -nat).(\lambda (d: nat).(\lambda (H0: (eq TList (TCons (lift h d t) (lifts h d -t0)) TNil)).(let H1 \def (eq_ind TList (TCons (lift h d t) (lifts h d t0)) -(\lambda (ee: TList).(match ee in TList return (\lambda (_: TList).Prop) with -[TNil \Rightarrow False | (TCons _ _) \Rightarrow True])) I TNil H0) in -(False_ind (eq TList (TCons t t0) TNil) H1))))) (\lambda (t1: T).(\lambda -(t2: TList).(\lambda (_: ((\forall (h: nat).(\forall (d: nat).((eq TList -(TCons (lift h d t) (lifts h d t0)) (lifts h d t2)) \to (eq TList (TCons t -t0) t2)))))).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1: (eq TList -(TCons (lift h d t) (lifts h d t0)) (TCons (lift h d t1) (lifts h d -t2)))).(let H2 \def (f_equal TList T (\lambda (e: TList).(match e in TList -return (\lambda (_: TList).T) with [TNil \Rightarrow ((let rec lref_map (f: -((nat \to nat))) (d0: nat) (t3: T) on t3: T \def (match t3 with [(TSort n) -\Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d0) with -[true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u t4) \Rightarrow -(THead k (lref_map f d0 u) (lref_map f (s k d0) t4))]) in lref_map) (\lambda -(x: nat).(plus x h)) d t) | (TCons t3 _) \Rightarrow t3])) (TCons (lift h d -t) (lifts h d t0)) (TCons (lift h d t1) (lifts h d t2)) H1) in ((let H3 \def -(f_equal TList TList (\lambda (e: TList).(match e in TList return (\lambda -(_: TList).TList) with [TNil \Rightarrow ((let rec lifts (h0: nat) (d0: nat) -(ts0: TList) on ts0: TList \def (match ts0 with [TNil \Rightarrow TNil | -(TCons t3 ts1) \Rightarrow (TCons (lift h0 d0 t3) (lifts h0 d0 ts1))]) in -lifts) h d t0) | (TCons _ t3) \Rightarrow t3])) (TCons (lift h d t) (lifts h -d t0)) (TCons (lift h d t1) (lifts h d t2)) H1) in (\lambda (H4: (eq T (lift -h d t) (lift h d t1))).(eq_ind T t (\lambda (t3: T).(eq TList (TCons t t0) -(TCons t3 t2))) (f_equal2 T TList TList TCons t t t0 t2 (refl_equal T t) (H -t2 h d H3)) t1 (lift_inj t t1 h d H4)))) H2)))))))) ts))))) xs). -(* COMMENTS -Initial nodes: 772 -END *) + \lambda (h: nat).(\lambda (d: nat).(\lambda (v: T).(\lambda (vs: TList).(let +TMP_6 \def (\lambda (t: TList).(let TMP_1 \def (TApp t v) in (let TMP_2 \def +(lifts h d TMP_1) in (let TMP_3 \def (lifts h d t) in (let TMP_4 \def (lift h +d v) in (let TMP_5 \def (TApp TMP_3 TMP_4) in (eq TList TMP_2 TMP_5))))))) in +(let TMP_7 \def (lift h d v) in (let TMP_8 \def (TCons TMP_7 TNil) in (let +TMP_9 \def (refl_equal TList TMP_8) in (let TMP_29 \def (\lambda (t: +T).(\lambda (t0: TList).(\lambda (H: (eq TList (lifts h d (TApp t0 v)) (TApp +(lifts h d t0) (lift h d v)))).(let TMP_10 \def (lifts h d t0) in (let TMP_11 +\def (lift h d v) in (let TMP_12 \def (TApp TMP_10 TMP_11) in (let TMP_20 +\def (\lambda (t1: TList).(let TMP_13 \def (lift h d t) in (let TMP_14 \def +(TCons TMP_13 t1) in (let TMP_15 \def (lift h d t) in (let TMP_16 \def (lifts +h d t0) in (let TMP_17 \def (lift h d v) in (let TMP_18 \def (TApp TMP_16 +TMP_17) in (let TMP_19 \def (TCons TMP_15 TMP_18) in (eq TList TMP_14 +TMP_19))))))))) in (let TMP_21 \def (lift h d t) in (let TMP_22 \def (lifts h +d t0) in (let TMP_23 \def (lift h d v) in (let TMP_24 \def (TApp TMP_22 +TMP_23) in (let TMP_25 \def (TCons TMP_21 TMP_24) in (let TMP_26 \def +(refl_equal TList TMP_25) in (let TMP_27 \def (TApp t0 v) in (let TMP_28 \def +(lifts h d TMP_27) in (eq_ind_r TList TMP_12 TMP_20 TMP_26 TMP_28 +H)))))))))))))))) in (TList_ind TMP_6 TMP_9 TMP_29 vs))))))))). theorem lift_free: \forall (t: T).(\forall (h: nat).(\forall (k: nat).(\forall (d: nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to (eq T (lift k e (lift h d t)) (lift (plus k h) d t)))))))) \def - \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (h: nat).(\forall (k: -nat).(\forall (d: nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to -(eq T (lift k e (lift h d t0)) (lift (plus k h) d t0))))))))) (\lambda (n: + \lambda (t: T).(let TMP_5 \def (\lambda (t0: T).(\forall (h: nat).(\forall +(k: nat).(\forall (d: nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) +\to (let TMP_1 \def (lift h d t0) in (let TMP_2 \def (lift k e TMP_1) in (let +TMP_3 \def (plus k h) in (let TMP_4 \def (lift TMP_3 d t0) in (eq T TMP_2 +TMP_4)))))))))))) in (let TMP_35 \def (\lambda (n: nat).(\lambda (h: +nat).(\lambda (k: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (_: (le e +(plus d h))).(\lambda (_: (le d e)).(let TMP_6 \def (TSort n) in (let TMP_11 +\def (\lambda (t0: T).(let TMP_7 \def (lift k e t0) in (let TMP_8 \def (plus +k h) in (let TMP_9 \def (TSort n) in (let TMP_10 \def (lift TMP_8 d TMP_9) in +(eq T TMP_7 TMP_10)))))) in (let TMP_12 \def (TSort n) in (let TMP_16 \def +(\lambda (t0: T).(let TMP_13 \def (plus k h) in (let TMP_14 \def (TSort n) in +(let TMP_15 \def (lift TMP_13 d TMP_14) in (eq T t0 TMP_15))))) in (let +TMP_17 \def (TSort n) in (let TMP_19 \def (\lambda (t0: T).(let TMP_18 \def +(TSort n) in (eq T TMP_18 t0))) in (let TMP_20 \def (TSort n) in (let TMP_21 +\def (refl_equal T TMP_20) in (let TMP_22 \def (plus k h) in (let TMP_23 \def +(TSort n) in (let TMP_24 \def (lift TMP_22 d TMP_23) in (let TMP_25 \def +(plus k h) in (let TMP_26 \def (lift_sort n TMP_25 d) in (let TMP_27 \def +(eq_ind_r T TMP_17 TMP_19 TMP_21 TMP_24 TMP_26) in (let TMP_28 \def (TSort n) +in (let TMP_29 \def (lift k e TMP_28) in (let TMP_30 \def (lift_sort n k e) +in (let TMP_31 \def (eq_ind_r T TMP_12 TMP_16 TMP_27 TMP_29 TMP_30) in (let +TMP_32 \def (TSort n) in (let TMP_33 \def (lift h d TMP_32) in (let TMP_34 +\def (lift_sort n h d) in (eq_ind_r T TMP_6 TMP_11 TMP_31 TMP_33 +TMP_34))))))))))))))))))))))))))))) in (let TMP_122 \def (\lambda (n: nat).(\lambda (h: nat).(\lambda (k: nat).(\lambda (d: nat).(\lambda (e: -nat).(\lambda (_: (le e (plus d h))).(\lambda (_: (le d e)).(eq_ind_r T -(TSort n) (\lambda (t0: T).(eq T (lift k e t0) (lift (plus k h) d (TSort -n)))) (eq_ind_r T (TSort n) (\lambda (t0: T).(eq T t0 (lift (plus k h) d -(TSort n)))) (eq_ind_r T (TSort n) (\lambda (t0: T).(eq T (TSort n) t0)) -(refl_equal T (TSort n)) (lift (plus k h) d (TSort n)) (lift_sort n (plus k -h) d)) (lift k e (TSort n)) (lift_sort n k e)) (lift h d (TSort n)) -(lift_sort n h d))))))))) (\lambda (n: nat).(\lambda (h: nat).(\lambda (k: -nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H: (le e (plus d -h))).(\lambda (H0: (le d e)).(lt_le_e n d (eq T (lift k e (lift h d (TLRef -n))) (lift (plus k h) d (TLRef n))) (\lambda (H1: (lt n d)).(eq_ind_r T -(TLRef n) (\lambda (t0: T).(eq T (lift k e t0) (lift (plus k h) d (TLRef -n)))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T t0 (lift (plus k h) d -(TLRef n)))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T (TLRef n) t0)) -(refl_equal T (TLRef n)) (lift (plus k h) d (TLRef n)) (lift_lref_lt n (plus -k h) d H1)) (lift k e (TLRef n)) (lift_lref_lt n k e (lt_le_trans n d e H1 -H0))) (lift h d (TLRef n)) (lift_lref_lt n h d H1))) (\lambda (H1: (le d -n)).(eq_ind_r T (TLRef (plus n h)) (\lambda (t0: T).(eq T (lift k e t0) (lift -(plus k h) d (TLRef n)))) (eq_ind_r T (TLRef (plus (plus n h) k)) (\lambda -(t0: T).(eq T t0 (lift (plus k h) d (TLRef n)))) (eq_ind_r T (TLRef (plus n -(plus k h))) (\lambda (t0: T).(eq T (TLRef (plus (plus n h) k)) t0)) (f_equal -nat T TLRef (plus (plus n h) k) (plus n (plus k h)) -(plus_permute_2_in_3_assoc n h k)) (lift (plus k h) d (TLRef n)) -(lift_lref_ge n (plus k h) d H1)) (lift k e (TLRef (plus n h))) (lift_lref_ge -(plus n h) k e (le_trans e (plus d h) (plus n h) H (le_plus_plus d n h h H1 -(le_n h))))) (lift h d (TLRef n)) (lift_lref_ge n h d H1))))))))))) (\lambda -(k: K).(\lambda (t0: T).(\lambda (H: ((\forall (h: nat).(\forall (k0: +nat).(\lambda (H: (le e (plus d h))).(\lambda (H0: (le d e)).(let TMP_36 \def +(TLRef n) in (let TMP_37 \def (lift h d TMP_36) in (let TMP_38 \def (lift k e +TMP_37) in (let TMP_39 \def (plus k h) in (let TMP_40 \def (TLRef n) in (let +TMP_41 \def (lift TMP_39 d TMP_40) in (let TMP_42 \def (eq T TMP_38 TMP_41) +in (let TMP_73 \def (\lambda (H1: (lt n d)).(let TMP_43 \def (TLRef n) in +(let TMP_48 \def (\lambda (t0: T).(let TMP_44 \def (lift k e t0) in (let +TMP_45 \def (plus k h) in (let TMP_46 \def (TLRef n) in (let TMP_47 \def +(lift TMP_45 d TMP_46) in (eq T TMP_44 TMP_47)))))) in (let TMP_49 \def +(TLRef n) in (let TMP_53 \def (\lambda (t0: T).(let TMP_50 \def (plus k h) in +(let TMP_51 \def (TLRef n) in (let TMP_52 \def (lift TMP_50 d TMP_51) in (eq +T t0 TMP_52))))) in (let TMP_54 \def (TLRef n) in (let TMP_56 \def (\lambda +(t0: T).(let TMP_55 \def (TLRef n) in (eq T TMP_55 t0))) in (let TMP_57 \def +(TLRef n) in (let TMP_58 \def (refl_equal T TMP_57) in (let TMP_59 \def (plus +k h) in (let TMP_60 \def (TLRef n) in (let TMP_61 \def (lift TMP_59 d TMP_60) +in (let TMP_62 \def (plus k h) in (let TMP_63 \def (lift_lref_lt n TMP_62 d +H1) in (let TMP_64 \def (eq_ind_r T TMP_54 TMP_56 TMP_58 TMP_61 TMP_63) in +(let TMP_65 \def (TLRef n) in (let TMP_66 \def (lift k e TMP_65) in (let +TMP_67 \def (lt_le_trans n d e H1 H0) in (let TMP_68 \def (lift_lref_lt n k e +TMP_67) in (let TMP_69 \def (eq_ind_r T TMP_49 TMP_53 TMP_64 TMP_66 TMP_68) +in (let TMP_70 \def (TLRef n) in (let TMP_71 \def (lift h d TMP_70) in (let +TMP_72 \def (lift_lref_lt n h d H1) in (eq_ind_r T TMP_43 TMP_48 TMP_69 +TMP_71 TMP_72)))))))))))))))))))))))) in (let TMP_121 \def (\lambda (H1: (le +d n)).(let TMP_74 \def (plus n h) in (let TMP_75 \def (TLRef TMP_74) in (let +TMP_80 \def (\lambda (t0: T).(let TMP_76 \def (lift k e t0) in (let TMP_77 +\def (plus k h) in (let TMP_78 \def (TLRef n) in (let TMP_79 \def (lift +TMP_77 d TMP_78) in (eq T TMP_76 TMP_79)))))) in (let TMP_81 \def (plus n h) +in (let TMP_82 \def (plus TMP_81 k) in (let TMP_83 \def (TLRef TMP_82) in +(let TMP_87 \def (\lambda (t0: T).(let TMP_84 \def (plus k h) in (let TMP_85 +\def (TLRef n) in (let TMP_86 \def (lift TMP_84 d TMP_85) in (eq T t0 +TMP_86))))) in (let TMP_88 \def (plus k h) in (let TMP_89 \def (plus n +TMP_88) in (let TMP_90 \def (TLRef TMP_89) in (let TMP_94 \def (\lambda (t0: +T).(let TMP_91 \def (plus n h) in (let TMP_92 \def (plus TMP_91 k) in (let +TMP_93 \def (TLRef TMP_92) in (eq T TMP_93 t0))))) in (let TMP_95 \def (plus +n h) in (let TMP_96 \def (plus TMP_95 k) in (let TMP_97 \def (plus k h) in +(let TMP_98 \def (plus n TMP_97) in (let TMP_99 \def +(plus_permute_2_in_3_assoc n h k) in (let TMP_100 \def (f_equal nat T TLRef +TMP_96 TMP_98 TMP_99) in (let TMP_101 \def (plus k h) in (let TMP_102 \def +(TLRef n) in (let TMP_103 \def (lift TMP_101 d TMP_102) in (let TMP_104 \def +(plus k h) in (let TMP_105 \def (lift_lref_ge n TMP_104 d H1) in (let TMP_106 +\def (eq_ind_r T TMP_90 TMP_94 TMP_100 TMP_103 TMP_105) in (let TMP_107 \def +(plus n h) in (let TMP_108 \def (TLRef TMP_107) in (let TMP_109 \def (lift k +e TMP_108) in (let TMP_110 \def (plus n h) in (let TMP_111 \def (plus d h) in +(let TMP_112 \def (plus n h) in (let TMP_113 \def (le_n h) in (let TMP_114 +\def (le_plus_plus d n h h H1 TMP_113) in (let TMP_115 \def (le_trans e +TMP_111 TMP_112 H TMP_114) in (let TMP_116 \def (lift_lref_ge TMP_110 k e +TMP_115) in (let TMP_117 \def (eq_ind_r T TMP_83 TMP_87 TMP_106 TMP_109 +TMP_116) in (let TMP_118 \def (TLRef n) in (let TMP_119 \def (lift h d +TMP_118) in (let TMP_120 \def (lift_lref_ge n h d H1) in (eq_ind_r T TMP_75 +TMP_80 TMP_117 TMP_119 TMP_120))))))))))))))))))))))))))))))))))))))) in +(lt_le_e n d TMP_42 TMP_73 TMP_121))))))))))))))))) in (let TMP_204 \def +(\lambda (k: K).(\lambda (t0: T).(\lambda (H: ((\forall (h: nat).(\forall +(k0: nat).(\forall (d: nat).(\forall (e: nat).((le e (plus d h)) \to ((le d +e) \to (eq T (lift k0 e (lift h d t0)) (lift (plus k0 h) d +t0)))))))))).(\lambda (t1: T).(\lambda (H0: ((\forall (h: nat).(\forall (k0: nat).(\forall (d: nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to -(eq T (lift k0 e (lift h d t0)) (lift (plus k0 h) d t0)))))))))).(\lambda -(t1: T).(\lambda (H0: ((\forall (h: nat).(\forall (k0: nat).(\forall (d: -nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to (eq T (lift k0 e -(lift h d t1)) (lift (plus k0 h) d t1)))))))))).(\lambda (h: nat).(\lambda -(k0: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H1: (le e (plus d -h))).(\lambda (H2: (le d e)).(eq_ind_r T (THead k (lift h d t0) (lift h (s k -d) t1)) (\lambda (t2: T).(eq T (lift k0 e t2) (lift (plus k0 h) d (THead k t0 -t1)))) (eq_ind_r T (THead k (lift k0 e (lift h d t0)) (lift k0 (s k e) (lift -h (s k d) t1))) (\lambda (t2: T).(eq T t2 (lift (plus k0 h) d (THead k t0 -t1)))) (eq_ind_r T (THead k (lift (plus k0 h) d t0) (lift (plus k0 h) (s k d) -t1)) (\lambda (t2: T).(eq T (THead k (lift k0 e (lift h d t0)) (lift k0 (s k -e) (lift h (s k d) t1))) t2)) (f_equal3 K T T T THead k k (lift k0 e (lift h -d t0)) (lift (plus k0 h) d t0) (lift k0 (s k e) (lift h (s k d) t1)) (lift -(plus k0 h) (s k d) t1) (refl_equal K k) (H h k0 d e H1 H2) (H0 h k0 (s k d) -(s k e) (eq_ind nat (s k (plus d h)) (\lambda (n: nat).(le (s k e) n)) (s_le -k e (plus d h) H1) (plus (s k d) h) (s_plus k d h)) (s_le k d e H2))) (lift -(plus k0 h) d (THead k t0 t1)) (lift_head k t0 t1 (plus k0 h) d)) (lift k0 e -(THead k (lift h d t0) (lift h (s k d) t1))) (lift_head k (lift h d t0) (lift -h (s k d) t1) k0 e)) (lift h d (THead k t0 t1)) (lift_head k t0 t1 h -d))))))))))))) t). -(* COMMENTS -Initial nodes: 1407 -END *) +(eq T (lift k0 e (lift h d t1)) (lift (plus k0 h) d t1)))))))))).(\lambda (h: +nat).(\lambda (k0: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H1: (le +e (plus d h))).(\lambda (H2: (le d e)).(let TMP_123 \def (lift h d t0) in +(let TMP_124 \def (s k d) in (let TMP_125 \def (lift h TMP_124 t1) in (let +TMP_126 \def (THead k TMP_123 TMP_125) in (let TMP_131 \def (\lambda (t2: +T).(let TMP_127 \def (lift k0 e t2) in (let TMP_128 \def (plus k0 h) in (let +TMP_129 \def (THead k t0 t1) in (let TMP_130 \def (lift TMP_128 d TMP_129) in +(eq T TMP_127 TMP_130)))))) in (let TMP_132 \def (lift h d t0) in (let +TMP_133 \def (lift k0 e TMP_132) in (let TMP_134 \def (s k e) in (let TMP_135 +\def (s k d) in (let TMP_136 \def (lift h TMP_135 t1) in (let TMP_137 \def +(lift k0 TMP_134 TMP_136) in (let TMP_138 \def (THead k TMP_133 TMP_137) in +(let TMP_142 \def (\lambda (t2: T).(let TMP_139 \def (plus k0 h) in (let +TMP_140 \def (THead k t0 t1) in (let TMP_141 \def (lift TMP_139 d TMP_140) in +(eq T t2 TMP_141))))) in (let TMP_143 \def (plus k0 h) in (let TMP_144 \def +(lift TMP_143 d t0) in (let TMP_145 \def (plus k0 h) in (let TMP_146 \def (s +k d) in (let TMP_147 \def (lift TMP_145 TMP_146 t1) in (let TMP_148 \def +(THead k TMP_144 TMP_147) in (let TMP_156 \def (\lambda (t2: T).(let TMP_149 +\def (lift h d t0) in (let TMP_150 \def (lift k0 e TMP_149) in (let TMP_151 +\def (s k e) in (let TMP_152 \def (s k d) in (let TMP_153 \def (lift h +TMP_152 t1) in (let TMP_154 \def (lift k0 TMP_151 TMP_153) in (let TMP_155 +\def (THead k TMP_150 TMP_154) in (eq T TMP_155 t2))))))))) in (let TMP_157 +\def (lift h d t0) in (let TMP_158 \def (lift k0 e TMP_157) in (let TMP_159 +\def (plus k0 h) in (let TMP_160 \def (lift TMP_159 d t0) in (let TMP_161 +\def (s k e) in (let TMP_162 \def (s k d) in (let TMP_163 \def (lift h +TMP_162 t1) in (let TMP_164 \def (lift k0 TMP_161 TMP_163) in (let TMP_165 +\def (plus k0 h) in (let TMP_166 \def (s k d) in (let TMP_167 \def (lift +TMP_165 TMP_166 t1) in (let TMP_168 \def (refl_equal K k) in (let TMP_169 +\def (H h k0 d e H1 H2) in (let TMP_170 \def (s k d) in (let TMP_171 \def (s +k e) in (let TMP_172 \def (plus d h) in (let TMP_173 \def (s k TMP_172) in +(let TMP_175 \def (\lambda (n: nat).(let TMP_174 \def (s k e) in (le TMP_174 +n))) in (let TMP_176 \def (plus d h) in (let TMP_177 \def (s_le k e TMP_176 +H1) in (let TMP_178 \def (s k d) in (let TMP_179 \def (plus TMP_178 h) in +(let TMP_180 \def (s_plus k d h) in (let TMP_181 \def (eq_ind nat TMP_173 +TMP_175 TMP_177 TMP_179 TMP_180) in (let TMP_182 \def (s_le k d e H2) in (let +TMP_183 \def (H0 h k0 TMP_170 TMP_171 TMP_181 TMP_182) in (let TMP_184 \def +(f_equal3 K T T T THead k k TMP_158 TMP_160 TMP_164 TMP_167 TMP_168 TMP_169 +TMP_183) in (let TMP_185 \def (plus k0 h) in (let TMP_186 \def (THead k t0 +t1) in (let TMP_187 \def (lift TMP_185 d TMP_186) in (let TMP_188 \def (plus +k0 h) in (let TMP_189 \def (lift_head k t0 t1 TMP_188 d) in (let TMP_190 \def +(eq_ind_r T TMP_148 TMP_156 TMP_184 TMP_187 TMP_189) in (let TMP_191 \def +(lift h d t0) in (let TMP_192 \def (s k d) in (let TMP_193 \def (lift h +TMP_192 t1) in (let TMP_194 \def (THead k TMP_191 TMP_193) in (let TMP_195 +\def (lift k0 e TMP_194) in (let TMP_196 \def (lift h d t0) in (let TMP_197 +\def (s k d) in (let TMP_198 \def (lift h TMP_197 t1) in (let TMP_199 \def +(lift_head k TMP_196 TMP_198 k0 e) in (let TMP_200 \def (eq_ind_r T TMP_138 +TMP_142 TMP_190 TMP_195 TMP_199) in (let TMP_201 \def (THead k t0 t1) in (let +TMP_202 \def (lift h d TMP_201) in (let TMP_203 \def (lift_head k t0 t1 h d) +in (eq_ind_r T TMP_126 TMP_131 TMP_200 TMP_202 +TMP_203))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +))))))) in (T_ind TMP_5 TMP_35 TMP_122 TMP_204 t))))). + +theorem lift_free_sym: + \forall (t: T).(\forall (h: nat).(\forall (k: nat).(\forall (d: +nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to (eq T (lift k e +(lift h d t)) (lift (plus h k) d t)))))))) +\def + \lambda (t: T).(\lambda (h: nat).(\lambda (k: nat).(\lambda (d: +nat).(\lambda (e: nat).(\lambda (H: (le e (plus d h))).(\lambda (H0: (le d +e)).(let TMP_1 \def (plus k h) in (let TMP_5 \def (\lambda (n: nat).(let +TMP_2 \def (lift h d t) in (let TMP_3 \def (lift k e TMP_2) in (let TMP_4 +\def (lift n d t) in (eq T TMP_3 TMP_4))))) in (let TMP_6 \def (lift_free t h +k d e H H0) in (let TMP_7 \def (plus h k) in (let TMP_8 \def (plus_sym h k) +in (eq_ind_r nat TMP_1 TMP_5 TMP_6 TMP_7 TMP_8)))))))))))). theorem lift_d: \forall (t: T).(\forall (h: nat).(\forall (k: nat).(\forall (d: nat).(\forall (e: nat).((le e d) \to (eq T (lift h (plus k d) (lift k e t)) (lift k e (lift h d t)))))))) \def - \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (h: nat).(\forall (k: -nat).(\forall (d: nat).(\forall (e: nat).((le e d) \to (eq T (lift h (plus k -d) (lift k e t0)) (lift k e (lift h d t0))))))))) (\lambda (n: nat).(\lambda -(h: nat).(\lambda (k: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (_: -(le e d)).(eq_ind_r T (TSort n) (\lambda (t0: T).(eq T (lift h (plus k d) t0) -(lift k e (lift h d (TSort n))))) (eq_ind_r T (TSort n) (\lambda (t0: T).(eq -T t0 (lift k e (lift h d (TSort n))))) (eq_ind_r T (TSort n) (\lambda (t0: -T).(eq T (TSort n) (lift k e t0))) (eq_ind_r T (TSort n) (\lambda (t0: T).(eq -T (TSort n) t0)) (refl_equal T (TSort n)) (lift k e (TSort n)) (lift_sort n k -e)) (lift h d (TSort n)) (lift_sort n h d)) (lift h (plus k d) (TSort n)) -(lift_sort n h (plus k d))) (lift k e (TSort n)) (lift_sort n k e)))))))) -(\lambda (n: nat).(\lambda (h: nat).(\lambda (k: nat).(\lambda (d: -nat).(\lambda (e: nat).(\lambda (H: (le e d)).(lt_le_e n e (eq T (lift h -(plus k d) (lift k e (TLRef n))) (lift k e (lift h d (TLRef n)))) (\lambda -(H0: (lt n e)).(let H1 \def (lt_le_trans n e d H0 H) in (eq_ind_r T (TLRef n) -(\lambda (t0: T).(eq T (lift h (plus k d) t0) (lift k e (lift h d (TLRef -n))))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T t0 (lift k e (lift h d -(TLRef n))))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T (TLRef n) (lift k -e t0))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T (TLRef n) t0)) -(refl_equal T (TLRef n)) (lift k e (TLRef n)) (lift_lref_lt n k e H0)) (lift -h d (TLRef n)) (lift_lref_lt n h d H1)) (lift h (plus k d) (TLRef n)) -(lift_lref_lt n h (plus k d) (lt_le_trans n d (plus k d) H1 (le_plus_r k -d)))) (lift k e (TLRef n)) (lift_lref_lt n k e H0)))) (\lambda (H0: (le e -n)).(eq_ind_r T (TLRef (plus n k)) (\lambda (t0: T).(eq T (lift h (plus k d) -t0) (lift k e (lift h d (TLRef n))))) (eq_ind_r nat (plus d k) (\lambda (n0: -nat).(eq T (lift h n0 (TLRef (plus n k))) (lift k e (lift h d (TLRef n))))) -(lt_le_e n d (eq T (lift h (plus d k) (TLRef (plus n k))) (lift k e (lift h d -(TLRef n)))) (\lambda (H1: (lt n d)).(eq_ind_r T (TLRef (plus n k)) (\lambda -(t0: T).(eq T t0 (lift k e (lift h d (TLRef n))))) (eq_ind_r T (TLRef n) -(\lambda (t0: T).(eq T (TLRef (plus n k)) (lift k e t0))) (eq_ind_r T (TLRef -(plus n k)) (\lambda (t0: T).(eq T (TLRef (plus n k)) t0)) (refl_equal T -(TLRef (plus n k))) (lift k e (TLRef n)) (lift_lref_ge n k e H0)) (lift h d -(TLRef n)) (lift_lref_lt n h d H1)) (lift h (plus d k) (TLRef (plus n k))) -(lift_lref_lt (plus n k) h (plus d k) (lt_reg_r n d k H1)))) (\lambda (H1: -(le d n)).(eq_ind_r T (TLRef (plus (plus n k) h)) (\lambda (t0: T).(eq T t0 -(lift k e (lift h d (TLRef n))))) (eq_ind_r T (TLRef (plus n h)) (\lambda -(t0: T).(eq T (TLRef (plus (plus n k) h)) (lift k e t0))) (eq_ind_r T (TLRef -(plus (plus n h) k)) (\lambda (t0: T).(eq T (TLRef (plus (plus n k) h)) t0)) -(f_equal nat T TLRef (plus (plus n k) h) (plus (plus n h) k) (sym_eq nat -(plus (plus n h) k) (plus (plus n k) h) (plus_permute_2_in_3 n h k))) (lift k -e (TLRef (plus n h))) (lift_lref_ge (plus n h) k e (le_plus_trans e n h H0))) -(lift h d (TLRef n)) (lift_lref_ge n h d H1)) (lift h (plus d k) (TLRef (plus -n k))) (lift_lref_ge (plus n k) h (plus d k) (le_plus_plus d n k k H1 (le_n -k)))))) (plus k d) (plus_sym k d)) (lift k e (TLRef n)) (lift_lref_ge n k e -H0)))))))))) (\lambda (k: K).(\lambda (t0: T).(\lambda (H: ((\forall (h: -nat).(\forall (k0: nat).(\forall (d: nat).(\forall (e: nat).((le e d) \to (eq -T (lift h (plus k0 d) (lift k0 e t0)) (lift k0 e (lift h d -t0)))))))))).(\lambda (t1: T).(\lambda (H0: ((\forall (h: nat).(\forall (k0: + \lambda (t: T).(let TMP_6 \def (\lambda (t0: T).(\forall (h: nat).(\forall +(k: nat).(\forall (d: nat).(\forall (e: nat).((le e d) \to (let TMP_1 \def +(plus k d) in (let TMP_2 \def (lift k e t0) in (let TMP_3 \def (lift h TMP_1 +TMP_2) in (let TMP_4 \def (lift h d t0) in (let TMP_5 \def (lift k e TMP_4) +in (eq T TMP_3 TMP_5)))))))))))) in (let TMP_45 \def (\lambda (n: +nat).(\lambda (h: nat).(\lambda (k: nat).(\lambda (d: nat).(\lambda (e: +nat).(\lambda (_: (le e d)).(let TMP_7 \def (TSort n) in (let TMP_13 \def +(\lambda (t0: T).(let TMP_8 \def (plus k d) in (let TMP_9 \def (lift h TMP_8 +t0) in (let TMP_10 \def (TSort n) in (let TMP_11 \def (lift h d TMP_10) in +(let TMP_12 \def (lift k e TMP_11) in (eq T TMP_9 TMP_12))))))) in (let +TMP_14 \def (TSort n) in (let TMP_18 \def (\lambda (t0: T).(let TMP_15 \def +(TSort n) in (let TMP_16 \def (lift h d TMP_15) in (let TMP_17 \def (lift k e +TMP_16) in (eq T t0 TMP_17))))) in (let TMP_19 \def (TSort n) in (let TMP_22 +\def (\lambda (t0: T).(let TMP_20 \def (TSort n) in (let TMP_21 \def (lift k +e t0) in (eq T TMP_20 TMP_21)))) in (let TMP_23 \def (TSort n) in (let TMP_25 +\def (\lambda (t0: T).(let TMP_24 \def (TSort n) in (eq T TMP_24 t0))) in +(let TMP_26 \def (TSort n) in (let TMP_27 \def (refl_equal T TMP_26) in (let +TMP_28 \def (TSort n) in (let TMP_29 \def (lift k e TMP_28) in (let TMP_30 +\def (lift_sort n k e) in (let TMP_31 \def (eq_ind_r T TMP_23 TMP_25 TMP_27 +TMP_29 TMP_30) in (let TMP_32 \def (TSort n) in (let TMP_33 \def (lift h d +TMP_32) in (let TMP_34 \def (lift_sort n h d) in (let TMP_35 \def (eq_ind_r T +TMP_19 TMP_22 TMP_31 TMP_33 TMP_34) in (let TMP_36 \def (plus k d) in (let +TMP_37 \def (TSort n) in (let TMP_38 \def (lift h TMP_36 TMP_37) in (let +TMP_39 \def (plus k d) in (let TMP_40 \def (lift_sort n h TMP_39) in (let +TMP_41 \def (eq_ind_r T TMP_14 TMP_18 TMP_35 TMP_38 TMP_40) in (let TMP_42 +\def (TSort n) in (let TMP_43 \def (lift k e TMP_42) in (let TMP_44 \def +(lift_sort n k e) in (eq_ind_r T TMP_7 TMP_13 TMP_41 TMP_43 +TMP_44)))))))))))))))))))))))))))))))))) in (let TMP_212 \def (\lambda (n: +nat).(\lambda (h: nat).(\lambda (k: nat).(\lambda (d: nat).(\lambda (e: +nat).(\lambda (H: (le e d)).(let TMP_46 \def (plus k d) in (let TMP_47 \def +(TLRef n) in (let TMP_48 \def (lift k e TMP_47) in (let TMP_49 \def (lift h +TMP_46 TMP_48) in (let TMP_50 \def (TLRef n) in (let TMP_51 \def (lift h d +TMP_50) in (let TMP_52 \def (lift k e TMP_51) in (let TMP_53 \def (eq T +TMP_49 TMP_52) in (let TMP_95 \def (\lambda (H0: (lt n e)).(let H1 \def +(lt_le_trans n e d H0 H) in (let TMP_54 \def (TLRef n) in (let TMP_60 \def +(\lambda (t0: T).(let TMP_55 \def (plus k d) in (let TMP_56 \def (lift h +TMP_55 t0) in (let TMP_57 \def (TLRef n) in (let TMP_58 \def (lift h d +TMP_57) in (let TMP_59 \def (lift k e TMP_58) in (eq T TMP_56 TMP_59))))))) +in (let TMP_61 \def (TLRef n) in (let TMP_65 \def (\lambda (t0: T).(let +TMP_62 \def (TLRef n) in (let TMP_63 \def (lift h d TMP_62) in (let TMP_64 +\def (lift k e TMP_63) in (eq T t0 TMP_64))))) in (let TMP_66 \def (TLRef n) +in (let TMP_69 \def (\lambda (t0: T).(let TMP_67 \def (TLRef n) in (let +TMP_68 \def (lift k e t0) in (eq T TMP_67 TMP_68)))) in (let TMP_70 \def +(TLRef n) in (let TMP_72 \def (\lambda (t0: T).(let TMP_71 \def (TLRef n) in +(eq T TMP_71 t0))) in (let TMP_73 \def (TLRef n) in (let TMP_74 \def +(refl_equal T TMP_73) in (let TMP_75 \def (TLRef n) in (let TMP_76 \def (lift +k e TMP_75) in (let TMP_77 \def (lift_lref_lt n k e H0) in (let TMP_78 \def +(eq_ind_r T TMP_70 TMP_72 TMP_74 TMP_76 TMP_77) in (let TMP_79 \def (TLRef n) +in (let TMP_80 \def (lift h d TMP_79) in (let TMP_81 \def (lift_lref_lt n h d +H1) in (let TMP_82 \def (eq_ind_r T TMP_66 TMP_69 TMP_78 TMP_80 TMP_81) in +(let TMP_83 \def (plus k d) in (let TMP_84 \def (TLRef n) in (let TMP_85 \def +(lift h TMP_83 TMP_84) in (let TMP_86 \def (plus k d) in (let TMP_87 \def +(plus k d) in (let TMP_88 \def (le_plus_r k d) in (let TMP_89 \def +(lt_le_trans n d TMP_87 H1 TMP_88) in (let TMP_90 \def (lift_lref_lt n h +TMP_86 TMP_89) in (let TMP_91 \def (eq_ind_r T TMP_61 TMP_65 TMP_82 TMP_85 +TMP_90) in (let TMP_92 \def (TLRef n) in (let TMP_93 \def (lift k e TMP_92) +in (let TMP_94 \def (lift_lref_lt n k e H0) in (eq_ind_r T TMP_54 TMP_60 +TMP_91 TMP_93 TMP_94))))))))))))))))))))))))))))))))) in (let TMP_211 \def +(\lambda (H0: (le e n)).(let TMP_96 \def (plus n k) in (let TMP_97 \def +(TLRef TMP_96) in (let TMP_103 \def (\lambda (t0: T).(let TMP_98 \def (plus k +d) in (let TMP_99 \def (lift h TMP_98 t0) in (let TMP_100 \def (TLRef n) in +(let TMP_101 \def (lift h d TMP_100) in (let TMP_102 \def (lift k e TMP_101) +in (eq T TMP_99 TMP_102))))))) in (let TMP_104 \def (plus d k) in (let +TMP_111 \def (\lambda (n0: nat).(let TMP_105 \def (plus n k) in (let TMP_106 +\def (TLRef TMP_105) in (let TMP_107 \def (lift h n0 TMP_106) in (let TMP_108 +\def (TLRef n) in (let TMP_109 \def (lift h d TMP_108) in (let TMP_110 \def +(lift k e TMP_109) in (eq T TMP_107 TMP_110)))))))) in (let TMP_112 \def +(plus d k) in (let TMP_113 \def (plus n k) in (let TMP_114 \def (TLRef +TMP_113) in (let TMP_115 \def (lift h TMP_112 TMP_114) in (let TMP_116 \def +(TLRef n) in (let TMP_117 \def (lift h d TMP_116) in (let TMP_118 \def (lift +k e TMP_117) in (let TMP_119 \def (eq T TMP_115 TMP_118) in (let TMP_155 \def +(\lambda (H1: (lt n d)).(let TMP_120 \def (plus n k) in (let TMP_121 \def +(TLRef TMP_120) in (let TMP_125 \def (\lambda (t0: T).(let TMP_122 \def +(TLRef n) in (let TMP_123 \def (lift h d TMP_122) in (let TMP_124 \def (lift +k e TMP_123) in (eq T t0 TMP_124))))) in (let TMP_126 \def (TLRef n) in (let +TMP_130 \def (\lambda (t0: T).(let TMP_127 \def (plus n k) in (let TMP_128 +\def (TLRef TMP_127) in (let TMP_129 \def (lift k e t0) in (eq T TMP_128 +TMP_129))))) in (let TMP_131 \def (plus n k) in (let TMP_132 \def (TLRef +TMP_131) in (let TMP_135 \def (\lambda (t0: T).(let TMP_133 \def (plus n k) +in (let TMP_134 \def (TLRef TMP_133) in (eq T TMP_134 t0)))) in (let TMP_136 +\def (plus n k) in (let TMP_137 \def (TLRef TMP_136) in (let TMP_138 \def +(refl_equal T TMP_137) in (let TMP_139 \def (TLRef n) in (let TMP_140 \def +(lift k e TMP_139) in (let TMP_141 \def (lift_lref_ge n k e H0) in (let +TMP_142 \def (eq_ind_r T TMP_132 TMP_135 TMP_138 TMP_140 TMP_141) in (let +TMP_143 \def (TLRef n) in (let TMP_144 \def (lift h d TMP_143) in (let +TMP_145 \def (lift_lref_lt n h d H1) in (let TMP_146 \def (eq_ind_r T TMP_126 +TMP_130 TMP_142 TMP_144 TMP_145) in (let TMP_147 \def (plus d k) in (let +TMP_148 \def (plus n k) in (let TMP_149 \def (TLRef TMP_148) in (let TMP_150 +\def (lift h TMP_147 TMP_149) in (let TMP_151 \def (plus n k) in (let TMP_152 +\def (plus d k) in (let TMP_153 \def (lt_reg_r n d k H1) in (let TMP_154 \def +(lift_lref_lt TMP_151 h TMP_152 TMP_153) in (eq_ind_r T TMP_121 TMP_125 +TMP_146 TMP_150 TMP_154))))))))))))))))))))))))))))) in (let TMP_203 \def +(\lambda (H1: (le d n)).(let TMP_156 \def (plus n k) in (let TMP_157 \def +(plus TMP_156 h) in (let TMP_158 \def (TLRef TMP_157) in (let TMP_162 \def +(\lambda (t0: T).(let TMP_159 \def (TLRef n) in (let TMP_160 \def (lift h d +TMP_159) in (let TMP_161 \def (lift k e TMP_160) in (eq T t0 TMP_161))))) in +(let TMP_163 \def (plus n h) in (let TMP_164 \def (TLRef TMP_163) in (let +TMP_169 \def (\lambda (t0: T).(let TMP_165 \def (plus n k) in (let TMP_166 +\def (plus TMP_165 h) in (let TMP_167 \def (TLRef TMP_166) in (let TMP_168 +\def (lift k e t0) in (eq T TMP_167 TMP_168)))))) in (let TMP_170 \def (plus +n h) in (let TMP_171 \def (plus TMP_170 k) in (let TMP_172 \def (TLRef +TMP_171) in (let TMP_176 \def (\lambda (t0: T).(let TMP_173 \def (plus n k) +in (let TMP_174 \def (plus TMP_173 h) in (let TMP_175 \def (TLRef TMP_174) in +(eq T TMP_175 t0))))) in (let TMP_177 \def (plus n k) in (let TMP_178 \def +(plus TMP_177 h) in (let TMP_179 \def (plus n h) in (let TMP_180 \def (plus +TMP_179 k) in (let TMP_181 \def (plus_permute_2_in_3 n k h) in (let TMP_182 +\def (f_equal nat T TLRef TMP_178 TMP_180 TMP_181) in (let TMP_183 \def (plus +n h) in (let TMP_184 \def (TLRef TMP_183) in (let TMP_185 \def (lift k e +TMP_184) in (let TMP_186 \def (plus n h) in (let TMP_187 \def (le_plus_trans +e n h H0) in (let TMP_188 \def (lift_lref_ge TMP_186 k e TMP_187) in (let +TMP_189 \def (eq_ind_r T TMP_172 TMP_176 TMP_182 TMP_185 TMP_188) in (let +TMP_190 \def (TLRef n) in (let TMP_191 \def (lift h d TMP_190) in (let +TMP_192 \def (lift_lref_ge n h d H1) in (let TMP_193 \def (eq_ind_r T TMP_164 +TMP_169 TMP_189 TMP_191 TMP_192) in (let TMP_194 \def (plus d k) in (let +TMP_195 \def (plus n k) in (let TMP_196 \def (TLRef TMP_195) in (let TMP_197 +\def (lift h TMP_194 TMP_196) in (let TMP_198 \def (plus n k) in (let TMP_199 +\def (plus d k) in (let TMP_200 \def (le_n k) in (let TMP_201 \def +(le_plus_plus d n k k H1 TMP_200) in (let TMP_202 \def (lift_lref_ge TMP_198 +h TMP_199 TMP_201) in (eq_ind_r T TMP_158 TMP_162 TMP_193 TMP_197 +TMP_202))))))))))))))))))))))))))))))))))))))) in (let TMP_204 \def (lt_le_e +n d TMP_119 TMP_155 TMP_203) in (let TMP_205 \def (plus k d) in (let TMP_206 +\def (plus_sym k d) in (let TMP_207 \def (eq_ind_r nat TMP_104 TMP_111 +TMP_204 TMP_205 TMP_206) in (let TMP_208 \def (TLRef n) in (let TMP_209 \def +(lift k e TMP_208) in (let TMP_210 \def (lift_lref_ge n k e H0) in (eq_ind_r +T TMP_97 TMP_103 TMP_207 TMP_209 TMP_210)))))))))))))))))))))))) in (lt_le_e +n e TMP_53 TMP_95 TMP_211))))))))))))))))) in (let TMP_339 \def (\lambda (k: +K).(\lambda (t0: T).(\lambda (H: ((\forall (h: nat).(\forall (k0: nat).(\forall (d: nat).(\forall (e: nat).((le e d) \to (eq T (lift h (plus k0 -d) (lift k0 e t1)) (lift k0 e (lift h d t1)))))))))).(\lambda (h: -nat).(\lambda (k0: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H1: (le -e d)).(eq_ind_r T (THead k (lift k0 e t0) (lift k0 (s k e) t1)) (\lambda (t2: -T).(eq T (lift h (plus k0 d) t2) (lift k0 e (lift h d (THead k t0 t1))))) -(eq_ind_r T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h (s k (plus -k0 d)) (lift k0 (s k e) t1))) (\lambda (t2: T).(eq T t2 (lift k0 e (lift h d -(THead k t0 t1))))) (eq_ind_r T (THead k (lift h d t0) (lift h (s k d) t1)) -(\lambda (t2: T).(eq T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h -(s k (plus k0 d)) (lift k0 (s k e) t1))) (lift k0 e t2))) (eq_ind_r T (THead -k (lift k0 e (lift h d t0)) (lift k0 (s k e) (lift h (s k d) t1))) (\lambda -(t2: T).(eq T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h (s k (plus -k0 d)) (lift k0 (s k e) t1))) t2)) (eq_ind_r nat (plus k0 (s k d)) (\lambda -(n: nat).(eq T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h n (lift -k0 (s k e) t1))) (THead k (lift k0 e (lift h d t0)) (lift k0 (s k e) (lift h -(s k d) t1))))) (f_equal3 K T T T THead k k (lift h (plus k0 d) (lift k0 e -t0)) (lift k0 e (lift h d t0)) (lift h (plus k0 (s k d)) (lift k0 (s k e) -t1)) (lift k0 (s k e) (lift h (s k d) t1)) (refl_equal K k) (H h k0 d e H1) -(H0 h k0 (s k d) (s k e) (s_le k e d H1))) (s k (plus k0 d)) (s_plus_sym k k0 -d)) (lift k0 e (THead k (lift h d t0) (lift h (s k d) t1))) (lift_head k -(lift h d t0) (lift h (s k d) t1) k0 e)) (lift h d (THead k t0 t1)) -(lift_head k t0 t1 h d)) (lift h (plus k0 d) (THead k (lift k0 e t0) (lift k0 -(s k e) t1))) (lift_head k (lift k0 e t0) (lift k0 (s k e) t1) h (plus k0 -d))) (lift k0 e (THead k t0 t1)) (lift_head k t0 t1 k0 e)))))))))))) t). -(* COMMENTS -Initial nodes: 2143 -END *) +d) (lift k0 e t0)) (lift k0 e (lift h d t0)))))))))).(\lambda (t1: +T).(\lambda (H0: ((\forall (h: nat).(\forall (k0: nat).(\forall (d: +nat).(\forall (e: nat).((le e d) \to (eq T (lift h (plus k0 d) (lift k0 e +t1)) (lift k0 e (lift h d t1)))))))))).(\lambda (h: nat).(\lambda (k0: +nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H1: (le e d)).(let TMP_213 +\def (lift k0 e t0) in (let TMP_214 \def (s k e) in (let TMP_215 \def (lift +k0 TMP_214 t1) in (let TMP_216 \def (THead k TMP_213 TMP_215) in (let TMP_222 +\def (\lambda (t2: T).(let TMP_217 \def (plus k0 d) in (let TMP_218 \def +(lift h TMP_217 t2) in (let TMP_219 \def (THead k t0 t1) in (let TMP_220 \def +(lift h d TMP_219) in (let TMP_221 \def (lift k0 e TMP_220) in (eq T TMP_218 +TMP_221))))))) in (let TMP_223 \def (plus k0 d) in (let TMP_224 \def (lift k0 +e t0) in (let TMP_225 \def (lift h TMP_223 TMP_224) in (let TMP_226 \def +(plus k0 d) in (let TMP_227 \def (s k TMP_226) in (let TMP_228 \def (s k e) +in (let TMP_229 \def (lift k0 TMP_228 t1) in (let TMP_230 \def (lift h +TMP_227 TMP_229) in (let TMP_231 \def (THead k TMP_225 TMP_230) in (let +TMP_235 \def (\lambda (t2: T).(let TMP_232 \def (THead k t0 t1) in (let +TMP_233 \def (lift h d TMP_232) in (let TMP_234 \def (lift k0 e TMP_233) in +(eq T t2 TMP_234))))) in (let TMP_236 \def (lift h d t0) in (let TMP_237 \def +(s k d) in (let TMP_238 \def (lift h TMP_237 t1) in (let TMP_239 \def (THead +k TMP_236 TMP_238) in (let TMP_250 \def (\lambda (t2: T).(let TMP_240 \def +(plus k0 d) in (let TMP_241 \def (lift k0 e t0) in (let TMP_242 \def (lift h +TMP_240 TMP_241) in (let TMP_243 \def (plus k0 d) in (let TMP_244 \def (s k +TMP_243) in (let TMP_245 \def (s k e) in (let TMP_246 \def (lift k0 TMP_245 +t1) in (let TMP_247 \def (lift h TMP_244 TMP_246) in (let TMP_248 \def (THead +k TMP_242 TMP_247) in (let TMP_249 \def (lift k0 e t2) in (eq T TMP_248 +TMP_249)))))))))))) in (let TMP_251 \def (lift h d t0) in (let TMP_252 \def +(lift k0 e TMP_251) in (let TMP_253 \def (s k e) in (let TMP_254 \def (s k d) +in (let TMP_255 \def (lift h TMP_254 t1) in (let TMP_256 \def (lift k0 +TMP_253 TMP_255) in (let TMP_257 \def (THead k TMP_252 TMP_256) in (let +TMP_267 \def (\lambda (t2: T).(let TMP_258 \def (plus k0 d) in (let TMP_259 +\def (lift k0 e t0) in (let TMP_260 \def (lift h TMP_258 TMP_259) in (let +TMP_261 \def (plus k0 d) in (let TMP_262 \def (s k TMP_261) in (let TMP_263 +\def (s k e) in (let TMP_264 \def (lift k0 TMP_263 t1) in (let TMP_265 \def +(lift h TMP_262 TMP_264) in (let TMP_266 \def (THead k TMP_260 TMP_265) in +(eq T TMP_266 t2))))))))))) in (let TMP_268 \def (s k d) in (let TMP_269 \def +(plus k0 TMP_268) in (let TMP_284 \def (\lambda (n: nat).(let TMP_270 \def +(plus k0 d) in (let TMP_271 \def (lift k0 e t0) in (let TMP_272 \def (lift h +TMP_270 TMP_271) in (let TMP_273 \def (s k e) in (let TMP_274 \def (lift k0 +TMP_273 t1) in (let TMP_275 \def (lift h n TMP_274) in (let TMP_276 \def +(THead k TMP_272 TMP_275) in (let TMP_277 \def (lift h d t0) in (let TMP_278 +\def (lift k0 e TMP_277) in (let TMP_279 \def (s k e) in (let TMP_280 \def (s +k d) in (let TMP_281 \def (lift h TMP_280 t1) in (let TMP_282 \def (lift k0 +TMP_279 TMP_281) in (let TMP_283 \def (THead k TMP_278 TMP_282) in (eq T +TMP_276 TMP_283)))))))))))))))) in (let TMP_285 \def (plus k0 d) in (let +TMP_286 \def (lift k0 e t0) in (let TMP_287 \def (lift h TMP_285 TMP_286) in +(let TMP_288 \def (lift h d t0) in (let TMP_289 \def (lift k0 e TMP_288) in +(let TMP_290 \def (s k d) in (let TMP_291 \def (plus k0 TMP_290) in (let +TMP_292 \def (s k e) in (let TMP_293 \def (lift k0 TMP_292 t1) in (let +TMP_294 \def (lift h TMP_291 TMP_293) in (let TMP_295 \def (s k e) in (let +TMP_296 \def (s k d) in (let TMP_297 \def (lift h TMP_296 t1) in (let TMP_298 +\def (lift k0 TMP_295 TMP_297) in (let TMP_299 \def (refl_equal K k) in (let +TMP_300 \def (H h k0 d e H1) in (let TMP_301 \def (s k d) in (let TMP_302 +\def (s k e) in (let TMP_303 \def (s_le k e d H1) in (let TMP_304 \def (H0 h +k0 TMP_301 TMP_302 TMP_303) in (let TMP_305 \def (f_equal3 K T T T THead k k +TMP_287 TMP_289 TMP_294 TMP_298 TMP_299 TMP_300 TMP_304) in (let TMP_306 \def +(plus k0 d) in (let TMP_307 \def (s k TMP_306) in (let TMP_308 \def +(s_plus_sym k k0 d) in (let TMP_309 \def (eq_ind_r nat TMP_269 TMP_284 +TMP_305 TMP_307 TMP_308) in (let TMP_310 \def (lift h d t0) in (let TMP_311 +\def (s k d) in (let TMP_312 \def (lift h TMP_311 t1) in (let TMP_313 \def +(THead k TMP_310 TMP_312) in (let TMP_314 \def (lift k0 e TMP_313) in (let +TMP_315 \def (lift h d t0) in (let TMP_316 \def (s k d) in (let TMP_317 \def +(lift h TMP_316 t1) in (let TMP_318 \def (lift_head k TMP_315 TMP_317 k0 e) +in (let TMP_319 \def (eq_ind_r T TMP_257 TMP_267 TMP_309 TMP_314 TMP_318) in +(let TMP_320 \def (THead k t0 t1) in (let TMP_321 \def (lift h d TMP_320) in +(let TMP_322 \def (lift_head k t0 t1 h d) in (let TMP_323 \def (eq_ind_r T +TMP_239 TMP_250 TMP_319 TMP_321 TMP_322) in (let TMP_324 \def (plus k0 d) in +(let TMP_325 \def (lift k0 e t0) in (let TMP_326 \def (s k e) in (let TMP_327 +\def (lift k0 TMP_326 t1) in (let TMP_328 \def (THead k TMP_325 TMP_327) in +(let TMP_329 \def (lift h TMP_324 TMP_328) in (let TMP_330 \def (lift k0 e +t0) in (let TMP_331 \def (s k e) in (let TMP_332 \def (lift k0 TMP_331 t1) in +(let TMP_333 \def (plus k0 d) in (let TMP_334 \def (lift_head k TMP_330 +TMP_332 h TMP_333) in (let TMP_335 \def (eq_ind_r T TMP_231 TMP_235 TMP_323 +TMP_329 TMP_334) in (let TMP_336 \def (THead k t0 t1) in (let TMP_337 \def +(lift k0 e TMP_336) in (let TMP_338 \def (lift_head k t0 t1 k0 e) in +(eq_ind_r T TMP_216 TMP_222 TMP_335 TMP_337 +TMP_338))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +))))))))))))))))))))))))) in (T_ind TMP_6 TMP_45 TMP_212 TMP_339 t))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/lift/tlt.ma b/matita/matita/contribs/lambdadelta/basic_1/lift/tlt.ma index 1d8edc7df..77e5025dd 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/lift/tlt.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/lift/tlt.ma @@ -14,31 +14,47 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/lift/fwd.ma". +include "basic_1/lift/fwd.ma". -include "Basic-1/tlt/props.ma". +include "basic_1/tlt/props.ma". theorem lift_weight_map: \forall (t: T).(\forall (h: nat).(\forall (d: nat).(\forall (f: ((nat \to nat))).(((\forall (m: nat).((le d m) \to (eq nat (f m) O)))) \to (eq nat (weight_map f (lift h d t)) (weight_map f t)))))) \def - \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (h: nat).(\forall (d: -nat).(\forall (f: ((nat \to nat))).(((\forall (m: nat).((le d m) \to (eq nat -(f m) O)))) \to (eq nat (weight_map f (lift h d t0)) (weight_map f t0))))))) -(\lambda (n: nat).(\lambda (_: nat).(\lambda (d: nat).(\lambda (f: ((nat \to -nat))).(\lambda (_: ((\forall (m: nat).((le d m) \to (eq nat (f m) -O))))).(refl_equal nat (weight_map f (TSort n)))))))) (\lambda (n: -nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (f: ((nat \to -nat))).(\lambda (H: ((\forall (m: nat).((le d m) \to (eq nat (f m) -O))))).(lt_le_e n d (eq nat (weight_map f (lift h d (TLRef n))) (weight_map f -(TLRef n))) (\lambda (H0: (lt n d)).(eq_ind_r T (TLRef n) (\lambda (t0: -T).(eq nat (weight_map f t0) (weight_map f (TLRef n)))) (refl_equal nat -(weight_map f (TLRef n))) (lift h d (TLRef n)) (lift_lref_lt n h d H0))) -(\lambda (H0: (le d n)).(eq_ind_r T (TLRef (plus n h)) (\lambda (t0: T).(eq -nat (weight_map f t0) (weight_map f (TLRef n)))) (eq_ind_r nat O (\lambda -(n0: nat).(eq nat (f (plus n h)) n0)) (H (plus n h) (le_plus_trans d n h H0)) -(f n) (H n H0)) (lift h d (TLRef n)) (lift_lref_ge n h d H0))))))))) (\lambda + \lambda (t: T).(let TMP_4 \def (\lambda (t0: T).(\forall (h: nat).(\forall +(d: nat).(\forall (f: ((nat \to nat))).(((\forall (m: nat).((le d m) \to (eq +nat (f m) O)))) \to (let TMP_1 \def (lift h d t0) in (let TMP_2 \def +(weight_map f TMP_1) in (let TMP_3 \def (weight_map f t0) in (eq nat TMP_2 +TMP_3))))))))) in (let TMP_7 \def (\lambda (n: nat).(\lambda (_: +nat).(\lambda (d: nat).(\lambda (f: ((nat \to nat))).(\lambda (_: ((\forall +(m: nat).((le d m) \to (eq nat (f m) O))))).(let TMP_5 \def (TSort n) in (let +TMP_6 \def (weight_map f TMP_5) in (refl_equal nat TMP_6)))))))) in (let +TMP_45 \def (\lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda +(f: ((nat \to nat))).(\lambda (H: ((\forall (m: nat).((le d m) \to (eq nat (f +m) O))))).(let TMP_8 \def (TLRef n) in (let TMP_9 \def (lift h d TMP_8) in +(let TMP_10 \def (weight_map f TMP_9) in (let TMP_11 \def (TLRef n) in (let +TMP_12 \def (weight_map f TMP_11) in (let TMP_13 \def (eq nat TMP_10 TMP_12) +in (let TMP_25 \def (\lambda (H0: (lt n d)).(let TMP_14 \def (TLRef n) in +(let TMP_18 \def (\lambda (t0: T).(let TMP_15 \def (weight_map f t0) in (let +TMP_16 \def (TLRef n) in (let TMP_17 \def (weight_map f TMP_16) in (eq nat +TMP_15 TMP_17))))) in (let TMP_19 \def (TLRef n) in (let TMP_20 \def +(weight_map f TMP_19) in (let TMP_21 \def (refl_equal nat TMP_20) in (let +TMP_22 \def (TLRef n) in (let TMP_23 \def (lift h d TMP_22) in (let TMP_24 +\def (lift_lref_lt n h d H0) in (eq_ind_r T TMP_14 TMP_18 TMP_21 TMP_23 +TMP_24)))))))))) in (let TMP_44 \def (\lambda (H0: (le d n)).(let TMP_26 \def +(plus n h) in (let TMP_27 \def (TLRef TMP_26) in (let TMP_31 \def (\lambda +(t0: T).(let TMP_28 \def (weight_map f t0) in (let TMP_29 \def (TLRef n) in +(let TMP_30 \def (weight_map f TMP_29) in (eq nat TMP_28 TMP_30))))) in (let +TMP_34 \def (\lambda (n0: nat).(let TMP_32 \def (plus n h) in (let TMP_33 +\def (f TMP_32) in (eq nat TMP_33 n0)))) in (let TMP_35 \def (plus n h) in +(let TMP_36 \def (le_plus_trans d n h H0) in (let TMP_37 \def (H TMP_35 +TMP_36) in (let TMP_38 \def (f n) in (let TMP_39 \def (H n H0) in (let TMP_40 +\def (eq_ind_r nat O TMP_34 TMP_37 TMP_38 TMP_39) in (let TMP_41 \def (TLRef +n) in (let TMP_42 \def (lift h d TMP_41) in (let TMP_43 \def (lift_lref_ge n +h d H0) in (eq_ind_r T TMP_27 TMP_31 TMP_40 TMP_42 TMP_43))))))))))))))) in +(lt_le_e n d TMP_13 TMP_25 TMP_44)))))))))))))) in (let TMP_325 \def (\lambda (k: K).(\lambda (t0: T).(\lambda (H: ((\forall (h: nat).(\forall (d: nat).(\forall (f: ((nat \to nat))).(((\forall (m: nat).((le d m) \to (eq nat (f m) O)))) \to (eq nat (weight_map f (lift h d t0)) (weight_map f @@ -47,78 +63,183 @@ nat).(\forall (f: ((nat \to nat))).(((\forall (m: nat).((le d m) \to (eq nat (f m) O)))) \to (eq nat (weight_map f (lift h d t1)) (weight_map f t1)))))))).(\lambda (h: nat).(\lambda (d: nat).(\lambda (f: ((nat \to nat))).(\lambda (H1: ((\forall (m: nat).((le d m) \to (eq nat (f m) -O))))).(K_ind (\lambda (k0: K).(eq nat (weight_map f (lift h d (THead k0 t0 -t1))) (weight_map f (THead k0 t0 t1)))) (\lambda (b: B).(eq_ind_r T (THead -(Bind b) (lift h d t0) (lift h (s (Bind b) d) t1)) (\lambda (t2: T).(eq nat -(weight_map f t2) (weight_map f (THead (Bind b) t0 t1)))) (B_ind (\lambda -(b0: B).(eq nat (match b0 with [Abbr \Rightarrow (S (plus (weight_map f (lift -h d t0)) (weight_map (wadd f (S (weight_map f (lift h d t0)))) (lift h (S d) -t1)))) | Abst \Rightarrow (S (plus (weight_map f (lift h d t0)) (weight_map -(wadd f O) (lift h (S d) t1)))) | Void \Rightarrow (S (plus (weight_map f -(lift h d t0)) (weight_map (wadd f O) (lift h (S d) t1))))]) (match b0 with -[Abbr \Rightarrow (S (plus (weight_map f t0) (weight_map (wadd f (S -(weight_map f t0))) t1))) | Abst \Rightarrow (S (plus (weight_map f t0) -(weight_map (wadd f O) t1))) | Void \Rightarrow (S (plus (weight_map f t0) -(weight_map (wadd f O) t1)))]))) (eq_ind_r nat (weight_map f t0) (\lambda (n: -nat).(eq nat (S (plus n (weight_map (wadd f (S n)) (lift h (S d) t1)))) (S -(plus (weight_map f t0) (weight_map (wadd f (S (weight_map f t0))) t1))))) -(eq_ind_r nat (weight_map (wadd f (S (weight_map f t0))) t1) (\lambda (n: -nat).(eq nat (S (plus (weight_map f t0) n)) (S (plus (weight_map f t0) -(weight_map (wadd f (S (weight_map f t0))) t1))))) (refl_equal nat (S (plus -(weight_map f t0) (weight_map (wadd f (S (weight_map f t0))) t1)))) -(weight_map (wadd f (S (weight_map f t0))) (lift h (S d) t1)) (H0 h (S d) -(wadd f (S (weight_map f t0))) (\lambda (m: nat).(\lambda (H2: (le (S d) -m)).(ex2_ind nat (\lambda (n: nat).(eq nat m (S n))) (\lambda (n: nat).(le d -n)) (eq nat (wadd f (S (weight_map f t0)) m) O) (\lambda (x: nat).(\lambda -(H3: (eq nat m (S x))).(\lambda (H4: (le d x)).(eq_ind_r nat (S x) (\lambda -(n: nat).(eq nat (wadd f (S (weight_map f t0)) n) O)) (H1 x H4) m H3)))) -(le_gen_S d m H2)))))) (weight_map f (lift h d t0)) (H h d f H1)) (eq_ind_r -nat (weight_map (wadd f O) t1) (\lambda (n: nat).(eq nat (S (plus (weight_map -f (lift h d t0)) n)) (S (plus (weight_map f t0) (weight_map (wadd f O) -t1))))) (f_equal nat nat S (plus (weight_map f (lift h d t0)) (weight_map -(wadd f O) t1)) (plus (weight_map f t0) (weight_map (wadd f O) t1)) (f_equal2 -nat nat nat plus (weight_map f (lift h d t0)) (weight_map f t0) (weight_map -(wadd f O) t1) (weight_map (wadd f O) t1) (H h d f H1) (refl_equal nat -(weight_map (wadd f O) t1)))) (weight_map (wadd f O) (lift h (S d) t1)) (H0 h -(S d) (wadd f O) (\lambda (m: nat).(\lambda (H2: (le (S d) m)).(ex2_ind nat -(\lambda (n: nat).(eq nat m (S n))) (\lambda (n: nat).(le d n)) (eq nat (wadd -f O m) O) (\lambda (x: nat).(\lambda (H3: (eq nat m (S x))).(\lambda (H4: (le -d x)).(eq_ind_r nat (S x) (\lambda (n: nat).(eq nat (wadd f O n) O)) (H1 x -H4) m H3)))) (le_gen_S d m H2)))))) (eq_ind_r nat (weight_map (wadd f O) t1) -(\lambda (n: nat).(eq nat (S (plus (weight_map f (lift h d t0)) n)) (S (plus -(weight_map f t0) (weight_map (wadd f O) t1))))) (f_equal nat nat S (plus -(weight_map f (lift h d t0)) (weight_map (wadd f O) t1)) (plus (weight_map f -t0) (weight_map (wadd f O) t1)) (f_equal2 nat nat nat plus (weight_map f -(lift h d t0)) (weight_map f t0) (weight_map (wadd f O) t1) (weight_map (wadd -f O) t1) (H h d f H1) (refl_equal nat (weight_map (wadd f O) t1)))) -(weight_map (wadd f O) (lift h (S d) t1)) (H0 h (S d) (wadd f O) (\lambda (m: -nat).(\lambda (H2: (le (S d) m)).(ex2_ind nat (\lambda (n: nat).(eq nat m (S -n))) (\lambda (n: nat).(le d n)) (eq nat (wadd f O m) O) (\lambda (x: -nat).(\lambda (H3: (eq nat m (S x))).(\lambda (H4: (le d x)).(eq_ind_r nat (S -x) (\lambda (n: nat).(eq nat (wadd f O n) O)) (H1 x H4) m H3)))) (le_gen_S d -m H2)))))) b) (lift h d (THead (Bind b) t0 t1)) (lift_head (Bind b) t0 t1 h -d))) (\lambda (f0: F).(eq_ind_r T (THead (Flat f0) (lift h d t0) (lift h (s -(Flat f0) d) t1)) (\lambda (t2: T).(eq nat (weight_map f t2) (weight_map f -(THead (Flat f0) t0 t1)))) (f_equal nat nat S (plus (weight_map f (lift h d -t0)) (weight_map f (lift h d t1))) (plus (weight_map f t0) (weight_map f t1)) -(f_equal2 nat nat nat plus (weight_map f (lift h d t0)) (weight_map f t0) -(weight_map f (lift h d t1)) (weight_map f t1) (H h d f H1) (H0 h d f H1))) -(lift h d (THead (Flat f0) t0 t1)) (lift_head (Flat f0) t0 t1 h d))) -k)))))))))) t). -(* COMMENTS -Initial nodes: 1969 -END *) +O))))).(let TMP_51 \def (\lambda (k0: K).(let TMP_46 \def (THead k0 t0 t1) in +(let TMP_47 \def (lift h d TMP_46) in (let TMP_48 \def (weight_map f TMP_47) +in (let TMP_49 \def (THead k0 t0 t1) in (let TMP_50 \def (weight_map f +TMP_49) in (eq nat TMP_48 TMP_50))))))) in (let TMP_289 \def (\lambda (b: +B).(let TMP_52 \def (Bind b) in (let TMP_53 \def (lift h d t0) in (let TMP_54 +\def (Bind b) in (let TMP_55 \def (s TMP_54 d) in (let TMP_56 \def (lift h +TMP_55 t1) in (let TMP_57 \def (THead TMP_52 TMP_53 TMP_56) in (let TMP_62 +\def (\lambda (t2: T).(let TMP_58 \def (weight_map f t2) in (let TMP_59 \def +(Bind b) in (let TMP_60 \def (THead TMP_59 t0 t1) in (let TMP_61 \def +(weight_map f TMP_60) in (eq nat TMP_58 TMP_61)))))) in (let TMP_103 \def +(\lambda (b0: B).(let TMP_87 \def (match b0 with [Abbr \Rightarrow (let +TMP_77 \def (lift h d t0) in (let TMP_78 \def (weight_map f TMP_77) in (let +TMP_79 \def (lift h d t0) in (let TMP_80 \def (weight_map f TMP_79) in (let +TMP_81 \def (S TMP_80) in (let TMP_82 \def (wadd f TMP_81) in (let TMP_83 +\def (S d) in (let TMP_84 \def (lift h TMP_83 t1) in (let TMP_85 \def +(weight_map TMP_82 TMP_84) in (let TMP_86 \def (plus TMP_78 TMP_85) in (S +TMP_86))))))))))) | Abst \Rightarrow (let TMP_70 \def (lift h d t0) in (let +TMP_71 \def (weight_map f TMP_70) in (let TMP_72 \def (wadd f O) in (let +TMP_73 \def (S d) in (let TMP_74 \def (lift h TMP_73 t1) in (let TMP_75 \def +(weight_map TMP_72 TMP_74) in (let TMP_76 \def (plus TMP_71 TMP_75) in (S +TMP_76)))))))) | Void \Rightarrow (let TMP_63 \def (lift h d t0) in (let +TMP_64 \def (weight_map f TMP_63) in (let TMP_65 \def (wadd f O) in (let +TMP_66 \def (S d) in (let TMP_67 \def (lift h TMP_66 t1) in (let TMP_68 \def +(weight_map TMP_65 TMP_67) in (let TMP_69 \def (plus TMP_64 TMP_68) in (S +TMP_69))))))))]) in (let TMP_102 \def (match b0 with [Abbr \Rightarrow (let +TMP_96 \def (weight_map f t0) in (let TMP_97 \def (weight_map f t0) in (let +TMP_98 \def (S TMP_97) in (let TMP_99 \def (wadd f TMP_98) in (let TMP_100 +\def (weight_map TMP_99 t1) in (let TMP_101 \def (plus TMP_96 TMP_100) in (S +TMP_101))))))) | Abst \Rightarrow (let TMP_92 \def (weight_map f t0) in (let +TMP_93 \def (wadd f O) in (let TMP_94 \def (weight_map TMP_93 t1) in (let +TMP_95 \def (plus TMP_92 TMP_94) in (S TMP_95))))) | Void \Rightarrow (let +TMP_88 \def (weight_map f t0) in (let TMP_89 \def (wadd f O) in (let TMP_90 +\def (weight_map TMP_89 t1) in (let TMP_91 \def (plus TMP_88 TMP_90) in (S +TMP_91)))))]) in (eq nat TMP_87 TMP_102)))) in (let TMP_104 \def (weight_map +f t0) in (let TMP_119 \def (\lambda (n: nat).(let TMP_105 \def (S n) in (let +TMP_106 \def (wadd f TMP_105) in (let TMP_107 \def (S d) in (let TMP_108 \def +(lift h TMP_107 t1) in (let TMP_109 \def (weight_map TMP_106 TMP_108) in (let +TMP_110 \def (plus n TMP_109) in (let TMP_111 \def (S TMP_110) in (let +TMP_112 \def (weight_map f t0) in (let TMP_113 \def (weight_map f t0) in (let +TMP_114 \def (S TMP_113) in (let TMP_115 \def (wadd f TMP_114) in (let +TMP_116 \def (weight_map TMP_115 t1) in (let TMP_117 \def (plus TMP_112 +TMP_116) in (let TMP_118 \def (S TMP_117) in (eq nat TMP_111 +TMP_118)))))))))))))))) in (let TMP_120 \def (weight_map f t0) in (let +TMP_121 \def (S TMP_120) in (let TMP_122 \def (wadd f TMP_121) in (let +TMP_123 \def (weight_map TMP_122 t1) in (let TMP_134 \def (\lambda (n: +nat).(let TMP_124 \def (weight_map f t0) in (let TMP_125 \def (plus TMP_124 +n) in (let TMP_126 \def (S TMP_125) in (let TMP_127 \def (weight_map f t0) in +(let TMP_128 \def (weight_map f t0) in (let TMP_129 \def (S TMP_128) in (let +TMP_130 \def (wadd f TMP_129) in (let TMP_131 \def (weight_map TMP_130 t1) in +(let TMP_132 \def (plus TMP_127 TMP_131) in (let TMP_133 \def (S TMP_132) in +(eq nat TMP_126 TMP_133)))))))))))) in (let TMP_135 \def (weight_map f t0) in +(let TMP_136 \def (weight_map f t0) in (let TMP_137 \def (S TMP_136) in (let +TMP_138 \def (wadd f TMP_137) in (let TMP_139 \def (weight_map TMP_138 t1) in +(let TMP_140 \def (plus TMP_135 TMP_139) in (let TMP_141 \def (S TMP_140) in +(let TMP_142 \def (refl_equal nat TMP_141) in (let TMP_143 \def (weight_map f +t0) in (let TMP_144 \def (S TMP_143) in (let TMP_145 \def (wadd f TMP_144) in +(let TMP_146 \def (S d) in (let TMP_147 \def (lift h TMP_146 t1) in (let +TMP_148 \def (weight_map TMP_145 TMP_147) in (let TMP_149 \def (S d) in (let +TMP_150 \def (weight_map f t0) in (let TMP_151 \def (S TMP_150) in (let +TMP_152 \def (wadd f TMP_151) in (let TMP_168 \def (\lambda (m: nat).(\lambda +(H2: (le (S d) m)).(let TMP_154 \def (\lambda (n: nat).(let TMP_153 \def (S +n) in (eq nat m TMP_153))) in (let TMP_155 \def (\lambda (n: nat).(le d n)) +in (let TMP_156 \def (weight_map f t0) in (let TMP_157 \def (S TMP_156) in +(let TMP_158 \def (wadd f TMP_157 m) in (let TMP_159 \def (eq nat TMP_158 O) +in (let TMP_166 \def (\lambda (x: nat).(\lambda (H3: (eq nat m (S +x))).(\lambda (H4: (le d x)).(let TMP_160 \def (S x) in (let TMP_164 \def +(\lambda (n: nat).(let TMP_161 \def (weight_map f t0) in (let TMP_162 \def (S +TMP_161) in (let TMP_163 \def (wadd f TMP_162 n) in (eq nat TMP_163 O))))) in +(let TMP_165 \def (H1 x H4) in (eq_ind_r nat TMP_160 TMP_164 TMP_165 m +H3))))))) in (let TMP_167 \def (le_gen_S d m H2) in (ex2_ind nat TMP_154 +TMP_155 TMP_159 TMP_166 TMP_167))))))))))) in (let TMP_169 \def (H0 h TMP_149 +TMP_152 TMP_168) in (let TMP_170 \def (eq_ind_r nat TMP_123 TMP_134 TMP_142 +TMP_148 TMP_169) in (let TMP_171 \def (lift h d t0) in (let TMP_172 \def +(weight_map f TMP_171) in (let TMP_173 \def (H h d f H1) in (let TMP_174 \def +(eq_ind_r nat TMP_104 TMP_119 TMP_170 TMP_172 TMP_173) in (let TMP_175 \def +(wadd f O) in (let TMP_176 \def (weight_map TMP_175 t1) in (let TMP_186 \def +(\lambda (n: nat).(let TMP_177 \def (lift h d t0) in (let TMP_178 \def +(weight_map f TMP_177) in (let TMP_179 \def (plus TMP_178 n) in (let TMP_180 +\def (S TMP_179) in (let TMP_181 \def (weight_map f t0) in (let TMP_182 \def +(wadd f O) in (let TMP_183 \def (weight_map TMP_182 t1) in (let TMP_184 \def +(plus TMP_181 TMP_183) in (let TMP_185 \def (S TMP_184) in (eq nat TMP_180 +TMP_185))))))))))) in (let TMP_187 \def (lift h d t0) in (let TMP_188 \def +(weight_map f TMP_187) in (let TMP_189 \def (wadd f O) in (let TMP_190 \def +(weight_map TMP_189 t1) in (let TMP_191 \def (plus TMP_188 TMP_190) in (let +TMP_192 \def (weight_map f t0) in (let TMP_193 \def (wadd f O) in (let +TMP_194 \def (weight_map TMP_193 t1) in (let TMP_195 \def (plus TMP_192 +TMP_194) in (let TMP_196 \def (lift h d t0) in (let TMP_197 \def (weight_map +f TMP_196) in (let TMP_198 \def (weight_map f t0) in (let TMP_199 \def (wadd +f O) in (let TMP_200 \def (weight_map TMP_199 t1) in (let TMP_201 \def (wadd +f O) in (let TMP_202 \def (weight_map TMP_201 t1) in (let TMP_203 \def (H h d +f H1) in (let TMP_204 \def (wadd f O) in (let TMP_205 \def (weight_map +TMP_204 t1) in (let TMP_206 \def (refl_equal nat TMP_205) in (let TMP_207 +\def (f_equal2 nat nat nat plus TMP_197 TMP_198 TMP_200 TMP_202 TMP_203 +TMP_206) in (let TMP_208 \def (f_equal nat nat S TMP_191 TMP_195 TMP_207) in +(let TMP_209 \def (wadd f O) in (let TMP_210 \def (S d) in (let TMP_211 \def +(lift h TMP_210 t1) in (let TMP_212 \def (weight_map TMP_209 TMP_211) in (let +TMP_213 \def (S d) in (let TMP_214 \def (wadd f O) in (let TMP_226 \def +(\lambda (m: nat).(\lambda (H2: (le (S d) m)).(let TMP_216 \def (\lambda (n: +nat).(let TMP_215 \def (S n) in (eq nat m TMP_215))) in (let TMP_217 \def +(\lambda (n: nat).(le d n)) in (let TMP_218 \def (wadd f O m) in (let TMP_219 +\def (eq nat TMP_218 O) in (let TMP_224 \def (\lambda (x: nat).(\lambda (H3: +(eq nat m (S x))).(\lambda (H4: (le d x)).(let TMP_220 \def (S x) in (let +TMP_222 \def (\lambda (n: nat).(let TMP_221 \def (wadd f O n) in (eq nat +TMP_221 O))) in (let TMP_223 \def (H1 x H4) in (eq_ind_r nat TMP_220 TMP_222 +TMP_223 m H3))))))) in (let TMP_225 \def (le_gen_S d m H2) in (ex2_ind nat +TMP_216 TMP_217 TMP_219 TMP_224 TMP_225))))))))) in (let TMP_227 \def (H0 h +TMP_213 TMP_214 TMP_226) in (let TMP_228 \def (eq_ind_r nat TMP_176 TMP_186 +TMP_208 TMP_212 TMP_227) in (let TMP_229 \def (wadd f O) in (let TMP_230 \def +(weight_map TMP_229 t1) in (let TMP_240 \def (\lambda (n: nat).(let TMP_231 +\def (lift h d t0) in (let TMP_232 \def (weight_map f TMP_231) in (let +TMP_233 \def (plus TMP_232 n) in (let TMP_234 \def (S TMP_233) in (let +TMP_235 \def (weight_map f t0) in (let TMP_236 \def (wadd f O) in (let +TMP_237 \def (weight_map TMP_236 t1) in (let TMP_238 \def (plus TMP_235 +TMP_237) in (let TMP_239 \def (S TMP_238) in (eq nat TMP_234 +TMP_239))))))))))) in (let TMP_241 \def (lift h d t0) in (let TMP_242 \def +(weight_map f TMP_241) in (let TMP_243 \def (wadd f O) in (let TMP_244 \def +(weight_map TMP_243 t1) in (let TMP_245 \def (plus TMP_242 TMP_244) in (let +TMP_246 \def (weight_map f t0) in (let TMP_247 \def (wadd f O) in (let +TMP_248 \def (weight_map TMP_247 t1) in (let TMP_249 \def (plus TMP_246 +TMP_248) in (let TMP_250 \def (lift h d t0) in (let TMP_251 \def (weight_map +f TMP_250) in (let TMP_252 \def (weight_map f t0) in (let TMP_253 \def (wadd +f O) in (let TMP_254 \def (weight_map TMP_253 t1) in (let TMP_255 \def (wadd +f O) in (let TMP_256 \def (weight_map TMP_255 t1) in (let TMP_257 \def (H h d +f H1) in (let TMP_258 \def (wadd f O) in (let TMP_259 \def (weight_map +TMP_258 t1) in (let TMP_260 \def (refl_equal nat TMP_259) in (let TMP_261 +\def (f_equal2 nat nat nat plus TMP_251 TMP_252 TMP_254 TMP_256 TMP_257 +TMP_260) in (let TMP_262 \def (f_equal nat nat S TMP_245 TMP_249 TMP_261) in +(let TMP_263 \def (wadd f O) in (let TMP_264 \def (S d) in (let TMP_265 \def +(lift h TMP_264 t1) in (let TMP_266 \def (weight_map TMP_263 TMP_265) in (let +TMP_267 \def (S d) in (let TMP_268 \def (wadd f O) in (let TMP_280 \def +(\lambda (m: nat).(\lambda (H2: (le (S d) m)).(let TMP_270 \def (\lambda (n: +nat).(let TMP_269 \def (S n) in (eq nat m TMP_269))) in (let TMP_271 \def +(\lambda (n: nat).(le d n)) in (let TMP_272 \def (wadd f O m) in (let TMP_273 +\def (eq nat TMP_272 O) in (let TMP_278 \def (\lambda (x: nat).(\lambda (H3: +(eq nat m (S x))).(\lambda (H4: (le d x)).(let TMP_274 \def (S x) in (let +TMP_276 \def (\lambda (n: nat).(let TMP_275 \def (wadd f O n) in (eq nat +TMP_275 O))) in (let TMP_277 \def (H1 x H4) in (eq_ind_r nat TMP_274 TMP_276 +TMP_277 m H3))))))) in (let TMP_279 \def (le_gen_S d m H2) in (ex2_ind nat +TMP_270 TMP_271 TMP_273 TMP_278 TMP_279))))))))) in (let TMP_281 \def (H0 h +TMP_267 TMP_268 TMP_280) in (let TMP_282 \def (eq_ind_r nat TMP_230 TMP_240 +TMP_262 TMP_266 TMP_281) in (let TMP_283 \def (B_ind TMP_103 TMP_174 TMP_228 +TMP_282 b) in (let TMP_284 \def (Bind b) in (let TMP_285 \def (THead TMP_284 +t0 t1) in (let TMP_286 \def (lift h d TMP_285) in (let TMP_287 \def (Bind b) +in (let TMP_288 \def (lift_head TMP_287 t0 t1 h d) in (eq_ind_r T TMP_57 +TMP_62 TMP_283 TMP_286 +TMP_288))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +))))))))))))))))))))))))))))))))))))))))))))) in (let TMP_324 \def (\lambda +(f0: F).(let TMP_290 \def (Flat f0) in (let TMP_291 \def (lift h d t0) in +(let TMP_292 \def (Flat f0) in (let TMP_293 \def (s TMP_292 d) in (let +TMP_294 \def (lift h TMP_293 t1) in (let TMP_295 \def (THead TMP_290 TMP_291 +TMP_294) in (let TMP_300 \def (\lambda (t2: T).(let TMP_296 \def (weight_map +f t2) in (let TMP_297 \def (Flat f0) in (let TMP_298 \def (THead TMP_297 t0 +t1) in (let TMP_299 \def (weight_map f TMP_298) in (eq nat TMP_296 +TMP_299)))))) in (let TMP_301 \def (lift h d t0) in (let TMP_302 \def +(weight_map f TMP_301) in (let TMP_303 \def (lift h d t1) in (let TMP_304 +\def (weight_map f TMP_303) in (let TMP_305 \def (plus TMP_302 TMP_304) in +(let TMP_306 \def (weight_map f t0) in (let TMP_307 \def (weight_map f t1) in +(let TMP_308 \def (plus TMP_306 TMP_307) in (let TMP_309 \def (lift h d t0) +in (let TMP_310 \def (weight_map f TMP_309) in (let TMP_311 \def (weight_map +f t0) in (let TMP_312 \def (lift h d t1) in (let TMP_313 \def (weight_map f +TMP_312) in (let TMP_314 \def (weight_map f t1) in (let TMP_315 \def (H h d f +H1) in (let TMP_316 \def (H0 h d f H1) in (let TMP_317 \def (f_equal2 nat nat +nat plus TMP_310 TMP_311 TMP_313 TMP_314 TMP_315 TMP_316) in (let TMP_318 +\def (f_equal nat nat S TMP_305 TMP_308 TMP_317) in (let TMP_319 \def (Flat +f0) in (let TMP_320 \def (THead TMP_319 t0 t1) in (let TMP_321 \def (lift h d +TMP_320) in (let TMP_322 \def (Flat f0) in (let TMP_323 \def (lift_head +TMP_322 t0 t1 h d) in (eq_ind_r T TMP_295 TMP_300 TMP_318 TMP_321 +TMP_323)))))))))))))))))))))))))))))))) in (K_ind TMP_51 TMP_289 TMP_324 +k))))))))))))) in (T_ind TMP_4 TMP_7 TMP_45 TMP_325 t))))). theorem lift_weight: \forall (t: T).(\forall (h: nat).(\forall (d: nat).(eq nat (weight (lift h d t)) (weight t)))) \def - \lambda (t: T).(\lambda (h: nat).(\lambda (d: nat).(lift_weight_map t h d -(\lambda (_: nat).O) (\lambda (m: nat).(\lambda (_: (le d m)).(refl_equal nat -O)))))). -(* COMMENTS -Initial nodes: 31 -END *) + \lambda (t: T).(\lambda (h: nat).(\lambda (d: nat).(let TMP_1 \def (\lambda +(_: nat).O) in (let TMP_2 \def (\lambda (m: nat).(\lambda (_: (le d +m)).(refl_equal nat O))) in (lift_weight_map t h d TMP_1 TMP_2))))). theorem lift_weight_add: \forall (w: nat).(\forall (t: T).(\forall (h: nat).(\forall (d: @@ -127,149 +248,375 @@ nat).(\forall (f: ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (((\forall (m: nat).((le d m) \to (eq nat (g (S m)) (f m))))) \to (eq nat (weight_map f (lift h d t)) (weight_map g (lift (S h) d t))))))))))) \def - \lambda (w: nat).(\lambda (t: T).(T_ind (\lambda (t0: T).(\forall (h: -nat).(\forall (d: nat).(\forall (f: ((nat \to nat))).(\forall (g: ((nat \to -nat))).(((\forall (m: nat).((lt m d) \to (eq nat (g m) (f m))))) \to ((eq nat -(g d) w) \to (((\forall (m: nat).((le d m) \to (eq nat (g (S m)) (f m))))) -\to (eq nat (weight_map f (lift h d t0)) (weight_map g (lift (S h) d -t0))))))))))) (\lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda + \lambda (w: nat).(\lambda (t: T).(let TMP_6 \def (\lambda (t0: T).(\forall +(h: nat).(\forall (d: nat).(\forall (f: ((nat \to nat))).(\forall (g: ((nat +\to nat))).(((\forall (m: nat).((lt m d) \to (eq nat (g m) (f m))))) \to ((eq +nat (g d) w) \to (((\forall (m: nat).((le d m) \to (eq nat (g (S m)) (f +m))))) \to (let TMP_1 \def (lift h d t0) in (let TMP_2 \def (weight_map f +TMP_1) in (let TMP_3 \def (S h) in (let TMP_4 \def (lift TMP_3 d t0) in (let +TMP_5 \def (weight_map g TMP_4) in (eq nat TMP_2 TMP_5)))))))))))))) in (let +TMP_11 \def (\lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (f: ((nat \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (_: ((\forall (m: nat).((lt m d) \to (eq nat (g m) (f m)))))).(\lambda (_: (eq nat (g d) w)).(\lambda (_: ((\forall (m: nat).((le d m) \to (eq nat (g (S m)) (f -m)))))).(refl_equal nat (weight_map g (lift (S h) d (TSort n)))))))))))) -(\lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (f: ((nat \to -nat))).(\lambda (g: ((nat \to nat))).(\lambda (H: ((\forall (m: nat).((lt m -d) \to (eq nat (g m) (f m)))))).(\lambda (_: (eq nat (g d) w)).(\lambda (H1: -((\forall (m: nat).((le d m) \to (eq nat (g (S m)) (f m)))))).(lt_le_e n d -(eq nat (weight_map f (lift h d (TLRef n))) (weight_map g (lift (S h) d -(TLRef n)))) (\lambda (H2: (lt n d)).(eq_ind_r T (TLRef n) (\lambda (t0: -T).(eq nat (weight_map f t0) (weight_map g (lift (S h) d (TLRef n))))) -(eq_ind_r T (TLRef n) (\lambda (t0: T).(eq nat (weight_map f (TLRef n)) -(weight_map g t0))) (sym_eq nat (g n) (f n) (H n H2)) (lift (S h) d (TLRef -n)) (lift_lref_lt n (S h) d H2)) (lift h d (TLRef n)) (lift_lref_lt n h d -H2))) (\lambda (H2: (le d n)).(eq_ind_r T (TLRef (plus n h)) (\lambda (t0: -T).(eq nat (weight_map f t0) (weight_map g (lift (S h) d (TLRef n))))) -(eq_ind_r T (TLRef (plus n (S h))) (\lambda (t0: T).(eq nat (weight_map f -(TLRef (plus n h))) (weight_map g t0))) (eq_ind nat (S (plus n h)) (\lambda -(n0: nat).(eq nat (f (plus n h)) (g n0))) (sym_eq nat (g (S (plus n h))) (f -(plus n h)) (H1 (plus n h) (le_plus_trans d n h H2))) (plus n (S h)) -(plus_n_Sm n h)) (lift (S h) d (TLRef n)) (lift_lref_ge n (S h) d H2)) (lift -h d (TLRef n)) (lift_lref_ge n h d H2)))))))))))) (\lambda (k: K).(\lambda -(t0: T).(\lambda (H: ((\forall (h: nat).(\forall (d: nat).(\forall (f: ((nat -\to nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).((lt m d) \to -(eq nat (g m) (f m))))) \to ((eq nat (g d) w) \to (((\forall (m: nat).((le d -m) \to (eq nat (g (S m)) (f m))))) \to (eq nat (weight_map f (lift h d t0)) -(weight_map g (lift (S h) d t0)))))))))))).(\lambda (t1: T).(\lambda (H0: -((\forall (h: nat).(\forall (d: nat).(\forall (f: ((nat \to nat))).(\forall -(g: ((nat \to nat))).(((\forall (m: nat).((lt m d) \to (eq nat (g m) (f -m))))) \to ((eq nat (g d) w) \to (((\forall (m: nat).((le d m) \to (eq nat (g -(S m)) (f m))))) \to (eq nat (weight_map f (lift h d t1)) (weight_map g (lift -(S h) d t1)))))))))))).(\lambda (h: nat).(\lambda (d: nat).(\lambda (f: ((nat -\to nat))).(\lambda (g: ((nat \to nat))).(\lambda (H1: ((\forall (m: -nat).((lt m d) \to (eq nat (g m) (f m)))))).(\lambda (H2: (eq nat (g d) -w)).(\lambda (H3: ((\forall (m: nat).((le d m) \to (eq nat (g (S m)) (f -m)))))).(K_ind (\lambda (k0: K).(eq nat (weight_map f (lift h d (THead k0 t0 -t1))) (weight_map g (lift (S h) d (THead k0 t0 t1))))) (\lambda (b: -B).(eq_ind_r T (THead (Bind b) (lift h d t0) (lift h (s (Bind b) d) t1)) -(\lambda (t2: T).(eq nat (weight_map f t2) (weight_map g (lift (S h) d (THead -(Bind b) t0 t1))))) (eq_ind_r T (THead (Bind b) (lift (S h) d t0) (lift (S h) -(s (Bind b) d) t1)) (\lambda (t2: T).(eq nat (weight_map f (THead (Bind b) -(lift h d t0) (lift h (s (Bind b) d) t1))) (weight_map g t2))) (B_ind -(\lambda (b0: B).(eq nat (match b0 with [Abbr \Rightarrow (S (plus -(weight_map f (lift h d t0)) (weight_map (wadd f (S (weight_map f (lift h d -t0)))) (lift h (S d) t1)))) | Abst \Rightarrow (S (plus (weight_map f (lift h -d t0)) (weight_map (wadd f O) (lift h (S d) t1)))) | Void \Rightarrow (S -(plus (weight_map f (lift h d t0)) (weight_map (wadd f O) (lift h (S d) -t1))))]) (match b0 with [Abbr \Rightarrow (S (plus (weight_map g (lift (S h) -d t0)) (weight_map (wadd g (S (weight_map g (lift (S h) d t0)))) (lift (S h) -(S d) t1)))) | Abst \Rightarrow (S (plus (weight_map g (lift (S h) d t0)) -(weight_map (wadd g O) (lift (S h) (S d) t1)))) | Void \Rightarrow (S (plus -(weight_map g (lift (S h) d t0)) (weight_map (wadd g O) (lift (S h) (S d) -t1))))]))) (f_equal nat nat S (plus (weight_map f (lift h d t0)) (weight_map -(wadd f (S (weight_map f (lift h d t0)))) (lift h (S d) t1))) (plus -(weight_map g (lift (S h) d t0)) (weight_map (wadd g (S (weight_map g (lift -(S h) d t0)))) (lift (S h) (S d) t1))) (f_equal2 nat nat nat plus (weight_map -f (lift h d t0)) (weight_map g (lift (S h) d t0)) (weight_map (wadd f (S -(weight_map f (lift h d t0)))) (lift h (S d) t1)) (weight_map (wadd g (S -(weight_map g (lift (S h) d t0)))) (lift (S h) (S d) t1)) (H h d f g H1 H2 -H3) (H0 h (S d) (wadd f (S (weight_map f (lift h d t0)))) (wadd g (S -(weight_map g (lift (S h) d t0)))) (\lambda (m: nat).(\lambda (H4: (lt m (S -d))).(or_ind (eq nat m O) (ex2 nat (\lambda (m0: nat).(eq nat m (S m0))) -(\lambda (m0: nat).(lt m0 d))) (eq nat (wadd g (S (weight_map g (lift (S h) d -t0))) m) (wadd f (S (weight_map f (lift h d t0))) m)) (\lambda (H5: (eq nat m -O)).(eq_ind_r nat O (\lambda (n: nat).(eq nat (wadd g (S (weight_map g (lift -(S h) d t0))) n) (wadd f (S (weight_map f (lift h d t0))) n))) (f_equal nat -nat S (weight_map g (lift (S h) d t0)) (weight_map f (lift h d t0)) (sym_eq -nat (weight_map f (lift h d t0)) (weight_map g (lift (S h) d t0)) (H h d f g -H1 H2 H3))) m H5)) (\lambda (H5: (ex2 nat (\lambda (m0: nat).(eq nat m (S -m0))) (\lambda (m0: nat).(lt m0 d)))).(ex2_ind nat (\lambda (m0: nat).(eq nat -m (S m0))) (\lambda (m0: nat).(lt m0 d)) (eq nat (wadd g (S (weight_map g -(lift (S h) d t0))) m) (wadd f (S (weight_map f (lift h d t0))) m)) (\lambda -(x: nat).(\lambda (H6: (eq nat m (S x))).(\lambda (H7: (lt x d)).(eq_ind_r -nat (S x) (\lambda (n: nat).(eq nat (wadd g (S (weight_map g (lift (S h) d -t0))) n) (wadd f (S (weight_map f (lift h d t0))) n))) (H1 x H7) m H6)))) -H5)) (lt_gen_xS m d H4)))) H2 (\lambda (m: nat).(\lambda (H4: (le (S d) -m)).(ex2_ind nat (\lambda (n: nat).(eq nat m (S n))) (\lambda (n: nat).(le d -n)) (eq nat (g m) (wadd f (S (weight_map f (lift h d t0))) m)) (\lambda (x: -nat).(\lambda (H5: (eq nat m (S x))).(\lambda (H6: (le d x)).(eq_ind_r nat (S -x) (\lambda (n: nat).(eq nat (g n) (wadd f (S (weight_map f (lift h d t0))) -n))) (H3 x H6) m H5)))) (le_gen_S d m H4))))))) (f_equal nat nat S (plus -(weight_map f (lift h d t0)) (weight_map (wadd f O) (lift h (S d) t1))) (plus -(weight_map g (lift (S h) d t0)) (weight_map (wadd g O) (lift (S h) (S d) -t1))) (f_equal2 nat nat nat plus (weight_map f (lift h d t0)) (weight_map g -(lift (S h) d t0)) (weight_map (wadd f O) (lift h (S d) t1)) (weight_map -(wadd g O) (lift (S h) (S d) t1)) (H h d f g H1 H2 H3) (H0 h (S d) (wadd f O) -(wadd g O) (\lambda (m: nat).(\lambda (H4: (lt m (S d))).(or_ind (eq nat m O) -(ex2 nat (\lambda (m0: nat).(eq nat m (S m0))) (\lambda (m0: nat).(lt m0 d))) -(eq nat (wadd g O m) (wadd f O m)) (\lambda (H5: (eq nat m O)).(eq_ind_r nat -O (\lambda (n: nat).(eq nat (wadd g O n) (wadd f O n))) (refl_equal nat O) m -H5)) (\lambda (H5: (ex2 nat (\lambda (m0: nat).(eq nat m (S m0))) (\lambda -(m0: nat).(lt m0 d)))).(ex2_ind nat (\lambda (m0: nat).(eq nat m (S m0))) -(\lambda (m0: nat).(lt m0 d)) (eq nat (wadd g O m) (wadd f O m)) (\lambda (x: -nat).(\lambda (H6: (eq nat m (S x))).(\lambda (H7: (lt x d)).(eq_ind_r nat (S -x) (\lambda (n: nat).(eq nat (wadd g O n) (wadd f O n))) (H1 x H7) m H6)))) -H5)) (lt_gen_xS m d H4)))) H2 (\lambda (m: nat).(\lambda (H4: (le (S d) -m)).(ex2_ind nat (\lambda (n: nat).(eq nat m (S n))) (\lambda (n: nat).(le d -n)) (eq nat (g m) (wadd f O m)) (\lambda (x: nat).(\lambda (H5: (eq nat m (S -x))).(\lambda (H6: (le d x)).(eq_ind_r nat (S x) (\lambda (n: nat).(eq nat (g -n) (wadd f O n))) (H3 x H6) m H5)))) (le_gen_S d m H4))))))) (f_equal nat nat -S (plus (weight_map f (lift h d t0)) (weight_map (wadd f O) (lift h (S d) -t1))) (plus (weight_map g (lift (S h) d t0)) (weight_map (wadd g O) (lift (S -h) (S d) t1))) (f_equal2 nat nat nat plus (weight_map f (lift h d t0)) -(weight_map g (lift (S h) d t0)) (weight_map (wadd f O) (lift h (S d) t1)) -(weight_map (wadd g O) (lift (S h) (S d) t1)) (H h d f g H1 H2 H3) (H0 h (S -d) (wadd f O) (wadd g O) (\lambda (m: nat).(\lambda (H4: (lt m (S -d))).(or_ind (eq nat m O) (ex2 nat (\lambda (m0: nat).(eq nat m (S m0))) -(\lambda (m0: nat).(lt m0 d))) (eq nat (wadd g O m) (wadd f O m)) (\lambda -(H5: (eq nat m O)).(eq_ind_r nat O (\lambda (n: nat).(eq nat (wadd g O n) -(wadd f O n))) (refl_equal nat O) m H5)) (\lambda (H5: (ex2 nat (\lambda (m0: -nat).(eq nat m (S m0))) (\lambda (m0: nat).(lt m0 d)))).(ex2_ind nat (\lambda -(m0: nat).(eq nat m (S m0))) (\lambda (m0: nat).(lt m0 d)) (eq nat (wadd g O -m) (wadd f O m)) (\lambda (x: nat).(\lambda (H6: (eq nat m (S x))).(\lambda -(H7: (lt x d)).(eq_ind_r nat (S x) (\lambda (n: nat).(eq nat (wadd g O n) -(wadd f O n))) (H1 x H7) m H6)))) H5)) (lt_gen_xS m d H4)))) H2 (\lambda (m: -nat).(\lambda (H4: (le (S d) m)).(ex2_ind nat (\lambda (n: nat).(eq nat m (S -n))) (\lambda (n: nat).(le d n)) (eq nat (g m) (wadd f O m)) (\lambda (x: -nat).(\lambda (H5: (eq nat m (S x))).(\lambda (H6: (le d x)).(eq_ind_r nat (S -x) (\lambda (n: nat).(eq nat (g n) (wadd f O n))) (H3 x H6) m H5)))) -(le_gen_S d m H4))))))) b) (lift (S h) d (THead (Bind b) t0 t1)) (lift_head -(Bind b) t0 t1 (S h) d)) (lift h d (THead (Bind b) t0 t1)) (lift_head (Bind -b) t0 t1 h d))) (\lambda (f0: F).(eq_ind_r T (THead (Flat f0) (lift h d t0) -(lift h (s (Flat f0) d) t1)) (\lambda (t2: T).(eq nat (weight_map f t2) -(weight_map g (lift (S h) d (THead (Flat f0) t0 t1))))) (eq_ind_r T (THead -(Flat f0) (lift (S h) d t0) (lift (S h) (s (Flat f0) d) t1)) (\lambda (t2: -T).(eq nat (weight_map f (THead (Flat f0) (lift h d t0) (lift h (s (Flat f0) -d) t1))) (weight_map g t2))) (f_equal nat nat S (plus (weight_map f (lift h d -t0)) (weight_map f (lift h d t1))) (plus (weight_map g (lift (S h) d t0)) -(weight_map g (lift (S h) d t1))) (f_equal2 nat nat nat plus (weight_map f -(lift h d t0)) (weight_map g (lift (S h) d t0)) (weight_map f (lift h d t1)) -(weight_map g (lift (S h) d t1)) (H h d f g H1 H2 H3) (H0 h d f g H1 H2 H3))) -(lift (S h) d (THead (Flat f0) t0 t1)) (lift_head (Flat f0) t0 t1 (S h) d)) -(lift h d (THead (Flat f0) t0 t1)) (lift_head (Flat f0) t0 t1 h d))) -k))))))))))))) t)). -(* COMMENTS -Initial nodes: 3697 -END *) +m)))))).(let TMP_7 \def (S h) in (let TMP_8 \def (TSort n) in (let TMP_9 \def +(lift TMP_7 d TMP_8) in (let TMP_10 \def (weight_map g TMP_9) in (refl_equal +nat TMP_10))))))))))))) in (let TMP_91 \def (\lambda (n: nat).(\lambda (h: +nat).(\lambda (d: nat).(\lambda (f: ((nat \to nat))).(\lambda (g: ((nat \to +nat))).(\lambda (H: ((\forall (m: nat).((lt m d) \to (eq nat (g m) (f +m)))))).(\lambda (_: (eq nat (g d) w)).(\lambda (H1: ((\forall (m: nat).((le +d m) \to (eq nat (g (S m)) (f m)))))).(let TMP_12 \def (TLRef n) in (let +TMP_13 \def (lift h d TMP_12) in (let TMP_14 \def (weight_map f TMP_13) in +(let TMP_15 \def (S h) in (let TMP_16 \def (TLRef n) in (let TMP_17 \def +(lift TMP_15 d TMP_16) in (let TMP_18 \def (weight_map g TMP_17) in (let +TMP_19 \def (eq nat TMP_14 TMP_18) in (let TMP_45 \def (\lambda (H2: (lt n +d)).(let TMP_20 \def (TLRef n) in (let TMP_26 \def (\lambda (t0: T).(let +TMP_21 \def (weight_map f t0) in (let TMP_22 \def (S h) in (let TMP_23 \def +(TLRef n) in (let TMP_24 \def (lift TMP_22 d TMP_23) in (let TMP_25 \def +(weight_map g TMP_24) in (eq nat TMP_21 TMP_25))))))) in (let TMP_27 \def +(TLRef n) in (let TMP_31 \def (\lambda (t0: T).(let TMP_28 \def (TLRef n) in +(let TMP_29 \def (weight_map f TMP_28) in (let TMP_30 \def (weight_map g t0) +in (eq nat TMP_29 TMP_30))))) in (let TMP_32 \def (g n) in (let TMP_33 \def +(f n) in (let TMP_34 \def (H n H2) in (let TMP_35 \def (sym_eq nat TMP_32 +TMP_33 TMP_34) in (let TMP_36 \def (S h) in (let TMP_37 \def (TLRef n) in +(let TMP_38 \def (lift TMP_36 d TMP_37) in (let TMP_39 \def (S h) in (let +TMP_40 \def (lift_lref_lt n TMP_39 d H2) in (let TMP_41 \def (eq_ind_r T +TMP_27 TMP_31 TMP_35 TMP_38 TMP_40) in (let TMP_42 \def (TLRef n) in (let +TMP_43 \def (lift h d TMP_42) in (let TMP_44 \def (lift_lref_lt n h d H2) in +(eq_ind_r T TMP_20 TMP_26 TMP_41 TMP_43 TMP_44))))))))))))))))))) in (let +TMP_90 \def (\lambda (H2: (le d n)).(let TMP_46 \def (plus n h) in (let +TMP_47 \def (TLRef TMP_46) in (let TMP_53 \def (\lambda (t0: T).(let TMP_48 +\def (weight_map f t0) in (let TMP_49 \def (S h) in (let TMP_50 \def (TLRef +n) in (let TMP_51 \def (lift TMP_49 d TMP_50) in (let TMP_52 \def (weight_map +g TMP_51) in (eq nat TMP_48 TMP_52))))))) in (let TMP_54 \def (S h) in (let +TMP_55 \def (plus n TMP_54) in (let TMP_56 \def (TLRef TMP_55) in (let TMP_61 +\def (\lambda (t0: T).(let TMP_57 \def (plus n h) in (let TMP_58 \def (TLRef +TMP_57) in (let TMP_59 \def (weight_map f TMP_58) in (let TMP_60 \def +(weight_map g t0) in (eq nat TMP_59 TMP_60)))))) in (let TMP_62 \def (plus n +h) in (let TMP_63 \def (S TMP_62) in (let TMP_67 \def (\lambda (n0: nat).(let +TMP_64 \def (plus n h) in (let TMP_65 \def (f TMP_64) in (let TMP_66 \def (g +n0) in (eq nat TMP_65 TMP_66))))) in (let TMP_68 \def (plus n h) in (let +TMP_69 \def (S TMP_68) in (let TMP_70 \def (g TMP_69) in (let TMP_71 \def +(plus n h) in (let TMP_72 \def (f TMP_71) in (let TMP_73 \def (plus n h) in +(let TMP_74 \def (le_plus_trans d n h H2) in (let TMP_75 \def (H1 TMP_73 +TMP_74) in (let TMP_76 \def (sym_eq nat TMP_70 TMP_72 TMP_75) in (let TMP_77 +\def (S h) in (let TMP_78 \def (plus n TMP_77) in (let TMP_79 \def (plus_n_Sm +n h) in (let TMP_80 \def (eq_ind nat TMP_63 TMP_67 TMP_76 TMP_78 TMP_79) in +(let TMP_81 \def (S h) in (let TMP_82 \def (TLRef n) in (let TMP_83 \def +(lift TMP_81 d TMP_82) in (let TMP_84 \def (S h) in (let TMP_85 \def +(lift_lref_ge n TMP_84 d H2) in (let TMP_86 \def (eq_ind_r T TMP_56 TMP_61 +TMP_80 TMP_83 TMP_85) in (let TMP_87 \def (TLRef n) in (let TMP_88 \def (lift +h d TMP_87) in (let TMP_89 \def (lift_lref_ge n h d H2) in (eq_ind_r T TMP_47 +TMP_53 TMP_86 TMP_88 TMP_89)))))))))))))))))))))))))))))))))) in (lt_le_e n d +TMP_19 TMP_45 TMP_90))))))))))))))))))) in (let TMP_577 \def (\lambda (k: +K).(\lambda (t0: T).(\lambda (H: ((\forall (h: nat).(\forall (d: +nat).(\forall (f: ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall +(m: nat).((lt m d) \to (eq nat (g m) (f m))))) \to ((eq nat (g d) w) \to +(((\forall (m: nat).((le d m) \to (eq nat (g (S m)) (f m))))) \to (eq nat +(weight_map f (lift h d t0)) (weight_map g (lift (S h) d +t0)))))))))))).(\lambda (t1: T).(\lambda (H0: ((\forall (h: nat).(\forall (d: +nat).(\forall (f: ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall +(m: nat).((lt m d) \to (eq nat (g m) (f m))))) \to ((eq nat (g d) w) \to +(((\forall (m: nat).((le d m) \to (eq nat (g (S m)) (f m))))) \to (eq nat +(weight_map f (lift h d t1)) (weight_map g (lift (S h) d +t1)))))))))))).(\lambda (h: nat).(\lambda (d: nat).(\lambda (f: ((nat \to +nat))).(\lambda (g: ((nat \to nat))).(\lambda (H1: ((\forall (m: nat).((lt m +d) \to (eq nat (g m) (f m)))))).(\lambda (H2: (eq nat (g d) w)).(\lambda (H3: +((\forall (m: nat).((le d m) \to (eq nat (g (S m)) (f m)))))).(let TMP_99 +\def (\lambda (k0: K).(let TMP_92 \def (THead k0 t0 t1) in (let TMP_93 \def +(lift h d TMP_92) in (let TMP_94 \def (weight_map f TMP_93) in (let TMP_95 +\def (S h) in (let TMP_96 \def (THead k0 t0 t1) in (let TMP_97 \def (lift +TMP_95 d TMP_96) in (let TMP_98 \def (weight_map g TMP_97) in (eq nat TMP_94 +TMP_98))))))))) in (let TMP_506 \def (\lambda (b: B).(let TMP_100 \def (Bind +b) in (let TMP_101 \def (lift h d t0) in (let TMP_102 \def (Bind b) in (let +TMP_103 \def (s TMP_102 d) in (let TMP_104 \def (lift h TMP_103 t1) in (let +TMP_105 \def (THead TMP_100 TMP_101 TMP_104) in (let TMP_112 \def (\lambda +(t2: T).(let TMP_106 \def (weight_map f t2) in (let TMP_107 \def (S h) in +(let TMP_108 \def (Bind b) in (let TMP_109 \def (THead TMP_108 t0 t1) in (let +TMP_110 \def (lift TMP_107 d TMP_109) in (let TMP_111 \def (weight_map g +TMP_110) in (eq nat TMP_106 TMP_111)))))))) in (let TMP_113 \def (Bind b) in +(let TMP_114 \def (S h) in (let TMP_115 \def (lift TMP_114 d t0) in (let +TMP_116 \def (S h) in (let TMP_117 \def (Bind b) in (let TMP_118 \def (s +TMP_117 d) in (let TMP_119 \def (lift TMP_116 TMP_118 t1) in (let TMP_120 +\def (THead TMP_113 TMP_115 TMP_119) in (let TMP_129 \def (\lambda (t2: +T).(let TMP_121 \def (Bind b) in (let TMP_122 \def (lift h d t0) in (let +TMP_123 \def (Bind b) in (let TMP_124 \def (s TMP_123 d) in (let TMP_125 \def +(lift h TMP_124 t1) in (let TMP_126 \def (THead TMP_121 TMP_122 TMP_125) in +(let TMP_127 \def (weight_map f TMP_126) in (let TMP_128 \def (weight_map g +t2) in (eq nat TMP_127 TMP_128)))))))))) in (let TMP_187 \def (\lambda (b0: +B).(let TMP_154 \def (match b0 with [Abbr \Rightarrow (let TMP_144 \def (lift +h d t0) in (let TMP_145 \def (weight_map f TMP_144) in (let TMP_146 \def +(lift h d t0) in (let TMP_147 \def (weight_map f TMP_146) in (let TMP_148 +\def (S TMP_147) in (let TMP_149 \def (wadd f TMP_148) in (let TMP_150 \def +(S d) in (let TMP_151 \def (lift h TMP_150 t1) in (let TMP_152 \def +(weight_map TMP_149 TMP_151) in (let TMP_153 \def (plus TMP_145 TMP_152) in +(S TMP_153))))))))))) | Abst \Rightarrow (let TMP_137 \def (lift h d t0) in +(let TMP_138 \def (weight_map f TMP_137) in (let TMP_139 \def (wadd f O) in +(let TMP_140 \def (S d) in (let TMP_141 \def (lift h TMP_140 t1) in (let +TMP_142 \def (weight_map TMP_139 TMP_141) in (let TMP_143 \def (plus TMP_138 +TMP_142) in (S TMP_143)))))))) | Void \Rightarrow (let TMP_130 \def (lift h d +t0) in (let TMP_131 \def (weight_map f TMP_130) in (let TMP_132 \def (wadd f +O) in (let TMP_133 \def (S d) in (let TMP_134 \def (lift h TMP_133 t1) in +(let TMP_135 \def (weight_map TMP_132 TMP_134) in (let TMP_136 \def (plus +TMP_131 TMP_135) in (S TMP_136))))))))]) in (let TMP_186 \def (match b0 with +[Abbr \Rightarrow (let TMP_173 \def (S h) in (let TMP_174 \def (lift TMP_173 +d t0) in (let TMP_175 \def (weight_map g TMP_174) in (let TMP_176 \def (S h) +in (let TMP_177 \def (lift TMP_176 d t0) in (let TMP_178 \def (weight_map g +TMP_177) in (let TMP_179 \def (S TMP_178) in (let TMP_180 \def (wadd g +TMP_179) in (let TMP_181 \def (S h) in (let TMP_182 \def (S d) in (let +TMP_183 \def (lift TMP_181 TMP_182 t1) in (let TMP_184 \def (weight_map +TMP_180 TMP_183) in (let TMP_185 \def (plus TMP_175 TMP_184) in (S +TMP_185)))))))))))))) | Abst \Rightarrow (let TMP_164 \def (S h) in (let +TMP_165 \def (lift TMP_164 d t0) in (let TMP_166 \def (weight_map g TMP_165) +in (let TMP_167 \def (wadd g O) in (let TMP_168 \def (S h) in (let TMP_169 +\def (S d) in (let TMP_170 \def (lift TMP_168 TMP_169 t1) in (let TMP_171 +\def (weight_map TMP_167 TMP_170) in (let TMP_172 \def (plus TMP_166 TMP_171) +in (S TMP_172)))))))))) | Void \Rightarrow (let TMP_155 \def (S h) in (let +TMP_156 \def (lift TMP_155 d t0) in (let TMP_157 \def (weight_map g TMP_156) +in (let TMP_158 \def (wadd g O) in (let TMP_159 \def (S h) in (let TMP_160 +\def (S d) in (let TMP_161 \def (lift TMP_159 TMP_160 t1) in (let TMP_162 +\def (weight_map TMP_158 TMP_161) in (let TMP_163 \def (plus TMP_157 TMP_162) +in (S TMP_163))))))))))]) in (eq nat TMP_154 TMP_186)))) in (let TMP_188 \def +(lift h d t0) in (let TMP_189 \def (weight_map f TMP_188) in (let TMP_190 +\def (lift h d t0) in (let TMP_191 \def (weight_map f TMP_190) in (let +TMP_192 \def (S TMP_191) in (let TMP_193 \def (wadd f TMP_192) in (let +TMP_194 \def (S d) in (let TMP_195 \def (lift h TMP_194 t1) in (let TMP_196 +\def (weight_map TMP_193 TMP_195) in (let TMP_197 \def (plus TMP_189 TMP_196) +in (let TMP_198 \def (S h) in (let TMP_199 \def (lift TMP_198 d t0) in (let +TMP_200 \def (weight_map g TMP_199) in (let TMP_201 \def (S h) in (let +TMP_202 \def (lift TMP_201 d t0) in (let TMP_203 \def (weight_map g TMP_202) +in (let TMP_204 \def (S TMP_203) in (let TMP_205 \def (wadd g TMP_204) in +(let TMP_206 \def (S h) in (let TMP_207 \def (S d) in (let TMP_208 \def (lift +TMP_206 TMP_207 t1) in (let TMP_209 \def (weight_map TMP_205 TMP_208) in (let +TMP_210 \def (plus TMP_200 TMP_209) in (let TMP_211 \def (lift h d t0) in +(let TMP_212 \def (weight_map f TMP_211) in (let TMP_213 \def (S h) in (let +TMP_214 \def (lift TMP_213 d t0) in (let TMP_215 \def (weight_map g TMP_214) +in (let TMP_216 \def (lift h d t0) in (let TMP_217 \def (weight_map f +TMP_216) in (let TMP_218 \def (S TMP_217) in (let TMP_219 \def (wadd f +TMP_218) in (let TMP_220 \def (S d) in (let TMP_221 \def (lift h TMP_220 t1) +in (let TMP_222 \def (weight_map TMP_219 TMP_221) in (let TMP_223 \def (S h) +in (let TMP_224 \def (lift TMP_223 d t0) in (let TMP_225 \def (weight_map g +TMP_224) in (let TMP_226 \def (S TMP_225) in (let TMP_227 \def (wadd g +TMP_226) in (let TMP_228 \def (S h) in (let TMP_229 \def (S d) in (let +TMP_230 \def (lift TMP_228 TMP_229 t1) in (let TMP_231 \def (weight_map +TMP_227 TMP_230) in (let TMP_232 \def (H h d f g H1 H2 H3) in (let TMP_233 +\def (S d) in (let TMP_234 \def (lift h d t0) in (let TMP_235 \def +(weight_map f TMP_234) in (let TMP_236 \def (S TMP_235) in (let TMP_237 \def +(wadd f TMP_236) in (let TMP_238 \def (S h) in (let TMP_239 \def (lift +TMP_238 d t0) in (let TMP_240 \def (weight_map g TMP_239) in (let TMP_241 +\def (S TMP_240) in (let TMP_242 \def (wadd g TMP_241) in (let TMP_310 \def +(\lambda (m: nat).(\lambda (H4: (lt m (S d))).(let TMP_243 \def (eq nat m O) +in (let TMP_245 \def (\lambda (m0: nat).(let TMP_244 \def (S m0) in (eq nat m +TMP_244))) in (let TMP_246 \def (\lambda (m0: nat).(lt m0 d)) in (let TMP_247 +\def (ex2 nat TMP_245 TMP_246) in (let TMP_248 \def (S h) in (let TMP_249 +\def (lift TMP_248 d t0) in (let TMP_250 \def (weight_map g TMP_249) in (let +TMP_251 \def (S TMP_250) in (let TMP_252 \def (wadd g TMP_251 m) in (let +TMP_253 \def (lift h d t0) in (let TMP_254 \def (weight_map f TMP_253) in +(let TMP_255 \def (S TMP_254) in (let TMP_256 \def (wadd f TMP_255 m) in (let +TMP_257 \def (eq nat TMP_252 TMP_256) in (let TMP_281 \def (\lambda (H5: (eq +nat m O)).(let TMP_267 \def (\lambda (n: nat).(let TMP_258 \def (S h) in (let +TMP_259 \def (lift TMP_258 d t0) in (let TMP_260 \def (weight_map g TMP_259) +in (let TMP_261 \def (S TMP_260) in (let TMP_262 \def (wadd g TMP_261 n) in +(let TMP_263 \def (lift h d t0) in (let TMP_264 \def (weight_map f TMP_263) +in (let TMP_265 \def (S TMP_264) in (let TMP_266 \def (wadd f TMP_265 n) in +(eq nat TMP_262 TMP_266))))))))))) in (let TMP_268 \def (S h) in (let TMP_269 +\def (lift TMP_268 d t0) in (let TMP_270 \def (weight_map g TMP_269) in (let +TMP_271 \def (lift h d t0) in (let TMP_272 \def (weight_map f TMP_271) in +(let TMP_273 \def (lift h d t0) in (let TMP_274 \def (weight_map f TMP_273) +in (let TMP_275 \def (S h) in (let TMP_276 \def (lift TMP_275 d t0) in (let +TMP_277 \def (weight_map g TMP_276) in (let TMP_278 \def (H h d f g H1 H2 H3) +in (let TMP_279 \def (sym_eq nat TMP_274 TMP_277 TMP_278) in (let TMP_280 +\def (f_equal nat nat S TMP_270 TMP_272 TMP_279) in (eq_ind_r nat O TMP_267 +TMP_280 m H5)))))))))))))))) in (let TMP_308 \def (\lambda (H5: (ex2 nat +(\lambda (m0: nat).(eq nat m (S m0))) (\lambda (m0: nat).(lt m0 d)))).(let +TMP_283 \def (\lambda (m0: nat).(let TMP_282 \def (S m0) in (eq nat m +TMP_282))) in (let TMP_284 \def (\lambda (m0: nat).(lt m0 d)) in (let TMP_285 +\def (S h) in (let TMP_286 \def (lift TMP_285 d t0) in (let TMP_287 \def +(weight_map g TMP_286) in (let TMP_288 \def (S TMP_287) in (let TMP_289 \def +(wadd g TMP_288 m) in (let TMP_290 \def (lift h d t0) in (let TMP_291 \def +(weight_map f TMP_290) in (let TMP_292 \def (S TMP_291) in (let TMP_293 \def +(wadd f TMP_292 m) in (let TMP_294 \def (eq nat TMP_289 TMP_293) in (let +TMP_307 \def (\lambda (x: nat).(\lambda (H6: (eq nat m (S x))).(\lambda (H7: +(lt x d)).(let TMP_295 \def (S x) in (let TMP_305 \def (\lambda (n: nat).(let +TMP_296 \def (S h) in (let TMP_297 \def (lift TMP_296 d t0) in (let TMP_298 +\def (weight_map g TMP_297) in (let TMP_299 \def (S TMP_298) in (let TMP_300 +\def (wadd g TMP_299 n) in (let TMP_301 \def (lift h d t0) in (let TMP_302 +\def (weight_map f TMP_301) in (let TMP_303 \def (S TMP_302) in (let TMP_304 +\def (wadd f TMP_303 n) in (eq nat TMP_300 TMP_304))))))))))) in (let TMP_306 +\def (H1 x H7) in (eq_ind_r nat TMP_295 TMP_305 TMP_306 m H6))))))) in +(ex2_ind nat TMP_283 TMP_284 TMP_294 TMP_307 H5))))))))))))))) in (let +TMP_309 \def (lt_gen_xS m d H4) in (or_ind TMP_243 TMP_247 TMP_257 TMP_281 +TMP_308 TMP_309)))))))))))))))))))) in (let TMP_330 \def (\lambda (m: +nat).(\lambda (H4: (le (S d) m)).(let TMP_312 \def (\lambda (n: nat).(let +TMP_311 \def (S n) in (eq nat m TMP_311))) in (let TMP_313 \def (\lambda (n: +nat).(le d n)) in (let TMP_314 \def (g m) in (let TMP_315 \def (lift h d t0) +in (let TMP_316 \def (weight_map f TMP_315) in (let TMP_317 \def (S TMP_316) +in (let TMP_318 \def (wadd f TMP_317 m) in (let TMP_319 \def (eq nat TMP_314 +TMP_318) in (let TMP_328 \def (\lambda (x: nat).(\lambda (H5: (eq nat m (S +x))).(\lambda (H6: (le d x)).(let TMP_320 \def (S x) in (let TMP_326 \def +(\lambda (n: nat).(let TMP_321 \def (g n) in (let TMP_322 \def (lift h d t0) +in (let TMP_323 \def (weight_map f TMP_322) in (let TMP_324 \def (S TMP_323) +in (let TMP_325 \def (wadd f TMP_324 n) in (eq nat TMP_321 TMP_325))))))) in +(let TMP_327 \def (H3 x H6) in (eq_ind_r nat TMP_320 TMP_326 TMP_327 m +H5))))))) in (let TMP_329 \def (le_gen_S d m H4) in (ex2_ind nat TMP_312 +TMP_313 TMP_319 TMP_328 TMP_329))))))))))))) in (let TMP_331 \def (H0 h +TMP_233 TMP_237 TMP_242 TMP_310 H2 TMP_330) in (let TMP_332 \def (f_equal2 +nat nat nat plus TMP_212 TMP_215 TMP_222 TMP_231 TMP_232 TMP_331) in (let +TMP_333 \def (f_equal nat nat S TMP_197 TMP_210 TMP_332) in (let TMP_334 \def +(lift h d t0) in (let TMP_335 \def (weight_map f TMP_334) in (let TMP_336 +\def (wadd f O) in (let TMP_337 \def (S d) in (let TMP_338 \def (lift h +TMP_337 t1) in (let TMP_339 \def (weight_map TMP_336 TMP_338) in (let TMP_340 +\def (plus TMP_335 TMP_339) in (let TMP_341 \def (S h) in (let TMP_342 \def +(lift TMP_341 d t0) in (let TMP_343 \def (weight_map g TMP_342) in (let +TMP_344 \def (wadd g O) in (let TMP_345 \def (S h) in (let TMP_346 \def (S d) +in (let TMP_347 \def (lift TMP_345 TMP_346 t1) in (let TMP_348 \def +(weight_map TMP_344 TMP_347) in (let TMP_349 \def (plus TMP_343 TMP_348) in +(let TMP_350 \def (lift h d t0) in (let TMP_351 \def (weight_map f TMP_350) +in (let TMP_352 \def (S h) in (let TMP_353 \def (lift TMP_352 d t0) in (let +TMP_354 \def (weight_map g TMP_353) in (let TMP_355 \def (wadd f O) in (let +TMP_356 \def (S d) in (let TMP_357 \def (lift h TMP_356 t1) in (let TMP_358 +\def (weight_map TMP_355 TMP_357) in (let TMP_359 \def (wadd g O) in (let +TMP_360 \def (S h) in (let TMP_361 \def (S d) in (let TMP_362 \def (lift +TMP_360 TMP_361 t1) in (let TMP_363 \def (weight_map TMP_359 TMP_362) in (let +TMP_364 \def (H h d f g H1 H2 H3) in (let TMP_365 \def (S d) in (let TMP_366 +\def (wadd f O) in (let TMP_367 \def (wadd g O) in (let TMP_395 \def (\lambda +(m: nat).(\lambda (H4: (lt m (S d))).(let TMP_368 \def (eq nat m O) in (let +TMP_370 \def (\lambda (m0: nat).(let TMP_369 \def (S m0) in (eq nat m +TMP_369))) in (let TMP_371 \def (\lambda (m0: nat).(lt m0 d)) in (let TMP_372 +\def (ex2 nat TMP_370 TMP_371) in (let TMP_373 \def (wadd g O m) in (let +TMP_374 \def (wadd f O m) in (let TMP_375 \def (eq nat TMP_373 TMP_374) in +(let TMP_380 \def (\lambda (H5: (eq nat m O)).(let TMP_378 \def (\lambda (n: +nat).(let TMP_376 \def (wadd g O n) in (let TMP_377 \def (wadd f O n) in (eq +nat TMP_376 TMP_377)))) in (let TMP_379 \def (refl_equal nat O) in (eq_ind_r +nat O TMP_378 TMP_379 m H5)))) in (let TMP_393 \def (\lambda (H5: (ex2 nat +(\lambda (m0: nat).(eq nat m (S m0))) (\lambda (m0: nat).(lt m0 d)))).(let +TMP_382 \def (\lambda (m0: nat).(let TMP_381 \def (S m0) in (eq nat m +TMP_381))) in (let TMP_383 \def (\lambda (m0: nat).(lt m0 d)) in (let TMP_384 +\def (wadd g O m) in (let TMP_385 \def (wadd f O m) in (let TMP_386 \def (eq +nat TMP_384 TMP_385) in (let TMP_392 \def (\lambda (x: nat).(\lambda (H6: (eq +nat m (S x))).(\lambda (H7: (lt x d)).(let TMP_387 \def (S x) in (let TMP_390 +\def (\lambda (n: nat).(let TMP_388 \def (wadd g O n) in (let TMP_389 \def +(wadd f O n) in (eq nat TMP_388 TMP_389)))) in (let TMP_391 \def (H1 x H7) in +(eq_ind_r nat TMP_387 TMP_390 TMP_391 m H6))))))) in (ex2_ind nat TMP_382 +TMP_383 TMP_386 TMP_392 H5)))))))) in (let TMP_394 \def (lt_gen_xS m d H4) in +(or_ind TMP_368 TMP_372 TMP_375 TMP_380 TMP_393 TMP_394))))))))))))) in (let +TMP_409 \def (\lambda (m: nat).(\lambda (H4: (le (S d) m)).(let TMP_397 \def +(\lambda (n: nat).(let TMP_396 \def (S n) in (eq nat m TMP_396))) in (let +TMP_398 \def (\lambda (n: nat).(le d n)) in (let TMP_399 \def (g m) in (let +TMP_400 \def (wadd f O m) in (let TMP_401 \def (eq nat TMP_399 TMP_400) in +(let TMP_407 \def (\lambda (x: nat).(\lambda (H5: (eq nat m (S x))).(\lambda +(H6: (le d x)).(let TMP_402 \def (S x) in (let TMP_405 \def (\lambda (n: +nat).(let TMP_403 \def (g n) in (let TMP_404 \def (wadd f O n) in (eq nat +TMP_403 TMP_404)))) in (let TMP_406 \def (H3 x H6) in (eq_ind_r nat TMP_402 +TMP_405 TMP_406 m H5))))))) in (let TMP_408 \def (le_gen_S d m H4) in +(ex2_ind nat TMP_397 TMP_398 TMP_401 TMP_407 TMP_408)))))))))) in (let +TMP_410 \def (H0 h TMP_365 TMP_366 TMP_367 TMP_395 H2 TMP_409) in (let +TMP_411 \def (f_equal2 nat nat nat plus TMP_351 TMP_354 TMP_358 TMP_363 +TMP_364 TMP_410) in (let TMP_412 \def (f_equal nat nat S TMP_340 TMP_349 +TMP_411) in (let TMP_413 \def (lift h d t0) in (let TMP_414 \def (weight_map +f TMP_413) in (let TMP_415 \def (wadd f O) in (let TMP_416 \def (S d) in (let +TMP_417 \def (lift h TMP_416 t1) in (let TMP_418 \def (weight_map TMP_415 +TMP_417) in (let TMP_419 \def (plus TMP_414 TMP_418) in (let TMP_420 \def (S +h) in (let TMP_421 \def (lift TMP_420 d t0) in (let TMP_422 \def (weight_map +g TMP_421) in (let TMP_423 \def (wadd g O) in (let TMP_424 \def (S h) in (let +TMP_425 \def (S d) in (let TMP_426 \def (lift TMP_424 TMP_425 t1) in (let +TMP_427 \def (weight_map TMP_423 TMP_426) in (let TMP_428 \def (plus TMP_422 +TMP_427) in (let TMP_429 \def (lift h d t0) in (let TMP_430 \def (weight_map +f TMP_429) in (let TMP_431 \def (S h) in (let TMP_432 \def (lift TMP_431 d +t0) in (let TMP_433 \def (weight_map g TMP_432) in (let TMP_434 \def (wadd f +O) in (let TMP_435 \def (S d) in (let TMP_436 \def (lift h TMP_435 t1) in +(let TMP_437 \def (weight_map TMP_434 TMP_436) in (let TMP_438 \def (wadd g +O) in (let TMP_439 \def (S h) in (let TMP_440 \def (S d) in (let TMP_441 \def +(lift TMP_439 TMP_440 t1) in (let TMP_442 \def (weight_map TMP_438 TMP_441) +in (let TMP_443 \def (H h d f g H1 H2 H3) in (let TMP_444 \def (S d) in (let +TMP_445 \def (wadd f O) in (let TMP_446 \def (wadd g O) in (let TMP_474 \def +(\lambda (m: nat).(\lambda (H4: (lt m (S d))).(let TMP_447 \def (eq nat m O) +in (let TMP_449 \def (\lambda (m0: nat).(let TMP_448 \def (S m0) in (eq nat m +TMP_448))) in (let TMP_450 \def (\lambda (m0: nat).(lt m0 d)) in (let TMP_451 +\def (ex2 nat TMP_449 TMP_450) in (let TMP_452 \def (wadd g O m) in (let +TMP_453 \def (wadd f O m) in (let TMP_454 \def (eq nat TMP_452 TMP_453) in +(let TMP_459 \def (\lambda (H5: (eq nat m O)).(let TMP_457 \def (\lambda (n: +nat).(let TMP_455 \def (wadd g O n) in (let TMP_456 \def (wadd f O n) in (eq +nat TMP_455 TMP_456)))) in (let TMP_458 \def (refl_equal nat O) in (eq_ind_r +nat O TMP_457 TMP_458 m H5)))) in (let TMP_472 \def (\lambda (H5: (ex2 nat +(\lambda (m0: nat).(eq nat m (S m0))) (\lambda (m0: nat).(lt m0 d)))).(let +TMP_461 \def (\lambda (m0: nat).(let TMP_460 \def (S m0) in (eq nat m +TMP_460))) in (let TMP_462 \def (\lambda (m0: nat).(lt m0 d)) in (let TMP_463 +\def (wadd g O m) in (let TMP_464 \def (wadd f O m) in (let TMP_465 \def (eq +nat TMP_463 TMP_464) in (let TMP_471 \def (\lambda (x: nat).(\lambda (H6: (eq +nat m (S x))).(\lambda (H7: (lt x d)).(let TMP_466 \def (S x) in (let TMP_469 +\def (\lambda (n: nat).(let TMP_467 \def (wadd g O n) in (let TMP_468 \def +(wadd f O n) in (eq nat TMP_467 TMP_468)))) in (let TMP_470 \def (H1 x H7) in +(eq_ind_r nat TMP_466 TMP_469 TMP_470 m H6))))))) in (ex2_ind nat TMP_461 +TMP_462 TMP_465 TMP_471 H5)))))))) in (let TMP_473 \def (lt_gen_xS m d H4) in +(or_ind TMP_447 TMP_451 TMP_454 TMP_459 TMP_472 TMP_473))))))))))))) in (let +TMP_488 \def (\lambda (m: nat).(\lambda (H4: (le (S d) m)).(let TMP_476 \def +(\lambda (n: nat).(let TMP_475 \def (S n) in (eq nat m TMP_475))) in (let +TMP_477 \def (\lambda (n: nat).(le d n)) in (let TMP_478 \def (g m) in (let +TMP_479 \def (wadd f O m) in (let TMP_480 \def (eq nat TMP_478 TMP_479) in +(let TMP_486 \def (\lambda (x: nat).(\lambda (H5: (eq nat m (S x))).(\lambda +(H6: (le d x)).(let TMP_481 \def (S x) in (let TMP_484 \def (\lambda (n: +nat).(let TMP_482 \def (g n) in (let TMP_483 \def (wadd f O n) in (eq nat +TMP_482 TMP_483)))) in (let TMP_485 \def (H3 x H6) in (eq_ind_r nat TMP_481 +TMP_484 TMP_485 m H5))))))) in (let TMP_487 \def (le_gen_S d m H4) in +(ex2_ind nat TMP_476 TMP_477 TMP_480 TMP_486 TMP_487)))))))))) in (let +TMP_489 \def (H0 h TMP_444 TMP_445 TMP_446 TMP_474 H2 TMP_488) in (let +TMP_490 \def (f_equal2 nat nat nat plus TMP_430 TMP_433 TMP_437 TMP_442 +TMP_443 TMP_489) in (let TMP_491 \def (f_equal nat nat S TMP_419 TMP_428 +TMP_490) in (let TMP_492 \def (B_ind TMP_187 TMP_333 TMP_412 TMP_491 b) in +(let TMP_493 \def (S h) in (let TMP_494 \def (Bind b) in (let TMP_495 \def +(THead TMP_494 t0 t1) in (let TMP_496 \def (lift TMP_493 d TMP_495) in (let +TMP_497 \def (Bind b) in (let TMP_498 \def (S h) in (let TMP_499 \def +(lift_head TMP_497 t0 t1 TMP_498 d) in (let TMP_500 \def (eq_ind_r T TMP_120 +TMP_129 TMP_492 TMP_496 TMP_499) in (let TMP_501 \def (Bind b) in (let +TMP_502 \def (THead TMP_501 t0 t1) in (let TMP_503 \def (lift h d TMP_502) in +(let TMP_504 \def (Bind b) in (let TMP_505 \def (lift_head TMP_504 t0 t1 h d) +in (eq_ind_r T TMP_105 TMP_112 TMP_500 TMP_503 +TMP_505))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))) in (let TMP_576 \def (\lambda (f0: F).(let TMP_507 +\def (Flat f0) in (let TMP_508 \def (lift h d t0) in (let TMP_509 \def (Flat +f0) in (let TMP_510 \def (s TMP_509 d) in (let TMP_511 \def (lift h TMP_510 +t1) in (let TMP_512 \def (THead TMP_507 TMP_508 TMP_511) in (let TMP_519 \def +(\lambda (t2: T).(let TMP_513 \def (weight_map f t2) in (let TMP_514 \def (S +h) in (let TMP_515 \def (Flat f0) in (let TMP_516 \def (THead TMP_515 t0 t1) +in (let TMP_517 \def (lift TMP_514 d TMP_516) in (let TMP_518 \def +(weight_map g TMP_517) in (eq nat TMP_513 TMP_518)))))))) in (let TMP_520 +\def (Flat f0) in (let TMP_521 \def (S h) in (let TMP_522 \def (lift TMP_521 +d t0) in (let TMP_523 \def (S h) in (let TMP_524 \def (Flat f0) in (let +TMP_525 \def (s TMP_524 d) in (let TMP_526 \def (lift TMP_523 TMP_525 t1) in +(let TMP_527 \def (THead TMP_520 TMP_522 TMP_526) in (let TMP_536 \def +(\lambda (t2: T).(let TMP_528 \def (Flat f0) in (let TMP_529 \def (lift h d +t0) in (let TMP_530 \def (Flat f0) in (let TMP_531 \def (s TMP_530 d) in (let +TMP_532 \def (lift h TMP_531 t1) in (let TMP_533 \def (THead TMP_528 TMP_529 +TMP_532) in (let TMP_534 \def (weight_map f TMP_533) in (let TMP_535 \def +(weight_map g t2) in (eq nat TMP_534 TMP_535)))))))))) in (let TMP_537 \def +(lift h d t0) in (let TMP_538 \def (weight_map f TMP_537) in (let TMP_539 +\def (lift h d t1) in (let TMP_540 \def (weight_map f TMP_539) in (let +TMP_541 \def (plus TMP_538 TMP_540) in (let TMP_542 \def (S h) in (let +TMP_543 \def (lift TMP_542 d t0) in (let TMP_544 \def (weight_map g TMP_543) +in (let TMP_545 \def (S h) in (let TMP_546 \def (lift TMP_545 d t1) in (let +TMP_547 \def (weight_map g TMP_546) in (let TMP_548 \def (plus TMP_544 +TMP_547) in (let TMP_549 \def (lift h d t0) in (let TMP_550 \def (weight_map +f TMP_549) in (let TMP_551 \def (S h) in (let TMP_552 \def (lift TMP_551 d +t0) in (let TMP_553 \def (weight_map g TMP_552) in (let TMP_554 \def (lift h +d t1) in (let TMP_555 \def (weight_map f TMP_554) in (let TMP_556 \def (S h) +in (let TMP_557 \def (lift TMP_556 d t1) in (let TMP_558 \def (weight_map g +TMP_557) in (let TMP_559 \def (H h d f g H1 H2 H3) in (let TMP_560 \def (H0 h +d f g H1 H2 H3) in (let TMP_561 \def (f_equal2 nat nat nat plus TMP_550 +TMP_553 TMP_555 TMP_558 TMP_559 TMP_560) in (let TMP_562 \def (f_equal nat +nat S TMP_541 TMP_548 TMP_561) in (let TMP_563 \def (S h) in (let TMP_564 +\def (Flat f0) in (let TMP_565 \def (THead TMP_564 t0 t1) in (let TMP_566 +\def (lift TMP_563 d TMP_565) in (let TMP_567 \def (Flat f0) in (let TMP_568 +\def (S h) in (let TMP_569 \def (lift_head TMP_567 t0 t1 TMP_568 d) in (let +TMP_570 \def (eq_ind_r T TMP_527 TMP_536 TMP_562 TMP_566 TMP_569) in (let +TMP_571 \def (Flat f0) in (let TMP_572 \def (THead TMP_571 t0 t1) in (let +TMP_573 \def (lift h d TMP_572) in (let TMP_574 \def (Flat f0) in (let +TMP_575 \def (lift_head TMP_574 t0 t1 h d) in (eq_ind_r T TMP_512 TMP_519 +TMP_570 TMP_573 +TMP_575))))))))))))))))))))))))))))))))))))))))))))))))))))))))) in (K_ind +TMP_99 TMP_506 TMP_576 k)))))))))))))))) in (T_ind TMP_6 TMP_11 TMP_91 +TMP_577 t)))))). theorem lift_weight_add_O: \forall (w: nat).(\forall (t: T).(\forall (h: nat).(\forall (f: ((nat \to @@ -277,23 +624,24 @@ nat))).(eq nat (weight_map f (lift h O t)) (weight_map (wadd f w) (lift (S h) O t)))))) \def \lambda (w: nat).(\lambda (t: T).(\lambda (h: nat).(\lambda (f: ((nat \to -nat))).(lift_weight_add (plus (wadd f w O) O) t h O f (wadd f w) (\lambda (m: -nat).(\lambda (H: (lt m O)).(lt_x_O m H (eq nat (wadd f w m) (f m))))) -(plus_n_O (wadd f w O)) (\lambda (m: nat).(\lambda (_: (le O m)).(refl_equal -nat (f m)))))))). -(* COMMENTS -Initial nodes: 93 -END *) +nat))).(let TMP_1 \def (wadd f w O) in (let TMP_2 \def (minus TMP_1 O) in +(let TMP_3 \def (wadd f w) in (let TMP_7 \def (\lambda (m: nat).(\lambda (H: +(lt m O)).(let TMP_4 \def (wadd f w m) in (let TMP_5 \def (f m) in (let TMP_6 +\def (eq nat TMP_4 TMP_5) in (lt_x_O m H TMP_6)))))) in (let TMP_8 \def (wadd +f w O) in (let TMP_9 \def (minus_n_O TMP_8) in (let TMP_11 \def (\lambda (m: +nat).(\lambda (_: (le O m)).(let TMP_10 \def (f m) in (refl_equal nat +TMP_10)))) in (lift_weight_add TMP_2 t h O f TMP_3 TMP_7 TMP_9 +TMP_11))))))))))). theorem lift_tlt_dx: \forall (k: K).(\forall (u: T).(\forall (t: T).(\forall (h: nat).(\forall (d: nat).(tlt t (THead k u (lift h d t))))))) \def \lambda (k: K).(\lambda (u: T).(\lambda (t: T).(\lambda (h: nat).(\lambda -(d: nat).(eq_ind nat (weight (lift h d t)) (\lambda (n: nat).(lt n (weight -(THead k u (lift h d t))))) (tlt_head_dx k u (lift h d t)) (weight t) -(lift_weight t h d)))))). -(* COMMENTS -Initial nodes: 71 -END *) +(d: nat).(let TMP_1 \def (lift h d t) in (let TMP_2 \def (weight TMP_1) in +(let TMP_6 \def (\lambda (n: nat).(let TMP_3 \def (lift h d t) in (let TMP_4 +\def (THead k u TMP_3) in (let TMP_5 \def (weight TMP_4) in (lt n TMP_5))))) +in (let TMP_7 \def (lift h d t) in (let TMP_8 \def (tlt_head_dx k u TMP_7) in +(let TMP_9 \def (weight t) in (let TMP_10 \def (lift_weight t h d) in (eq_ind +nat TMP_2 TMP_6 TMP_8 TMP_9 TMP_10)))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/r/defs.ma b/matita/matita/contribs/lambdadelta/basic_1/r/defs.ma index cde40fdf8..6108d3c05 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/r/defs.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/r/defs.ma @@ -14,7 +14,7 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/T/defs.ma". +include "basic_1/T/defs.ma". definition r: K \to (nat \to nat) diff --git a/matita/matita/contribs/lambdadelta/basic_1/r/props.ma b/matita/matita/contribs/lambdadelta/basic_1/r/props.ma index 0815aaf5e..e67f789c5 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/r/props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/r/props.ma @@ -14,104 +14,187 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/r/defs.ma". +include "basic_1/r/defs.ma". -include "Basic-1/s/defs.ma". +include "basic_1/s/defs.ma". theorem r_S: \forall (k: K).(\forall (i: nat).(eq nat (r k (S i)) (S (r k i)))) \def - \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: nat).(eq nat (r k0 (S -i)) (S (r k0 i))))) (\lambda (b: B).(\lambda (i: nat).(refl_equal nat (S (r -(Bind b) i))))) (\lambda (f: F).(\lambda (i: nat).(refl_equal nat (S (r (Flat -f) i))))) k). -(* COMMENTS -Initial nodes: 65 -END *) + \lambda (k: K).(let TMP_5 \def (\lambda (k0: K).(\forall (i: nat).(let TMP_1 +\def (S i) in (let TMP_2 \def (r k0 TMP_1) in (let TMP_3 \def (r k0 i) in +(let TMP_4 \def (S TMP_3) in (eq nat TMP_2 TMP_4))))))) in (let TMP_9 \def +(\lambda (b: B).(\lambda (i: nat).(let TMP_6 \def (Bind b) in (let TMP_7 \def +(r TMP_6 i) in (let TMP_8 \def (S TMP_7) in (refl_equal nat TMP_8)))))) in +(let TMP_13 \def (\lambda (f: F).(\lambda (i: nat).(let TMP_10 \def (Flat f) +in (let TMP_11 \def (r TMP_10 i) in (let TMP_12 \def (S TMP_11) in +(refl_equal nat TMP_12)))))) in (K_ind TMP_5 TMP_9 TMP_13 k)))). theorem r_plus: \forall (k: K).(\forall (i: nat).(\forall (j: nat).(eq nat (r k (plus i j)) (plus (r k i) j)))) \def - \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: nat).(\forall (j: -nat).(eq nat (r k0 (plus i j)) (plus (r k0 i) j))))) (\lambda (b: B).(\lambda -(i: nat).(\lambda (j: nat).(refl_equal nat (plus (r (Bind b) i) j))))) -(\lambda (f: F).(\lambda (i: nat).(\lambda (j: nat).(refl_equal nat (plus (r -(Flat f) i) j))))) k). -(* COMMENTS -Initial nodes: 79 -END *) + \lambda (k: K).(let TMP_5 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).(let TMP_1 \def (plus i j) in (let TMP_2 \def (r k0 TMP_1) in (let +TMP_3 \def (r k0 i) in (let TMP_4 \def (plus TMP_3 j) in (eq nat TMP_2 +TMP_4)))))))) in (let TMP_9 \def (\lambda (b: B).(\lambda (i: nat).(\lambda +(j: nat).(let TMP_6 \def (Bind b) in (let TMP_7 \def (r TMP_6 i) in (let +TMP_8 \def (plus TMP_7 j) in (refl_equal nat TMP_8))))))) in (let TMP_13 \def +(\lambda (f: F).(\lambda (i: nat).(\lambda (j: nat).(let TMP_10 \def (Flat f) +in (let TMP_11 \def (r TMP_10 i) in (let TMP_12 \def (plus TMP_11 j) in +(refl_equal nat TMP_12))))))) in (K_ind TMP_5 TMP_9 TMP_13 k)))). theorem r_plus_sym: \forall (k: K).(\forall (i: nat).(\forall (j: nat).(eq nat (r k (plus i j)) (plus i (r k j))))) \def - \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: nat).(\forall (j: -nat).(eq nat (r k0 (plus i j)) (plus i (r k0 j)))))) (\lambda (_: B).(\lambda -(i: nat).(\lambda (j: nat).(refl_equal nat (plus i j))))) (\lambda (_: -F).(\lambda (i: nat).(\lambda (j: nat).(plus_n_Sm i j)))) k). -(* COMMENTS -Initial nodes: 63 -END *) + \lambda (k: K).(let TMP_5 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).(let TMP_1 \def (plus i j) in (let TMP_2 \def (r k0 TMP_1) in (let +TMP_3 \def (r k0 j) in (let TMP_4 \def (plus i TMP_3) in (eq nat TMP_2 +TMP_4)))))))) in (let TMP_7 \def (\lambda (_: B).(\lambda (i: nat).(\lambda +(j: nat).(let TMP_6 \def (plus i j) in (refl_equal nat TMP_6))))) in (let +TMP_8 \def (\lambda (_: F).(\lambda (i: nat).(\lambda (j: nat).(plus_n_Sm i +j)))) in (K_ind TMP_5 TMP_7 TMP_8 k)))). theorem r_minus: \forall (i: nat).(\forall (n: nat).((lt n i) \to (\forall (k: K).(eq nat (minus (r k i) (S n)) (r k (minus i (S n))))))) \def \lambda (i: nat).(\lambda (n: nat).(\lambda (H: (lt n i)).(\lambda (k: -K).(K_ind (\lambda (k0: K).(eq nat (minus (r k0 i) (S n)) (r k0 (minus i (S -n))))) (\lambda (_: B).(refl_equal nat (minus i (S n)))) (\lambda (_: -F).(minus_x_Sy i n H)) k)))). -(* COMMENTS -Initial nodes: 69 -END *) +K).(let TMP_7 \def (\lambda (k0: K).(let TMP_1 \def (r k0 i) in (let TMP_2 +\def (S n) in (let TMP_3 \def (minus TMP_1 TMP_2) in (let TMP_4 \def (S n) in +(let TMP_5 \def (minus i TMP_4) in (let TMP_6 \def (r k0 TMP_5) in (eq nat +TMP_3 TMP_6)))))))) in (let TMP_10 \def (\lambda (_: B).(let TMP_8 \def (S n) +in (let TMP_9 \def (minus i TMP_8) in (refl_equal nat TMP_9)))) in (let +TMP_11 \def (\lambda (_: F).(minus_x_Sy i n H)) in (K_ind TMP_7 TMP_10 TMP_11 +k))))))). theorem r_dis: \forall (k: K).(\forall (P: Prop).(((((\forall (i: nat).(eq nat (r k i) i))) \to P)) \to (((((\forall (i: nat).(eq nat (r k i) (S i)))) \to P)) \to P))) \def - \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (P: Prop).(((((\forall (i: -nat).(eq nat (r k0 i) i))) \to P)) \to (((((\forall (i: nat).(eq nat (r k0 i) -(S i)))) \to P)) \to P)))) (\lambda (b: B).(\lambda (P: Prop).(\lambda (H: -((((\forall (i: nat).(eq nat (r (Bind b) i) i))) \to P))).(\lambda (_: -((((\forall (i: nat).(eq nat (r (Bind b) i) (S i)))) \to P))).(H (\lambda (i: -nat).(refl_equal nat i))))))) (\lambda (f: F).(\lambda (P: Prop).(\lambda (_: -((((\forall (i: nat).(eq nat (r (Flat f) i) i))) \to P))).(\lambda (H0: -((((\forall (i: nat).(eq nat (r (Flat f) i) (S i)))) \to P))).(H0 (\lambda -(i: nat).(refl_equal nat (S i)))))))) k). -(* COMMENTS -Initial nodes: 151 -END *) + \lambda (k: K).(let TMP_1 \def (\lambda (k0: K).(\forall (P: +Prop).(((((\forall (i: nat).(eq nat (r k0 i) i))) \to P)) \to (((((\forall +(i: nat).(eq nat (r k0 i) (S i)))) \to P)) \to P)))) in (let TMP_3 \def +(\lambda (b: B).(\lambda (P: Prop).(\lambda (H: ((((\forall (i: nat).(eq nat +(r (Bind b) i) i))) \to P))).(\lambda (_: ((((\forall (i: nat).(eq nat (r +(Bind b) i) (S i)))) \to P))).(let TMP_2 \def (\lambda (i: nat).(refl_equal +nat i)) in (H TMP_2)))))) in (let TMP_6 \def (\lambda (f: F).(\lambda (P: +Prop).(\lambda (_: ((((\forall (i: nat).(eq nat (r (Flat f) i) i))) \to +P))).(\lambda (H0: ((((\forall (i: nat).(eq nat (r (Flat f) i) (S i)))) \to +P))).(let TMP_5 \def (\lambda (i: nat).(let TMP_4 \def (S i) in (refl_equal +nat TMP_4))) in (H0 TMP_5)))))) in (K_ind TMP_1 TMP_3 TMP_6 k)))). theorem s_r: \forall (k: K).(\forall (i: nat).(eq nat (s k (r k i)) (S i))) \def - \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: nat).(eq nat (s k0 (r k0 -i)) (S i)))) (\lambda (_: B).(\lambda (i: nat).(refl_equal nat (S i)))) -(\lambda (_: F).(\lambda (i: nat).(refl_equal nat (S i)))) k). -(* COMMENTS -Initial nodes: 51 -END *) + \lambda (k: K).(let TMP_4 \def (\lambda (k0: K).(\forall (i: nat).(let TMP_1 +\def (r k0 i) in (let TMP_2 \def (s k0 TMP_1) in (let TMP_3 \def (S i) in (eq +nat TMP_2 TMP_3)))))) in (let TMP_6 \def (\lambda (_: B).(\lambda (i: +nat).(let TMP_5 \def (S i) in (refl_equal nat TMP_5)))) in (let TMP_8 \def +(\lambda (_: F).(\lambda (i: nat).(let TMP_7 \def (S i) in (refl_equal nat +TMP_7)))) in (K_ind TMP_4 TMP_6 TMP_8 k)))). theorem r_arith0: \forall (k: K).(\forall (i: nat).(eq nat (minus (r k (S i)) (S O)) (r k i))) \def - \lambda (k: K).(\lambda (i: nat).(eq_ind_r nat (S (r k i)) (\lambda (n: -nat).(eq nat (minus n (S O)) (r k i))) (eq_ind_r nat (r k i) (\lambda (n: -nat).(eq nat n (r k i))) (refl_equal nat (r k i)) (minus (S (r k i)) (S O)) -(minus_Sx_SO (r k i))) (r k (S i)) (r_S k i))). -(* COMMENTS -Initial nodes: 105 -END *) + \lambda (k: K).(\lambda (i: nat).(let TMP_1 \def (r k i) in (let TMP_2 \def +(S TMP_1) in (let TMP_6 \def (\lambda (n: nat).(let TMP_3 \def (S O) in (let +TMP_4 \def (minus n TMP_3) in (let TMP_5 \def (r k i) in (eq nat TMP_4 +TMP_5))))) in (let TMP_7 \def (r k i) in (let TMP_9 \def (\lambda (n: +nat).(let TMP_8 \def (r k i) in (eq nat n TMP_8))) in (let TMP_10 \def (r k +i) in (let TMP_11 \def (refl_equal nat TMP_10) in (let TMP_12 \def (r k i) in +(let TMP_13 \def (S TMP_12) in (let TMP_14 \def (S O) in (let TMP_15 \def +(minus TMP_13 TMP_14) in (let TMP_16 \def (r k i) in (let TMP_17 \def +(minus_Sx_SO TMP_16) in (let TMP_18 \def (eq_ind_r nat TMP_7 TMP_9 TMP_11 +TMP_15 TMP_17) in (let TMP_19 \def (S i) in (let TMP_20 \def (r k TMP_19) in +(let TMP_21 \def (r_S k i) in (eq_ind_r nat TMP_2 TMP_6 TMP_18 TMP_20 +TMP_21))))))))))))))))))). theorem r_arith1: \forall (k: K).(\forall (i: nat).(\forall (j: nat).(eq nat (minus (r k (S i)) (S j)) (minus (r k i) j)))) \def - \lambda (k: K).(\lambda (i: nat).(\lambda (j: nat).(eq_ind_r nat (S (r k i)) -(\lambda (n: nat).(eq nat (minus n (S j)) (minus (r k i) j))) (refl_equal nat -(minus (r k i) j)) (r k (S i)) (r_S k i)))). -(* COMMENTS -Initial nodes: 69 -END *) + \lambda (k: K).(\lambda (i: nat).(\lambda (j: nat).(let TMP_1 \def (r k i) +in (let TMP_2 \def (S TMP_1) in (let TMP_7 \def (\lambda (n: nat).(let TMP_3 +\def (S j) in (let TMP_4 \def (minus n TMP_3) in (let TMP_5 \def (r k i) in +(let TMP_6 \def (minus TMP_5 j) in (eq nat TMP_4 TMP_6)))))) in (let TMP_8 +\def (r k i) in (let TMP_9 \def (minus TMP_8 j) in (let TMP_10 \def +(refl_equal nat TMP_9) in (let TMP_11 \def (S i) in (let TMP_12 \def (r k +TMP_11) in (let TMP_13 \def (r_S k i) in (eq_ind_r nat TMP_2 TMP_7 TMP_10 +TMP_12 TMP_13)))))))))))). + +theorem r_arith2: + \forall (k: K).(\forall (i: nat).(\forall (j: nat).((le (S i) (s k j)) \to +(le (r k i) j)))) +\def + \lambda (k: K).(let TMP_2 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).((le (S i) (s k0 j)) \to (let TMP_1 \def (r k0 i) in (le TMP_1 +j)))))) in (let TMP_3 \def (\lambda (_: B).(\lambda (i: nat).(\lambda (j: +nat).(\lambda (H: (le (S i) (S j))).(let H_y \def (le_S_n i j H) in H_y))))) +in (let TMP_4 \def (\lambda (_: F).(\lambda (i: nat).(\lambda (j: +nat).(\lambda (H: (le (S i) j)).H)))) in (K_ind TMP_2 TMP_3 TMP_4 k)))). + +theorem r_arith3: + \forall (k: K).(\forall (i: nat).(\forall (j: nat).((le (s k j) (S i)) \to +(le j (r k i))))) +\def + \lambda (k: K).(let TMP_2 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).((le (s k0 j) (S i)) \to (let TMP_1 \def (r k0 i) in (le j +TMP_1)))))) in (let TMP_3 \def (\lambda (_: B).(\lambda (i: nat).(\lambda (j: +nat).(\lambda (H: (le (S j) (S i))).(let H_y \def (le_S_n j i H) in H_y))))) +in (let TMP_4 \def (\lambda (_: F).(\lambda (i: nat).(\lambda (j: +nat).(\lambda (H: (le j (S i))).H)))) in (K_ind TMP_2 TMP_3 TMP_4 k)))). + +theorem r_arith4: + \forall (k: K).(\forall (i: nat).(\forall (j: nat).(eq nat (minus (S i) (s k +j)) (minus (r k i) j)))) +\def + \lambda (k: K).(let TMP_6 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).(let TMP_1 \def (S i) in (let TMP_2 \def (s k0 j) in (let TMP_3 \def +(minus TMP_1 TMP_2) in (let TMP_4 \def (r k0 i) in (let TMP_5 \def (minus +TMP_4 j) in (eq nat TMP_3 TMP_5))))))))) in (let TMP_10 \def (\lambda (b: +B).(\lambda (i: nat).(\lambda (j: nat).(let TMP_7 \def (Bind b) in (let TMP_8 +\def (r TMP_7 i) in (let TMP_9 \def (minus TMP_8 j) in (refl_equal nat +TMP_9))))))) in (let TMP_14 \def (\lambda (f: F).(\lambda (i: nat).(\lambda +(j: nat).(let TMP_11 \def (Flat f) in (let TMP_12 \def (r TMP_11 i) in (let +TMP_13 \def (minus TMP_12 j) in (refl_equal nat TMP_13))))))) in (K_ind TMP_6 +TMP_10 TMP_14 k)))). + +theorem r_arith5: + \forall (k: K).(\forall (i: nat).(\forall (j: nat).((lt (s k j) (S i)) \to +(lt j (r k i))))) +\def + \lambda (k: K).(let TMP_2 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).((lt (s k0 j) (S i)) \to (let TMP_1 \def (r k0 i) in (lt j +TMP_1)))))) in (let TMP_3 \def (\lambda (_: B).(\lambda (i: nat).(\lambda (j: +nat).(\lambda (H: (lt (S j) (S i))).(lt_S_n j i H))))) in (let TMP_4 \def +(\lambda (_: F).(\lambda (i: nat).(\lambda (j: nat).(\lambda (H: (lt j (S +i))).H)))) in (K_ind TMP_2 TMP_3 TMP_4 k)))). + +theorem r_arith6: + \forall (k: K).(\forall (i: nat).(\forall (j: nat).(eq nat (minus (r k i) (S +j)) (minus i (s k j))))) +\def + \lambda (k: K).(let TMP_6 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).(let TMP_1 \def (r k0 i) in (let TMP_2 \def (S j) in (let TMP_3 \def +(minus TMP_1 TMP_2) in (let TMP_4 \def (s k0 j) in (let TMP_5 \def (minus i +TMP_4) in (eq nat TMP_3 TMP_5))))))))) in (let TMP_10 \def (\lambda (b: +B).(\lambda (i: nat).(\lambda (j: nat).(let TMP_7 \def (Bind b) in (let TMP_8 +\def (s TMP_7 j) in (let TMP_9 \def (minus i TMP_8) in (refl_equal nat +TMP_9))))))) in (let TMP_14 \def (\lambda (f: F).(\lambda (i: nat).(\lambda +(j: nat).(let TMP_11 \def (Flat f) in (let TMP_12 \def (s TMP_11 j) in (let +TMP_13 \def (minus i TMP_12) in (refl_equal nat TMP_13))))))) in (K_ind TMP_6 +TMP_10 TMP_14 k)))). + +theorem r_arith7: + \forall (k: K).(\forall (i: nat).(\forall (j: nat).((eq nat (S i) (s k j)) +\to (eq nat (r k i) j)))) +\def + \lambda (k: K).(let TMP_2 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).((eq nat (S i) (s k0 j)) \to (let TMP_1 \def (r k0 i) in (eq nat +TMP_1 j)))))) in (let TMP_3 \def (\lambda (_: B).(\lambda (i: nat).(\lambda +(j: nat).(\lambda (H: (eq nat (S i) (S j))).(eq_add_S i j H))))) in (let +TMP_4 \def (\lambda (_: F).(\lambda (i: nat).(\lambda (j: nat).(\lambda (H: +(eq nat (S i) j)).H)))) in (K_ind TMP_2 TMP_3 TMP_4 k)))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/tlt/defs.ma b/matita/matita/contribs/lambdadelta/basic_1/tlt/defs.ma index a75af6bd2..5abfa6483 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/tlt/defs.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/tlt/defs.ma @@ -48,9 +48,3 @@ definition tlt: \lambda (t1: T).(\lambda (t2: T).(let TMP_1 \def (weight t1) in (let TMP_2 \def (weight t2) in (lt TMP_1 TMP_2)))). -definition tle: - T \to (T \to Prop) -\def - \lambda (t1: T).(\lambda (t2: T).(let TMP_1 \def (tweight t1) in (let TMP_2 -\def (tweight t2) in (le TMP_1 TMP_2)))). - diff --git a/matita/matita/contribs/lambdadelta/basic_1/tlt/props.ma b/matita/matita/contribs/lambdadelta/basic_1/tlt/props.ma index 584fa7daf..37cd527fb 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/tlt/props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/tlt/props.ma @@ -415,16 +415,3 @@ TMP_172 \def (weight_map TMP_171 t) in (let TMP_173 \def (le_plus_r TMP_170 TMP_172) in (le_n_S TMP_163 TMP_168 TMP_173)))))))))))))))) in (K_ind TMP_6 TMP_161 TMP_174 k)))). -theorem tle_r: - \forall (t: T).(tle t t) -\def - \lambda (t: T).(let TMP_3 \def (\lambda (t0: T).(let TMP_1 \def (tweight t0) -in (let TMP_2 \def (tweight t0) in (le TMP_1 TMP_2)))) in (let TMP_5 \def -(\lambda (_: nat).(let TMP_4 \def (S O) in (le_n TMP_4))) in (let TMP_7 \def -(\lambda (_: nat).(let TMP_6 \def (S O) in (le_n TMP_6))) in (let TMP_12 \def -(\lambda (_: K).(\lambda (t0: T).(\lambda (_: (le (tweight t0) (tweight -t0))).(\lambda (t1: T).(\lambda (_: (le (tweight t1) (tweight t1))).(let -TMP_8 \def (tweight t0) in (let TMP_9 \def (tweight t1) in (let TMP_10 \def -(plus TMP_8 TMP_9) in (let TMP_11 \def (S TMP_10) in (le_n TMP_11)))))))))) -in (T_ind TMP_3 TMP_5 TMP_7 TMP_12 t))))). -