]> matita.cs.unibo.it Git - helm.git/commitdiff
cicNotationPp: fixed letin syntax (now typeless)
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Sun, 23 Mar 2008 18:39:34 +0000 (18:39 +0000)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Sun, 23 Mar 2008 18:39:34 +0000 (18:39 +0000)
LambdaTypes: typeles letin syntax, some notational changes, Makefile fixed

37 files changed:
helm/software/components/acic_content/cicNotationPp.ml
helm/software/matita/contribs/LAMBDA-TYPES/Base-2/blt/defs.mma
helm/software/matita/contribs/LAMBDA-TYPES/Base-2/plist/defs.mma
helm/software/matita/contribs/LAMBDA-TYPES/Base-2/types/defs.mma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/cimp/props.ma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/csubc/drop.ma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/definitions.ma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/ex0/props.ma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/lift/fwd.ma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/nf2/fwd.ma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/pr0/dec.ma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/pr0/defs.ma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/pr0/fwd.ma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/pr0/pr0.ma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/pr0/props.ma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sc3/props.ma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sn3/props.ma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/spare.ma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty0/defs.ma [new file with mode: 0644]
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty0/fwd.ma [new file with mode: 0644]
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty0/props.ma [new file with mode: 0644]
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty1/cnt.ma [new file with mode: 0644]
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty1/defs.ma [new file with mode: 0644]
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty1/props.ma [new file with mode: 0644]
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau0/defs.ma [deleted file]
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau0/fwd.ma [deleted file]
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau0/props.ma [deleted file]
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau1/cnt.ma [deleted file]
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau1/defs.ma [deleted file]
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau1/props.ma [deleted file]
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/theory.ma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/ty3/pr3.ma
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/ty3/sty0.ma [new file with mode: 0644]
helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/ty3/tau0.ma [deleted file]
helm/software/matita/contribs/LAMBDA-TYPES/Legacy-2/coq/defs.mma
helm/software/matita/contribs/LAMBDA-TYPES/Legacy-2/preamble.ma
helm/software/matita/contribs/LAMBDA-TYPES/Makefile

index 236b985075b022605a7e95b297fe5e844c414ea1..50312ff12e117d7208fcbc6437400305bd317c52 100644 (file)
@@ -116,9 +116,9 @@ let rec pp_term ?(pp_parens = true) t =
           (pp_patterns patterns)
     | Ast.Cast (t1, t2) -> sprintf "(%s: %s)" (pp_term ~pp_parens:true t1) (pp_term ~pp_parens:true t2)
     | Ast.LetIn ((var,t2), t1, t3) ->
-       let t2 = match t2 with None -> Ast.Implicit | Some t -> t in
-        sprintf "let %s : %s \\def %s in %s" (pp_term var)
-          (pp_term ~pp_parens:true t2)
+(*       let t2 = match t2 with None -> Ast.Implicit | Some t -> t in *)
+        sprintf "let %s \\def %s in %s" (pp_term var)
+(*           (pp_term ~pp_parens:true t2) *)
           (pp_term ~pp_parens:true t1)
           (pp_term ~pp_parens:true t3)
     | Ast.LetRec (kind, definitions, term) ->
index 1744bc2769d002b5dcc72b1b42365cdfa3140a03..fdf019592165986fced4d05365e3ba29fa2a06a0 100644 (file)
@@ -16,5 +16,3 @@
 
 include "Base-2/preamble.ma".
 
-inline procedural "Base-1/blt/defs.ma".
-
index b73b56faed8a1de53feb0b223e5ae3d5ce031b40..fdf019592165986fced4d05365e3ba29fa2a06a0 100644 (file)
@@ -16,5 +16,3 @@
 
 include "Base-2/preamble.ma".
 
-inline procedural "Base-1/plist/defs.ma".
-
index 0e6405c8f60ffb6f78c5294bd20f4346bfeb1ef7..fdf019592165986fced4d05365e3ba29fa2a06a0 100644 (file)
@@ -16,5 +16,3 @@
 
 include "Base-2/preamble.ma".
 
-inline procedural "Base-1/types/defs.ma".
-
index 40e480d6ddfabd13a1a71e4099dbbff7bd3f5735..569bde181d05ac4a5554a4feb00e2052519ba7cd 100644 (file)
@@ -81,12 +81,12 @@ H3)) H2))) (\lambda (h0: nat).(\lambda (_: (((getl h0 (CHead c1 (Bind b) v)
 b) v) (CHead d2 (Bind b0) w))))))).(\lambda (H1: (getl (S h0) (CHead c1 (Bind 
 b) v) (CHead d1 (Bind b0) w))).(let H_x \def (H b0 d1 w (r (Bind b) h0) 
 (getl_gen_S (Bind b) c1 (CHead d1 (Bind b0) w) v h0 H1)) in (let H2 \def H_x 
-in (ex_ind C (\lambda (d2: C).(getl (r (Bind b) h0) c2 (CHead d2 (Bind b0) 
-w))) (ex C (\lambda (d2: C).(getl (S h0) (CHead c2 (Bind b) v) (CHead d2 
-(Bind b0) w)))) (\lambda (x: C).(\lambda (H3: (getl (r (Bind b) h0) c2 (CHead 
-x (Bind b0) w))).(ex_intro C (\lambda (d2: C).(getl (S h0) (CHead c2 (Bind b
-v) (CHead d2 (Bind b0) w))) x (getl_head (Bind b) h0 c2 (CHead x (Bind b0) w) 
-H3 v)))) H2)))))) h H0)))))))))).
+in (ex_ind C (\lambda (d2: C).(getl h0 c2 (CHead d2 (Bind b0) w))) (ex C 
+(\lambda (d2: C).(getl (S h0) (CHead c2 (Bind b) v) (CHead d2 (Bind b0) w)))) 
+(\lambda (x: C).(\lambda (H3: (getl h0 c2 (CHead x (Bind b0) w))).(ex_intro C 
+(\lambda (d2: C).(getl (S h0) (CHead c2 (Bind b) v) (CHead d2 (Bind b0) w))
+x (getl_head (Bind b) h0 c2 (CHead x (Bind b0) w) H3 v)))) H2)))))) h 
+H0)))))))))).
 
 theorem cimp_getl_conf:
  \forall (c1: C).(\forall (c2: C).((cimp c1 c2) \to (\forall (b: B).(\forall 
@@ -112,14 +112,16 @@ B).(\lambda (d0: C).(\lambda (w0: T).(\lambda (h: nat).(\lambda (H3: (getl h
 d1 (CHead d0 (Bind b0) w0))).(let H_y \def (getl_trans (S h) c1 (CHead d1 
 (Bind b) w) i H0) in (let H_x0 \def (H b0 d0 w0 (plus (S h) i) (H_y (CHead d0 
 (Bind b0) w0) (getl_head (Bind b) h d1 (CHead d0 (Bind b0) w0) H3 w))) in 
-(let H4 \def H_x0 in (ex_ind C (\lambda (d2: C).(getl (plus (S h) i) c2 
+(let H4 \def H_x0 in (ex_ind C (\lambda (d2: C).(getl (S (plus h i)) c2 
 (CHead d2 (Bind b0) w0))) (ex C (\lambda (d2: C).(getl h x (CHead d2 (Bind 
-b0) w0)))) (\lambda (x0: C).(\lambda (H5: (getl (plus (S h) i) c2 (CHead x0 
-(Bind b0) w0))).(let H_y0 \def (getl_conf_le (plus (S h) i) (CHead x0 (Bind 
-b0) w0) c2 H5 (CHead x (Bind b) w) i H2) in (let H6 \def (eq_ind nat (minus 
-(plus (S h) i) i) (\lambda (n: nat).(getl n (CHead x (Bind b) w) (CHead x0 
-(Bind b0) w0))) (H_y0 (le_plus_r (S h) i)) (S h) (minus_plus_r (S h) i)) in 
-(ex_intro C (\lambda (d2: C).(getl h x (CHead d2 (Bind b0) w0))) x0 
-(getl_gen_S (Bind b) x (CHead x0 (Bind b0) w0) w h H6)))))) H4))))))))) H2))) 
-H1)))))))))).
+b0) w0)))) (\lambda (x0: C).(\lambda (H5: (getl (S (plus h i)) c2 (CHead x0 
+(Bind b0) w0))).(let H_y0 \def (getl_conf_le (S (plus h i)) (CHead x0 (Bind 
+b0) w0) c2 H5 (CHead x (Bind b) w) i H2) in (let H6 \def (refl_equal nat 
+(plus (S h) i)) in (let H7 \def (eq_ind nat (S (plus h i)) (\lambda (n: 
+nat).(getl (minus n i) (CHead x (Bind b) w) (CHead x0 (Bind b0) w0))) (H_y0 
+(le_S i (plus h i) (le_plus_r h i))) (plus (S h) i) H6) in (let H8 \def 
+(eq_ind nat (minus (plus (S h) i) i) (\lambda (n: nat).(getl n (CHead x (Bind 
+b) w) (CHead x0 (Bind b0) w0))) H7 (S h) (minus_plus_r (S h) i)) in (ex_intro 
+C (\lambda (d2: C).(getl h x (CHead d2 (Bind b0) w0))) x0 (getl_gen_S (Bind 
+b) x (CHead x0 (Bind b0) w0) w h H8)))))))) H4))))))))) H2))) H1)))))))))).
 
index 887cbc32e0fcc01a3465777bdab2f6ac4874381d..3a1a9b10c5c5d1d6f332f6303d263b5ecb0b360d 100644 (file)
@@ -95,13 +95,13 @@ in (let H11 \def (eq_ind K k (\lambda (k0: K).((drop n O (CHead c k0 t) e1)
 \to (\forall (c3: C).((csubc g (CHead c k0 t) c3) \to (ex2 C (\lambda (e2: 
 C).(drop n O c3 e2)) (\lambda (e2: C).(csubc g e1 e2))))))) H0 (Bind Abst) 
 H5) in (let H_x0 \def (H e1 (r (Bind Abst) n) H10 x0 H7) in (let H12 \def 
-H_x0 in (ex2_ind C (\lambda (e2: C).(drop (r (Bind Abst) n) O x0 e2)) 
-(\lambda (e2: C).(csubc g e1 e2)) (ex2 C (\lambda (e2: C).(drop (S n) O 
-(CHead x0 (Bind Abbr) x1) e2)) (\lambda (e2: C).(csubc g e1 e2))) (\lambda 
-(x: C).(\lambda (H13: (drop (r (Bind Abst) n) O x0 x)).(\lambda (H14: (csubc 
-g e1 x)).(ex_intro2 C (\lambda (e2: C).(drop (S n) O (CHead x0 (Bind Abbr) 
-x1) e2)) (\lambda (e2: C).(csubc g e1 e2)) x (drop_drop (Bind Abbr) n x0 x 
-H13 x1) H14)))) H12))))) c2 H6))))))))) H4)) H3)))))))) h))))))) c1)).
+H_x0 in (ex2_ind C (\lambda (e2: C).(drop n O x0 e2)) (\lambda (e2: C).(csubc 
+g e1 e2)) (ex2 C (\lambda (e2: C).(drop (S n) O (CHead x0 (Bind Abbr) x1) 
+e2)) (\lambda (e2: C).(csubc g e1 e2))) (\lambda (x: C).(\lambda (H13: (drop 
+n O x0 x)).(\lambda (H14: (csubc g e1 x)).(ex_intro2 C (\lambda (e2: C).(drop 
+(S n) O (CHead x0 (Bind Abbr) x1) e2)) (\lambda (e2: C).(csubc g e1 e2)) x 
+(drop_drop (Bind Abbr) n x0 x H13 x1) H14)))) H12))))) c2 H6))))))))) H4)) 
+H3)))))))) h))))))) c1)).
 
 theorem drop_csubc_trans:
  \forall (g: G).(\forall (c2: C).(\forall (e2: C).(\forall (d: nat).(\forall 
@@ -220,18 +220,17 @@ k0 n) c x0)) H5 (Bind Abst) H11) in (eq_ind_r K (Bind Abst) (\lambda (k0:
 K).(ex2 C (\lambda (c1: C).(drop h (S n) c1 (CHead x2 (Bind Abbr) x3))) 
 (\lambda (c1: C).(csubc g (CHead c k0 (lift h (r k0 n) x1)) c1)))) (let H_x0 
 \def (H x0 (r (Bind Abst) n) h H17 x2 H13) in (let H18 \def H_x0 in (ex2_ind 
-C (\lambda (c1: C).(drop h (r (Bind Abst) n) c1 x2)) (\lambda (c1: C).(csubc 
-g c c1)) (ex2 C (\lambda (c1: C).(drop h (S n) c1 (CHead x2 (Bind Abbr) x3))) 
-(\lambda (c1: C).(csubc g (CHead c (Bind Abst) (lift h (r (Bind Abst) n) x1)) 
-c1))) (\lambda (x: C).(\lambda (H19: (drop h (r (Bind Abst) n) x 
-x2)).(\lambda (H20: (csubc g c x)).(ex_intro2 C (\lambda (c1: C).(drop h (S 
-n) c1 (CHead x2 (Bind Abbr) x3))) (\lambda (c1: C).(csubc g (CHead c (Bind 
-Abst) (lift h (r (Bind Abst) n) x1)) c1)) (CHead x (Bind Abbr) (lift h n x3)) 
-(drop_skip_bind h n x x2 H19 Abbr x3) (csubc_abst g c x H20 (lift h (r (Bind 
-Abst) n) x1) x4 (sc3_lift g (asucc g x4) x0 x1 H14 c h (r (Bind Abst) n) H17) 
-(lift h n x3) (sc3_lift g x4 x2 x3 H15 x h n H19)))))) H18))) k H11))) e1 
-H12))))))))) H10)) H9))) t H4))))))))) (drop_gen_skip_l c e2 t h n k 
-H1)))))))) d))))))) c2)).
+C (\lambda (c1: C).(drop h n c1 x2)) (\lambda (c1: C).(csubc g c c1)) (ex2 C 
+(\lambda (c1: C).(drop h (S n) c1 (CHead x2 (Bind Abbr) x3))) (\lambda (c1: 
+C).(csubc g (CHead c (Bind Abst) (lift h (r (Bind Abst) n) x1)) c1))) 
+(\lambda (x: C).(\lambda (H19: (drop h n x x2)).(\lambda (H20: (csubc g c 
+x)).(ex_intro2 C (\lambda (c1: C).(drop h (S n) c1 (CHead x2 (Bind Abbr) 
+x3))) (\lambda (c1: C).(csubc g (CHead c (Bind Abst) (lift h (r (Bind Abst) 
+n) x1)) c1)) (CHead x (Bind Abbr) (lift h n x3)) (drop_skip_bind h n x x2 H19 
+Abbr x3) (csubc_abst g c x H20 (lift h (r (Bind Abst) n) x1) x4 (sc3_lift g 
+(asucc g x4) x0 x1 H14 c h (r (Bind Abst) n) H17) (lift h n x3) (sc3_lift g 
+x4 x2 x3 H15 x h n H19)))))) H18))) k H11))) e1 H12))))))))) H10)) H9))) t 
+H4))))))))) (drop_gen_skip_l c e2 t h n k H1)))))))) d))))))) c2)).
 
 theorem csubc_drop_conf_rev:
  \forall (g: G).(\forall (c2: C).(\forall (e2: C).(\forall (d: nat).(\forall 
@@ -350,16 +349,15 @@ H11) in (let H17 \def (eq_ind K k (\lambda (k0: K).(drop h (r k0 n) c x0)) H5
 (c1: C).(drop h (S n) c1 (CHead x2 (Bind Abst) x3))) (\lambda (c1: C).(csubc 
 g c1 (CHead c k0 (lift h (r k0 n) x1)))))) (let H_x0 \def (H x0 (r (Bind 
 Abbr) n) h H17 x2 H13) in (let H18 \def H_x0 in (ex2_ind C (\lambda (c1: 
-C).(drop h (r (Bind Abbr) n) c1 x2)) (\lambda (c1: C).(csubc g c1 c)) (ex2 C 
+C).(drop h n c1 x2)) (\lambda (c1: C).(csubc g c1 c)) (ex2 C (\lambda (c1: 
+C).(drop h (S n) c1 (CHead x2 (Bind Abst) x3))) (\lambda (c1: C).(csubc g c1 
+(CHead c (Bind Abbr) (lift h (r (Bind Abbr) n) x1))))) (\lambda (x: 
+C).(\lambda (H19: (drop h n x x2)).(\lambda (H20: (csubc g x c)).(ex_intro2 C 
 (\lambda (c1: C).(drop h (S n) c1 (CHead x2 (Bind Abst) x3))) (\lambda (c1: 
-C).(csubc g c1 (CHead c (Bind Abbr) (lift h (r (Bind Abbr) n) x1))))) 
-(\lambda (x: C).(\lambda (H19: (drop h (r (Bind Abbr) n) x x2)).(\lambda 
-(H20: (csubc g x c)).(ex_intro2 C (\lambda (c1: C).(drop h (S n) c1 (CHead x2 
-(Bind Abst) x3))) (\lambda (c1: C).(csubc g c1 (CHead c (Bind Abbr) (lift h 
-(r (Bind Abbr) n) x1)))) (CHead x (Bind Abst) (lift h n x3)) (drop_skip_bind 
-h n x x2 H19 Abst x3) (csubc_abst g x c H20 (lift h n x3) x4 (sc3_lift g 
-(asucc g x4) x2 x3 H14 x h n H19) (lift h (r (Bind Abbr) n) x1) (sc3_lift g 
-x4 x0 x1 H15 c h (r (Bind Abbr) n) H17)))))) H18))) k H11))) e1 H12))))))))) 
-H10)) H9))) t H4))))))))) (drop_gen_skip_l c e2 t h n k H1)))))))) d))))))) 
-c2)).
+C).(csubc g c1 (CHead c (Bind Abbr) (lift h (r (Bind Abbr) n) x1)))) (CHead x 
+(Bind Abst) (lift h n x3)) (drop_skip_bind h n x x2 H19 Abst x3) (csubc_abst 
+g x c H20 (lift h n x3) x4 (sc3_lift g (asucc g x4) x2 x3 H14 x h n H19) 
+(lift h (r (Bind Abbr) n) x1) (sc3_lift g x4 x0 x1 H15 c h (r (Bind Abbr) n) 
+H17)))))) H18))) k H11))) e1 H12))))))))) H10)) H9))) t H4))))))))) 
+(drop_gen_skip_l c e2 t h n k H1)))))))) d))))))) c2)).
 
index 7bc8e4c946152c627c320e3a01bc3bec79fc7ed9..97bb1ee9ffc5886a9b886cf9dbacea1b841d0a2d 100644 (file)
@@ -38,7 +38,7 @@ include "LambdaDelta-1/fsubst0/defs.ma".
 
 include "LambdaDelta-1/next_plus/defs.ma".
 
-include "LambdaDelta-1/tau1/defs.ma".
+include "LambdaDelta-1/sty1/defs.ma".
 
 include "LambdaDelta-1/llt/defs.ma".
 
index 56620b18f1f0a928e4ee1a3b844dc19a07f21852..148879216ca30fefbabaee3675b8da399f34e3ee 100644 (file)
@@ -46,19 +46,12 @@ nat).(eq A (ASort O n0) (ASort O (S (plus k0 n))))) (refl_equal A (ASort O (S
 nat).(\lambda (_: ((\forall (n0: nat).((le n (S k0)) \to (eq A (asucc gz 
 (aplus gz (ASort n n0) k0)) (ASort O (plus (match n with [O \Rightarrow (S 
 k0) | (S l) \Rightarrow (minus k0 l)]) n0))))))).(\lambda (n0: nat).(\lambda 
-(H0: (le (S n) (S k0))).(ex2_ind nat (\lambda (n1: nat).(eq nat (S k0) (S 
-n1))) (\lambda (n1: nat).(le n n1)) (eq A (asucc gz (aplus gz (ASort (S n) 
-n0) k0)) (ASort O (plus (minus k0 n) n0))) (\lambda (x: nat).(\lambda (H1: 
-(eq nat (S k0) (S x))).(\lambda (H2: (le n x)).(let H3 \def (f_equal nat nat 
-(\lambda (e: nat).(match e in nat return (\lambda (_: nat).nat) with [O 
-\Rightarrow k0 | (S n1) \Rightarrow n1])) (S k0) (S x) H1) in (let H4 \def 
-(eq_ind_r nat x (\lambda (n1: nat).(le n n1)) H2 k0 H3) in (eq_ind A (aplus 
-gz (ASort n n0) k0) (\lambda (a: A).(eq A (asucc gz (aplus gz (ASort (S n) 
-n0) k0)) a)) (eq_ind A (aplus gz (asucc gz (ASort (S n) n0)) k0) (\lambda (a: 
+(H0: (le (S n) (S k0))).(let H_y \def (le_S_n n k0 H0) in (eq_ind A (aplus gz 
+(ASort n n0) k0) (\lambda (a: A).(eq A (asucc gz (aplus gz (ASort (S n) n0) 
+k0)) a)) (eq_ind A (aplus gz (asucc gz (ASort (S n) n0)) k0) (\lambda (a: 
 A).(eq A a (aplus gz (ASort n n0) k0))) (refl_equal A (aplus gz (ASort n n0) 
 k0)) (asucc gz (aplus gz (ASort (S n) n0) k0)) (aplus_asucc gz k0 (ASort (S 
-n) n0))) (ASort O (plus (minus k0 n) n0)) (IH n n0 H4))))))) (le_gen_S n (S 
-k0) H0)))))) h)))) k).
+n) n0))) (ASort O (plus (minus k0 n) n0)) (IH n n0 H_y))))))) h)))) k).
 
 theorem aplus_gz_ge:
  \forall (n: nat).(\forall (k: nat).(\forall (h: nat).((le k h) \to (eq A 
@@ -80,19 +73,12 @@ x)).(let H2 \def (eq_ind nat O (\lambda (ee: nat).(match ee in nat return
 I (S x) H0) in (False_ind (eq A (asucc gz (aplus gz (ASort O n) k0)) (ASort O 
 n)) H2))))) (le_gen_S k0 O H))) (\lambda (n0: nat).(\lambda (_: (((le (S k0) 
 n0) \to (eq A (asucc gz (aplus gz (ASort n0 n) k0)) (ASort (minus n0 (S k0)) 
-n))))).(\lambda (H0: (le (S k0) (S n0))).(ex2_ind nat (\lambda (n1: nat).(eq 
-nat (S n0) (S n1))) (\lambda (n1: nat).(le k0 n1)) (eq A (asucc gz (aplus gz 
-(ASort (S n0) n) k0)) (ASort (minus n0 k0) n)) (\lambda (x: nat).(\lambda 
-(H1: (eq nat (S n0) (S x))).(\lambda (H2: (le k0 x)).(let H3 \def (f_equal 
-nat nat (\lambda (e: nat).(match e in nat return (\lambda (_: nat).nat) with 
-[O \Rightarrow n0 | (S n1) \Rightarrow n1])) (S n0) (S x) H1) in (let H4 \def 
-(eq_ind_r nat x (\lambda (n1: nat).(le k0 n1)) H2 n0 H3) in (eq_ind A (aplus 
-gz (ASort n0 n) k0) (\lambda (a: A).(eq A (asucc gz (aplus gz (ASort (S n0) 
-n) k0)) a)) (eq_ind A (aplus gz (asucc gz (ASort (S n0) n)) k0) (\lambda (a: 
-A).(eq A a (aplus gz (ASort n0 n) k0))) (refl_equal A (aplus gz (ASort n0 n) 
-k0)) (asucc gz (aplus gz (ASort (S n0) n) k0)) (aplus_asucc gz k0 (ASort (S 
-n0) n))) (ASort (minus n0 k0) n) (IH n0 H4))))))) (le_gen_S k0 (S n0) H0))))) 
-h)))) k)).
+n))))).(\lambda (H0: (le (S k0) (S n0))).(let H_y \def (le_S_n k0 n0 H0) in 
+(eq_ind A (aplus gz (ASort n0 n) k0) (\lambda (a: A).(eq A (asucc gz (aplus 
+gz (ASort (S n0) n) k0)) a)) (eq_ind A (aplus gz (asucc gz (ASort (S n0) n)) 
+k0) (\lambda (a: A).(eq A a (aplus gz (ASort n0 n) k0))) (refl_equal A (aplus 
+gz (ASort n0 n) k0)) (asucc gz (aplus gz (ASort (S n0) n) k0)) (aplus_asucc 
+gz k0 (ASort (S n0) n))) (ASort (minus n0 k0) n) (IH n0 H_y)))))) h)))) k)).
 
 theorem next_plus_gz:
  \forall (n: nat).(\forall (h: nat).(eq nat (next_plus gz n h) (plus h n)))
index db188a2509d408206ac6df4acc03f979c10f2533..824deac30887756bc8077bff678a180a47ab0b97 100644 (file)
@@ -334,28 +334,27 @@ 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 (Bind b) 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 (Bind b) x0 x1))).(\lambda (H2: (eq T u (lift h d 
-x0))).(\lambda (H3: (eq T t (lift h (s (Bind b) 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 (Bind b) 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 
+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 
+(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 
-t0 (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h (s (Bind b) 
-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 (Bind b) 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))))))))).
+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))))))))).
 
 theorem lift_gen_flat:
  \forall (f: F).(\forall (u: T).(\forall (t: T).(\forall (x: T).(\forall (h: 
@@ -369,26 +368,25 @@ 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 (s (Flat f) 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 (s (Flat f) 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 (s (Flat f) 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 (s (Flat f) 
-d) x1) (lift h d z)))))) (ex3_2_intro T T (\lambda (y: T).(\lambda (z: T).(eq 
+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 (s (Flat f) 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))))))))).
+(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))))))))).
 
index aa5cd7c9e4b94d8d502772543fbefccc12a8e873..6549ddb52297482ab09bb81948bae931dd3d4771 100644 (file)
@@ -62,8 +62,7 @@ t)) \to (\forall (P: Prop).P))))
 \def
  \lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (H: (nf2 c (THead 
 (Flat Cast) u t))).(\lambda (P: Prop).(thead_x_y_y (Flat Cast) u t (H t 
-(pr2_free c (THead (Flat Cast) u t) t (pr0_epsilon t t (pr0_refl t) u))) 
-P))))).
+(pr2_free c (THead (Flat Cast) u t) t (pr0_tau t t (pr0_refl t) u))) P))))).
 
 theorem nf2_gen_beta:
  \forall (c: C).(\forall (u: T).(\forall (v: T).(\forall (t: T).((nf2 c 
index 1ad44c87adf66bea3cbcbdd5685617dd5352b779..4a240f89887750db652196751b7c146f7bb49061 100644 (file)
@@ -521,6 +521,6 @@ Cast) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead
 (Flat Cast) t t0) t2))) (ex_intro2 T (\lambda (t2: T).((eq T (THead (Flat 
 Cast) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead 
 (Flat Cast) t t0) t2)) t0 (\lambda (H1: (eq T (THead (Flat Cast) t t0) 
-t0)).(\lambda (P: Prop).(thead_x_y_y (Flat Cast) t t0 H1 P))) (pr0_epsilon t0 
-t0 (pr0_refl t0) t))) f)) k)))))) t1).
+t0)).(\lambda (P: Prop).(thead_x_y_y (Flat Cast) t t0 H1 P))) (pr0_tau t0 t0 
+(pr0_refl t0) t))) f)) k)))))) t1).
 
index 156b6ff85534a3b77afb7fc2e247ab45e3e90805..87ae5d97442807c840463814c8ebaed029909482 100644 (file)
@@ -35,6 +35,6 @@ T).(\forall (t2: T).((pr0 t1 t2) \to (\forall (w: T).((subst0 O u2 t2 w) \to
 | pr0_zeta: \forall (b: B).((not (eq B b Abst)) \to (\forall (t1: T).(\forall 
 (t2: T).((pr0 t1 t2) \to (\forall (u: T).(pr0 (THead (Bind b) u (lift (S O) O 
 t1)) t2))))))
-| pr0_epsilon: \forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to (\forall (u: 
+| pr0_tau: \forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to (\forall (u: 
 T).(pr0 (THead (Flat Cast) u t1) t2)))).
 
index 6a1bee0c7f9f6cd601925933200a5887fdd7dda3..7ad8f8eef4b91e477625c9ad3f158224428075f8 100644 (file)
@@ -1988,7 +1988,7 @@ t3 (lift h x1 x4))).(\lambda (H7: (pr0 x3 x4)).(eq_ind_r T (lift h x1 x4)
 (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T t (lift h x1 t4))) (\lambda 
 (t4: T).(pr0 (THead (Flat Cast) x2 x3) t4)))) (ex_intro2 T (\lambda (t4: 
 T).(eq T (lift h x1 x4) (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead (Flat 
-Cast) x2 x3) t4)) x4 (refl_equal T (lift h x1 x4)) (pr0_epsilon x3 x4 H7 x2)) 
-t3 H_x)))) (H2 x3 x1 H6)) x0 H4)))))) (lift_gen_flat Cast u t2 x0 h x1 
+Cast) x2 x3) t4)) x4 (refl_equal T (lift h x1 x4)) (pr0_tau x3 x4 H7 x2)) t3 
+H_x)))) (H2 x3 x1 H6)) x0 H4)))))) (lift_gen_flat Cast u t2 x0 h x1 
 H3)))))))))) y x H0))))) H))))).
 
index 2e70987d71a91f98f29fcf4b287680067de66cf0..c95e41331b5d9a75e83fcb9ec119844ebed43714 100644 (file)
@@ -242,7 +242,7 @@ w0 x1 H6 (Bind Abbr)))) (\lambda (H11: (subst0 O x x1 x2)).(ex_intro2 T
 x2 x O H10 x1 H7))))) H8)) (pr0_subst0 t3 x0 H3 u2 w O H x H1))))) H5)) 
 (pr0_subst0 t5 x0 H4 u3 w0 O H0 x H2))))))))))))))).
 
-theorem pr0_confluence__pr0_delta_epsilon:
+theorem pr0_confluence__pr0_delta_tau:
  \forall (u2: T).(\forall (t3: T).(\forall (w: T).((subst0 O u2 t3 w) \to 
 (\forall (t4: T).((pr0 (lift (S O) O t4) t3) \to (\forall (t2: T).(ex2 T 
 (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 t2 
@@ -399,22 +399,22 @@ T).(\forall (v: T).((tlt v t6) \to (\forall (t7: T).((pr0 v t7) \to (\forall
 T).(pr0 t8 t9)))))))))) H (THead (Bind b) u (lift (S O) O t4)) H7) in 
 (ex_intro2 T (\lambda (t6: T).(pr0 (THead (Bind b) u (lift (S O) O t4)) t6)) 
 (\lambda (t6: T).(pr0 t2 t6)) t2 (pr0_zeta b H10 t4 t2 H11 u) (pr0_refl 
-t2)))) t1 H12)))) t5 (sym_eq T t5 t2 H9))) t H7 H8 H5 H6))) | (pr0_epsilon t4 
-t5 H5 u) \Rightarrow (\lambda (H6: (eq T (THead (Flat Cast) u t4) 
-t)).(\lambda (H7: (eq T t5 t2)).(eq_ind T (THead (Flat Cast) u t4) (\lambda 
-(_: T).((eq T t5 t2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t7: T).(pr0 t1 
-t7)) (\lambda (t7: T).(pr0 t2 t7)))))) (\lambda (H8: (eq T t5 t2)).(eq_ind T 
-t2 (\lambda (t6: T).((pr0 t4 t6) \to (ex2 T (\lambda (t7: T).(pr0 t1 t7)) 
-(\lambda (t7: T).(pr0 t2 t7))))) (\lambda (H9: (pr0 t4 t2)).(let H10 \def 
-(eq_ind_r T t (\lambda (t6: T).(eq T t6 t1)) H4 (THead (Flat Cast) u t4) H6) 
-in (eq_ind T (THead (Flat Cast) u t4) (\lambda (t6: T).(ex2 T (\lambda (t7: 
-T).(pr0 t6 t7)) (\lambda (t7: T).(pr0 t2 t7)))) (let H11 \def (eq_ind_r T t 
-(\lambda (t6: T).(eq T t3 t6)) H2 (THead (Flat Cast) u t4) H6) in (let H12 
-\def (eq_ind_r T t (\lambda (t6: T).(\forall (v: T).((tlt v t6) \to (\forall 
-(t7: T).((pr0 v t7) \to (\forall (t8: T).((pr0 v t8) \to (ex2 T (\lambda (t9: 
+t2)))) t1 H12)))) t5 (sym_eq T t5 t2 H9))) t H7 H8 H5 H6))) | (pr0_tau t4 t5 
+H5 u) \Rightarrow (\lambda (H6: (eq T (THead (Flat Cast) u t4) t)).(\lambda 
+(H7: (eq T t5 t2)).(eq_ind T (THead (Flat Cast) u t4) (\lambda (_: T).((eq T 
+t5 t2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda 
+(t7: T).(pr0 t2 t7)))))) (\lambda (H8: (eq T t5 t2)).(eq_ind T t2 (\lambda 
+(t6: T).((pr0 t4 t6) \to (ex2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: 
+T).(pr0 t2 t7))))) (\lambda (H9: (pr0 t4 t2)).(let H10 \def (eq_ind_r T t 
+(\lambda (t6: T).(eq T t6 t1)) H4 (THead (Flat Cast) u t4) H6) in (eq_ind T 
+(THead (Flat Cast) u t4) (\lambda (t6: T).(ex2 T (\lambda (t7: T).(pr0 t6 
+t7)) (\lambda (t7: T).(pr0 t2 t7)))) (let H11 \def (eq_ind_r T t (\lambda 
+(t6: T).(eq T t3 t6)) H2 (THead (Flat Cast) u t4) H6) in (let H12 \def 
+(eq_ind_r T t (\lambda (t6: T).(\forall (v: T).((tlt v t6) \to (\forall (t7: 
+T).((pr0 v t7) \to (\forall (t8: T).((pr0 v t8) \to (ex2 T (\lambda (t9: 
 T).(pr0 t7 t9)) (\lambda (t9: T).(pr0 t8 t9)))))))))) H (THead (Flat Cast) u 
 t4) H6) in (ex_intro2 T (\lambda (t6: T).(pr0 (THead (Flat Cast) u t4) t6)) 
-(\lambda (t6: T).(pr0 t2 t6)) t2 (pr0_epsilon t4 t2 H9 u) (pr0_refl t2)))) t1 
+(\lambda (t6: T).(pr0 t2 t6)) t2 (pr0_tau t4 t2 H9 u) (pr0_refl t2)))) t1 
 H10))) t5 (sym_eq T t5 t2 H8))) t H6 H7 H5)))]) in (H5 (refl_equal T t) 
 (refl_equal T t2))) t (sym_eq T t t1 H4))) t3 (sym_eq T t3 t H2) H3))) | 
 (pr0_comp u1 u2 H2 t3 t4 H3 k) \Rightarrow (\lambda (H4: (eq T (THead k u1 
@@ -646,49 +646,49 @@ t10)) (\lambda (t10: T).(pr0 (THead (Bind Abbr) v2 t6) t10)))))) (\lambda
 (t9: T).(pr0 (THead (Flat Appl) u2 t4) t9)) (\lambda (t9: T).(pr0 (THead 
 (Bind Abbr) v2 t6) t9)))) with []) in H37))) t8 (sym_eq T t8 t4 H34))) t5 
 H33)) u0 (sym_eq T u0 u H32))) b (sym_eq B b Abst H31))) H30)) H29)) H28 H25 
-H26))) | (pr0_epsilon t7 t8 H25 u0) \Rightarrow (\lambda (H26: (eq T (THead 
-(Flat Cast) u0 t7) (THead (Bind Abst) u t5))).(\lambda (H27: (eq T t8 
-t4)).((let H28 \def (eq_ind T (THead (Flat Cast) u0 t7) (\lambda (e: 
-T).(match e in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
-False | (TLRef _) \Rightarrow False | (THead k0 _ _) \Rightarrow (match k0 in 
-K return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) 
-\Rightarrow True])])) I (THead (Bind Abst) u t5) H26) in (False_ind ((eq T t8 
-t4) \to ((pr0 t7 t8) \to (ex2 T (\lambda (t9: T).(pr0 (THead (Flat Appl) u2 
-t4) t9)) (\lambda (t9: T).(pr0 (THead (Bind Abbr) v2 t6) t9))))) H28)) H27 
-H25)))]) in (H25 (refl_equal T (THead (Bind Abst) u t5)) (refl_equal T 
-t4))))) k H21))))) H18)) H17))))) t2 H13)) t H11 H12 H9 H10))) | (pr0_upsilon 
-b H9 v1 v2 H10 u0 u3 H11 t5 t6 H12) \Rightarrow (\lambda (H13: (eq T (THead 
-(Flat Appl) v1 (THead (Bind b) u0 t5)) t)).(\lambda (H14: (eq T (THead (Bind 
-b) u3 (THead (Flat Appl) (lift (S O) O v2) t6)) t2)).(eq_ind T (THead (Flat 
-Appl) v1 (THead (Bind b) u0 t5)) (\lambda (_: T).((eq T (THead (Bind b) u3 
-(THead (Flat Appl) (lift (S O) O v2) t6)) t2) \to ((not (eq B b Abst)) \to 
-((pr0 v1 v2) \to ((pr0 u0 u3) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: 
-T).(pr0 (THead k u2 t4) t8)) (\lambda (t8: T).(pr0 t2 t8))))))))) (\lambda 
-(H15: (eq T (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) t6)) 
-t2)).(eq_ind T (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) t6)) 
-(\lambda (t7: T).((not (eq B b Abst)) \to ((pr0 v1 v2) \to ((pr0 u0 u3) \to 
-((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 (THead k u2 t4) t8)) (\lambda 
-(t8: T).(pr0 t7 t8)))))))) (\lambda (H16: (not (eq B b Abst))).(\lambda (H17: 
-(pr0 v1 v2)).(\lambda (H18: (pr0 u0 u3)).(\lambda (H19: (pr0 t5 t6)).(let H20 
-\def (eq_ind_r T t (\lambda (t7: T).(eq T (THead k u1 t3) t7)) H4 (THead 
-(Flat Appl) v1 (THead (Bind b) u0 t5)) H13) in (let H21 \def (f_equal T K 
-(\lambda (e: T).(match e in T return (\lambda (_: T).K) with [(TSort _) 
-\Rightarrow k | (TLRef _) \Rightarrow k | (THead k0 _ _) \Rightarrow k0])) 
+H26))) | (pr0_tau t7 t8 H25 u0) \Rightarrow (\lambda (H26: (eq T (THead (Flat 
+Cast) u0 t7) (THead (Bind Abst) u t5))).(\lambda (H27: (eq T t8 t4)).((let 
+H28 \def (eq_ind T (THead (Flat Cast) u0 t7) (\lambda (e: T).(match e in T 
+return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
+\Rightarrow False | (THead k0 _ _) \Rightarrow (match k0 in K return (\lambda 
+(_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow 
+True])])) I (THead (Bind Abst) u t5) H26) in (False_ind ((eq T t8 t4) \to 
+((pr0 t7 t8) \to (ex2 T (\lambda (t9: T).(pr0 (THead (Flat Appl) u2 t4) t9)) 
+(\lambda (t9: T).(pr0 (THead (Bind Abbr) v2 t6) t9))))) H28)) H27 H25)))]) in 
+(H25 (refl_equal T (THead (Bind Abst) u t5)) (refl_equal T t4))))) k H21))))) 
+H18)) H17))))) t2 H13)) t H11 H12 H9 H10))) | (pr0_upsilon b H9 v1 v2 H10 u0 
+u3 H11 t5 t6 H12) \Rightarrow (\lambda (H13: (eq T (THead (Flat Appl) v1 
+(THead (Bind b) u0 t5)) t)).(\lambda (H14: (eq T (THead (Bind b) u3 (THead 
+(Flat Appl) (lift (S O) O v2) t6)) t2)).(eq_ind T (THead (Flat Appl) v1 
+(THead (Bind b) u0 t5)) (\lambda (_: T).((eq T (THead (Bind b) u3 (THead 
+(Flat Appl) (lift (S O) O v2) t6)) t2) \to ((not (eq B b Abst)) \to ((pr0 v1 
+v2) \to ((pr0 u0 u3) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 (THead 
+k u2 t4) t8)) (\lambda (t8: T).(pr0 t2 t8))))))))) (\lambda (H15: (eq T 
+(THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) t6)) t2)).(eq_ind T 
+(THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) t6)) (\lambda (t7: 
+T).((not (eq B b Abst)) \to ((pr0 v1 v2) \to ((pr0 u0 u3) \to ((pr0 t5 t6) 
+\to (ex2 T (\lambda (t8: T).(pr0 (THead k u2 t4) t8)) (\lambda (t8: T).(pr0 
+t7 t8)))))))) (\lambda (H16: (not (eq B b Abst))).(\lambda (H17: (pr0 v1 
+v2)).(\lambda (H18: (pr0 u0 u3)).(\lambda (H19: (pr0 t5 t6)).(let H20 \def 
+(eq_ind_r T t (\lambda (t7: T).(eq T (THead k u1 t3) t7)) H4 (THead (Flat 
+Appl) v1 (THead (Bind b) u0 t5)) H13) in (let H21 \def (f_equal T K (\lambda 
+(e: T).(match e in T return (\lambda (_: T).K) with [(TSort _) \Rightarrow k 
+| (TLRef _) \Rightarrow k | (THead k0 _ _) \Rightarrow k0])) (THead k u1 t3) 
+(THead (Flat Appl) v1 (THead (Bind b) u0 t5)) H20) in ((let H22 \def (f_equal 
+T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) with [(TSort _) 
+\Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t7 _) \Rightarrow t7])) 
 (THead k u1 t3) (THead (Flat Appl) v1 (THead (Bind b) u0 t5)) H20) in ((let 
-H22 \def (f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) 
-with [(TSort _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t7 _
+H23 \def (f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) 
+with [(TSort _) \Rightarrow t3 | (TLRef _) \Rightarrow t3 | (THead _ _ t7
 \Rightarrow t7])) (THead k u1 t3) (THead (Flat Appl) v1 (THead (Bind b) u0 
-t5)) H20) in ((let H23 \def (f_equal T T (\lambda (e: T).(match e in T return 
-(\lambda (_: T).T) with [(TSort _) \Rightarrow t3 | (TLRef _) \Rightarrow t3 
-| (THead _ _ t7) \Rightarrow t7])) (THead k u1 t3) (THead (Flat Appl) v1 
-(THead (Bind b) u0 t5)) H20) in (\lambda (H24: (eq T u1 v1)).(\lambda (H25: 
-(eq K k (Flat Appl))).(let H26 \def (eq_ind_r T t (\lambda (t7: T).(\forall 
-(v: T).((tlt v t7) \to (\forall (t8: T).((pr0 v t8) \to (\forall (t9: 
-T).((pr0 v t9) \to (ex2 T (\lambda (t10: T).(pr0 t8 t10)) (\lambda (t10: 
-T).(pr0 t9 t10)))))))))) H (THead (Flat Appl) v1 (THead (Bind b) u0 t5)) H13) 
-in (eq_ind_r K (Flat Appl) (\lambda (k0: K).(ex2 T (\lambda (t7: T).(pr0 
-(THead k0 u2 t4) t7)) (\lambda (t7: T).(pr0 (THead (Bind b) u3 (THead (Flat 
-Appl) (lift (S O) O v2) t6)) t7)))) (let H27 \def (eq_ind T u1 (\lambda (t7: 
+t5)) H20) in (\lambda (H24: (eq T u1 v1)).(\lambda (H25: (eq K k (Flat 
+Appl))).(let H26 \def (eq_ind_r T t (\lambda (t7: T).(\forall (v: T).((tlt v 
+t7) \to (\forall (t8: T).((pr0 v t8) \to (\forall (t9: T).((pr0 v t9) \to 
+(ex2 T (\lambda (t10: T).(pr0 t8 t10)) (\lambda (t10: T).(pr0 t9 
+t10)))))))))) H (THead (Flat Appl) v1 (THead (Bind b) u0 t5)) H13) in 
+(eq_ind_r K (Flat Appl) (\lambda (k0: K).(ex2 T (\lambda (t7: T).(pr0 (THead 
+k0 u2 t4) t7)) (\lambda (t7: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) 
+(lift (S O) O v2) t6)) t7)))) (let H27 \def (eq_ind T u1 (\lambda (t7: 
 T).(pr0 t7 u2)) H7 v1 H24) in (let H28 \def (eq_ind T t3 (\lambda (t7: 
 T).(pr0 t7 t4)) H8 (THead (Bind b) u0 t5) H23) in (let H29 \def (match H28 in 
 pr0 return (\lambda (t7: T).(\lambda (t8: T).(\lambda (_: (pr0 t7 t8)).((eq T 
@@ -911,8 +911,8 @@ O t7))) (lift_tlt_dx (Bind b) u0 t7 (S O) O) (tlt_head_dx (Flat Appl) v1
 (THead (Bind b) u0 (lift (S O) O t7)))) x H45 t4 H40)) t6 H44)))) 
 (pr0_gen_lift t7 t6 (S O) O H43))))))) t8 (sym_eq T t8 t4 H38))) t5 H37)) u 
 (sym_eq T u u0 H36))) b0 (sym_eq B b0 b H35))) H34)) H33)) H32 H29 H30))) | 
-(pr0_epsilon t7 t8 H29 u) \Rightarrow (\lambda (H30: (eq T (THead (Flat Cast) 
-t7) (THead (Bind b) u0 t5))).(\lambda (H31: (eq T t8 t4)).((let H32 \def 
+(pr0_tau t7 t8 H29 u) \Rightarrow (\lambda (H30: (eq T (THead (Flat Cast) u 
+t7) (THead (Bind b) u0 t5))).(\lambda (H31: (eq T t8 t4)).((let H32 \def 
 (eq_ind T (THead (Flat Cast) u t7) (\lambda (e: T).(match e in T return 
 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
 \Rightarrow False | (THead k0 _ _) \Rightarrow (match k0 in K return (\lambda 
@@ -1000,10 +1000,10 @@ x x0)).(\lambda (H28: (pr0 t2 x0)).(ex_intro2 T (\lambda (t7: T).(pr0 (THead
 (Bind b) u2 (lift (S O) O x)) t7)) (\lambda (t7: T).(pr0 t2 t7)) x0 (pr0_zeta 
 b H14 x x0 H27 u2) H28)))) (H22 t5 (lift_tlt_dx (Bind b) u t5 (S O) O) x H26 
 t2 H15)) t4 H25)))) (pr0_gen_lift t5 t4 (S O) O H24)))) k H21))))) H18)) 
-H17))))) t6 (sym_eq T t6 t2 H13))) t H11 H12 H9 H10))) | (pr0_epsilon t5 t6 
-H9 u) \Rightarrow (\lambda (H10: (eq T (THead (Flat Cast) u t5) t)).(\lambda 
-(H11: (eq T t6 t2)).(eq_ind T (THead (Flat Cast) u t5) (\lambda (_: T).((eq T 
-t6 t2) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 (THead k u2 t4) t8)) 
+H17))))) t6 (sym_eq T t6 t2 H13))) t H11 H12 H9 H10))) | (pr0_tau t5 t6 H9 u) 
+\Rightarrow (\lambda (H10: (eq T (THead (Flat Cast) u t5) t)).(\lambda (H11: 
+(eq T t6 t2)).(eq_ind T (THead (Flat Cast) u t5) (\lambda (_: T).((eq T t6 
+t2) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 (THead k u2 t4) t8)) 
 (\lambda (t8: T).(pr0 t2 t8)))))) (\lambda (H12: (eq T t6 t2)).(eq_ind T t2 
 (\lambda (t7: T).((pr0 t5 t7) \to (ex2 T (\lambda (t8: T).(pr0 (THead k u2 
 t4) t8)) (\lambda (t8: T).(pr0 t2 t8))))) (\lambda (H13: (pr0 t5 t2)).(let 
@@ -1029,9 +1029,9 @@ t5 H17) in (ex2_ind T (\lambda (t7: T).(pr0 t4 t7)) (\lambda (t7: T).(pr0 t2
 t7)) (ex2 T (\lambda (t7: T).(pr0 (THead (Flat Cast) u2 t4) t7)) (\lambda 
 (t7: T).(pr0 t2 t7))) (\lambda (x: T).(\lambda (H23: (pr0 t4 x)).(\lambda 
 (H24: (pr0 t2 x)).(ex_intro2 T (\lambda (t7: T).(pr0 (THead (Flat Cast) u2 
-t4) t7)) (\lambda (t7: T).(pr0 t2 t7)) x (pr0_epsilon t4 x H23 u2) H24)))) 
-(H20 t5 (tlt_head_dx (Flat Cast) u t5) t4 H22 t2 H13)))) k H19))))) H16)) 
-H15)))) t6 (sym_eq T t6 t2 H12))) t H10 H11 H9)))]) in (H9 (refl_equal T t) 
+t4) t7)) (\lambda (t7: T).(pr0 t2 t7)) x (pr0_tau t4 x H23 u2) H24)))) (H20 
+t5 (tlt_head_dx (Flat Cast) u t5) t4 H22 t2 H13)))) k H19))))) H16)) H15)))) 
+t6 (sym_eq T t6 t2 H12))) t H10 H11 H9)))]) in (H9 (refl_equal T t) 
 (refl_equal T t2))))) t1 H6)) t H4 H5 H2 H3))) | (pr0_beta u v1 v2 H2 t3 t4 
 H3) \Rightarrow (\lambda (H4: (eq T (THead (Flat Appl) v1 (THead (Bind Abst) 
 u t3)) t)).(\lambda (H5: (eq T (THead (Bind Abbr) v2 t4) t1)).(eq_ind T 
@@ -1239,76 +1239,76 @@ t10)) (\lambda (t10: T).(pr0 (THead (Flat Appl) u2 t6) t10)))))) (\lambda
 (t9: T).(pr0 (THead (Bind Abbr) v2 t4) t9)) (\lambda (t9: T).(pr0 (THead 
 (Flat Appl) u2 t6) t9)))) with []) in H36))) t8 (sym_eq T t8 t6 H33))) t3 
 H32)) u0 (sym_eq T u0 u H31))) b (sym_eq B b Abst H30))) H29)) H28)) H27 H24 
-H25))) | (pr0_epsilon t7 t8 H24 u0) \Rightarrow (\lambda (H25: (eq T (THead 
-(Flat Cast) u0 t7) (THead (Bind Abst) u t3))).(\lambda (H26: (eq T t8 
-t6)).((let H27 \def (eq_ind T (THead (Flat Cast) u0 t7) (\lambda (e: 
-T).(match e in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
-False | (TLRef _) \Rightarrow False | (THead k0 _ _) \Rightarrow (match k0 in 
-K return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) 
-\Rightarrow True])])) I (THead (Bind Abst) u t3) H25) in (False_ind ((eq T t8 
-t6) \to ((pr0 t7 t8) \to (ex2 T (\lambda (t9: T).(pr0 (THead (Bind Abbr) v2 
-t4) t9)) (\lambda (t9: T).(pr0 (THead (Flat Appl) u2 t6) t9))))) H27)) H26 
-H24)))]) in (H24 (refl_equal T (THead (Bind Abst) u t3)) (refl_equal T 
-t6))))) k H21)))) H18)) H17))))) t2 H13)) t H11 H12 H9 H10))) | (pr0_beta u0 
-v0 v3 H9 t5 t6 H10) \Rightarrow (\lambda (H11: (eq T (THead (Flat Appl) v0 
-(THead (Bind Abst) u0 t5)) t)).(\lambda (H12: (eq T (THead (Bind Abbr) v3 t6) 
-t2)).(eq_ind T (THead (Flat Appl) v0 (THead (Bind Abst) u0 t5)) (\lambda (_: 
-T).((eq T (THead (Bind Abbr) v3 t6) t2) \to ((pr0 v0 v3) \to ((pr0 t5 t6) \to 
+H25))) | (pr0_tau t7 t8 H24 u0) \Rightarrow (\lambda (H25: (eq T (THead (Flat 
+Cast) u0 t7) (THead (Bind Abst) u t3))).(\lambda (H26: (eq T t8 t6)).((let 
+H27 \def (eq_ind T (THead (Flat Cast) u0 t7) (\lambda (e: T).(match e in T 
+return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
+\Rightarrow False | (THead k0 _ _) \Rightarrow (match k0 in K return (\lambda 
+(_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow 
+True])])) I (THead (Bind Abst) u t3) H25) in (False_ind ((eq T t8 t6) \to 
+((pr0 t7 t8) \to (ex2 T (\lambda (t9: T).(pr0 (THead (Bind Abbr) v2 t4) t9)) 
+(\lambda (t9: T).(pr0 (THead (Flat Appl) u2 t6) t9))))) H27)) H26 H24)))]) in 
+(H24 (refl_equal T (THead (Bind Abst) u t3)) (refl_equal T t6))))) k H21)))) 
+H18)) H17))))) t2 H13)) t H11 H12 H9 H10))) | (pr0_beta u0 v0 v3 H9 t5 t6 
+H10) \Rightarrow (\lambda (H11: (eq T (THead (Flat Appl) v0 (THead (Bind 
+Abst) u0 t5)) t)).(\lambda (H12: (eq T (THead (Bind Abbr) v3 t6) t2)).(eq_ind 
+T (THead (Flat Appl) v0 (THead (Bind Abst) u0 t5)) (\lambda (_: T).((eq T 
+(THead (Bind Abbr) v3 t6) t2) \to ((pr0 v0 v3) \to ((pr0 t5 t6) \to (ex2 T 
+(\lambda (t8: T).(pr0 (THead (Bind Abbr) v2 t4) t8)) (\lambda (t8: T).(pr0 t2 
+t8))))))) (\lambda (H13: (eq T (THead (Bind Abbr) v3 t6) t2)).(eq_ind T 
+(THead (Bind Abbr) v3 t6) (\lambda (t7: T).((pr0 v0 v3) \to ((pr0 t5 t6) \to 
 (ex2 T (\lambda (t8: T).(pr0 (THead (Bind Abbr) v2 t4) t8)) (\lambda (t8: 
-T).(pr0 t2 t8))))))) (\lambda (H13: (eq T (THead (Bind Abbr) v3 t6) 
-t2)).(eq_ind T (THead (Bind Abbr) v3 t6) (\lambda (t7: T).((pr0 v0 v3) \to 
+T).(pr0 t7 t8)))))) (\lambda (H14: (pr0 v0 v3)).(\lambda (H15: (pr0 t5 
+t6)).(let H16 \def (eq_ind_r T t (\lambda (t7: T).(eq T (THead (Flat Appl) v1 
+(THead (Bind Abst) u t3)) t7)) H4 (THead (Flat Appl) v0 (THead (Bind Abst) u0 
+t5)) H11) in (let H17 \def (f_equal T T (\lambda (e: T).(match e in T return 
+(\lambda (_: T).T) with [(TSort _) \Rightarrow v1 | (TLRef _) \Rightarrow v1 
+| (THead _ t7 _) \Rightarrow t7])) (THead (Flat Appl) v1 (THead (Bind Abst) u 
+t3)) (THead (Flat Appl) v0 (THead (Bind Abst) u0 t5)) H16) in ((let H18 \def 
+(f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) with 
+[(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | (THead _ _ t7) 
+\Rightarrow (match t7 in T return (\lambda (_: T).T) with [(TSort _) 
+\Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t8 _) \Rightarrow t8])])) 
+(THead (Flat Appl) v1 (THead (Bind Abst) u t3)) (THead (Flat Appl) v0 (THead 
+(Bind Abst) u0 t5)) H16) in ((let H19 \def (f_equal T T (\lambda (e: 
+T).(match e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow t3 | 
+(TLRef _) \Rightarrow t3 | (THead _ _ t7) \Rightarrow (match t7 in T return 
+(\lambda (_: T).T) with [(TSort _) \Rightarrow t3 | (TLRef _) \Rightarrow t3 
+| (THead _ _ t8) \Rightarrow t8])])) (THead (Flat Appl) v1 (THead (Bind Abst) 
+u t3)) (THead (Flat Appl) v0 (THead (Bind Abst) u0 t5)) H16) in (\lambda (_: 
+(eq T u u0)).(\lambda (H21: (eq T v1 v0)).(let H22 \def (eq_ind_r T t 
+(\lambda (t7: T).(\forall (v: T).((tlt v t7) \to (\forall (t8: T).((pr0 v t8) 
+\to (\forall (t9: T).((pr0 v t9) \to (ex2 T (\lambda (t10: T).(pr0 t8 t10)) 
+(\lambda (t10: T).(pr0 t9 t10)))))))))) H (THead (Flat Appl) v0 (THead (Bind 
+Abst) u0 t5)) H11) in (let H23 \def (eq_ind T v1 (\lambda (t7: T).(pr0 t7 
+v2)) H7 v0 H21) in (let H24 \def (eq_ind T t3 (\lambda (t7: T).(pr0 t7 t4)) 
+H8 t5 H19) in (ex2_ind T (\lambda (t7: T).(pr0 t4 t7)) (\lambda (t7: T).(pr0 
+t6 t7)) (ex2 T (\lambda (t7: T).(pr0 (THead (Bind Abbr) v2 t4) t7)) (\lambda 
+(t7: T).(pr0 (THead (Bind Abbr) v3 t6) t7))) (\lambda (x: T).(\lambda (H25: 
+(pr0 t4 x)).(\lambda (H26: (pr0 t6 x)).(ex2_ind T (\lambda (t7: T).(pr0 v2 
+t7)) (\lambda (t7: T).(pr0 v3 t7)) (ex2 T (\lambda (t7: T).(pr0 (THead (Bind 
+Abbr) v2 t4) t7)) (\lambda (t7: T).(pr0 (THead (Bind Abbr) v3 t6) t7))) 
+(\lambda (x0: T).(\lambda (H27: (pr0 v2 x0)).(\lambda (H28: (pr0 v3 
+x0)).(ex_intro2 T (\lambda (t7: T).(pr0 (THead (Bind Abbr) v2 t4) t7)) 
+(\lambda (t7: T).(pr0 (THead (Bind Abbr) v3 t6) t7)) (THead (Bind Abbr) x0 x) 
+(pr0_comp v2 x0 H27 t4 x H25 (Bind Abbr)) (pr0_comp v3 x0 H28 t6 x H26 (Bind 
+Abbr)))))) (H22 v0 (tlt_head_sx (Flat Appl) v0 (THead (Bind Abst) u0 t5)) v2 
+H23 v3 H14))))) (H22 t5 (tlt_trans (THead (Bind Abst) u0 t5) t5 (THead (Flat 
+Appl) v0 (THead (Bind Abst) u0 t5)) (tlt_head_dx (Bind Abst) u0 t5) 
+(tlt_head_dx (Flat Appl) v0 (THead (Bind Abst) u0 t5))) t4 H24 t6 H15)))))))) 
+H18)) H17))))) t2 H13)) t H11 H12 H9 H10))) | (pr0_upsilon b H9 v0 v3 H10 u1 
+u2 H11 t5 t6 H12) \Rightarrow (\lambda (H13: (eq T (THead (Flat Appl) v0 
+(THead (Bind b) u1 t5)) t)).(\lambda (H14: (eq T (THead (Bind b) u2 (THead 
+(Flat Appl) (lift (S O) O v3) t6)) t2)).(eq_ind T (THead (Flat Appl) v0 
+(THead (Bind b) u1 t5)) (\lambda (_: T).((eq T (THead (Bind b) u2 (THead 
+(Flat Appl) (lift (S O) O v3) t6)) t2) \to ((not (eq B b Abst)) \to ((pr0 v0 
+v3) \to ((pr0 u1 u2) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 (THead 
+(Bind Abbr) v2 t4) t8)) (\lambda (t8: T).(pr0 t2 t8))))))))) (\lambda (H15: 
+(eq T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v3) t6)) 
+t2)).(eq_ind T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v3) t6)) 
+(\lambda (t7: T).((not (eq B b Abst)) \to ((pr0 v0 v3) \to ((pr0 u1 u2) \to 
 ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 (THead (Bind Abbr) v2 t4) t8)) 
-(\lambda (t8: T).(pr0 t7 t8)))))) (\lambda (H14: (pr0 v0 v3)).(\lambda (H15: 
-(pr0 t5 t6)).(let H16 \def (eq_ind_r T t (\lambda (t7: T).(eq T (THead (Flat 
-Appl) v1 (THead (Bind Abst) u t3)) t7)) H4 (THead (Flat Appl) v0 (THead (Bind 
-Abst) u0 t5)) H11) in (let H17 \def (f_equal T T (\lambda (e: T).(match e in 
-T return (\lambda (_: T).T) with [(TSort _) \Rightarrow v1 | (TLRef _) 
-\Rightarrow v1 | (THead _ t7 _) \Rightarrow t7])) (THead (Flat Appl) v1 
-(THead (Bind Abst) u t3)) (THead (Flat Appl) v0 (THead (Bind Abst) u0 t5)) 
-H16) in ((let H18 \def (f_equal T T (\lambda (e: T).(match e in T return 
-(\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | 
-(THead _ _ t7) \Rightarrow (match t7 in T return (\lambda (_: T).T) with 
-[(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t8 _) 
-\Rightarrow t8])])) (THead (Flat Appl) v1 (THead (Bind Abst) u t3)) (THead 
-(Flat Appl) v0 (THead (Bind Abst) u0 t5)) H16) in ((let H19 \def (f_equal T T 
-(\lambda (e: T).(match e in T return (\lambda (_: T).T) with [(TSort _) 
-\Rightarrow t3 | (TLRef _) \Rightarrow t3 | (THead _ _ t7) \Rightarrow (match 
-t7 in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow t3 | (TLRef _) 
-\Rightarrow t3 | (THead _ _ t8) \Rightarrow t8])])) (THead (Flat Appl) v1 
-(THead (Bind Abst) u t3)) (THead (Flat Appl) v0 (THead (Bind Abst) u0 t5)) 
-H16) in (\lambda (_: (eq T u u0)).(\lambda (H21: (eq T v1 v0)).(let H22 \def 
-(eq_ind_r T t (\lambda (t7: T).(\forall (v: T).((tlt v t7) \to (\forall (t8: 
-T).((pr0 v t8) \to (\forall (t9: T).((pr0 v t9) \to (ex2 T (\lambda (t10: 
-T).(pr0 t8 t10)) (\lambda (t10: T).(pr0 t9 t10)))))))))) H (THead (Flat Appl) 
-v0 (THead (Bind Abst) u0 t5)) H11) in (let H23 \def (eq_ind T v1 (\lambda 
-(t7: T).(pr0 t7 v2)) H7 v0 H21) in (let H24 \def (eq_ind T t3 (\lambda (t7: 
-T).(pr0 t7 t4)) H8 t5 H19) in (ex2_ind T (\lambda (t7: T).(pr0 t4 t7)) 
-(\lambda (t7: T).(pr0 t6 t7)) (ex2 T (\lambda (t7: T).(pr0 (THead (Bind Abbr) 
-v2 t4) t7)) (\lambda (t7: T).(pr0 (THead (Bind Abbr) v3 t6) t7))) (\lambda 
-(x: T).(\lambda (H25: (pr0 t4 x)).(\lambda (H26: (pr0 t6 x)).(ex2_ind T 
-(\lambda (t7: T).(pr0 v2 t7)) (\lambda (t7: T).(pr0 v3 t7)) (ex2 T (\lambda 
-(t7: T).(pr0 (THead (Bind Abbr) v2 t4) t7)) (\lambda (t7: T).(pr0 (THead 
-(Bind Abbr) v3 t6) t7))) (\lambda (x0: T).(\lambda (H27: (pr0 v2 
-x0)).(\lambda (H28: (pr0 v3 x0)).(ex_intro2 T (\lambda (t7: T).(pr0 (THead 
-(Bind Abbr) v2 t4) t7)) (\lambda (t7: T).(pr0 (THead (Bind Abbr) v3 t6) t7)) 
-(THead (Bind Abbr) x0 x) (pr0_comp v2 x0 H27 t4 x H25 (Bind Abbr)) (pr0_comp 
-v3 x0 H28 t6 x H26 (Bind Abbr)))))) (H22 v0 (tlt_head_sx (Flat Appl) v0 
-(THead (Bind Abst) u0 t5)) v2 H23 v3 H14))))) (H22 t5 (tlt_trans (THead (Bind 
-Abst) u0 t5) t5 (THead (Flat Appl) v0 (THead (Bind Abst) u0 t5)) (tlt_head_dx 
-(Bind Abst) u0 t5) (tlt_head_dx (Flat Appl) v0 (THead (Bind Abst) u0 t5))) t4 
-H24 t6 H15)))))))) H18)) H17))))) t2 H13)) t H11 H12 H9 H10))) | (pr0_upsilon 
-b H9 v0 v3 H10 u1 u2 H11 t5 t6 H12) \Rightarrow (\lambda (H13: (eq T (THead 
-(Flat Appl) v0 (THead (Bind b) u1 t5)) t)).(\lambda (H14: (eq T (THead (Bind 
-b) u2 (THead (Flat Appl) (lift (S O) O v3) t6)) t2)).(eq_ind T (THead (Flat 
-Appl) v0 (THead (Bind b) u1 t5)) (\lambda (_: T).((eq T (THead (Bind b) u2 
-(THead (Flat Appl) (lift (S O) O v3) t6)) t2) \to ((not (eq B b Abst)) \to 
-((pr0 v0 v3) \to ((pr0 u1 u2) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: 
-T).(pr0 (THead (Bind Abbr) v2 t4) t8)) (\lambda (t8: T).(pr0 t2 t8))))))))) 
-(\lambda (H15: (eq T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v3) 
-t6)) t2)).(eq_ind T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v3) 
-t6)) (\lambda (t7: T).((not (eq B b Abst)) \to ((pr0 v0 v3) \to ((pr0 u1 u2) 
-\to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 (THead (Bind Abbr) v2 t4) 
-t8)) (\lambda (t8: T).(pr0 t7 t8)))))))) (\lambda (H16: (not (eq B b 
+(\lambda (t8: T).(pr0 t7 t8)))))))) (\lambda (H16: (not (eq B b 
 Abst))).(\lambda (_: (pr0 v0 v3)).(\lambda (_: (pr0 u1 u2)).(\lambda (_: (pr0 
 t5 t6)).(let H20 \def (eq_ind_r T t (\lambda (t7: T).(eq T (THead (Flat Appl) 
 v1 (THead (Bind Abst) u t3)) t7)) H4 (THead (Flat Appl) v0 (THead (Bind b) u1 
@@ -1378,8 +1378,8 @@ T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _)
 (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow 
 True])])) I (THead (Bind b) u0 (lift (S O) O t5)) H16) in (False_ind (ex2 T 
 (\lambda (t7: T).(pr0 (THead (Bind Abbr) v2 t4) t7)) (\lambda (t7: T).(pr0 t2 
-t7))) H17))))) t6 (sym_eq T t6 t2 H13))) t H11 H12 H9 H10))) | (pr0_epsilon 
-t5 t6 H9 u0) \Rightarrow (\lambda (H10: (eq T (THead (Flat Cast) u0 t5) 
+t7))) H17))))) t6 (sym_eq T t6 t2 H13))) t H11 H12 H9 H10))) | (pr0_tau t5 t6 
+H9 u0) \Rightarrow (\lambda (H10: (eq T (THead (Flat Cast) u0 t5) 
 t)).(\lambda (H11: (eq T t6 t2)).(eq_ind T (THead (Flat Cast) u0 t5) (\lambda 
 (_: T).((eq T t6 t2) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 (THead 
 (Bind Abbr) v2 t4) t8)) (\lambda (t8: T).(pr0 t2 t8)))))) (\lambda (H12: (eq 
@@ -1706,12 +1706,12 @@ b) u1 (lift (S O) O t7))) (lift_tlt_dx (Bind b) u1 t7 (S O) O) (tlt_head_dx
 u0 (tlt_head_sx (Flat Appl) u0 (THead (Bind b) u1 (lift (S O) O t7))) v2 H46 
 u3 H18))) t4 H44)))) (pr0_gen_lift t7 t4 (S O) O H43)))))))) t8 (sym_eq T t8 
 t6 H37))) t3 H36)) u (sym_eq T u u1 H35))) b0 (sym_eq B b0 b H34))) H33)) 
-H32)) H31 H28 H29))) | (pr0_epsilon t7 t8 H28 u) \Rightarrow (\lambda (H29: 
-(eq T (THead (Flat Cast) u t7) (THead (Bind b) u1 t3))).(\lambda (H30: (eq T 
-t8 t6)).((let H31 \def (eq_ind T (THead (Flat Cast) u t7) (\lambda (e: 
-T).(match e in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
-False | (TLRef _) \Rightarrow False | (THead k0 _ _) \Rightarrow (match k0 in 
-return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) 
+H32)) H31 H28 H29))) | (pr0_tau t7 t8 H28 u) \Rightarrow (\lambda (H29: (eq T 
+(THead (Flat Cast) u t7) (THead (Bind b) u1 t3))).(\lambda (H30: (eq T t8 
+t6)).((let H31 \def (eq_ind T (THead (Flat Cast) u t7) (\lambda (e: T).(match 
+e in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
+(TLRef _) \Rightarrow False | (THead k0 _ _) \Rightarrow (match k0 in K 
+return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) 
 \Rightarrow True])])) I (THead (Bind b) u1 t3) H29) in (False_ind ((eq T t8 
 t6) \to ((pr0 t7 t8) \to (ex2 T (\lambda (t9: T).(pr0 (THead (Bind b) u2 
 (THead (Flat Appl) (lift (S O) O v2) t4)) t9)) (\lambda (t9: T).(pr0 (THead 
@@ -1874,7 +1874,7 @@ t2)).(let H20 \def (eq_ind_r T t (\lambda (t7: T).(eq T (THead (Flat Appl) v1
 (Flat _) \Rightarrow True])])) I (THead (Bind b0) u (lift (S O) O t5)) H20) 
 in (False_ind (ex2 T (\lambda (t7: T).(pr0 (THead (Bind b) u2 (THead (Flat 
 Appl) (lift (S O) O v2) t4)) t7)) (\lambda (t7: T).(pr0 t2 t7))) H21))))) t6 
-(sym_eq T t6 t2 H17))) t H15 H16 H13 H14))) | (pr0_epsilon t5 t6 H13 u) 
+(sym_eq T t6 t2 H17))) t H15 H16 H13 H14))) | (pr0_tau t5 t6 H13 u) 
 \Rightarrow (\lambda (H14: (eq T (THead (Flat Cast) u t5) t)).(\lambda (H15: 
 (eq T t6 t2)).(eq_ind T (THead (Flat Cast) u t5) (\lambda (_: T).((eq T t6 
 t2) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 (THead (Bind b) u2 
@@ -2075,10 +2075,10 @@ T).(subst0 O u2 t7 w)) H10 (lift (S O) O x) H29) in (ex2_ind T (\lambda (t7:
 T).(pr0 x t7)) (\lambda (t7: T).(pr0 t2 t7)) (ex2 T (\lambda (t7: T).(pr0 
 (THead (Bind Abbr) u2 w) t7)) (\lambda (t7: T).(pr0 t2 t7))) (\lambda (x0: 
 T).(\lambda (_: (pr0 x x0)).(\lambda (_: (pr0 t2 
-x0)).(pr0_confluence__pr0_delta_epsilon u2 (lift (S O) O x) w H31 x (pr0_refl 
+x0)).(pr0_confluence__pr0_delta_tau u2 (lift (S O) O x) w H31 x (pr0_refl 
 (lift (S O) O x)) t2)))) (H26 t5 (lift_tlt_dx (Bind Abbr) u t5 (S O) O) x H30 
 t2 H17)))))) (pr0_gen_lift t5 t4 (S O) O H28)))))))))) H20)) H19))))) t6 
-(sym_eq T t6 t2 H15))) t H13 H14 H11 H12))) | (pr0_epsilon t5 t6 H11 u) 
+(sym_eq T t6 t2 H15))) t H13 H14 H11 H12))) | (pr0_tau t5 t6 H11 u) 
 \Rightarrow (\lambda (H12: (eq T (THead (Flat Cast) u t5) t)).(\lambda (H13: 
 (eq T t6 t2)).(eq_ind T (THead (Flat Cast) u t5) (\lambda (_: T).((eq T t6 
 t2) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 (THead (Bind Abbr) u2 
@@ -2259,156 +2259,155 @@ T).(pr0 t3 t7)) (ex2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0
 (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 (THead (Bind Abbr) u2 w) 
 t7))) (\lambda (x0: T).(\lambda (_: (pr0 x x0)).(\lambda (_: (pr0 t1 
 x0)).(ex2_sym T (pr0 (THead (Bind Abbr) u2 w)) (pr0 t1) 
-(pr0_confluence__pr0_delta_epsilon u2 (lift (S O) O x) w H29 x (pr0_refl 
-(lift (S O) O x)) t1))))) (H28 t3 (lift_tlt_dx (Bind Abbr) u1 t3 (S O) O) x 
-H26 t1 H8))))))))) (pr0_gen_lift t3 t6 (S O) O H24)))))) H20)) H19)))))) t2 
-H14)) t H12 H13 H9 H10 H11))) | (pr0_zeta b0 H9 t5 t6 H10 u0) \Rightarrow 
-(\lambda (H11: (eq T (THead (Bind b0) u0 (lift (S O) O t5)) t)).(\lambda 
-(H12: (eq T t6 t2)).(eq_ind T (THead (Bind b0) u0 (lift (S O) O t5)) (\lambda 
-(_: T).((eq T t6 t2) \to ((not (eq B b0 Abst)) \to ((pr0 t5 t6) \to (ex2 T 
-(\lambda (t8: T).(pr0 t1 t8)) (\lambda (t8: T).(pr0 t2 t8))))))) (\lambda 
-(H13: (eq T t6 t2)).(eq_ind T t2 (\lambda (t7: T).((not (eq B b0 Abst)) \to 
-((pr0 t5 t7) \to (ex2 T (\lambda (t8: T).(pr0 t1 t8)) (\lambda (t8: T).(pr0 
-t2 t8)))))) (\lambda (_: (not (eq B b0 Abst))).(\lambda (H15: (pr0 t5 
-t2)).(let H16 \def (eq_ind_r T t (\lambda (t7: T).(eq T (THead (Bind b) u 
-(lift (S O) O t3)) t7)) H4 (THead (Bind b0) u0 (lift (S O) O t5)) H11) in 
-(let H17 \def (f_equal T B (\lambda (e: T).(match e in T return (\lambda (_: 
-T).B) with [(TSort _) \Rightarrow b | (TLRef _) \Rightarrow b | (THead k _ _) 
-\Rightarrow (match k in K return (\lambda (_: K).B) with [(Bind b1) 
-\Rightarrow b1 | (Flat _) \Rightarrow b])])) (THead (Bind b) u (lift (S O) O 
-t3)) (THead (Bind b0) u0 (lift (S O) O t5)) H16) in ((let H18 \def (f_equal T 
-T (\lambda (e: T).(match e in T return (\lambda (_: T).T) with [(TSort _) 
-\Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t7 _) \Rightarrow t7])) 
-(THead (Bind b) u (lift (S O) O t3)) (THead (Bind b0) u0 (lift (S O) O t5)) 
-H16) in ((let H19 \def (f_equal T T (\lambda (e: T).(match e in T return 
-(\lambda (_: T).T) with [(TSort _) \Rightarrow ((let rec lref_map (f: ((nat 
-\to nat))) (d: nat) (t7: T) on t7: T \def (match t7 with [(TSort n) 
-\Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d) with 
-[true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u1 t8) 
-\Rightarrow (THead k (lref_map f d u1) (lref_map f (s k d) t8))]) in 
-lref_map) (\lambda (x: nat).(plus x (S O))) O t3) | (TLRef _) \Rightarrow 
-((let rec lref_map (f: ((nat \to nat))) (d: nat) (t7: T) on t7: T \def (match 
-t7 with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef 
-(match (blt i d) with [true \Rightarrow i | false \Rightarrow (f i)])) | 
-(THead k u1 t8) \Rightarrow (THead k (lref_map f d u1) (lref_map f (s k d) 
-t8))]) in lref_map) (\lambda (x: nat).(plus x (S O))) O t3) | (THead _ _ t7) 
-\Rightarrow t7])) (THead (Bind b) u (lift (S O) O t3)) (THead (Bind b0) u0 
-(lift (S O) O t5)) H16) in (\lambda (_: (eq T u u0)).(\lambda (H21: (eq B b 
-b0)).(let H22 \def (eq_ind_r T t (\lambda (t7: T).(\forall (v: T).((tlt v t7) 
-\to (\forall (t8: T).((pr0 v t8) \to (\forall (t9: T).((pr0 v t9) \to (ex2 T 
-(\lambda (t10: T).(pr0 t8 t10)) (\lambda (t10: T).(pr0 t9 t10)))))))))) H 
-(THead (Bind b0) u0 (lift (S O) O t5)) H11) in (let H23 \def (eq_ind T t3 
-(\lambda (t7: T).(pr0 t7 t1)) H8 t5 (lift_inj t3 t5 (S O) O H19)) in (let H24 
-\def (eq_ind B b (\lambda (b1: B).(not (eq B b1 Abst))) H7 b0 H21) in 
-(ex2_ind T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 t2 t7)) (ex2 T 
-(\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 t2 t7))) (\lambda (x: 
-T).(\lambda (H25: (pr0 t1 x)).(\lambda (H26: (pr0 t2 x)).(ex_intro2 T 
-(\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 t2 t7)) x H25 H26)))) 
-(H22 t5 (lift_tlt_dx (Bind b0) u0 t5 (S O) O) t1 H23 t2 H15)))))))) H18)) 
-H17))))) t6 (sym_eq T t6 t2 H13))) t H11 H12 H9 H10))) | (pr0_epsilon t5 t6 
-H9 u0) \Rightarrow (\lambda (H10: (eq T (THead (Flat Cast) u0 t5) 
-t)).(\lambda (H11: (eq T t6 t2)).(eq_ind T (THead (Flat Cast) u0 t5) (\lambda 
-(_: T).((eq T t6 t2) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 t1 
-t8)) (\lambda (t8: T).(pr0 t2 t8)))))) (\lambda (H12: (eq T t6 t2)).(eq_ind T 
-t2 (\lambda (t7: T).((pr0 t5 t7) \to (ex2 T (\lambda (t8: T).(pr0 t1 t8)) 
-(\lambda (t8: T).(pr0 t2 t8))))) (\lambda (_: (pr0 t5 t2)).(let H14 \def 
+(pr0_confluence__pr0_delta_tau u2 (lift (S O) O x) w H29 x (pr0_refl (lift (S 
+O) O x)) t1))))) (H28 t3 (lift_tlt_dx (Bind Abbr) u1 t3 (S O) O) x H26 t1 
+H8))))))))) (pr0_gen_lift t3 t6 (S O) O H24)))))) H20)) H19)))))) t2 H14)) t 
+H12 H13 H9 H10 H11))) | (pr0_zeta b0 H9 t5 t6 H10 u0) \Rightarrow (\lambda 
+(H11: (eq T (THead (Bind b0) u0 (lift (S O) O t5)) t)).(\lambda (H12: (eq T 
+t6 t2)).(eq_ind T (THead (Bind b0) u0 (lift (S O) O t5)) (\lambda (_: T).((eq 
+T t6 t2) \to ((not (eq B b0 Abst)) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: 
+T).(pr0 t1 t8)) (\lambda (t8: T).(pr0 t2 t8))))))) (\lambda (H13: (eq T t6 
+t2)).(eq_ind T t2 (\lambda (t7: T).((not (eq B b0 Abst)) \to ((pr0 t5 t7) \to 
+(ex2 T (\lambda (t8: T).(pr0 t1 t8)) (\lambda (t8: T).(pr0 t2 t8)))))) 
+(\lambda (_: (not (eq B b0 Abst))).(\lambda (H15: (pr0 t5 t2)).(let H16 \def 
 (eq_ind_r T t (\lambda (t7: T).(eq T (THead (Bind b) u (lift (S O) O t3)) 
-t7)) H4 (THead (Flat Cast) u0 t5) H10) in (let H15 \def (eq_ind T (THead 
-(Bind b) u (lift (S O) O t3)) (\lambda (ee: T).(match ee in T return (\lambda 
-(_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
-| (THead k _ _) \Rightarrow (match k in K return (\lambda (_: K).Prop) with 
-[(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat 
-Cast) u0 t5) H14) in (False_ind (ex2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda 
-(t7: T).(pr0 t2 t7))) H15)))) t6 (sym_eq T t6 t2 H12))) t H10 H11 H9)))]) in 
-(H9 (refl_equal T t) (refl_equal T t2))))) t4 (sym_eq T t4 t1 H6))) t H4 H5 
-H2 H3))) | (pr0_epsilon t3 t4 H2 u) \Rightarrow (\lambda (H3: (eq T (THead 
-(Flat Cast) u t3) t)).(\lambda (H4: (eq T t4 t1)).(eq_ind T (THead (Flat 
-Cast) u t3) (\lambda (_: T).((eq T t4 t1) \to ((pr0 t3 t4) \to (ex2 T 
-(\lambda (t6: T).(pr0 t1 t6)) (\lambda (t6: T).(pr0 t2 t6)))))) (\lambda (H5: 
-(eq T t4 t1)).(eq_ind T t1 (\lambda (t5: T).((pr0 t3 t5) \to (ex2 T (\lambda 
-(t6: T).(pr0 t1 t6)) (\lambda (t6: T).(pr0 t2 t6))))) (\lambda (H6: (pr0 t3 
-t1)).(let H7 \def (match H1 in pr0 return (\lambda (t5: T).(\lambda (t6: 
-T).(\lambda (_: (pr0 t5 t6)).((eq T t5 t) \to ((eq T t6 t2) \to (ex2 T 
-(\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 t2 t7)))))))) with 
-[(pr0_refl t5) \Rightarrow (\lambda (H7: (eq T t5 t)).(\lambda (H8: (eq T t5 
-t2)).(eq_ind T t (\lambda (t6: T).((eq T t6 t2) \to (ex2 T (\lambda (t7: 
-T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 t2 t7))))) (\lambda (H9: (eq T t 
-t2)).(eq_ind T t2 (\lambda (_: T).(ex2 T (\lambda (t7: T).(pr0 t1 t7)) 
-(\lambda (t7: T).(pr0 t2 t7)))) (let H10 \def (eq_ind_r T t (\lambda (t6: 
-T).(eq T t6 t2)) H9 (THead (Flat Cast) u t3) H3) in (eq_ind T (THead (Flat 
-Cast) u t3) (\lambda (t6: T).(ex2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda 
-(t7: T).(pr0 t6 t7)))) (let H11 \def (eq_ind_r T t (\lambda (t6: T).(eq T t5 
-t6)) H7 (THead (Flat Cast) u t3) H3) in (let H12 \def (eq_ind_r T t (\lambda 
-(t6: T).(\forall (v: T).((tlt v t6) \to (\forall (t7: T).((pr0 v t7) \to 
-(\forall (t8: T).((pr0 v t8) \to (ex2 T (\lambda (t9: T).(pr0 t7 t9)) 
-(\lambda (t9: T).(pr0 t8 t9)))))))))) H (THead (Flat Cast) u t3) H3) in 
-(ex_intro2 T (\lambda (t6: T).(pr0 t1 t6)) (\lambda (t6: T).(pr0 (THead (Flat 
-Cast) u t3) t6)) t1 (pr0_refl t1) (pr0_epsilon t3 t1 H6 u)))) t2 H10)) t 
-(sym_eq T t t2 H9))) t5 (sym_eq T t5 t H7) H8))) | (pr0_comp u1 u2 H7 t5 t6 
-H8 k) \Rightarrow (\lambda (H9: (eq T (THead k u1 t5) t)).(\lambda (H10: (eq 
-T (THead k u2 t6) t2)).(eq_ind T (THead k u1 t5) (\lambda (_: T).((eq T 
-(THead k u2 t6) t2) \to ((pr0 u1 u2) \to ((pr0 t5 t6) \to (ex2 T (\lambda 
-(t8: T).(pr0 t1 t8)) (\lambda (t8: T).(pr0 t2 t8))))))) (\lambda (H11: (eq T 
-(THead k u2 t6) t2)).(eq_ind T (THead k u2 t6) (\lambda (t7: T).((pr0 u1 u2) 
-\to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 t1 t8)) (\lambda (t8: 
-T).(pr0 t7 t8)))))) (\lambda (_: (pr0 u1 u2)).(\lambda (H13: (pr0 t5 
-t6)).(let H14 \def (eq_ind_r T t (\lambda (t7: T).(eq T (THead (Flat Cast) u 
-t3) t7)) H3 (THead k u1 t5) H9) in (let H15 \def (f_equal T K (\lambda (e: 
-T).(match e in T return (\lambda (_: T).K) with [(TSort _) \Rightarrow (Flat 
-Cast) | (TLRef _) \Rightarrow (Flat Cast) | (THead k0 _ _) \Rightarrow k0])) 
-(THead (Flat Cast) u t3) (THead k u1 t5) H14) in ((let H16 \def (f_equal T T 
-(\lambda (e: T).(match e in T return (\lambda (_: T).T) with [(TSort _) 
-\Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t7 _) \Rightarrow t7])) 
-(THead (Flat Cast) u t3) (THead k u1 t5) H14) in ((let H17 \def (f_equal T T 
-(\lambda (e: T).(match e in T return (\lambda (_: T).T) with [(TSort _) 
-\Rightarrow t3 | (TLRef _) \Rightarrow t3 | (THead _ _ t7) \Rightarrow t7])) 
-(THead (Flat Cast) u t3) (THead k u1 t5) H14) in (\lambda (_: (eq T u 
-u1)).(\lambda (H19: (eq K (Flat Cast) k)).(eq_ind K (Flat Cast) (\lambda (k0: 
-K).(ex2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 (THead k0 u2 
-t6) t7)))) (let H20 \def (eq_ind_r K k (\lambda (k0: K).(eq T (THead k0 u1 
-t5) t)) H9 (Flat Cast) H19) in (let H21 \def (eq_ind_r T t (\lambda (t7: 
+t7)) H4 (THead (Bind b0) u0 (lift (S O) O t5)) H11) in (let H17 \def (f_equal 
+T B (\lambda (e: T).(match e in T return (\lambda (_: T).B) with [(TSort _) 
+\Rightarrow b | (TLRef _) \Rightarrow b | (THead k _ _) \Rightarrow (match k 
+in K return (\lambda (_: K).B) with [(Bind b1) \Rightarrow b1 | (Flat _) 
+\Rightarrow b])])) (THead (Bind b) u (lift (S O) O t3)) (THead (Bind b0) u0 
+(lift (S O) O t5)) H16) in ((let H18 \def (f_equal T T (\lambda (e: T).(match 
+e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef _) 
+\Rightarrow u | (THead _ t7 _) \Rightarrow t7])) (THead (Bind b) u (lift (S 
+O) O t3)) (THead (Bind b0) u0 (lift (S O) O t5)) H16) in ((let H19 \def 
+(f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) with 
+[(TSort _) \Rightarrow ((let rec lref_map (f: ((nat \to nat))) (d: nat) (t7: 
+T) on t7: T \def (match t7 with [(TSort n) \Rightarrow (TSort n) | (TLRef i) 
+\Rightarrow (TLRef (match (blt i d) with [true \Rightarrow i | false 
+\Rightarrow (f i)])) | (THead k u1 t8) \Rightarrow (THead k (lref_map f d u1) 
+(lref_map f (s k d) t8))]) in lref_map) (\lambda (x: nat).(plus x (S O))) O 
+t3) | (TLRef _) \Rightarrow ((let rec lref_map (f: ((nat \to nat))) (d: nat) 
+(t7: T) on t7: T \def (match t7 with [(TSort n) \Rightarrow (TSort n) | 
+(TLRef i) \Rightarrow (TLRef (match (blt i d) with [true \Rightarrow i | 
+false \Rightarrow (f i)])) | (THead k u1 t8) \Rightarrow (THead k (lref_map f 
+d u1) (lref_map f (s k d) t8))]) in lref_map) (\lambda (x: nat).(plus x (S 
+O))) O t3) | (THead _ _ t7) \Rightarrow t7])) (THead (Bind b) u (lift (S O) O 
+t3)) (THead (Bind b0) u0 (lift (S O) O t5)) H16) in (\lambda (_: (eq T u 
+u0)).(\lambda (H21: (eq B b b0)).(let H22 \def (eq_ind_r T t (\lambda (t7: 
 T).(\forall (v: T).((tlt v t7) \to (\forall (t8: T).((pr0 v t8) \to (\forall 
 (t9: T).((pr0 v t9) \to (ex2 T (\lambda (t10: T).(pr0 t8 t10)) (\lambda (t10: 
-T).(pr0 t9 t10)))))))))) H (THead (Flat Cast) u1 t5) H20) in (let H22 \def 
-(eq_ind T t3 (\lambda (t7: T).(pr0 t7 t1)) H6 t5 H17) in (ex2_ind T (\lambda 
-(t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 t6 t7)) (ex2 T (\lambda (t7: 
-T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 (THead (Flat Cast) u2 t6) t7))) 
-(\lambda (x: T).(\lambda (H23: (pr0 t1 x)).(\lambda (H24: (pr0 t6 
-x)).(ex_intro2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 (THead 
-(Flat Cast) u2 t6) t7)) x H23 (pr0_epsilon t6 x H24 u2))))) (H21 t5 
-(tlt_head_dx (Flat Cast) u1 t5) t1 H22 t6 H13))))) k H19)))) H16)) H15))))) 
-t2 H11)) t H9 H10 H7 H8))) | (pr0_beta u0 v1 v2 H7 t5 t6 H8) \Rightarrow 
-(\lambda (H9: (eq T (THead (Flat Appl) v1 (THead (Bind Abst) u0 t5)) 
-t)).(\lambda (H10: (eq T (THead (Bind Abbr) v2 t6) t2)).(eq_ind T (THead 
-(Flat Appl) v1 (THead (Bind Abst) u0 t5)) (\lambda (_: T).((eq T (THead (Bind 
-Abbr) v2 t6) t2) \to ((pr0 v1 v2) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: 
-T).(pr0 t1 t8)) (\lambda (t8: T).(pr0 t2 t8))))))) (\lambda (H11: (eq T 
-(THead (Bind Abbr) v2 t6) t2)).(eq_ind T (THead (Bind Abbr) v2 t6) (\lambda 
-(t7: T).((pr0 v1 v2) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 t1 
-t8)) (\lambda (t8: T).(pr0 t7 t8)))))) (\lambda (_: (pr0 v1 v2)).(\lambda (_: 
+T).(pr0 t9 t10)))))))))) H (THead (Bind b0) u0 (lift (S O) O t5)) H11) in 
+(let H23 \def (eq_ind T t3 (\lambda (t7: T).(pr0 t7 t1)) H8 t5 (lift_inj t3 
+t5 (S O) O H19)) in (let H24 \def (eq_ind B b (\lambda (b1: B).(not (eq B b1 
+Abst))) H7 b0 H21) in (ex2_ind T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: 
+T).(pr0 t2 t7)) (ex2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 t2 
+t7))) (\lambda (x: T).(\lambda (H25: (pr0 t1 x)).(\lambda (H26: (pr0 t2 
+x)).(ex_intro2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 t2 t7)) 
+x H25 H26)))) (H22 t5 (lift_tlt_dx (Bind b0) u0 t5 (S O) O) t1 H23 t2 
+H15)))))))) H18)) H17))))) t6 (sym_eq T t6 t2 H13))) t H11 H12 H9 H10))) | 
+(pr0_tau t5 t6 H9 u0) \Rightarrow (\lambda (H10: (eq T (THead (Flat Cast) u0 
+t5) t)).(\lambda (H11: (eq T t6 t2)).(eq_ind T (THead (Flat Cast) u0 t5) 
+(\lambda (_: T).((eq T t6 t2) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: 
+T).(pr0 t1 t8)) (\lambda (t8: T).(pr0 t2 t8)))))) (\lambda (H12: (eq T t6 
+t2)).(eq_ind T t2 (\lambda (t7: T).((pr0 t5 t7) \to (ex2 T (\lambda (t8: 
+T).(pr0 t1 t8)) (\lambda (t8: T).(pr0 t2 t8))))) (\lambda (_: (pr0 t5 
+t2)).(let H14 \def (eq_ind_r T t (\lambda (t7: T).(eq T (THead (Bind b) u 
+(lift (S O) O t3)) t7)) H4 (THead (Flat Cast) u0 t5) H10) in (let H15 \def 
+(eq_ind T (THead (Bind b) u (lift (S O) O t3)) (\lambda (ee: T).(match ee in 
+T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
+\Rightarrow False | (THead k _ _) \Rightarrow (match k in K return (\lambda 
+(_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow 
+False])])) I (THead (Flat Cast) u0 t5) H14) in (False_ind (ex2 T (\lambda 
+(t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 t2 t7))) H15)))) t6 (sym_eq T t6 
+t2 H12))) t H10 H11 H9)))]) in (H9 (refl_equal T t) (refl_equal T t2))))) t4 
+(sym_eq T t4 t1 H6))) t H4 H5 H2 H3))) | (pr0_tau t3 t4 H2 u) \Rightarrow 
+(\lambda (H3: (eq T (THead (Flat Cast) u t3) t)).(\lambda (H4: (eq T t4 
+t1)).(eq_ind T (THead (Flat Cast) u t3) (\lambda (_: T).((eq T t4 t1) \to 
+((pr0 t3 t4) \to (ex2 T (\lambda (t6: T).(pr0 t1 t6)) (\lambda (t6: T).(pr0 
+t2 t6)))))) (\lambda (H5: (eq T t4 t1)).(eq_ind T t1 (\lambda (t5: T).((pr0 
+t3 t5) \to (ex2 T (\lambda (t6: T).(pr0 t1 t6)) (\lambda (t6: T).(pr0 t2 
+t6))))) (\lambda (H6: (pr0 t3 t1)).(let H7 \def (match H1 in pr0 return 
+(\lambda (t5: T).(\lambda (t6: T).(\lambda (_: (pr0 t5 t6)).((eq T t5 t) \to 
+((eq T t6 t2) \to (ex2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 
+t2 t7)))))))) with [(pr0_refl t5) \Rightarrow (\lambda (H7: (eq T t5 
+t)).(\lambda (H8: (eq T t5 t2)).(eq_ind T t (\lambda (t6: T).((eq T t6 t2) 
+\to (ex2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 t2 t7))))) 
+(\lambda (H9: (eq T t t2)).(eq_ind T t2 (\lambda (_: T).(ex2 T (\lambda (t7: 
+T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 t2 t7)))) (let H10 \def (eq_ind_r T t 
+(\lambda (t6: T).(eq T t6 t2)) H9 (THead (Flat Cast) u t3) H3) in (eq_ind T 
+(THead (Flat Cast) u t3) (\lambda (t6: T).(ex2 T (\lambda (t7: T).(pr0 t1 
+t7)) (\lambda (t7: T).(pr0 t6 t7)))) (let H11 \def (eq_ind_r T t (\lambda 
+(t6: T).(eq T t5 t6)) H7 (THead (Flat Cast) u t3) H3) in (let H12 \def 
+(eq_ind_r T t (\lambda (t6: T).(\forall (v: T).((tlt v t6) \to (\forall (t7: 
+T).((pr0 v t7) \to (\forall (t8: T).((pr0 v t8) \to (ex2 T (\lambda (t9: 
+T).(pr0 t7 t9)) (\lambda (t9: T).(pr0 t8 t9)))))))))) H (THead (Flat Cast) u 
+t3) H3) in (ex_intro2 T (\lambda (t6: T).(pr0 t1 t6)) (\lambda (t6: T).(pr0 
+(THead (Flat Cast) u t3) t6)) t1 (pr0_refl t1) (pr0_tau t3 t1 H6 u)))) t2 
+H10)) t (sym_eq T t t2 H9))) t5 (sym_eq T t5 t H7) H8))) | (pr0_comp u1 u2 H7 
+t5 t6 H8 k) \Rightarrow (\lambda (H9: (eq T (THead k u1 t5) t)).(\lambda 
+(H10: (eq T (THead k u2 t6) t2)).(eq_ind T (THead k u1 t5) (\lambda (_: 
+T).((eq T (THead k u2 t6) t2) \to ((pr0 u1 u2) \to ((pr0 t5 t6) \to (ex2 T 
+(\lambda (t8: T).(pr0 t1 t8)) (\lambda (t8: T).(pr0 t2 t8))))))) (\lambda 
+(H11: (eq T (THead k u2 t6) t2)).(eq_ind T (THead k u2 t6) (\lambda (t7: 
+T).((pr0 u1 u2) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 t1 t8)) 
+(\lambda (t8: T).(pr0 t7 t8)))))) (\lambda (_: (pr0 u1 u2)).(\lambda (H13: 
 (pr0 t5 t6)).(let H14 \def (eq_ind_r T t (\lambda (t7: T).(eq T (THead (Flat 
-Cast) u t3) t7)) H3 (THead (Flat Appl) v1 (THead (Bind Abst) u0 t5)) H9) in 
-(let H15 \def (eq_ind T (THead (Flat Cast) u t3) (\lambda (ee: T).(match ee 
-in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef 
-_) \Rightarrow False | (THead k _ _) \Rightarrow (match k in K return 
-(\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat f) \Rightarrow 
-(match f in F return (\lambda (_: F).Prop) with [Appl \Rightarrow False | 
-Cast \Rightarrow True])])])) I (THead (Flat Appl) v1 (THead (Bind Abst) u0 
-t5)) H14) in (False_ind (ex2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: 
-T).(pr0 (THead (Bind Abbr) v2 t6) t7))) H15))))) t2 H11)) t H9 H10 H7 H8))) | 
-(pr0_upsilon b H7 v1 v2 H8 u1 u2 H9 t5 t6 H10) \Rightarrow (\lambda (H11: (eq 
-T (THead (Flat Appl) v1 (THead (Bind b) u1 t5)) t)).(\lambda (H12: (eq T 
-(THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t6)) t2)).(eq_ind T 
-(THead (Flat Appl) v1 (THead (Bind b) u1 t5)) (\lambda (_: T).((eq T (THead 
-(Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t6)) t2) \to ((not (eq B b 
-Abst)) \to ((pr0 v1 v2) \to ((pr0 u1 u2) \to ((pr0 t5 t6) \to (ex2 T (\lambda 
-(t8: T).(pr0 t1 t8)) (\lambda (t8: T).(pr0 t2 t8))))))))) (\lambda (H13: (eq 
-T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t6)) t2)).(eq_ind T 
-(THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t6)) (\lambda (t7: 
-T).((not (eq B b Abst)) \to ((pr0 v1 v2) \to ((pr0 u1 u2) \to ((pr0 t5 t6) 
-\to (ex2 T (\lambda (t8: T).(pr0 t1 t8)) (\lambda (t8: T).(pr0 t7 t8)))))))) 
-(\lambda (_: (not (eq B b Abst))).(\lambda (_: (pr0 v1 v2)).(\lambda (_: (pr0 
-u1 u2)).(\lambda (_: (pr0 t5 t6)).(let H18 \def (eq_ind_r T t (\lambda (t7: 
+Cast) u t3) t7)) H3 (THead k u1 t5) H9) in (let H15 \def (f_equal T K 
+(\lambda (e: T).(match e in T return (\lambda (_: T).K) with [(TSort _) 
+\Rightarrow (Flat Cast) | (TLRef _) \Rightarrow (Flat Cast) | (THead k0 _ _) 
+\Rightarrow k0])) (THead (Flat Cast) u t3) (THead k u1 t5) H14) in ((let H16 
+\def (f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) 
+with [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t7 _) 
+\Rightarrow t7])) (THead (Flat Cast) u t3) (THead k u1 t5) H14) in ((let H17 
+\def (f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) 
+with [(TSort _) \Rightarrow t3 | (TLRef _) \Rightarrow t3 | (THead _ _ t7) 
+\Rightarrow t7])) (THead (Flat Cast) u t3) (THead k u1 t5) H14) in (\lambda 
+(_: (eq T u u1)).(\lambda (H19: (eq K (Flat Cast) k)).(eq_ind K (Flat Cast) 
+(\lambda (k0: K).(ex2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 
+(THead k0 u2 t6) t7)))) (let H20 \def (eq_ind_r K k (\lambda (k0: K).(eq T 
+(THead k0 u1 t5) t)) H9 (Flat Cast) H19) in (let H21 \def (eq_ind_r T t 
+(\lambda (t7: T).(\forall (v: T).((tlt v t7) \to (\forall (t8: T).((pr0 v t8) 
+\to (\forall (t9: T).((pr0 v t9) \to (ex2 T (\lambda (t10: T).(pr0 t8 t10)) 
+(\lambda (t10: T).(pr0 t9 t10)))))))))) H (THead (Flat Cast) u1 t5) H20) in 
+(let H22 \def (eq_ind T t3 (\lambda (t7: T).(pr0 t7 t1)) H6 t5 H17) in 
+(ex2_ind T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 t6 t7)) (ex2 T 
+(\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 (THead (Flat Cast) u2 t6) 
+t7))) (\lambda (x: T).(\lambda (H23: (pr0 t1 x)).(\lambda (H24: (pr0 t6 
+x)).(ex_intro2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 (THead 
+(Flat Cast) u2 t6) t7)) x H23 (pr0_tau t6 x H24 u2))))) (H21 t5 (tlt_head_dx 
+(Flat Cast) u1 t5) t1 H22 t6 H13))))) k H19)))) H16)) H15))))) t2 H11)) t H9 
+H10 H7 H8))) | (pr0_beta u0 v1 v2 H7 t5 t6 H8) \Rightarrow (\lambda (H9: (eq 
+T (THead (Flat Appl) v1 (THead (Bind Abst) u0 t5)) t)).(\lambda (H10: (eq T 
+(THead (Bind Abbr) v2 t6) t2)).(eq_ind T (THead (Flat Appl) v1 (THead (Bind 
+Abst) u0 t5)) (\lambda (_: T).((eq T (THead (Bind Abbr) v2 t6) t2) \to ((pr0 
+v1 v2) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 t1 t8)) (\lambda 
+(t8: T).(pr0 t2 t8))))))) (\lambda (H11: (eq T (THead (Bind Abbr) v2 t6) 
+t2)).(eq_ind T (THead (Bind Abbr) v2 t6) (\lambda (t7: T).((pr0 v1 v2) \to 
+((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 t1 t8)) (\lambda (t8: T).(pr0 
+t7 t8)))))) (\lambda (_: (pr0 v1 v2)).(\lambda (_: (pr0 t5 t6)).(let H14 \def 
+(eq_ind_r T t (\lambda (t7: T).(eq T (THead (Flat Cast) u t3) t7)) H3 (THead 
+(Flat Appl) v1 (THead (Bind Abst) u0 t5)) H9) in (let H15 \def (eq_ind T 
+(THead (Flat Cast) u t3) (\lambda (ee: T).(match ee in T return (\lambda (_: 
+T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
+(THead k _ _) \Rightarrow (match k in K return (\lambda (_: K).Prop) with 
+[(Bind _) \Rightarrow False | (Flat f) \Rightarrow (match f in F return 
+(\lambda (_: F).Prop) with [Appl \Rightarrow False | Cast \Rightarrow 
+True])])])) I (THead (Flat Appl) v1 (THead (Bind Abst) u0 t5)) H14) in 
+(False_ind (ex2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 (THead 
+(Bind Abbr) v2 t6) t7))) H15))))) t2 H11)) t H9 H10 H7 H8))) | (pr0_upsilon b 
+H7 v1 v2 H8 u1 u2 H9 t5 t6 H10) \Rightarrow (\lambda (H11: (eq T (THead (Flat 
+Appl) v1 (THead (Bind b) u1 t5)) t)).(\lambda (H12: (eq T (THead (Bind b) u2 
+(THead (Flat Appl) (lift (S O) O v2) t6)) t2)).(eq_ind T (THead (Flat Appl) 
+v1 (THead (Bind b) u1 t5)) (\lambda (_: T).((eq T (THead (Bind b) u2 (THead 
+(Flat Appl) (lift (S O) O v2) t6)) t2) \to ((not (eq B b Abst)) \to ((pr0 v1 
+v2) \to ((pr0 u1 u2) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 t1 
+t8)) (\lambda (t8: T).(pr0 t2 t8))))))))) (\lambda (H13: (eq T (THead (Bind 
+b) u2 (THead (Flat Appl) (lift (S O) O v2) t6)) t2)).(eq_ind T (THead (Bind 
+b) u2 (THead (Flat Appl) (lift (S O) O v2) t6)) (\lambda (t7: T).((not (eq B 
+b Abst)) \to ((pr0 v1 v2) \to ((pr0 u1 u2) \to ((pr0 t5 t6) \to (ex2 T 
+(\lambda (t8: T).(pr0 t1 t8)) (\lambda (t8: T).(pr0 t7 t8)))))))) (\lambda 
+(_: (not (eq B b Abst))).(\lambda (_: (pr0 v1 v2)).(\lambda (_: (pr0 u1 
+u2)).(\lambda (_: (pr0 t5 t6)).(let H18 \def (eq_ind_r T t (\lambda (t7: 
 T).(eq T (THead (Flat Cast) u t3) t7)) H3 (THead (Flat Appl) v1 (THead (Bind 
 b) u1 t5)) H11) in (let H19 \def (eq_ind T (THead (Flat Cast) u t3) (\lambda 
 (ee: T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) 
@@ -2451,31 +2450,31 @@ False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k in K
 return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) 
 \Rightarrow True])])) I (THead (Bind b) u0 (lift (S O) O t5)) H14) in 
 (False_ind (ex2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 t2 
-t7))) H15))))) t6 (sym_eq T t6 t2 H11))) t H9 H10 H7 H8))) | (pr0_epsilon t5 
-t6 H7 u0) \Rightarrow (\lambda (H8: (eq T (THead (Flat Cast) u0 t5) 
-t)).(\lambda (H9: (eq T t6 t2)).(eq_ind T (THead (Flat Cast) u0 t5) (\lambda 
-(_: T).((eq T t6 t2) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 t1 
-t8)) (\lambda (t8: T).(pr0 t2 t8)))))) (\lambda (H10: (eq T t6 t2)).(eq_ind T 
-t2 (\lambda (t7: T).((pr0 t5 t7) \to (ex2 T (\lambda (t8: T).(pr0 t1 t8)) 
-(\lambda (t8: T).(pr0 t2 t8))))) (\lambda (H11: (pr0 t5 t2)).(let H12 \def 
-(eq_ind_r T t (\lambda (t7: T).(eq T (THead (Flat Cast) u t3) t7)) H3 (THead 
-(Flat Cast) u0 t5) H8) in (let H13 \def (f_equal T T (\lambda (e: T).(match e 
-in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef _) 
-\Rightarrow u | (THead _ t7 _) \Rightarrow t7])) (THead (Flat Cast) u t3
-(THead (Flat Cast) u0 t5) H12) in ((let H14 \def (f_equal T T (\lambda (e: 
-T).(match e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow t3 | 
-(TLRef _) \Rightarrow t3 | (THead _ _ t7) \Rightarrow t7])) (THead (Flat 
-Cast) u t3) (THead (Flat Cast) u0 t5) H12) in (\lambda (_: (eq T u u0)).(let 
-H16 \def (eq_ind_r T t (\lambda (t7: T).(\forall (v: T).((tlt v t7) \to 
-(\forall (t8: T).((pr0 v t8) \to (\forall (t9: T).((pr0 v t9) \to (ex2 T 
-(\lambda (t10: T).(pr0 t8 t10)) (\lambda (t10: T).(pr0 t9 t10)))))))))) H 
-(THead (Flat Cast) u0 t5) H8) in (let H17 \def (eq_ind T t3 (\lambda (t7: 
-T).(pr0 t7 t1)) H6 t5 H14) in (ex2_ind T (\lambda (t7: T).(pr0 t1 t7)) 
-(\lambda (t7: T).(pr0 t2 t7)) (ex2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda 
-(t7: T).(pr0 t2 t7))) (\lambda (x: T).(\lambda (H18: (pr0 t1 x)).(\lambda 
-(H19: (pr0 t2 x)).(ex_intro2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: 
-T).(pr0 t2 t7)) x H18 H19)))) (H16 t5 (tlt_head_dx (Flat Cast) u0 t5) t1 H17 
-t2 H11)))))) H13)))) t6 (sym_eq T t6 t2 H10))) t H8 H9 H7)))]) in (H7 
-(refl_equal T t) (refl_equal T t2)))) t4 (sym_eq T t4 t1 H5))) t H3 H4 
-H2)))]) in (H2 (refl_equal T t) (refl_equal T t1))))))))) t0).
+t7))) H15))))) t6 (sym_eq T t6 t2 H11))) t H9 H10 H7 H8))) | (pr0_tau t5 t6 
+H7 u0) \Rightarrow (\lambda (H8: (eq T (THead (Flat Cast) u0 t5) t)).(\lambda 
+(H9: (eq T t6 t2)).(eq_ind T (THead (Flat Cast) u0 t5) (\lambda (_: T).((eq T 
+t6 t2) \to ((pr0 t5 t6) \to (ex2 T (\lambda (t8: T).(pr0 t1 t8)) (\lambda 
+(t8: T).(pr0 t2 t8)))))) (\lambda (H10: (eq T t6 t2)).(eq_ind T t2 (\lambda 
+(t7: T).((pr0 t5 t7) \to (ex2 T (\lambda (t8: T).(pr0 t1 t8)) (\lambda (t8: 
+T).(pr0 t2 t8))))) (\lambda (H11: (pr0 t5 t2)).(let H12 \def (eq_ind_r T t 
+(\lambda (t7: T).(eq T (THead (Flat Cast) u t3) t7)) H3 (THead (Flat Cast) u0 
+t5) H8) in (let H13 \def (f_equal T T (\lambda (e: T).(match e in T return 
+(\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | 
+(THead _ t7 _) \Rightarrow t7])) (THead (Flat Cast) u t3) (THead (Flat Cast
+u0 t5) H12) in ((let H14 \def (f_equal T T (\lambda (e: T).(match e in T 
+return (\lambda (_: T).T) with [(TSort _) \Rightarrow t3 | (TLRef _) 
+\Rightarrow t3 | (THead _ _ t7) \Rightarrow t7])) (THead (Flat Cast) u t3) 
+(THead (Flat Cast) u0 t5) H12) in (\lambda (_: (eq T u u0)).(let H16 \def 
+(eq_ind_r T t (\lambda (t7: T).(\forall (v: T).((tlt v t7) \to (\forall (t8: 
+T).((pr0 v t8) \to (\forall (t9: T).((pr0 v t9) \to (ex2 T (\lambda (t10: 
+T).(pr0 t8 t10)) (\lambda (t10: T).(pr0 t9 t10)))))))))) H (THead (Flat Cast) 
+u0 t5) H8) in (let H17 \def (eq_ind T t3 (\lambda (t7: T).(pr0 t7 t1)) H6 t5 
+H14) in (ex2_ind T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 t2 
+t7)) (ex2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 t2 t7))) 
+(\lambda (x: T).(\lambda (H18: (pr0 t1 x)).(\lambda (H19: (pr0 t2 
+x)).(ex_intro2 T (\lambda (t7: T).(pr0 t1 t7)) (\lambda (t7: T).(pr0 t2 t7)) 
+x H18 H19)))) (H16 t5 (tlt_head_dx (Flat Cast) u0 t5) t1 H17 t2 H11)))))) 
+H13)))) t6 (sym_eq T t6 t2 H10))) t H8 H9 H7)))]) in (H7 (refl_equal T t) 
+(refl_equal T t2)))) t4 (sym_eq T t4 t1 H5))) t H3 H4 H2)))]) in (H2 
+(refl_equal T t) (refl_equal T t1))))))))) t0).
 
index a55260e650932476469e8b46c6a45de337794ca9..7e0cd81903d5461ab62d4f2081a44eb4f645e15d 100644 (file)
@@ -123,9 +123,9 @@ O) O t3)) (lift_d t3 h (S O) d O (le_O_n d))) (S d) (refl_equal nat (S d)))
 (pr0 t3 t4)).(\lambda (H1: ((\forall (h: nat).(\forall (d: nat).(pr0 (lift h 
 d t3) (lift h d t4)))))).(\lambda (u: T).(\lambda (h: nat).(\lambda (d: 
 nat).(eq_ind_r T (THead (Flat Cast) (lift h d u) (lift h (s (Flat Cast) d) 
-t3)) (\lambda (t: T).(pr0 t (lift h d t4))) (pr0_epsilon (lift h (s (Flat 
-Cast) d) t3) (lift h d t4) (H1 h d) (lift h d u)) (lift h d (THead (Flat 
-Cast) u t3)) (lift_head (Flat Cast) u t3 h d))))))))) t1 t2 H))).
+t3)) (\lambda (t: T).(pr0 t (lift h d t4))) (pr0_tau (lift h (s (Flat Cast) 
+d) t3) (lift h d t4) (H1 h d) (lift h d u)) (lift h d (THead (Flat Cast) u 
+t3)) (lift_head (Flat Cast) u t3 h d))))))))) t1 t2 H))).
 
 theorem pr0_subst0_back:
  \forall (u2: T).(\forall (t1: T).(\forall (t2: T).(\forall (i: nat).((subst0 
@@ -1689,58 +1689,58 @@ Cast) u2 t3))) (\lambda (u2: T).(subst0 i v1 u u2)) (or (pr0 w1 t4) (ex2 T
 T).(or (pr0 t t4) (ex2 T (\lambda (w2: T).(pr0 t w2)) (\lambda (w2: 
 T).(subst0 i v2 t4 w2))))) (or_introl (pr0 (THead (Flat Cast) x t3) t4) (ex2 
 T (\lambda (w2: T).(pr0 (THead (Flat Cast) x t3) w2)) (\lambda (w2: 
-T).(subst0 i v2 t4 w2))) (pr0_epsilon t3 t4 H0 x)) w1 H5)))) H4)) (\lambda 
-(H4: (ex2 T (\lambda (t5: T).(eq T w1 (THead (Flat Cast) u t5))) (\lambda 
-(t5: T).(subst0 (s (Flat Cast) i) v1 t3 t5)))).(ex2_ind T (\lambda (t5: 
-T).(eq T w1 (THead (Flat Cast) u t5))) (\lambda (t5: T).(subst0 (s (Flat 
-Cast) i) v1 t3 t5)) (or (pr0 w1 t4) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) 
-(\lambda (w2: T).(subst0 i v2 t4 w2)))) (\lambda (x: T).(\lambda (H5: (eq T 
-w1 (THead (Flat Cast) u x))).(\lambda (H6: (subst0 (s (Flat Cast) i) v1 t3 
-x)).(eq_ind_r T (THead (Flat Cast) u x) (\lambda (t: T).(or (pr0 t t4) (ex2 T 
-(\lambda (w2: T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))))) (or_ind 
-(pr0 x t4) (ex2 T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 (s 
-(Flat Cast) i) v2 t4 w2))) (or (pr0 (THead (Flat Cast) u x) t4) (ex2 T 
+T).(subst0 i v2 t4 w2))) (pr0_tau t3 t4 H0 x)) w1 H5)))) H4)) (\lambda (H4: 
+(ex2 T (\lambda (t5: T).(eq T w1 (THead (Flat Cast) u t5))) (\lambda (t5: 
+T).(subst0 (s (Flat Cast) i) v1 t3 t5)))).(ex2_ind T (\lambda (t5: T).(eq T 
+w1 (THead (Flat Cast) u t5))) (\lambda (t5: T).(subst0 (s (Flat Cast) i) v1 
+t3 t5)) (or (pr0 w1 t4) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: 
+T).(subst0 i v2 t4 w2)))) (\lambda (x: T).(\lambda (H5: (eq T w1 (THead (Flat 
+Cast) u x))).(\lambda (H6: (subst0 (s (Flat Cast) i) v1 t3 x)).(eq_ind_r T 
+(THead (Flat Cast) u x) (\lambda (t: T).(or (pr0 t t4) (ex2 T (\lambda (w2: 
+T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))))) (or_ind (pr0 x t4) 
+(ex2 T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 (s (Flat Cast) 
+i) v2 t4 w2))) (or (pr0 (THead (Flat Cast) u x) t4) (ex2 T (\lambda (w2: 
+T).(pr0 (THead (Flat Cast) u x) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) 
+(\lambda (H7: (pr0 x t4)).(or_introl (pr0 (THead (Flat Cast) u x) t4) (ex2 T 
 (\lambda (w2: T).(pr0 (THead (Flat Cast) u x) w2)) (\lambda (w2: T).(subst0 i 
-v2 t4 w2)))) (\lambda (H7: (pr0 x t4)).(or_introl (pr0 (THead (Flat Cast) u 
-x) t4) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Cast) u x) w2)) (\lambda 
-(w2: T).(subst0 i v2 t4 w2))) (pr0_epsilon x t4 H7 u))) (\lambda (H7: (ex2 T 
+v2 t4 w2))) (pr0_tau x t4 H7 u))) (\lambda (H7: (ex2 T (\lambda (w2: T).(pr0 
+x w2)) (\lambda (w2: T).(subst0 (s (Flat Cast) i) v2 t4 w2)))).(ex2_ind T 
 (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 (s (Flat Cast) i) v2 t4 
-w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 (s 
-(Flat Cast) i) v2 t4 w2)) (or (pr0 (THead (Flat Cast) u x) t4) (ex2 T 
-(\lambda (w2: T).(pr0 (THead (Flat Cast) u x) w2)) (\lambda (w2: T).(subst0 i 
-v2 t4 w2)))) (\lambda (x0: T).(\lambda (H8: (pr0 x x0)).(\lambda (H9: (subst0 
-(s (Flat Cast) i) v2 t4 x0)).(or_intror (pr0 (THead (Flat Cast) u x) t4) (ex2 
-T (\lambda (w2: T).(pr0 (THead (Flat Cast) u x) w2)) (\lambda (w2: T).(subst0 
-i v2 t4 w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Cast) u x) w2)) 
-(\lambda (w2: T).(subst0 i v2 t4 w2)) x0 (pr0_epsilon x x0 H8 u) H9))))) H7)) 
-(H1 v1 x (s (Flat Cast) i) H6 v2 H3)) w1 H5)))) H4)) (\lambda (H4: (ex3_2 T T 
-(\lambda (u2: T).(\lambda (t5: T).(eq T w1 (THead (Flat Cast) u2 t5)))) 
-(\lambda (u2: T).(\lambda (_: T).(subst0 i v1 u u2))) (\lambda (_: 
-T).(\lambda (t5: T).(subst0 (s (Flat Cast) i) v1 t3 t5))))).(ex3_2_ind T T 
-(\lambda (u2: T).(\lambda (t5: T).(eq T w1 (THead (Flat Cast) u2 t5)))) 
-(\lambda (u2: T).(\lambda (_: T).(subst0 i v1 u u2))) (\lambda (_: 
-T).(\lambda (t5: T).(subst0 (s (Flat Cast) i) v1 t3 t5))) (or (pr0 w1 t4) 
-(ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) 
-(\lambda (x0: T).(\lambda (x1: T).(\lambda (H5: (eq T w1 (THead (Flat Cast) 
-x0 x1))).(\lambda (_: (subst0 i v1 u x0)).(\lambda (H7: (subst0 (s (Flat 
-Cast) i) v1 t3 x1)).(eq_ind_r T (THead (Flat Cast) x0 x1) (\lambda (t: T).(or 
-(pr0 t t4) (ex2 T (\lambda (w2: T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v2 
-t4 w2))))) (or_ind (pr0 x1 t4) (ex2 T (\lambda (w2: T).(pr0 x1 w2)) (\lambda 
+w2)) (or (pr0 (THead (Flat Cast) u x) t4) (ex2 T (\lambda (w2: T).(pr0 (THead 
+(Flat Cast) u x) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) (\lambda (x0: 
+T).(\lambda (H8: (pr0 x x0)).(\lambda (H9: (subst0 (s (Flat Cast) i) v2 t4 
+x0)).(or_intror (pr0 (THead (Flat Cast) u x) t4) (ex2 T (\lambda (w2: T).(pr0 
+(THead (Flat Cast) u x) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))) 
+(ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Cast) u x) w2)) (\lambda (w2: 
+T).(subst0 i v2 t4 w2)) x0 (pr0_tau x x0 H8 u) H9))))) H7)) (H1 v1 x (s (Flat 
+Cast) i) H6 v2 H3)) w1 H5)))) H4)) (\lambda (H4: (ex3_2 T T (\lambda (u2: 
+T).(\lambda (t5: T).(eq T w1 (THead (Flat Cast) u2 t5)))) (\lambda (u2: 
+T).(\lambda (_: T).(subst0 i v1 u u2))) (\lambda (_: T).(\lambda (t5: 
+T).(subst0 (s (Flat Cast) i) v1 t3 t5))))).(ex3_2_ind T T (\lambda (u2: 
+T).(\lambda (t5: T).(eq T w1 (THead (Flat Cast) u2 t5)))) (\lambda (u2: 
+T).(\lambda (_: T).(subst0 i v1 u u2))) (\lambda (_: T).(\lambda (t5: 
+T).(subst0 (s (Flat Cast) i) v1 t3 t5))) (or (pr0 w1 t4) (ex2 T (\lambda (w2: 
+T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) (\lambda (x0: 
+T).(\lambda (x1: T).(\lambda (H5: (eq T w1 (THead (Flat Cast) x0 
+x1))).(\lambda (_: (subst0 i v1 u x0)).(\lambda (H7: (subst0 (s (Flat Cast) 
+i) v1 t3 x1)).(eq_ind_r T (THead (Flat Cast) x0 x1) (\lambda (t: T).(or (pr0 
+t t4) (ex2 T (\lambda (w2: T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v2 t4 
+w2))))) (or_ind (pr0 x1 t4) (ex2 T (\lambda (w2: T).(pr0 x1 w2)) (\lambda 
 (w2: T).(subst0 (s (Flat Cast) i) v2 t4 w2))) (or (pr0 (THead (Flat Cast) x0 
 x1) t4) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Cast) x0 x1) w2)) (\lambda 
 (w2: T).(subst0 i v2 t4 w2)))) (\lambda (H8: (pr0 x1 t4)).(or_introl (pr0 
 (THead (Flat Cast) x0 x1) t4) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Cast) 
-x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))) (pr0_epsilon x1 t4 H8 
-x0))) (\lambda (H8: (ex2 T (\lambda (w2: T).(pr0 x1 w2)) (\lambda (w2: 
-T).(subst0 (s (Flat Cast) i) v2 t4 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x1 
-w2)) (\lambda (w2: T).(subst0 (s (Flat Cast) i) v2 t4 w2)) (or (pr0 (THead 
+x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))) (pr0_tau x1 t4 H8 x0))) 
+(\lambda (H8: (ex2 T (\lambda (w2: T).(pr0 x1 w2)) (\lambda (w2: T).(subst0 
+(s (Flat Cast) i) v2 t4 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x1 w2)) 
+(\lambda (w2: T).(subst0 (s (Flat Cast) i) v2 t4 w2)) (or (pr0 (THead (Flat 
+Cast) x0 x1) t4) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Cast) x0 x1) w2)) 
+(\lambda (w2: T).(subst0 i v2 t4 w2)))) (\lambda (x: T).(\lambda (H9: (pr0 x1 
+x)).(\lambda (H10: (subst0 (s (Flat Cast) i) v2 t4 x)).(or_intror (pr0 (THead 
 (Flat Cast) x0 x1) t4) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Cast) x0 x1) 
-w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) (\lambda (x: T).(\lambda (H9: 
-(pr0 x1 x)).(\lambda (H10: (subst0 (s (Flat Cast) i) v2 t4 x)).(or_intror 
-(pr0 (THead (Flat Cast) x0 x1) t4) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat 
-Cast) x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))) (ex_intro2 T 
-(\lambda (w2: T).(pr0 (THead (Flat Cast) x0 x1) w2)) (\lambda (w2: T).(subst0 
-i v2 t4 w2)) x (pr0_epsilon x1 x H9 x0) H10))))) H8)) (H1 v1 x1 (s (Flat 
-Cast) i) H7 v2 H3)) w1 H5)))))) H4)) (subst0_gen_head (Flat Cast) v1 u t3 w1 
-i H2))))))))))))) t1 t2 H))).
+w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))) (ex_intro2 T (\lambda (w2: 
+T).(pr0 (THead (Flat Cast) x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)) 
+x (pr0_tau x1 x H9 x0) H10))))) H8)) (H1 v1 x1 (s (Flat Cast) i) H7 v2 H3)) 
+w1 H5)))))) H4)) (subst0_gen_head (Flat Cast) v1 u t3 w1 i H2))))))))))))) t1 
+t2 H))).
 
index d63d5e3cd45cfc2d43a2ac4418d967b855abf9ae..cd5ce1f7d42e880cd8a98e2cc4c35e211e57c277 100644 (file)
@@ -505,14 +505,14 @@ t) \to (sn3 c t)))))
  \lambda (g: G).(\lambda (a: A).(\lambda (c: C).(\lambda (t: T).(\lambda (H: 
 (sc3 g a c t)).(let H_x \def (sc3_props__sc3_sn3_abst g a) in (let H0 \def 
 H_x in (land_ind (\forall (c0: C).(\forall (t0: T).((sc3 g a c0 t0) \to (sn3 
-c0 t0)))) (\forall (vs: TList).(\forall (i: nat).(let t0 \def (THeads (Flat 
-Appl) vs (TLRef i)) in (\forall (c0: C).((arity g c0 t0 a) \to ((nf2 c0 
-(TLRef i)) \to ((sns3 c0 vs) \to (sc3 g a c0 t0)))))))) (sn3 c t) (\lambda 
-(H1: ((\forall (c0: C).(\forall (t0: T).((sc3 g a c0 t0) \to (sn3 c0 
-t0)))))).(\lambda (_: ((\forall (vs: TList).(\forall (i: nat).(let t0 \def 
-(THeads (Flat Appl) vs (TLRef i)) in (\forall (c0: C).((arity g c0 t0 a) \to 
-((nf2 c0 (TLRef i)) \to ((sns3 c0 vs) \to (sc3 g a c0 t0)))))))))).(H1 c t 
-H))) H0))))))).
+c0 t0)))) (\forall (vs: TList).(\forall (i: nat).(\forall (c0: C).((arity g 
+c0 (THeads (Flat Appl) vs (TLRef i)) a) \to ((nf2 c0 (TLRef i)) \to ((sns3 c0 
+vs) \to (sc3 g a c0 (THeads (Flat Appl) vs (TLRef i))))))))) (sn3 c t) 
+(\lambda (H1: ((\forall (c0: C).(\forall (t0: T).((sc3 g a c0 t0) \to (sn3 c0 
+t0)))))).(\lambda (_: ((\forall (vs: TList).(\forall (i: nat).(\forall (c0: 
+C).((arity g c0 (THeads (Flat Appl) vs (TLRef i)) a) \to ((nf2 c0 (TLRef i)) 
+\to ((sns3 c0 vs) \to (sc3 g a c0 (THeads (Flat Appl) vs (TLRef 
+i))))))))))).(H1 c t H))) H0))))))).
 
 theorem sc3_abst:
  \forall (g: G).(\forall (a: A).(\forall (vs: TList).(\forall (c: C).(\forall 
@@ -524,14 +524,14 @@ i)) \to ((sns3 c vs) \to (sc3 g a c (THeads (Flat Appl) vs (TLRef i))))))))))
 a)).(\lambda (H0: (nf2 c (TLRef i))).(\lambda (H1: (sns3 c vs)).(let H_x \def 
 (sc3_props__sc3_sn3_abst g a) in (let H2 \def H_x in (land_ind (\forall (c0: 
 C).(\forall (t: T).((sc3 g a c0 t) \to (sn3 c0 t)))) (\forall (vs0: 
-TList).(\forall (i0: nat).(let t \def (THeads (Flat Appl) vs0 (TLRef i0)) in 
-(\forall (c0: C).((arity g c0 t a) \to ((nf2 c0 (TLRef i0)) \to ((sns3 c0 
-vs0) \to (sc3 g a c0 t)))))))) (sc3 g a c (THeads (Flat Appl) vs (TLRef i))
-(\lambda (_: ((\forall (c0: C).(\forall (t: T).((sc3 g a c0 t) \to (sn3 c0 
-t)))))).(\lambda (H4: ((\forall (vs0: TList).(\forall (i0: nat).(let t \def 
-(THeads (Flat Appl) vs0 (TLRef i0)) in (\forall (c0: C).((arity g c0 t a) \to 
-((nf2 c0 (TLRef i0)) \to ((sns3 c0 vs0) \to (sc3 g a c0 t)))))))))).(H4 vs i 
-c H H0 H1))) H2)))))))))).
+TList).(\forall (i0: nat).(\forall (c0: C).((arity g c0 (THeads (Flat Appl) 
+vs0 (TLRef i0)) a) \to ((nf2 c0 (TLRef i0)) \to ((sns3 c0 vs0) \to (sc3 g a 
+c0 (THeads (Flat Appl) vs0 (TLRef i0))))))))) (sc3 g a c (THeads (Flat Appl
+vs (TLRef i))) (\lambda (_: ((\forall (c0: C).(\forall (t: T).((sc3 g a c0 t) 
+\to (sn3 c0 t)))))).(\lambda (H4: ((\forall (vs0: TList).(\forall (i0: 
+nat).(\forall (c0: C).((arity g c0 (THeads (Flat Appl) vs0 (TLRef i0)) a) \to 
+((nf2 c0 (TLRef i0)) \to ((sns3 c0 vs0) \to (sc3 g a c0 (THeads (Flat Appl) 
+vs0 (TLRef i0))))))))))).(H4 vs i c H H0 H1))) H2)))))))))).
 
 theorem sc3_bind:
  \forall (g: G).(\forall (b: B).((not (eq B b Abst)) \to (\forall (a1: 
index 9341f979b3a103bcbb8de7447fa361bd4ec8dc80..cf432cbfc2434f56f7c57d7a7fc51ffbdfbf5e11 100644 (file)
@@ -2258,22 +2258,23 @@ t3))))))))).(\lambda (u: T).(\lambda (H1: (sn3 c (THead (Flat Appl) t (THeads
 (Flat Appl) (TCons t1 t2) u)))).(\lambda (t3: T).(\lambda (H2: (sn3 c (THead 
 (Flat Appl) t (THeads (Flat Appl) (TCons t1 t2) t3)))).(let H_x \def 
 (sn3_gen_flat Appl c t (THeads (Flat Appl) (TCons t1 t2) t3) H2) in (let H3 
-\def H_x in (land_ind (sn3 c t) (sn3 c (THeads (Flat Appl) (TCons t1 t2) t3)) 
-(sn3 c (THead (Flat Appl) t (THeads (Flat Appl) (TCons t1 t2) (THead (Flat 
-Cast) u t3)))) (\lambda (_: (sn3 c t)).(\lambda (H5: (sn3 c (THeads (Flat 
-Appl) (TCons t1 t2) t3))).(let H6 \def H5 in (let H_x0 \def (sn3_gen_flat 
-Appl c t (THeads (Flat Appl) (TCons t1 t2) u) H1) in (let H7 \def H_x0 in 
-(land_ind (sn3 c t) (sn3 c (THeads (Flat Appl) (TCons t1 t2) u)) (sn3 c 
-(THead (Flat Appl) t (THeads (Flat Appl) (TCons t1 t2) (THead (Flat Cast) u 
-t3)))) (\lambda (H8: (sn3 c t)).(\lambda (H9: (sn3 c (THeads (Flat Appl) 
-(TCons t1 t2) u))).(let H10 \def H9 in (sn3_appl_appls t1 (THead (Flat Cast) 
-u t3) t2 c (H0 u H10 t3 H6) t H8 (\lambda (u2: T).(\lambda (H11: (pr3 c 
-(THeads (Flat Appl) (TCons t1 t2) (THead (Flat Cast) u t3)) u2)).(\lambda 
-(H12: (((iso (THeads (Flat Appl) (TCons t1 t2) (THead (Flat Cast) u t3)) u2) 
-\to (\forall (P: Prop).P)))).(sn3_pr3_trans c (THead (Flat Appl) t (THeads 
-(Flat Appl) (TCons t1 t2) t3)) H2 (THead (Flat Appl) t u2) (pr3_thin_dx c 
-(THeads (Flat Appl) (TCons t1 t2) t3) u2 (pr3_iso_appls_cast c u t3 (TCons t1 
-t2) u2 H11 H12) t Appl))))))))) H7)))))) H3))))))))))) t0))) vs)).
+\def H_x in (land_ind (sn3 c t) (sn3 c (THead (Flat Appl) t1 (THeads (Flat 
+Appl) t2 t3))) (sn3 c (THead (Flat Appl) t (THeads (Flat Appl) (TCons t1 t2) 
+(THead (Flat Cast) u t3)))) (\lambda (_: (sn3 c t)).(\lambda (H5: (sn3 c 
+(THead (Flat Appl) t1 (THeads (Flat Appl) t2 t3)))).(let H6 \def H5 in (let 
+H_x0 \def (sn3_gen_flat Appl c t (THeads (Flat Appl) (TCons t1 t2) u) H1) in 
+(let H7 \def H_x0 in (land_ind (sn3 c t) (sn3 c (THead (Flat Appl) t1 (THeads 
+(Flat Appl) t2 u))) (sn3 c (THead (Flat Appl) t (THeads (Flat Appl) (TCons t1 
+t2) (THead (Flat Cast) u t3)))) (\lambda (H8: (sn3 c t)).(\lambda (H9: (sn3 c 
+(THead (Flat Appl) t1 (THeads (Flat Appl) t2 u)))).(let H10 \def H9 in 
+(sn3_appl_appls t1 (THead (Flat Cast) u t3) t2 c (H0 u H10 t3 H6) t H8 
+(\lambda (u2: T).(\lambda (H11: (pr3 c (THeads (Flat Appl) (TCons t1 t2) 
+(THead (Flat Cast) u t3)) u2)).(\lambda (H12: (((iso (THeads (Flat Appl) 
+(TCons t1 t2) (THead (Flat Cast) u t3)) u2) \to (\forall (P: 
+Prop).P)))).(sn3_pr3_trans c (THead (Flat Appl) t (THeads (Flat Appl) (TCons 
+t1 t2) t3)) H2 (THead (Flat Appl) t u2) (pr3_thin_dx c (THeads (Flat Appl) 
+(TCons t1 t2) t3) u2 (pr3_iso_appls_cast c u t3 (TCons t1 t2) u2 H11 H12) t 
+Appl))))))))) H7)))))) H3))))))))))) t0))) vs)).
 
 theorem sn3_appls_bind:
  \forall (b: B).((not (eq B b Abst)) \to (\forall (c: C).(\forall (u: 
@@ -2309,22 +2310,23 @@ T).(\lambda (H3: (sn3 (CHead c (Bind b) u) (THead (Flat Appl) (lift (S O) O
 v) (THeads (Flat Appl) (lifts (S O) O (TCons t t0)) t1)))).(let H_x \def 
 (sn3_gen_flat Appl (CHead c (Bind b) u) (lift (S O) O v) (THeads (Flat Appl) 
 (lifts (S O) O (TCons t t0)) t1) H3) in (let H4 \def H_x in (land_ind (sn3 
-(CHead c (Bind b) u) (lift (S O) O v)) (sn3 (CHead c (Bind b) u) (THeads 
-(Flat Appl) (lifts (S O) O (TCons t t0)) t1)) (sn3 c (THead (Flat Appl) v 
-(THeads (Flat Appl) (TCons t t0) (THead (Bind b) u t1)))) (\lambda (H5: (sn3 
-(CHead c (Bind b) u) (lift (S O) O v))).(\lambda (H6: (sn3 (CHead c (Bind b) 
-u) (THeads (Flat Appl) (lifts (S O) O (TCons t t0)) t1))).(let H_y \def 
-(sn3_gen_lift (CHead c (Bind b) u) v (S O) O H5 c) in (sn3_appl_appls t 
-(THead (Bind b) u t1) t0 c (H2 t1 H6) v (H_y (drop_drop (Bind b) O c c 
-(drop_refl c) u)) (\lambda (u2: T).(\lambda (H7: (pr3 c (THeads (Flat Appl) 
-(TCons t t0) (THead (Bind b) u t1)) u2)).(\lambda (H8: (((iso (THeads (Flat 
-Appl) (TCons t t0) (THead (Bind b) u t1)) u2) \to (\forall (P: 
-Prop).P)))).(let H9 \def (pr3_iso_appls_bind b H (TCons t t0) u t1 c u2 H7 
-H8) in (sn3_pr3_trans c (THead (Flat Appl) v (THead (Bind b) u (THeads (Flat 
-Appl) (lifts (S O) O (TCons t t0)) t1))) (sn3_appl_bind b H c u H0 (THeads 
-(Flat Appl) (lifts (S O) O (TCons t t0)) t1) v H3) (THead (Flat Appl) v u2) 
-(pr3_flat c v v (pr3_refl c v) (THead (Bind b) u (THeads (Flat Appl) (lifts 
-(S O) O (TCons t t0)) t1)) u2 H9 Appl)))))))))) H4))))))))) vs0))) vs)))))).
+(CHead c (Bind b) u) (lift (S O) O v)) (sn3 (CHead c (Bind b) u) (THead (Flat 
+Appl) (lift (S O) O t) (THeads (Flat Appl) (lifts (S O) O t0) t1))) (sn3 c 
+(THead (Flat Appl) v (THeads (Flat Appl) (TCons t t0) (THead (Bind b) u 
+t1)))) (\lambda (H5: (sn3 (CHead c (Bind b) u) (lift (S O) O v))).(\lambda 
+(H6: (sn3 (CHead c (Bind b) u) (THead (Flat Appl) (lift (S O) O t) (THeads 
+(Flat Appl) (lifts (S O) O t0) t1)))).(let H_y \def (sn3_gen_lift (CHead c 
+(Bind b) u) v (S O) O H5 c) in (sn3_appl_appls t (THead (Bind b) u t1) t0 c 
+(H2 t1 H6) v (H_y (drop_drop (Bind b) O c c (drop_refl c) u)) (\lambda (u2: 
+T).(\lambda (H7: (pr3 c (THeads (Flat Appl) (TCons t t0) (THead (Bind b) u 
+t1)) u2)).(\lambda (H8: (((iso (THeads (Flat Appl) (TCons t t0) (THead (Bind 
+b) u t1)) u2) \to (\forall (P: Prop).P)))).(let H9 \def (pr3_iso_appls_bind b 
+H (TCons t t0) u t1 c u2 H7 H8) in (sn3_pr3_trans c (THead (Flat Appl) v 
+(THead (Bind b) u (THeads (Flat Appl) (lifts (S O) O (TCons t t0)) t1))) 
+(sn3_appl_bind b H c u H0 (THeads (Flat Appl) (lifts (S O) O (TCons t t0)) 
+t1) v H3) (THead (Flat Appl) v u2) (pr3_flat c v v (pr3_refl c v) (THead 
+(Bind b) u (THeads (Flat Appl) (lifts (S O) O (TCons t t0)) t1)) u2 H9 
+Appl)))))))))) H4))))))))) vs0))) vs)))))).
 
 theorem sn3_appls_beta:
  \forall (c: C).(\forall (v: T).(\forall (t: T).(\forall (us: TList).((sn3 c 
@@ -2361,16 +2363,16 @@ Appl) (TCons t0 t1) (THead (Bind Abbr) v t))) \to (\forall (w: T).((sn3 c w)
 (Flat Appl) (TCons t0 t1) (THead (Bind Abbr) v t))))).(\lambda (w: 
 T).(\lambda (H2: (sn3 c w)).(let H_x \def (sn3_gen_flat Appl c u (THeads 
 (Flat Appl) (TCons t0 t1) (THead (Bind Abbr) v t)) H1) in (let H3 \def H_x in 
-(land_ind (sn3 c u) (sn3 c (THeads (Flat Appl) (TCons t0 t1) (THead (Bind 
-Abbr) v t))) (sn3 c (THead (Flat Appl) u (THeads (Flat Appl) (TCons t0 t1
-(THead (Flat Appl) v (THead (Bind Abst) w t))))) (\lambda (H4: (sn3 c 
-u)).(\lambda (H5: (sn3 c (THeads (Flat Appl) (TCons t0 t1) (THead (Bind Abbr) 
-v t)))).(sn3_appl_appls t0 (THead (Flat Appl) v (THead (Bind Abst) w t)) t1 c 
-(H0 H5 w H2) u H4 (\lambda (u2: T).(\lambda (H6: (pr3 c (THeads (Flat Appl) 
-(TCons t0 t1) (THead (Flat Appl) v (THead (Bind Abst) w t))) u2)).(\lambda 
-(H7: (((iso (THeads (Flat Appl) (TCons t0 t1) (THead (Flat Appl) v (THead 
-(Bind Abst) w t))) u2) \to (\forall (P: Prop).P)))).(let H8 \def 
-(pr3_iso_appls_beta (TCons t0 t1) v w t c u2 H6 H7) in (sn3_pr3_trans c 
+(land_ind (sn3 c u) (sn3 c (THead (Flat Appl) t0 (THeads (Flat Appl) t1 
+(THead (Bind Abbr) v t)))) (sn3 c (THead (Flat Appl) u (THeads (Flat Appl
+(TCons t0 t1) (THead (Flat Appl) v (THead (Bind Abst) w t))))) (\lambda (H4: 
+(sn3 c u)).(\lambda (H5: (sn3 c (THead (Flat Appl) t0 (THeads (Flat Appl) t1 
+(THead (Bind Abbr) v t))))).(sn3_appl_appls t0 (THead (Flat Appl) v (THead 
+(Bind Abst) w t)) t1 c (H0 H5 w H2) u H4 (\lambda (u2: T).(\lambda (H6: (pr3 
+c (THeads (Flat Appl) (TCons t0 t1) (THead (Flat Appl) v (THead (Bind Abst) w 
+t))) u2)).(\lambda (H7: (((iso (THeads (Flat Appl) (TCons t0 t1) (THead (Flat 
+Appl) v (THead (Bind Abst) w t))) u2) \to (\forall (P: Prop).P)))).(let H8 
+\def (pr3_iso_appls_beta (TCons t0 t1) v w t c u2 H6 H7) in (sn3_pr3_trans c 
 (THead (Flat Appl) u (THeads (Flat Appl) (TCons t0 t1) (THead (Bind Abbr) v 
 t))) H1 (THead (Flat Appl) u u2) (pr3_thin_dx c (THeads (Flat Appl) (TCons t0 
 t1) (THead (Bind Abbr) v t)) u2 H8 u Appl))))))))) H3)))))))))) us0))) us)))).
@@ -2467,16 +2469,17 @@ O w))) \to (sn3 c (THeads (Flat Appl) (TCons t t0) (TLRef i)))))).(\lambda
 (H2: (sn3 c (THead (Flat Appl) v (THeads (Flat Appl) (TCons t t0) (lift (S i) 
 O w))))).(let H_x \def (sn3_gen_flat Appl c v (THeads (Flat Appl) (TCons t 
 t0) (lift (S i) O w)) H2) in (let H3 \def H_x in (land_ind (sn3 c v) (sn3 c 
-(THeads (Flat Appl) (TCons t t0) (lift (S i) O w))) (sn3 c (THead (Flat Appl) 
-v (THeads (Flat Appl) (TCons t t0) (TLRef i)))) (\lambda (H4: (sn3 c 
-v)).(\lambda (H5: (sn3 c (THeads (Flat Appl) (TCons t t0) (lift (S i) O 
-w)))).(sn3_appl_appls t (TLRef i) t0 c (H1 H5) v H4 (\lambda (u2: T).(\lambda 
-(H6: (pr3 c (THeads (Flat Appl) (TCons t t0) (TLRef i)) u2)).(\lambda (H7: 
-(((iso (THeads (Flat Appl) (TCons t t0) (TLRef i)) u2) \to (\forall (P: 
-Prop).P)))).(sn3_pr3_trans c (THead (Flat Appl) v (THeads (Flat Appl) (TCons 
-t t0) (lift (S i) O w))) H2 (THead (Flat Appl) v u2) (pr3_thin_dx c (THeads 
-(Flat Appl) (TCons t t0) (lift (S i) O w)) u2 (pr3_iso_appls_abbr c d w i H 
-(TCons t t0) u2 H6 H7) v Appl)))))))) H3)))))))) vs0))) vs)))))).
+(THead (Flat Appl) t (THeads (Flat Appl) t0 (lift (S i) O w)))) (sn3 c (THead 
+(Flat Appl) v (THeads (Flat Appl) (TCons t t0) (TLRef i)))) (\lambda (H4: 
+(sn3 c v)).(\lambda (H5: (sn3 c (THead (Flat Appl) t (THeads (Flat Appl) t0 
+(lift (S i) O w))))).(sn3_appl_appls t (TLRef i) t0 c (H1 H5) v H4 (\lambda 
+(u2: T).(\lambda (H6: (pr3 c (THeads (Flat Appl) (TCons t t0) (TLRef i)) 
+u2)).(\lambda (H7: (((iso (THeads (Flat Appl) (TCons t t0) (TLRef i)) u2) \to 
+(\forall (P: Prop).P)))).(sn3_pr3_trans c (THead (Flat Appl) v (THeads (Flat 
+Appl) (TCons t t0) (lift (S i) O w))) H2 (THead (Flat Appl) v u2) 
+(pr3_thin_dx c (THeads (Flat Appl) (TCons t t0) (lift (S i) O w)) u2 
+(pr3_iso_appls_abbr c d w i H (TCons t t0) u2 H6 H7) v Appl)))))))) 
+H3)))))))) vs0))) vs)))))).
 
 theorem sns3_lifts:
  \forall (c: C).(\forall (d: C).(\forall (h: nat).(\forall (i: nat).((drop h 
index 040ab8d46cdc5b215a5359641c59df5026b852e5..e77507354e21843f091751b9af7997559285cec5 100644 (file)
@@ -433,12 +433,12 @@ j)))))))
 H1) in (let H2 \def H_x in (ex_ind T (\lambda (u0: T).(eq T (TLRef j) (lift 
 (S i) O u0))) (lt i j) (\lambda (x: T).(\lambda (H3: (eq T (TLRef j) (lift (S 
 i) O x))).(let H_x0 \def (lift_gen_lref x O (S i) j H3) in (let H4 \def H_x0 
-in (or_ind (land (lt j O) (eq T x (TLRef j))) (land (le (plus O (S i)) j) (eq 
-T x (TLRef (minus j (S i))))) (lt i j) (\lambda (H5: (land (lt j O) (eq T x 
+in (or_ind (land (lt j O) (eq T x (TLRef j))) (land (le (S i) j) (eq T x 
+(TLRef (minus j (S i))))) (lt i j) (\lambda (H5: (land (lt j O) (eq T x 
 (TLRef j)))).(land_ind (lt j O) (eq T x (TLRef j)) (lt i j) (\lambda (H6: (lt 
 j O)).(\lambda (_: (eq T x (TLRef j))).(lt_x_O j H6 (lt i j)))) H5)) (\lambda 
-(H5: (land (le (plus O (S i)) j) (eq T x (TLRef (minus j (S i)))))).(land_ind 
-(le (plus O (S i)) j) (eq T x (TLRef (minus j (S i)))) (lt i j) (\lambda (H6: 
-(le (plus O (S i)) j)).(\lambda (_: (eq T x (TLRef (minus j (S i))))).H6)) 
-H5)) H4))))) H2))))))))).
+(H5: (land (le (S i) j) (eq T x (TLRef (minus j (S i)))))).(land_ind (le (S 
+i) j) (eq T x (TLRef (minus j (S i)))) (lt i j) (\lambda (H6: (le (S i) 
+j)).(\lambda (_: (eq T x (TLRef (minus j (S i))))).H6)) H5)) H4))))) 
+H2))))))))).
 
diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty0/defs.ma b/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty0/defs.ma
new file mode 100644 (file)
index 0000000..c6e9499
--- /dev/null
@@ -0,0 +1,39 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "LambdaDelta-1/G/defs.ma".
+
+include "LambdaDelta-1/getl/defs.ma".
+
+inductive sty0 (g: G): C \to (T \to (T \to Prop)) \def
+| sty0_sort: \forall (c: C).(\forall (n: nat).(sty0 g c (TSort n) (TSort 
+(next g n))))
+| sty0_abbr: \forall (c: C).(\forall (d: C).(\forall (v: T).(\forall (i: 
+nat).((getl i c (CHead d (Bind Abbr) v)) \to (\forall (w: T).((sty0 g d v w) 
+\to (sty0 g c (TLRef i) (lift (S i) O w))))))))
+| sty0_abst: \forall (c: C).(\forall (d: C).(\forall (v: T).(\forall (i: 
+nat).((getl i c (CHead d (Bind Abst) v)) \to (\forall (w: T).((sty0 g d v w) 
+\to (sty0 g c (TLRef i) (lift (S i) O v))))))))
+| sty0_bind: \forall (b: B).(\forall (c: C).(\forall (v: T).(\forall (t1: 
+T).(\forall (t2: T).((sty0 g (CHead c (Bind b) v) t1 t2) \to (sty0 g c (THead 
+(Bind b) v t1) (THead (Bind b) v t2)))))))
+| sty0_appl: \forall (c: C).(\forall (v: T).(\forall (t1: T).(\forall (t2: 
+T).((sty0 g c t1 t2) \to (sty0 g c (THead (Flat Appl) v t1) (THead (Flat 
+Appl) v t2))))))
+| sty0_cast: \forall (c: C).(\forall (v1: T).(\forall (v2: T).((sty0 g c v1 
+v2) \to (\forall (t1: T).(\forall (t2: T).((sty0 g c t1 t2) \to (sty0 g c 
+(THead (Flat Cast) v1 t1) (THead (Flat Cast) v2 t2)))))))).
+
diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty0/fwd.ma b/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty0/fwd.ma
new file mode 100644 (file)
index 0000000..873abbc
--- /dev/null
@@ -0,0 +1,547 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "LambdaDelta-1/sty0/defs.ma".
+
+theorem sty0_gen_sort:
+ \forall (g: G).(\forall (c: C).(\forall (x: T).(\forall (n: nat).((sty0 g c 
+(TSort n) x) \to (eq T x (TSort (next g n)))))))
+\def
+ \lambda (g: G).(\lambda (c: C).(\lambda (x: T).(\lambda (n: nat).(\lambda 
+(H: (sty0 g c (TSort n) x)).(insert_eq T (TSort n) (\lambda (t: T).(sty0 g c 
+t x)) (\lambda (_: T).(eq T x (TSort (next g n)))) (\lambda (y: T).(\lambda 
+(H0: (sty0 g c y x)).(sty0_ind g (\lambda (_: C).(\lambda (t: T).(\lambda 
+(t0: T).((eq T t (TSort n)) \to (eq T t0 (TSort (next g n))))))) (\lambda (_: 
+C).(\lambda (n0: nat).(\lambda (H1: (eq T (TSort n0) (TSort n))).(let H2 \def 
+(f_equal T nat (\lambda (e: T).(match e in T return (\lambda (_: T).nat) with 
+[(TSort n1) \Rightarrow n1 | (TLRef _) \Rightarrow n0 | (THead _ _ _) 
+\Rightarrow n0])) (TSort n0) (TSort n) H1) in (eq_ind_r nat n (\lambda (n1: 
+nat).(eq T (TSort (next g n1)) (TSort (next g n)))) (refl_equal T (TSort 
+(next g n))) n0 H2))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (v: 
+T).(\lambda (i: nat).(\lambda (_: (getl i c0 (CHead d (Bind Abbr) 
+v))).(\lambda (w: T).(\lambda (_: (sty0 g d v w)).(\lambda (_: (((eq T v 
+(TSort n)) \to (eq T w (TSort (next g n)))))).(\lambda (H4: (eq T (TLRef i) 
+(TSort n))).(let H5 \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) H4) in 
+(False_ind (eq T (lift (S i) O w) (TSort (next g n))) H5))))))))))) (\lambda 
+(c0: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda (_: (getl 
+i c0 (CHead d (Bind Abst) v))).(\lambda (w: T).(\lambda (_: (sty0 g d v 
+w)).(\lambda (_: (((eq T v (TSort n)) \to (eq T w (TSort (next g 
+n)))))).(\lambda (H4: (eq T (TLRef i) (TSort n))).(let H5 \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) H4) in (False_ind (eq T (lift (S i) O v) 
+(TSort (next g n))) H5))))))))))) (\lambda (b: B).(\lambda (c0: C).(\lambda 
+(v: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda (_: (sty0 g (CHead c0 (Bind 
+b) v) t1 t2)).(\lambda (_: (((eq T t1 (TSort n)) \to (eq T t2 (TSort (next g 
+n)))))).(\lambda (H3: (eq T (THead (Bind b) v t1) (TSort n))).(let H4 \def 
+(eq_ind T (THead (Bind b) v t1) (\lambda (ee: T).(match ee in T return 
+(\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
+\Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TSort n) H3) in 
+(False_ind (eq T (THead (Bind b) v t2) (TSort (next g n))) H4)))))))))) 
+(\lambda (c0: C).(\lambda (v: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
+(_: (sty0 g c0 t1 t2)).(\lambda (_: (((eq T t1 (TSort n)) \to (eq T t2 (TSort 
+(next g n)))))).(\lambda (H3: (eq T (THead (Flat Appl) v t1) (TSort n))).(let 
+H4 \def (eq_ind T (THead (Flat Appl) v t1) (\lambda (ee: T).(match ee in T 
+return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
+\Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TSort n) H3) in 
+(False_ind (eq T (THead (Flat Appl) v t2) (TSort (next g n))) H4))))))))) 
+(\lambda (c0: C).(\lambda (v1: T).(\lambda (v2: T).(\lambda (_: (sty0 g c0 v1 
+v2)).(\lambda (_: (((eq T v1 (TSort n)) \to (eq T v2 (TSort (next g 
+n)))))).(\lambda (t1: T).(\lambda (t2: T).(\lambda (_: (sty0 g c0 t1 
+t2)).(\lambda (_: (((eq T t1 (TSort n)) \to (eq T t2 (TSort (next g 
+n)))))).(\lambda (H5: (eq T (THead (Flat Cast) v1 t1) (TSort n))).(let H6 
+\def (eq_ind T (THead (Flat Cast) v1 t1) (\lambda (ee: T).(match ee in T 
+return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
+\Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TSort n) H5) in 
+(False_ind (eq T (THead (Flat Cast) v2 t2) (TSort (next g n))) H6)))))))))))) 
+c y x H0))) H))))).
+
+theorem sty0_gen_lref:
+ \forall (g: G).(\forall (c: C).(\forall (x: T).(\forall (n: nat).((sty0 g c 
+(TLRef n) x) \to (or (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda 
+(_: T).(getl n c (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
+T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
+(t: T).(eq T x (lift (S n) O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda 
+(u: T).(\lambda (_: T).(getl n c (CHead e (Bind Abst) u))))) (\lambda (e: 
+C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda 
+(u: T).(\lambda (_: T).(eq T x (lift (S n) O u)))))))))))
+\def
+ \lambda (g: G).(\lambda (c: C).(\lambda (x: T).(\lambda (n: nat).(\lambda 
+(H: (sty0 g c (TLRef n) x)).(insert_eq T (TLRef n) (\lambda (t: T).(sty0 g c 
+t x)) (\lambda (_: T).(or (ex3_3 C T T (\lambda (e: C).(\lambda (u: 
+T).(\lambda (_: T).(getl n c (CHead e (Bind Abbr) u))))) (\lambda (e: 
+C).(\lambda (u: T).(\lambda (t0: T).(sty0 g e u t0)))) (\lambda (_: 
+C).(\lambda (_: T).(\lambda (t0: T).(eq T x (lift (S n) O t0)))))) (ex3_3 C T 
+T (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c (CHead e (Bind 
+Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t0: T).(sty0 g e u 
+t0)))) (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq T x (lift (S n) O 
+u)))))))) (\lambda (y: T).(\lambda (H0: (sty0 g c y x)).(sty0_ind g (\lambda 
+(c0: C).(\lambda (t: T).(\lambda (t0: T).((eq T t (TLRef n)) \to (or (ex3_3 C 
+T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
+Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t1: T).(sty0 g e u 
+t1)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t1: T).(eq T t0 (lift (S n) 
+O t1)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl 
+n c0 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda 
+(t1: T).(sty0 g e u t1)))) (\lambda (_: C).(\lambda (u: T).(\lambda (_: 
+T).(eq T t0 (lift (S n) O u))))))))))) (\lambda (c0: C).(\lambda (n0: 
+nat).(\lambda (H1: (eq T (TSort n0) (TLRef n))).(let H2 \def (eq_ind T (TSort 
+n0) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) with [(TSort 
+_) \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
+False])) I (TLRef n) H1) in (False_ind (or (ex3_3 C T T (\lambda (e: 
+C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u))))) 
+(\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u t)))) (\lambda 
+(_: C).(\lambda (_: T).(\lambda (t: T).(eq T (TSort (next g n0)) (lift (S n) 
+O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl 
+n c0 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: 
+T).(sty0 g e u t)))) (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq T 
+(TSort (next g n0)) (lift (S n) O u))))))) H2))))) (\lambda (c0: C).(\lambda 
+(d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda (H1: (getl i c0 (CHead d 
+(Bind Abbr) v))).(\lambda (w: T).(\lambda (H2: (sty0 g d v w)).(\lambda (_: 
+(((eq T v (TLRef n)) \to (or (ex3_3 C T T (\lambda (e: C).(\lambda (u: 
+T).(\lambda (_: T).(getl n d (CHead e (Bind Abbr) u))))) (\lambda (e: 
+C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda 
+(_: T).(\lambda (t: T).(eq T w (lift (S n) O t)))))) (ex3_3 C T T (\lambda 
+(e: C).(\lambda (u: T).(\lambda (_: T).(getl n d (CHead e (Bind Abst) u))))) 
+(\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u t)))) (\lambda 
+(_: C).(\lambda (u: T).(\lambda (_: T).(eq T w (lift (S n) O 
+u)))))))))).(\lambda (H4: (eq T (TLRef i) (TLRef n))).(let H5 \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) H4) in (let H6 \def (eq_ind nat i (\lambda (n0: 
+nat).(getl n0 c0 (CHead d (Bind Abbr) v))) H1 n H5) in (eq_ind_r nat n 
+(\lambda (n0: nat).(or (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda 
+(_: T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
+T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
+(t: T).(eq T (lift (S n0) O w) (lift (S n) O t)))))) (ex3_3 C T T (\lambda 
+(e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) 
+(\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u t)))) (\lambda 
+(_: C).(\lambda (u: T).(\lambda (_: T).(eq T (lift (S n0) O w) (lift (S n) O 
+u)))))))) (or_introl (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda 
+(_: T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
+T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
+(t: T).(eq T (lift (S n) O w) (lift (S n) O t)))))) (ex3_3 C T T (\lambda (e: 
+C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) 
+(\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u t)))) (\lambda 
+(_: C).(\lambda (u: T).(\lambda (_: T).(eq T (lift (S n) O w) (lift (S n) O 
+u)))))) (ex3_3_intro C T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: 
+T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
+T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
+(t: T).(eq T (lift (S n) O w) (lift (S n) O t))))) d v w H6 H2 (refl_equal T 
+(lift (S n) O w)))) i H5)))))))))))) (\lambda (c0: C).(\lambda (d: 
+C).(\lambda (v: T).(\lambda (i: nat).(\lambda (H1: (getl i c0 (CHead d (Bind 
+Abst) v))).(\lambda (w: T).(\lambda (H2: (sty0 g d v w)).(\lambda (_: (((eq T 
+v (TLRef n)) \to (or (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda 
+(_: T).(getl n d (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
+T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
+(t: T).(eq T w (lift (S n) O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda 
+(u: T).(\lambda (_: T).(getl n d (CHead e (Bind Abst) u))))) (\lambda (e: 
+C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda 
+(u: T).(\lambda (_: T).(eq T w (lift (S n) O u)))))))))).(\lambda (H4: (eq T 
+(TLRef i) (TLRef n))).(let H5 \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) H4) in 
+(let H6 \def (eq_ind nat i (\lambda (n0: nat).(getl n0 c0 (CHead d (Bind 
+Abst) v))) H1 n H5) in (eq_ind_r nat n (\lambda (n0: nat).(or (ex3_3 C T T 
+(\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
+Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u 
+t)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(eq T (lift (S n0) O v) 
+(lift (S n) O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda 
+(_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: 
+T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda (u: T).(\lambda 
+(_: T).(eq T (lift (S n0) O v) (lift (S n) O u)))))))) (or_intror (ex3_3 C T 
+T (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
+Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u 
+t)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(eq T (lift (S n) O v) 
+(lift (S n) O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda 
+(_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: 
+T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda (u: T).(\lambda 
+(_: T).(eq T (lift (S n) O v) (lift (S n) O u)))))) (ex3_3_intro C T T 
+(\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
+Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u 
+t)))) (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq T (lift (S n) O v) 
+(lift (S n) O u))))) d v w H6 H2 (refl_equal T (lift (S n) O v)))) i 
+H5)))))))))))) (\lambda (b: B).(\lambda (c0: C).(\lambda (v: T).(\lambda (t1: 
+T).(\lambda (t2: T).(\lambda (_: (sty0 g (CHead c0 (Bind b) v) t1 
+t2)).(\lambda (_: (((eq T t1 (TLRef n)) \to (or (ex3_3 C T T (\lambda (e: 
+C).(\lambda (u: T).(\lambda (_: T).(getl n (CHead c0 (Bind b) v) (CHead e 
+(Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(sty0 g e 
+u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(eq T t2 (lift (S n) 
+O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl 
+n (CHead c0 (Bind b) v) (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda 
+(u: T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda (u: 
+T).(\lambda (_: T).(eq T t2 (lift (S n) O u)))))))))).(\lambda (H3: (eq T 
+(THead (Bind b) v t1) (TLRef n))).(let H4 \def (eq_ind T (THead (Bind b) v 
+t1) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) with [(TSort 
+_) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) 
+\Rightarrow True])) I (TLRef n) H3) in (False_ind (or (ex3_3 C T T (\lambda 
+(e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u))))) 
+(\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u t)))) (\lambda 
+(_: C).(\lambda (_: T).(\lambda (t: T).(eq T (THead (Bind b) v t2) (lift (S 
+n) O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: 
+T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: 
+T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda (u: T).(\lambda 
+(_: T).(eq T (THead (Bind b) v t2) (lift (S n) O u))))))) H4)))))))))) 
+(\lambda (c0: C).(\lambda (v: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
+(_: (sty0 g c0 t1 t2)).(\lambda (_: (((eq T t1 (TLRef n)) \to (or (ex3_3 C T 
+T (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
+Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u 
+t)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(eq T t2 (lift (S n) O 
+t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n 
+c0 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: 
+T).(sty0 g e u t)))) (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq T t2 
+(lift (S n) O u)))))))))).(\lambda (H3: (eq T (THead (Flat Appl) v t1) (TLRef 
+n))).(let H4 \def (eq_ind T (THead (Flat Appl) v t1) (\lambda (ee: T).(match 
+ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
+(TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef n) 
+H3) in (False_ind (or (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda 
+(_: T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
+T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
+(t: T).(eq T (THead (Flat Appl) v t2) (lift (S n) O t)))))) (ex3_3 C T T 
+(\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
+Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u 
+t)))) (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq T (THead (Flat 
+Appl) v t2) (lift (S n) O u))))))) H4))))))))) (\lambda (c0: C).(\lambda (v1: 
+T).(\lambda (v2: T).(\lambda (_: (sty0 g c0 v1 v2)).(\lambda (_: (((eq T v1 
+(TLRef n)) \to (or (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: 
+T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
+T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
+(t: T).(eq T v2 (lift (S n) O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda 
+(u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: 
+C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda 
+(u: T).(\lambda (_: T).(eq T v2 (lift (S n) O u)))))))))).(\lambda (t1: 
+T).(\lambda (t2: T).(\lambda (_: (sty0 g c0 t1 t2)).(\lambda (_: (((eq T t1 
+(TLRef n)) \to (or (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: 
+T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
+T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
+(t: T).(eq T t2 (lift (S n) O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda 
+(u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: 
+C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda 
+(u: T).(\lambda (_: T).(eq T t2 (lift (S n) O u)))))))))).(\lambda (H5: (eq T 
+(THead (Flat Cast) v1 t1) (TLRef n))).(let H6 \def (eq_ind T (THead (Flat 
+Cast) v1 t1) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) 
+with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ 
+_) \Rightarrow True])) I (TLRef n) H5) in (False_ind (or (ex3_3 C T T 
+(\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
+Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u 
+t)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(eq T (THead (Flat 
+Cast) v2 t2) (lift (S n) O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u: 
+T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: 
+C).(\lambda (u: T).(\lambda (t: T).(sty0 g e u t)))) (\lambda (_: C).(\lambda 
+(u: T).(\lambda (_: T).(eq T (THead (Flat Cast) v2 t2) (lift (S n) O u))))))) 
+H6)))))))))))) c y x H0))) H))))).
+
+theorem sty0_gen_bind:
+ \forall (g: G).(\forall (b: B).(\forall (c: C).(\forall (u: T).(\forall (t1: 
+T).(\forall (x: T).((sty0 g c (THead (Bind b) u t1) x) \to (ex2 T (\lambda 
+(t2: T).(sty0 g (CHead c (Bind b) u) t1 t2)) (\lambda (t2: T).(eq T x (THead 
+(Bind b) u t2))))))))))
+\def
+ \lambda (g: G).(\lambda (b: B).(\lambda (c: C).(\lambda (u: T).(\lambda (t1: 
+T).(\lambda (x: T).(\lambda (H: (sty0 g c (THead (Bind b) u t1) 
+x)).(insert_eq T (THead (Bind b) u t1) (\lambda (t: T).(sty0 g c t x)) 
+(\lambda (_: T).(ex2 T (\lambda (t2: T).(sty0 g (CHead c (Bind b) u) t1 t2)) 
+(\lambda (t2: T).(eq T x (THead (Bind b) u t2))))) (\lambda (y: T).(\lambda 
+(H0: (sty0 g c y x)).(sty0_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda 
+(t0: T).((eq T t (THead (Bind b) u t1)) \to (ex2 T (\lambda (t2: T).(sty0 g 
+(CHead c0 (Bind b) u) t1 t2)) (\lambda (t2: T).(eq T t0 (THead (Bind b) u 
+t2)))))))) (\lambda (c0: C).(\lambda (n: nat).(\lambda (H1: (eq T (TSort n) 
+(THead (Bind b) u t1))).(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 
+(THead (Bind b) u t1) H1) in (False_ind (ex2 T (\lambda (t2: T).(sty0 g 
+(CHead c0 (Bind b) u) t1 t2)) (\lambda (t2: T).(eq T (TSort (next g n)) 
+(THead (Bind b) u t2)))) H2))))) (\lambda (c0: C).(\lambda (d: C).(\lambda 
+(v: T).(\lambda (i: nat).(\lambda (_: (getl i c0 (CHead d (Bind Abbr) 
+v))).(\lambda (w: T).(\lambda (_: (sty0 g d v w)).(\lambda (_: (((eq T v 
+(THead (Bind b) u t1)) \to (ex2 T (\lambda (t2: T).(sty0 g (CHead d (Bind b) 
+u) t1 t2)) (\lambda (t2: T).(eq T w (THead (Bind b) u t2))))))).(\lambda (H4: 
+(eq T (TLRef i) (THead (Bind b) u t1))).(let H5 \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 (Bind b) u t1) H4) in (False_ind (ex2 T (\lambda (t2: 
+T).(sty0 g (CHead c0 (Bind b) u) t1 t2)) (\lambda (t2: T).(eq T (lift (S i) O 
+w) (THead (Bind b) u t2)))) H5))))))))))) (\lambda (c0: C).(\lambda (d: 
+C).(\lambda (v: T).(\lambda (i: nat).(\lambda (_: (getl i c0 (CHead d (Bind 
+Abst) v))).(\lambda (w: T).(\lambda (_: (sty0 g d v w)).(\lambda (_: (((eq T 
+v (THead (Bind b) u t1)) \to (ex2 T (\lambda (t2: T).(sty0 g (CHead d (Bind 
+b) u) t1 t2)) (\lambda (t2: T).(eq T w (THead (Bind b) u t2))))))).(\lambda 
+(H4: (eq T (TLRef i) (THead (Bind b) u t1))).(let H5 \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 (Bind b) u t1) H4) in (False_ind (ex2 T (\lambda (t2: 
+T).(sty0 g (CHead c0 (Bind b) u) t1 t2)) (\lambda (t2: T).(eq T (lift (S i) O 
+v) (THead (Bind b) u t2)))) H5))))))))))) (\lambda (b0: B).(\lambda (c0: 
+C).(\lambda (v: T).(\lambda (t0: T).(\lambda (t2: T).(\lambda (H1: (sty0 g 
+(CHead c0 (Bind b0) v) t0 t2)).(\lambda (H2: (((eq T t0 (THead (Bind b) u 
+t1)) \to (ex2 T (\lambda (t3: T).(sty0 g (CHead (CHead c0 (Bind b0) v) (Bind 
+b) u) t1 t3)) (\lambda (t3: T).(eq T t2 (THead (Bind b) u t3))))))).(\lambda 
+(H3: (eq T (THead (Bind b0) v t0) (THead (Bind b) u t1))).(let H4 \def 
+(f_equal T B (\lambda (e: T).(match e in T return (\lambda (_: T).B) with 
+[(TSort _) \Rightarrow b0 | (TLRef _) \Rightarrow b0 | (THead k _ _) 
+\Rightarrow (match k in K return (\lambda (_: K).B) with [(Bind b1) 
+\Rightarrow b1 | (Flat _) \Rightarrow b0])])) (THead (Bind b0) v t0) (THead 
+(Bind b) u t1) H3) in ((let H5 \def (f_equal T T (\lambda (e: T).(match e in 
+T return (\lambda (_: T).T) with [(TSort _) \Rightarrow v | (TLRef _) 
+\Rightarrow v | (THead _ t _) \Rightarrow t])) (THead (Bind b0) v t0) (THead 
+(Bind b) u t1) H3) in ((let H6 \def (f_equal T T (\lambda (e: T).(match e in 
+T return (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef _) 
+\Rightarrow t0 | (THead _ _ t) \Rightarrow t])) (THead (Bind b0) v t0) (THead 
+(Bind b) u t1) H3) in (\lambda (H7: (eq T v u)).(\lambda (H8: (eq B b0 
+b)).(let H9 \def (eq_ind T t0 (\lambda (t: T).((eq T t (THead (Bind b) u t1)) 
+\to (ex2 T (\lambda (t3: T).(sty0 g (CHead (CHead c0 (Bind b0) v) (Bind b) u) 
+t1 t3)) (\lambda (t3: T).(eq T t2 (THead (Bind b) u t3)))))) H2 t1 H6) in 
+(let H10 \def (eq_ind T t0 (\lambda (t: T).(sty0 g (CHead c0 (Bind b0) v) t 
+t2)) H1 t1 H6) in (let H11 \def (eq_ind T v (\lambda (t: T).((eq T t1 (THead 
+(Bind b) u t1)) \to (ex2 T (\lambda (t3: T).(sty0 g (CHead (CHead c0 (Bind 
+b0) t) (Bind b) u) t1 t3)) (\lambda (t3: T).(eq T t2 (THead (Bind b) u 
+t3)))))) H9 u H7) in (let H12 \def (eq_ind T v (\lambda (t: T).(sty0 g (CHead 
+c0 (Bind b0) t) t1 t2)) H10 u H7) in (eq_ind_r T u (\lambda (t: T).(ex2 T 
+(\lambda (t3: T).(sty0 g (CHead c0 (Bind b) u) t1 t3)) (\lambda (t3: T).(eq T 
+(THead (Bind b0) t t2) (THead (Bind b) u t3))))) (let H13 \def (eq_ind B b0 
+(\lambda (b1: B).((eq T t1 (THead (Bind b) u t1)) \to (ex2 T (\lambda (t3: 
+T).(sty0 g (CHead (CHead c0 (Bind b1) u) (Bind b) u) t1 t3)) (\lambda (t3: 
+T).(eq T t2 (THead (Bind b) u t3)))))) H11 b H8) in (let H14 \def (eq_ind B 
+b0 (\lambda (b1: B).(sty0 g (CHead c0 (Bind b1) u) t1 t2)) H12 b H8) in 
+(eq_ind_r B b (\lambda (b1: B).(ex2 T (\lambda (t3: T).(sty0 g (CHead c0 
+(Bind b) u) t1 t3)) (\lambda (t3: T).(eq T (THead (Bind b1) u t2) (THead 
+(Bind b) u t3))))) (ex_intro2 T (\lambda (t3: T).(sty0 g (CHead c0 (Bind b) 
+u) t1 t3)) (\lambda (t3: T).(eq T (THead (Bind b) u t2) (THead (Bind b) u 
+t3))) t2 H14 (refl_equal T (THead (Bind b) u t2))) b0 H8))) v H7)))))))) H5)) 
+H4)))))))))) (\lambda (c0: C).(\lambda (v: T).(\lambda (t0: T).(\lambda (t2: 
+T).(\lambda (_: (sty0 g c0 t0 t2)).(\lambda (_: (((eq T t0 (THead (Bind b) u 
+t1)) \to (ex2 T (\lambda (t3: T).(sty0 g (CHead c0 (Bind b) u) t1 t3)) 
+(\lambda (t3: T).(eq T t2 (THead (Bind b) u t3))))))).(\lambda (H3: (eq T 
+(THead (Flat Appl) v t0) (THead (Bind b) u t1))).(let H4 \def (eq_ind T 
+(THead (Flat Appl) v t0) (\lambda (ee: T).(match ee in T return (\lambda (_: 
+T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
+(THead k _ _) \Rightarrow (match k in K return (\lambda (_: K).Prop) with 
+[(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind 
+b) u t1) H3) in (False_ind (ex2 T (\lambda (t3: T).(sty0 g (CHead c0 (Bind b) 
+u) t1 t3)) (\lambda (t3: T).(eq T (THead (Flat Appl) v t2) (THead (Bind b) u 
+t3)))) H4))))))))) (\lambda (c0: C).(\lambda (v1: T).(\lambda (v2: 
+T).(\lambda (_: (sty0 g c0 v1 v2)).(\lambda (_: (((eq T v1 (THead (Bind b) u 
+t1)) \to (ex2 T (\lambda (t2: T).(sty0 g (CHead c0 (Bind b) u) t1 t2)) 
+(\lambda (t2: T).(eq T v2 (THead (Bind b) u t2))))))).(\lambda (t0: 
+T).(\lambda (t2: T).(\lambda (_: (sty0 g c0 t0 t2)).(\lambda (_: (((eq T t0 
+(THead (Bind b) u t1)) \to (ex2 T (\lambda (t3: T).(sty0 g (CHead c0 (Bind b) 
+u) t1 t3)) (\lambda (t3: T).(eq T t2 (THead (Bind b) u t3))))))).(\lambda 
+(H5: (eq T (THead (Flat Cast) v1 t0) (THead (Bind b) u t1))).(let H6 \def 
+(eq_ind T (THead (Flat Cast) v1 t0) (\lambda (ee: T).(match ee in T return 
+(\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
+\Rightarrow False | (THead k _ _) \Rightarrow (match k in K return (\lambda 
+(_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow 
+True])])) I (THead (Bind b) u t1) H5) in (False_ind (ex2 T (\lambda (t3: 
+T).(sty0 g (CHead c0 (Bind b) u) t1 t3)) (\lambda (t3: T).(eq T (THead (Flat 
+Cast) v2 t2) (THead (Bind b) u t3)))) H6)))))))))))) c y x H0))) H))))))).
+
+theorem sty0_gen_appl:
+ \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (t1: T).(\forall (x: 
+T).((sty0 g c (THead (Flat Appl) u t1) x) \to (ex2 T (\lambda (t2: T).(sty0 g 
+c t1 t2)) (\lambda (t2: T).(eq T x (THead (Flat Appl) u t2)))))))))
+\def
+ \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (t1: T).(\lambda (x: 
+T).(\lambda (H: (sty0 g c (THead (Flat Appl) u t1) x)).(insert_eq T (THead 
+(Flat Appl) u t1) (\lambda (t: T).(sty0 g c t x)) (\lambda (_: T).(ex2 T 
+(\lambda (t2: T).(sty0 g c t1 t2)) (\lambda (t2: T).(eq T x (THead (Flat 
+Appl) u t2))))) (\lambda (y: T).(\lambda (H0: (sty0 g c y x)).(sty0_ind g 
+(\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).((eq T t (THead (Flat Appl) 
+u t1)) \to (ex2 T (\lambda (t2: T).(sty0 g c0 t1 t2)) (\lambda (t2: T).(eq T 
+t0 (THead (Flat Appl) u t2)))))))) (\lambda (c0: C).(\lambda (n: 
+nat).(\lambda (H1: (eq T (TSort n) (THead (Flat Appl) u t1))).(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 (THead (Flat Appl) u t1) H1) in 
+(False_ind (ex2 T (\lambda (t2: T).(sty0 g c0 t1 t2)) (\lambda (t2: T).(eq T 
+(TSort (next g n)) (THead (Flat Appl) u t2)))) H2))))) (\lambda (c0: 
+C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda (_: (getl i c0 
+(CHead d (Bind Abbr) v))).(\lambda (w: T).(\lambda (_: (sty0 g d v 
+w)).(\lambda (_: (((eq T v (THead (Flat Appl) u t1)) \to (ex2 T (\lambda (t2: 
+T).(sty0 g d t1 t2)) (\lambda (t2: T).(eq T w (THead (Flat Appl) u 
+t2))))))).(\lambda (H4: (eq T (TLRef i) (THead (Flat Appl) u t1))).(let H5 
+\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 (Flat Appl) u t1) H4) in 
+(False_ind (ex2 T (\lambda (t2: T).(sty0 g c0 t1 t2)) (\lambda (t2: T).(eq T 
+(lift (S i) O w) (THead (Flat Appl) u t2)))) H5))))))))))) (\lambda (c0: 
+C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda (_: (getl i c0 
+(CHead d (Bind Abst) v))).(\lambda (w: T).(\lambda (_: (sty0 g d v 
+w)).(\lambda (_: (((eq T v (THead (Flat Appl) u t1)) \to (ex2 T (\lambda (t2: 
+T).(sty0 g d t1 t2)) (\lambda (t2: T).(eq T w (THead (Flat Appl) u 
+t2))))))).(\lambda (H4: (eq T (TLRef i) (THead (Flat Appl) u t1))).(let H5 
+\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 (Flat Appl) u t1) H4) in 
+(False_ind (ex2 T (\lambda (t2: T).(sty0 g c0 t1 t2)) (\lambda (t2: T).(eq T 
+(lift (S i) O v) (THead (Flat Appl) u t2)))) H5))))))))))) (\lambda (b: 
+B).(\lambda (c0: C).(\lambda (v: T).(\lambda (t0: T).(\lambda (t2: 
+T).(\lambda (_: (sty0 g (CHead c0 (Bind b) v) t0 t2)).(\lambda (_: (((eq T t0 
+(THead (Flat Appl) u t1)) \to (ex2 T (\lambda (t3: T).(sty0 g (CHead c0 (Bind 
+b) v) t1 t3)) (\lambda (t3: T).(eq T t2 (THead (Flat Appl) u 
+t3))))))).(\lambda (H3: (eq T (THead (Bind b) v t0) (THead (Flat Appl) u 
+t1))).(let H4 \def (eq_ind T (THead (Bind b) v t0) (\lambda (ee: T).(match ee 
+in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef 
+_) \Rightarrow False | (THead k _ _) \Rightarrow (match k in K return 
+(\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow 
+False])])) I (THead (Flat Appl) u t1) H3) in (False_ind (ex2 T (\lambda (t3: 
+T).(sty0 g c0 t1 t3)) (\lambda (t3: T).(eq T (THead (Bind b) v t2) (THead 
+(Flat Appl) u t3)))) H4)))))))))) (\lambda (c0: C).(\lambda (v: T).(\lambda 
+(t0: T).(\lambda (t2: T).(\lambda (H1: (sty0 g c0 t0 t2)).(\lambda (H2: (((eq 
+T t0 (THead (Flat Appl) u t1)) \to (ex2 T (\lambda (t3: T).(sty0 g c0 t1 t3)) 
+(\lambda (t3: T).(eq T t2 (THead (Flat Appl) u t3))))))).(\lambda (H3: (eq T 
+(THead (Flat Appl) v t0) (THead (Flat Appl) u t1))).(let H4 \def (f_equal T T 
+(\lambda (e: T).(match e in T return (\lambda (_: T).T) with [(TSort _) 
+\Rightarrow v | (TLRef _) \Rightarrow v | (THead _ t _) \Rightarrow t])) 
+(THead (Flat Appl) v t0) (THead (Flat Appl) u t1) H3) in ((let H5 \def 
+(f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) with 
+[(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) 
+\Rightarrow t])) (THead (Flat Appl) v t0) (THead (Flat Appl) u t1) H3) in 
+(\lambda (H6: (eq T v u)).(let H7 \def (eq_ind T t0 (\lambda (t: T).((eq T t 
+(THead (Flat Appl) u t1)) \to (ex2 T (\lambda (t3: T).(sty0 g c0 t1 t3)) 
+(\lambda (t3: T).(eq T t2 (THead (Flat Appl) u t3)))))) H2 t1 H5) in (let H8 
+\def (eq_ind T t0 (\lambda (t: T).(sty0 g c0 t t2)) H1 t1 H5) in (eq_ind_r T 
+u (\lambda (t: T).(ex2 T (\lambda (t3: T).(sty0 g c0 t1 t3)) (\lambda (t3: 
+T).(eq T (THead (Flat Appl) t t2) (THead (Flat Appl) u t3))))) (ex_intro2 T 
+(\lambda (t3: T).(sty0 g c0 t1 t3)) (\lambda (t3: T).(eq T (THead (Flat Appl) 
+u t2) (THead (Flat Appl) u t3))) t2 H8 (refl_equal T (THead (Flat Appl) u 
+t2))) v H6))))) H4))))))))) (\lambda (c0: C).(\lambda (v1: T).(\lambda (v2: 
+T).(\lambda (_: (sty0 g c0 v1 v2)).(\lambda (_: (((eq T v1 (THead (Flat Appl) 
+u t1)) \to (ex2 T (\lambda (t2: T).(sty0 g c0 t1 t2)) (\lambda (t2: T).(eq T 
+v2 (THead (Flat Appl) u t2))))))).(\lambda (t0: T).(\lambda (t2: T).(\lambda 
+(_: (sty0 g c0 t0 t2)).(\lambda (_: (((eq T t0 (THead (Flat Appl) u t1)) \to 
+(ex2 T (\lambda (t3: T).(sty0 g c0 t1 t3)) (\lambda (t3: T).(eq T t2 (THead 
+(Flat Appl) u t3))))))).(\lambda (H5: (eq T (THead (Flat Cast) v1 t0) (THead 
+(Flat Appl) u t1))).(let H6 \def (eq_ind T (THead (Flat Cast) v1 t0) (\lambda 
+(ee: T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) 
+\Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
+(match k in K return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | 
+(Flat f) \Rightarrow (match f in F return (\lambda (_: F).Prop) with [Appl 
+\Rightarrow False | Cast \Rightarrow True])])])) I (THead (Flat Appl) u t1) 
+H5) in (False_ind (ex2 T (\lambda (t3: T).(sty0 g c0 t1 t3)) (\lambda (t3: 
+T).(eq T (THead (Flat Cast) v2 t2) (THead (Flat Appl) u t3)))) H6)))))))))))) 
+c y x H0))) H)))))).
+
+theorem sty0_gen_cast:
+ \forall (g: G).(\forall (c: C).(\forall (v1: T).(\forall (t1: T).(\forall 
+(x: T).((sty0 g c (THead (Flat Cast) v1 t1) x) \to (ex3_2 T T (\lambda (v2: 
+T).(\lambda (_: T).(sty0 g c v1 v2))) (\lambda (_: T).(\lambda (t2: T).(sty0 
+g c t1 t2))) (\lambda (v2: T).(\lambda (t2: T).(eq T x (THead (Flat Cast) v2 
+t2))))))))))
+\def
+ \lambda (g: G).(\lambda (c: C).(\lambda (v1: T).(\lambda (t1: T).(\lambda 
+(x: T).(\lambda (H: (sty0 g c (THead (Flat Cast) v1 t1) x)).(insert_eq T 
+(THead (Flat Cast) v1 t1) (\lambda (t: T).(sty0 g c t x)) (\lambda (_: 
+T).(ex3_2 T T (\lambda (v2: T).(\lambda (_: T).(sty0 g c v1 v2))) (\lambda 
+(_: T).(\lambda (t2: T).(sty0 g c t1 t2))) (\lambda (v2: T).(\lambda (t2: 
+T).(eq T x (THead (Flat Cast) v2 t2)))))) (\lambda (y: T).(\lambda (H0: (sty0 
+g c y x)).(sty0_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).((eq 
+T t (THead (Flat Cast) v1 t1)) \to (ex3_2 T T (\lambda (v2: T).(\lambda (_: 
+T).(sty0 g c0 v1 v2))) (\lambda (_: T).(\lambda (t2: T).(sty0 g c0 t1 t2))) 
+(\lambda (v2: T).(\lambda (t2: T).(eq T t0 (THead (Flat Cast) v2 t2))))))))) 
+(\lambda (c0: C).(\lambda (n: nat).(\lambda (H1: (eq T (TSort n) (THead (Flat 
+Cast) v1 t1))).(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 (THead (Flat Cast) 
+v1 t1) H1) in (False_ind (ex3_2 T T (\lambda (v2: T).(\lambda (_: T).(sty0 g 
+c0 v1 v2))) (\lambda (_: T).(\lambda (t2: T).(sty0 g c0 t1 t2))) (\lambda 
+(v2: T).(\lambda (t2: T).(eq T (TSort (next g n)) (THead (Flat Cast) v2 
+t2))))) H2))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: 
+nat).(\lambda (_: (getl i c0 (CHead d (Bind Abbr) v))).(\lambda (w: 
+T).(\lambda (_: (sty0 g d v w)).(\lambda (_: (((eq T v (THead (Flat Cast) v1 
+t1)) \to (ex3_2 T T (\lambda (v2: T).(\lambda (_: T).(sty0 g d v1 v2))) 
+(\lambda (_: T).(\lambda (t2: T).(sty0 g d t1 t2))) (\lambda (v2: T).(\lambda 
+(t2: T).(eq T w (THead (Flat Cast) v2 t2)))))))).(\lambda (H4: (eq T (TLRef 
+i) (THead (Flat Cast) v1 t1))).(let H5 \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 (Flat Cast) v1 t1) H4) in (False_ind (ex3_2 T T (\lambda (v2: 
+T).(\lambda (_: T).(sty0 g c0 v1 v2))) (\lambda (_: T).(\lambda (t2: T).(sty0 
+g c0 t1 t2))) (\lambda (v2: T).(\lambda (t2: T).(eq T (lift (S i) O w) (THead 
+(Flat Cast) v2 t2))))) H5))))))))))) (\lambda (c0: C).(\lambda (d: 
+C).(\lambda (v: T).(\lambda (i: nat).(\lambda (_: (getl i c0 (CHead d (Bind 
+Abst) v))).(\lambda (w: T).(\lambda (_: (sty0 g d v w)).(\lambda (_: (((eq T 
+v (THead (Flat Cast) v1 t1)) \to (ex3_2 T T (\lambda (v2: T).(\lambda (_: 
+T).(sty0 g d v1 v2))) (\lambda (_: T).(\lambda (t2: T).(sty0 g d t1 t2))) 
+(\lambda (v2: T).(\lambda (t2: T).(eq T w (THead (Flat Cast) v2 
+t2)))))))).(\lambda (H4: (eq T (TLRef i) (THead (Flat Cast) v1 t1))).(let H5 
+\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 (Flat Cast) v1 t1) H4) in 
+(False_ind (ex3_2 T T (\lambda (v2: T).(\lambda (_: T).(sty0 g c0 v1 v2))) 
+(\lambda (_: T).(\lambda (t2: T).(sty0 g c0 t1 t2))) (\lambda (v2: 
+T).(\lambda (t2: T).(eq T (lift (S i) O v) (THead (Flat Cast) v2 t2))))) 
+H5))))))))))) (\lambda (b: B).(\lambda (c0: C).(\lambda (v: T).(\lambda (t0: 
+T).(\lambda (t2: T).(\lambda (_: (sty0 g (CHead c0 (Bind b) v) t0 
+t2)).(\lambda (_: (((eq T t0 (THead (Flat Cast) v1 t1)) \to (ex3_2 T T 
+(\lambda (v2: T).(\lambda (_: T).(sty0 g (CHead c0 (Bind b) v) v1 v2))) 
+(\lambda (_: T).(\lambda (t3: T).(sty0 g (CHead c0 (Bind b) v) t1 t3))) 
+(\lambda (v2: T).(\lambda (t3: T).(eq T t2 (THead (Flat Cast) v2 
+t3)))))))).(\lambda (H3: (eq T (THead (Bind b) v t0) (THead (Flat Cast) v1 
+t1))).(let H4 \def (eq_ind T (THead (Bind b) v t0) (\lambda (ee: T).(match ee 
+in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef 
+_) \Rightarrow False | (THead k _ _) \Rightarrow (match k in K return 
+(\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow 
+False])])) I (THead (Flat Cast) v1 t1) H3) in (False_ind (ex3_2 T T (\lambda 
+(v2: T).(\lambda (_: T).(sty0 g c0 v1 v2))) (\lambda (_: T).(\lambda (t3: 
+T).(sty0 g c0 t1 t3))) (\lambda (v2: T).(\lambda (t3: T).(eq T (THead (Bind 
+b) v t2) (THead (Flat Cast) v2 t3))))) H4)))))))))) (\lambda (c0: C).(\lambda 
+(v: T).(\lambda (t0: T).(\lambda (t2: T).(\lambda (_: (sty0 g c0 t0 
+t2)).(\lambda (_: (((eq T t0 (THead (Flat Cast) v1 t1)) \to (ex3_2 T T 
+(\lambda (v2: T).(\lambda (_: T).(sty0 g c0 v1 v2))) (\lambda (_: T).(\lambda 
+(t3: T).(sty0 g c0 t1 t3))) (\lambda (v2: T).(\lambda (t3: T).(eq T t2 (THead 
+(Flat Cast) v2 t3)))))))).(\lambda (H3: (eq T (THead (Flat Appl) v t0) (THead 
+(Flat Cast) v1 t1))).(let H4 \def (eq_ind T (THead (Flat Appl) v t0) (\lambda 
+(ee: T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) 
+\Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
+(match k in K return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | 
+(Flat f) \Rightarrow (match f in F return (\lambda (_: F).Prop) with [Appl 
+\Rightarrow True | Cast \Rightarrow False])])])) I (THead (Flat Cast) v1 t1) 
+H3) in (False_ind (ex3_2 T T (\lambda (v2: T).(\lambda (_: T).(sty0 g c0 v1 
+v2))) (\lambda (_: T).(\lambda (t3: T).(sty0 g c0 t1 t3))) (\lambda (v2: 
+T).(\lambda (t3: T).(eq T (THead (Flat Appl) v t2) (THead (Flat Cast) v2 
+t3))))) H4))))))))) (\lambda (c0: C).(\lambda (v0: T).(\lambda (v2: 
+T).(\lambda (H1: (sty0 g c0 v0 v2)).(\lambda (H2: (((eq T v0 (THead (Flat 
+Cast) v1 t1)) \to (ex3_2 T T (\lambda (v3: T).(\lambda (_: T).(sty0 g c0 v1 
+v3))) (\lambda (_: T).(\lambda (t2: T).(sty0 g c0 t1 t2))) (\lambda (v3: 
+T).(\lambda (t2: T).(eq T v2 (THead (Flat Cast) v3 t2)))))))).(\lambda (t0: 
+T).(\lambda (t2: T).(\lambda (H3: (sty0 g c0 t0 t2)).(\lambda (H4: (((eq T t0 
+(THead (Flat Cast) v1 t1)) \to (ex3_2 T T (\lambda (v3: T).(\lambda (_: 
+T).(sty0 g c0 v1 v3))) (\lambda (_: T).(\lambda (t3: T).(sty0 g c0 t1 t3))) 
+(\lambda (v3: T).(\lambda (t3: T).(eq T t2 (THead (Flat Cast) v3 
+t3)))))))).(\lambda (H5: (eq T (THead (Flat Cast) v0 t0) (THead (Flat Cast) 
+v1 t1))).(let H6 \def (f_equal T T (\lambda (e: T).(match e in T return 
+(\lambda (_: T).T) with [(TSort _) \Rightarrow v0 | (TLRef _) \Rightarrow v0 
+| (THead _ t _) \Rightarrow t])) (THead (Flat Cast) v0 t0) (THead (Flat Cast) 
+v1 t1) H5) in ((let H7 \def (f_equal T T (\lambda (e: T).(match e in T return 
+(\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 
+| (THead _ _ t) \Rightarrow t])) (THead (Flat Cast) v0 t0) (THead (Flat Cast) 
+v1 t1) H5) in (\lambda (H8: (eq T v0 v1)).(let H9 \def (eq_ind T t0 (\lambda 
+(t: T).((eq T t (THead (Flat Cast) v1 t1)) \to (ex3_2 T T (\lambda (v3: 
+T).(\lambda (_: T).(sty0 g c0 v1 v3))) (\lambda (_: T).(\lambda (t3: T).(sty0 
+g c0 t1 t3))) (\lambda (v3: T).(\lambda (t3: T).(eq T t2 (THead (Flat Cast) 
+v3 t3))))))) H4 t1 H7) in (let H10 \def (eq_ind T t0 (\lambda (t: T).(sty0 g 
+c0 t t2)) H3 t1 H7) in (let H11 \def (eq_ind T v0 (\lambda (t: T).((eq T t 
+(THead (Flat Cast) v1 t1)) \to (ex3_2 T T (\lambda (v3: T).(\lambda (_: 
+T).(sty0 g c0 v1 v3))) (\lambda (_: T).(\lambda (t3: T).(sty0 g c0 t1 t3))) 
+(\lambda (v3: T).(\lambda (t3: T).(eq T v2 (THead (Flat Cast) v3 t3))))))) H2 
+v1 H8) in (let H12 \def (eq_ind T v0 (\lambda (t: T).(sty0 g c0 t v2)) H1 v1 
+H8) in (ex3_2_intro T T (\lambda (v3: T).(\lambda (_: T).(sty0 g c0 v1 v3))) 
+(\lambda (_: T).(\lambda (t3: T).(sty0 g c0 t1 t3))) (\lambda (v3: 
+T).(\lambda (t3: T).(eq T (THead (Flat Cast) v2 t2) (THead (Flat Cast) v3 
+t3)))) v2 t2 H12 H10 (refl_equal T (THead (Flat Cast) v2 t2))))))))) 
+H6)))))))))))) c y x H0))) H)))))).
+
diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty0/props.ma b/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty0/props.ma
new file mode 100644 (file)
index 0000000..7709a86
--- /dev/null
@@ -0,0 +1,211 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "LambdaDelta-1/sty0/defs.ma".
+
+include "LambdaDelta-1/getl/drop.ma".
+
+theorem sty0_lift:
+ \forall (g: G).(\forall (e: C).(\forall (t1: T).(\forall (t2: T).((sty0 g e 
+t1 t2) \to (\forall (c: C).(\forall (h: nat).(\forall (d: nat).((drop h d c 
+e) \to (sty0 g c (lift h d t1) (lift h d t2))))))))))
+\def
+ \lambda (g: G).(\lambda (e: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
+(H: (sty0 g e t1 t2)).(sty0_ind g (\lambda (c: C).(\lambda (t: T).(\lambda 
+(t0: T).(\forall (c0: C).(\forall (h: nat).(\forall (d: nat).((drop h d c0 c) 
+\to (sty0 g c0 (lift h d t) (lift h d t0))))))))) (\lambda (c: C).(\lambda 
+(n: nat).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (_: 
+(drop h d c0 c)).(eq_ind_r T (TSort n) (\lambda (t: T).(sty0 g c0 t (lift h d 
+(TSort (next g n))))) (eq_ind_r T (TSort (next g n)) (\lambda (t: T).(sty0 g 
+c0 (TSort n) t)) (sty0_sort g c0 n) (lift h d (TSort (next g n))) (lift_sort 
+(next g n) h d)) (lift h d (TSort n)) (lift_sort n h d)))))))) (\lambda (c: 
+C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda (H0: (getl i c 
+(CHead d (Bind Abbr) v))).(\lambda (w: T).(\lambda (H1: (sty0 g d v 
+w)).(\lambda (H2: ((\forall (c0: C).(\forall (h: nat).(\forall (d0: 
+nat).((drop h d0 c0 d) \to (sty0 g c0 (lift h d0 v) (lift h d0 
+w)))))))).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d0: nat).(\lambda (H3: 
+(drop h d0 c0 c)).(lt_le_e i d0 (sty0 g c0 (lift h d0 (TLRef i)) (lift h d0 
+(lift (S i) O w))) (\lambda (H4: (lt i d0)).(let H5 \def (drop_getl_trans_le 
+i d0 (le_S_n i d0 (le_S (S i) d0 H4)) c0 c h H3 (CHead d (Bind Abbr) v) H0) 
+in (ex3_2_ind C C (\lambda (e0: C).(\lambda (_: C).(drop i O c0 e0))) 
+(\lambda (e0: C).(\lambda (e1: C).(drop h (minus d0 i) e0 e1))) (\lambda (_: 
+C).(\lambda (e1: C).(clear e1 (CHead d (Bind Abbr) v)))) (sty0 g c0 (lift h 
+d0 (TLRef i)) (lift h d0 (lift (S i) O w))) (\lambda (x0: C).(\lambda (x1: 
+C).(\lambda (H6: (drop i O c0 x0)).(\lambda (H7: (drop h (minus d0 i) x0 
+x1)).(\lambda (H8: (clear x1 (CHead d (Bind Abbr) v))).(let H9 \def (eq_ind 
+nat (minus d0 i) (\lambda (n: nat).(drop h n x0 x1)) H7 (S (minus d0 (S i))) 
+(minus_x_Sy d0 i H4)) in (let H10 \def (drop_clear_S x1 x0 h (minus d0 (S i)) 
+H9 Abbr d v H8) in (ex2_ind C (\lambda (c1: C).(clear x0 (CHead c1 (Bind 
+Abbr) (lift h (minus d0 (S i)) v)))) (\lambda (c1: C).(drop h (minus d0 (S 
+i)) c1 d)) (sty0 g c0 (lift h d0 (TLRef i)) (lift h d0 (lift (S i) O w))) 
+(\lambda (x: C).(\lambda (H11: (clear x0 (CHead x (Bind Abbr) (lift h (minus 
+d0 (S i)) v)))).(\lambda (H12: (drop h (minus d0 (S i)) x d)).(eq_ind_r T 
+(TLRef i) (\lambda (t: T).(sty0 g c0 t (lift h d0 (lift (S i) O w)))) (eq_ind 
+nat (plus (S i) (minus d0 (S i))) (\lambda (n: nat).(sty0 g c0 (TLRef i) 
+(lift h n (lift (S i) O w)))) (eq_ind_r T (lift (S i) O (lift h (minus d0 (S 
+i)) w)) (\lambda (t: T).(sty0 g c0 (TLRef i) t)) (eq_ind nat d0 (\lambda (_: 
+nat).(sty0 g c0 (TLRef i) (lift (S i) O (lift h (minus d0 (S i)) w)))) 
+(sty0_abbr g c0 x (lift h (minus d0 (S i)) v) i (getl_intro i c0 (CHead x 
+(Bind Abbr) (lift h (minus d0 (S i)) v)) x0 H6 H11) (lift h (minus d0 (S i)) 
+w) (H2 x h (minus d0 (S i)) H12)) (plus (S i) (minus d0 (S i))) 
+(le_plus_minus (S i) d0 H4)) (lift h (plus (S i) (minus d0 (S i))) (lift (S 
+i) O w)) (lift_d w h (S i) (minus d0 (S i)) O (le_O_n (minus d0 (S i))))) d0 
+(le_plus_minus_r (S i) d0 H4)) (lift h d0 (TLRef i)) (lift_lref_lt i h d0 
+H4))))) H10)))))))) H5))) (\lambda (H4: (le d0 i)).(eq_ind_r T (TLRef (plus i 
+h)) (\lambda (t: T).(sty0 g c0 t (lift h d0 (lift (S i) O w)))) (eq_ind nat 
+(S i) (\lambda (_: nat).(sty0 g c0 (TLRef (plus i h)) (lift h d0 (lift (S i) 
+O w)))) (eq_ind_r T (lift (plus h (S i)) O w) (\lambda (t: T).(sty0 g c0 
+(TLRef (plus i h)) t)) (eq_ind_r nat (plus (S i) h) (\lambda (n: nat).(sty0 g 
+c0 (TLRef (plus i h)) (lift n O w))) (sty0_abbr g c0 d v (plus i h) 
+(drop_getl_trans_ge i c0 c d0 h H3 (CHead d (Bind Abbr) v) H0 H4) w H1) (plus 
+h (S i)) (plus_sym h (S i))) (lift h d0 (lift (S i) O w)) (lift_free w (S i) 
+h O d0 (le_S d0 i H4) (le_O_n d0))) (plus i (S O)) (eq_ind_r nat (plus (S O) 
+i) (\lambda (n: nat).(eq nat (S i) n)) (refl_equal nat (plus (S O) i)) (plus 
+i (S O)) (plus_sym i (S O)))) (lift h d0 (TLRef i)) (lift_lref_ge i h d0 
+H4)))))))))))))))) (\lambda (c: C).(\lambda (d: C).(\lambda (v: T).(\lambda 
+(i: nat).(\lambda (H0: (getl i c (CHead d (Bind Abst) v))).(\lambda (w: 
+T).(\lambda (H1: (sty0 g d v w)).(\lambda (H2: ((\forall (c0: C).(\forall (h: 
+nat).(\forall (d0: nat).((drop h d0 c0 d) \to (sty0 g c0 (lift h d0 v) (lift 
+h d0 w)))))))).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d0: nat).(\lambda 
+(H3: (drop h d0 c0 c)).(lt_le_e i d0 (sty0 g c0 (lift h d0 (TLRef i)) (lift h 
+d0 (lift (S i) O v))) (\lambda (H4: (lt i d0)).(let H5 \def 
+(drop_getl_trans_le i d0 (le_S_n i d0 (le_S (S i) d0 H4)) c0 c h H3 (CHead d 
+(Bind Abst) v) H0) in (ex3_2_ind C C (\lambda (e0: C).(\lambda (_: C).(drop i 
+O c0 e0))) (\lambda (e0: C).(\lambda (e1: C).(drop h (minus d0 i) e0 e1))) 
+(\lambda (_: C).(\lambda (e1: C).(clear e1 (CHead d (Bind Abst) v)))) (sty0 g 
+c0 (lift h d0 (TLRef i)) (lift h d0 (lift (S i) O v))) (\lambda (x0: 
+C).(\lambda (x1: C).(\lambda (H6: (drop i O c0 x0)).(\lambda (H7: (drop h 
+(minus d0 i) x0 x1)).(\lambda (H8: (clear x1 (CHead d (Bind Abst) v))).(let 
+H9 \def (eq_ind nat (minus d0 i) (\lambda (n: nat).(drop h n x0 x1)) H7 (S 
+(minus d0 (S i))) (minus_x_Sy d0 i H4)) in (let H10 \def (drop_clear_S x1 x0 
+h (minus d0 (S i)) H9 Abst d v H8) in (ex2_ind C (\lambda (c1: C).(clear x0 
+(CHead c1 (Bind Abst) (lift h (minus d0 (S i)) v)))) (\lambda (c1: C).(drop h 
+(minus d0 (S i)) c1 d)) (sty0 g c0 (lift h d0 (TLRef i)) (lift h d0 (lift (S 
+i) O v))) (\lambda (x: C).(\lambda (H11: (clear x0 (CHead x (Bind Abst) (lift 
+h (minus d0 (S i)) v)))).(\lambda (H12: (drop h (minus d0 (S i)) x 
+d)).(eq_ind_r T (TLRef i) (\lambda (t: T).(sty0 g c0 t (lift h d0 (lift (S i) 
+O v)))) (eq_ind nat (plus (S i) (minus d0 (S i))) (\lambda (n: nat).(sty0 g 
+c0 (TLRef i) (lift h n (lift (S i) O v)))) (eq_ind_r T (lift (S i) O (lift h 
+(minus d0 (S i)) v)) (\lambda (t: T).(sty0 g c0 (TLRef i) t)) (eq_ind nat d0 
+(\lambda (_: nat).(sty0 g c0 (TLRef i) (lift (S i) O (lift h (minus d0 (S i)) 
+v)))) (sty0_abst g c0 x (lift h (minus d0 (S i)) v) i (getl_intro i c0 (CHead 
+x (Bind Abst) (lift h (minus d0 (S i)) v)) x0 H6 H11) (lift h (minus d0 (S 
+i)) w) (H2 x h (minus d0 (S i)) H12)) (plus (S i) (minus d0 (S i))) 
+(le_plus_minus (S i) d0 H4)) (lift h (plus (S i) (minus d0 (S i))) (lift (S 
+i) O v)) (lift_d v h (S i) (minus d0 (S i)) O (le_O_n (minus d0 (S i))))) d0 
+(le_plus_minus_r (S i) d0 H4)) (lift h d0 (TLRef i)) (lift_lref_lt i h d0 
+H4))))) H10)))))))) H5))) (\lambda (H4: (le d0 i)).(eq_ind_r T (TLRef (plus i 
+h)) (\lambda (t: T).(sty0 g c0 t (lift h d0 (lift (S i) O v)))) (eq_ind nat 
+(S i) (\lambda (_: nat).(sty0 g c0 (TLRef (plus i h)) (lift h d0 (lift (S i) 
+O v)))) (eq_ind_r T (lift (plus h (S i)) O v) (\lambda (t: T).(sty0 g c0 
+(TLRef (plus i h)) t)) (eq_ind_r nat (plus (S i) h) (\lambda (n: nat).(sty0 g 
+c0 (TLRef (plus i h)) (lift n O v))) (sty0_abst g c0 d v (plus i h) 
+(drop_getl_trans_ge i c0 c d0 h H3 (CHead d (Bind Abst) v) H0 H4) w H1) (plus 
+h (S i)) (plus_sym h (S i))) (lift h d0 (lift (S i) O v)) (lift_free v (S i) 
+h O d0 (le_S d0 i H4) (le_O_n d0))) (plus i (S O)) (eq_ind_r nat (plus (S O) 
+i) (\lambda (n: nat).(eq nat (S i) n)) (refl_equal nat (plus (S O) i)) (plus 
+i (S O)) (plus_sym i (S O)))) (lift h d0 (TLRef i)) (lift_lref_ge i h d0 
+H4)))))))))))))))) (\lambda (b: B).(\lambda (c: C).(\lambda (v: T).(\lambda 
+(t3: T).(\lambda (t4: T).(\lambda (_: (sty0 g (CHead c (Bind b) v) t3 
+t4)).(\lambda (H1: ((\forall (c0: C).(\forall (h: nat).(\forall (d: 
+nat).((drop h d c0 (CHead c (Bind b) v)) \to (sty0 g c0 (lift h d t3) (lift h 
+d t4)))))))).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda 
+(H2: (drop h d c0 c)).(eq_ind_r T (THead (Bind b) (lift h d v) (lift h (s 
+(Bind b) d) t3)) (\lambda (t: T).(sty0 g c0 t (lift h d (THead (Bind b) v 
+t4)))) (eq_ind_r T (THead (Bind b) (lift h d v) (lift h (s (Bind b) d) t4)) 
+(\lambda (t: T).(sty0 g c0 (THead (Bind b) (lift h d v) (lift h (s (Bind b) 
+d) t3)) t)) (sty0_bind g b c0 (lift h d v) (lift h (S d) t3) (lift h (S d) 
+t4) (H1 (CHead c0 (Bind b) (lift h d v)) h (S d) (drop_skip_bind h d c0 c H2 
+b v))) (lift h d (THead (Bind b) v t4)) (lift_head (Bind b) v t4 h d)) (lift 
+h d (THead (Bind b) v t3)) (lift_head (Bind b) v t3 h d))))))))))))) (\lambda 
+(c: C).(\lambda (v: T).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (sty0 g 
+c t3 t4)).(\lambda (H1: ((\forall (c0: C).(\forall (h: nat).(\forall (d: 
+nat).((drop h d c0 c) \to (sty0 g c0 (lift h d t3) (lift h d 
+t4)))))))).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H2: 
+(drop h d c0 c)).(eq_ind_r T (THead (Flat Appl) (lift h d v) (lift h (s (Flat 
+Appl) d) t3)) (\lambda (t: T).(sty0 g c0 t (lift h d (THead (Flat Appl) v 
+t4)))) (eq_ind_r T (THead (Flat Appl) (lift h d v) (lift h (s (Flat Appl) d) 
+t4)) (\lambda (t: T).(sty0 g c0 (THead (Flat Appl) (lift h d v) (lift h (s 
+(Flat Appl) d) t3)) t)) (sty0_appl g c0 (lift h d v) (lift h (s (Flat Appl) 
+d) t3) (lift h (s (Flat Appl) d) t4) (H1 c0 h (s (Flat Appl) d) H2)) (lift h 
+d (THead (Flat Appl) v t4)) (lift_head (Flat Appl) v t4 h d)) (lift h d 
+(THead (Flat Appl) v t3)) (lift_head (Flat Appl) v t3 h d)))))))))))) 
+(\lambda (c: C).(\lambda (v1: T).(\lambda (v2: T).(\lambda (_: (sty0 g c v1 
+v2)).(\lambda (H1: ((\forall (c0: C).(\forall (h: nat).(\forall (d: 
+nat).((drop h d c0 c) \to (sty0 g c0 (lift h d v1) (lift h d 
+v2)))))))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (sty0 g c t3 
+t4)).(\lambda (H3: ((\forall (c0: C).(\forall (h: nat).(\forall (d: 
+nat).((drop h d c0 c) \to (sty0 g c0 (lift h d t3) (lift h d 
+t4)))))))).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H4: 
+(drop h d c0 c)).(eq_ind_r T (THead (Flat Cast) (lift h d v1) (lift h (s 
+(Flat Cast) d) t3)) (\lambda (t: T).(sty0 g c0 t (lift h d (THead (Flat Cast) 
+v2 t4)))) (eq_ind_r T (THead (Flat Cast) (lift h d v2) (lift h (s (Flat Cast) 
+d) t4)) (\lambda (t: T).(sty0 g c0 (THead (Flat Cast) (lift h d v1) (lift h 
+(s (Flat Cast) d) t3)) t)) (sty0_cast g c0 (lift h d v1) (lift h d v2) (H1 c0 
+h d H4) (lift h (s (Flat Cast) d) t3) (lift h (s (Flat Cast) d) t4) (H3 c0 h 
+(s (Flat Cast) d) H4)) (lift h d (THead (Flat Cast) v2 t4)) (lift_head (Flat 
+Cast) v2 t4 h d)) (lift h d (THead (Flat Cast) v1 t3)) (lift_head (Flat Cast) 
+v1 t3 h d))))))))))))))) e t1 t2 H))))).
+
+theorem sty0_correct:
+ \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t: T).((sty0 g c 
+t1 t) \to (ex T (\lambda (t2: T).(sty0 g c t t2)))))))
+\def
+ \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: 
+(sty0 g c t1 t)).(sty0_ind g (\lambda (c0: C).(\lambda (_: T).(\lambda (t2: 
+T).(ex T (\lambda (t3: T).(sty0 g c0 t2 t3)))))) (\lambda (c0: C).(\lambda 
+(n: nat).(ex_intro T (\lambda (t2: T).(sty0 g c0 (TSort (next g n)) t2)) 
+(TSort (next g (next g n))) (sty0_sort g c0 (next g n))))) (\lambda (c0: 
+C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda (H0: (getl i c0 
+(CHead d (Bind Abbr) v))).(\lambda (w: T).(\lambda (_: (sty0 g d v 
+w)).(\lambda (H2: (ex T (\lambda (t2: T).(sty0 g d w t2)))).(let H3 \def H2 
+in (ex_ind T (\lambda (t2: T).(sty0 g d w t2)) (ex T (\lambda (t2: T).(sty0 g 
+c0 (lift (S i) O w) t2))) (\lambda (x: T).(\lambda (H4: (sty0 g d w 
+x)).(ex_intro T (\lambda (t2: T).(sty0 g c0 (lift (S i) O w) t2)) (lift (S i) 
+O x) (sty0_lift g d w x H4 c0 (S i) O (getl_drop Abbr c0 d v i H0))))) 
+H3)))))))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: 
+nat).(\lambda (H0: (getl i c0 (CHead d (Bind Abst) v))).(\lambda (w: 
+T).(\lambda (H1: (sty0 g d v w)).(\lambda (H2: (ex T (\lambda (t2: T).(sty0 g 
+d w t2)))).(let H3 \def H2 in (ex_ind T (\lambda (t2: T).(sty0 g d w t2)) (ex 
+T (\lambda (t2: T).(sty0 g c0 (lift (S i) O v) t2))) (\lambda (x: T).(\lambda 
+(_: (sty0 g d w x)).(ex_intro T (\lambda (t2: T).(sty0 g c0 (lift (S i) O v) 
+t2)) (lift (S i) O w) (sty0_lift g d v w H1 c0 (S i) O (getl_drop Abst c0 d v 
+i H0))))) H3)))))))))) (\lambda (b: B).(\lambda (c0: C).(\lambda (v: 
+T).(\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (sty0 g (CHead c0 (Bind b) 
+v) t2 t3)).(\lambda (H1: (ex T (\lambda (t4: T).(sty0 g (CHead c0 (Bind b) v) 
+t3 t4)))).(let H2 \def H1 in (ex_ind T (\lambda (t4: T).(sty0 g (CHead c0 
+(Bind b) v) t3 t4)) (ex T (\lambda (t4: T).(sty0 g c0 (THead (Bind b) v t3) 
+t4))) (\lambda (x: T).(\lambda (H3: (sty0 g (CHead c0 (Bind b) v) t3 
+x)).(ex_intro T (\lambda (t4: T).(sty0 g c0 (THead (Bind b) v t3) t4)) (THead 
+(Bind b) v x) (sty0_bind g b c0 v t3 x H3)))) H2))))))))) (\lambda (c0: 
+C).(\lambda (v: T).(\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (sty0 g c0 
+t2 t3)).(\lambda (H1: (ex T (\lambda (t4: T).(sty0 g c0 t3 t4)))).(let H2 
+\def H1 in (ex_ind T (\lambda (t4: T).(sty0 g c0 t3 t4)) (ex T (\lambda (t4: 
+T).(sty0 g c0 (THead (Flat Appl) v t3) t4))) (\lambda (x: T).(\lambda (H3: 
+(sty0 g c0 t3 x)).(ex_intro T (\lambda (t4: T).(sty0 g c0 (THead (Flat Appl) 
+v t3) t4)) (THead (Flat Appl) v x) (sty0_appl g c0 v t3 x H3)))) H2)))))))) 
+(\lambda (c0: C).(\lambda (v1: T).(\lambda (v2: T).(\lambda (_: (sty0 g c0 v1 
+v2)).(\lambda (H1: (ex T (\lambda (t2: T).(sty0 g c0 v2 t2)))).(\lambda (t2: 
+T).(\lambda (t3: T).(\lambda (_: (sty0 g c0 t2 t3)).(\lambda (H3: (ex T 
+(\lambda (t4: T).(sty0 g c0 t3 t4)))).(let H4 \def H1 in (ex_ind T (\lambda 
+(t4: T).(sty0 g c0 v2 t4)) (ex T (\lambda (t4: T).(sty0 g c0 (THead (Flat 
+Cast) v2 t3) t4))) (\lambda (x: T).(\lambda (H5: (sty0 g c0 v2 x)).(let H6 
+\def H3 in (ex_ind T (\lambda (t4: T).(sty0 g c0 t3 t4)) (ex T (\lambda (t4: 
+T).(sty0 g c0 (THead (Flat Cast) v2 t3) t4))) (\lambda (x0: T).(\lambda (H7: 
+(sty0 g c0 t3 x0)).(ex_intro T (\lambda (t4: T).(sty0 g c0 (THead (Flat Cast) 
+v2 t3) t4)) (THead (Flat Cast) x x0) (sty0_cast g c0 v2 x H5 t3 x0 H7)))) 
+H6)))) H4))))))))))) c t1 t H))))).
+
diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty1/cnt.ma b/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty1/cnt.ma
new file mode 100644 (file)
index 0000000..f5d71c1
--- /dev/null
@@ -0,0 +1,86 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "LambdaDelta-1/sty1/props.ma".
+
+include "LambdaDelta-1/cnt/props.ma".
+
+theorem sty1_cnt:
+ \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t: T).((sty0 g c 
+t1 t) \to (ex2 T (\lambda (t2: T).(sty1 g c t1 t2)) (\lambda (t2: T).(cnt 
+t2)))))))
+\def
+ \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: 
+(sty0 g c t1 t)).(sty0_ind g (\lambda (c0: C).(\lambda (t0: T).(\lambda (_: 
+T).(ex2 T (\lambda (t3: T).(sty1 g c0 t0 t3)) (\lambda (t3: T).(cnt t3)))))) 
+(\lambda (c0: C).(\lambda (n: nat).(ex_intro2 T (\lambda (t2: T).(sty1 g c0 
+(TSort n) t2)) (\lambda (t2: T).(cnt t2)) (TSort (next g n)) (sty1_sty0 g c0 
+(TSort n) (TSort (next g n)) (sty0_sort g c0 n)) (cnt_sort (next g n))))) 
+(\lambda (c0: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda 
+(H0: (getl i c0 (CHead d (Bind Abbr) v))).(\lambda (w: T).(\lambda (_: (sty0 
+g d v w)).(\lambda (H2: (ex2 T (\lambda (t2: T).(sty1 g d v t2)) (\lambda 
+(t2: T).(cnt t2)))).(let H3 \def H2 in (ex2_ind T (\lambda (t2: T).(sty1 g d 
+v t2)) (\lambda (t2: T).(cnt t2)) (ex2 T (\lambda (t2: T).(sty1 g c0 (TLRef 
+i) t2)) (\lambda (t2: T).(cnt t2))) (\lambda (x: T).(\lambda (H4: (sty1 g d v 
+x)).(\lambda (H5: (cnt x)).(ex_intro2 T (\lambda (t2: T).(sty1 g c0 (TLRef i) 
+t2)) (\lambda (t2: T).(cnt t2)) (lift (S i) O x) (sty1_abbr g c0 d v i H0 x 
+H4) (cnt_lift x H5 (S i) O))))) H3)))))))))) (\lambda (c0: C).(\lambda (d: 
+C).(\lambda (v: T).(\lambda (i: nat).(\lambda (H0: (getl i c0 (CHead d (Bind 
+Abst) v))).(\lambda (w: T).(\lambda (H1: (sty0 g d v w)).(\lambda (H2: (ex2 T 
+(\lambda (t2: T).(sty1 g d v t2)) (\lambda (t2: T).(cnt t2)))).(let H3 \def 
+H2 in (ex2_ind T (\lambda (t2: T).(sty1 g d v t2)) (\lambda (t2: T).(cnt t2)) 
+(ex2 T (\lambda (t2: T).(sty1 g c0 (TLRef i) t2)) (\lambda (t2: T).(cnt t2))) 
+(\lambda (x: T).(\lambda (H4: (sty1 g d v x)).(\lambda (H5: (cnt 
+x)).(ex_intro2 T (\lambda (t2: T).(sty1 g c0 (TLRef i) t2)) (\lambda (t2: 
+T).(cnt t2)) (lift (S i) O x) (sty1_trans g c0 (TLRef i) (lift (S i) O v) 
+(sty1_sty0 g c0 (TLRef i) (lift (S i) O v) (sty0_abst g c0 d v i H0 w H1)) 
+(lift (S i) O x) (sty1_lift g d v x H4 c0 (S i) O (getl_drop Abst c0 d v i 
+H0))) (cnt_lift x H5 (S i) O))))) H3)))))))))) (\lambda (b: B).(\lambda (c0: 
+C).(\lambda (v: T).(\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (sty0 g 
+(CHead c0 (Bind b) v) t2 t3)).(\lambda (H1: (ex2 T (\lambda (t4: T).(sty1 g 
+(CHead c0 (Bind b) v) t2 t4)) (\lambda (t4: T).(cnt t4)))).(let H2 \def H1 in 
+(ex2_ind T (\lambda (t4: T).(sty1 g (CHead c0 (Bind b) v) t2 t4)) (\lambda 
+(t4: T).(cnt t4)) (ex2 T (\lambda (t4: T).(sty1 g c0 (THead (Bind b) v t2) 
+t4)) (\lambda (t4: T).(cnt t4))) (\lambda (x: T).(\lambda (H3: (sty1 g (CHead 
+c0 (Bind b) v) t2 x)).(\lambda (H4: (cnt x)).(ex_intro2 T (\lambda (t4: 
+T).(sty1 g c0 (THead (Bind b) v t2) t4)) (\lambda (t4: T).(cnt t4)) (THead 
+(Bind b) v x) (sty1_bind g b c0 v t2 x H3) (cnt_head x H4 (Bind b) v))))) 
+H2))))))))) (\lambda (c0: C).(\lambda (v: T).(\lambda (t2: T).(\lambda (t3: 
+T).(\lambda (_: (sty0 g c0 t2 t3)).(\lambda (H1: (ex2 T (\lambda (t4: 
+T).(sty1 g c0 t2 t4)) (\lambda (t4: T).(cnt t4)))).(let H2 \def H1 in 
+(ex2_ind T (\lambda (t4: T).(sty1 g c0 t2 t4)) (\lambda (t4: T).(cnt t4)) 
+(ex2 T (\lambda (t4: T).(sty1 g c0 (THead (Flat Appl) v t2) t4)) (\lambda 
+(t4: T).(cnt t4))) (\lambda (x: T).(\lambda (H3: (sty1 g c0 t2 x)).(\lambda 
+(H4: (cnt x)).(ex_intro2 T (\lambda (t4: T).(sty1 g c0 (THead (Flat Appl) v 
+t2) t4)) (\lambda (t4: T).(cnt t4)) (THead (Flat Appl) v x) (sty1_appl g c0 v 
+t2 x H3) (cnt_head x H4 (Flat Appl) v))))) H2)))))))) (\lambda (c0: 
+C).(\lambda (v1: T).(\lambda (v2: T).(\lambda (H0: (sty0 g c0 v1 
+v2)).(\lambda (_: (ex2 T (\lambda (t2: T).(sty1 g c0 v1 t2)) (\lambda (t2: 
+T).(cnt t2)))).(\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (sty0 g c0 t2 
+t3)).(\lambda (H3: (ex2 T (\lambda (t4: T).(sty1 g c0 t2 t4)) (\lambda (t4: 
+T).(cnt t4)))).(let H4 \def H3 in (ex2_ind T (\lambda (t4: T).(sty1 g c0 t2 
+t4)) (\lambda (t4: T).(cnt t4)) (ex2 T (\lambda (t4: T).(sty1 g c0 (THead 
+(Flat Cast) v1 t2) t4)) (\lambda (t4: T).(cnt t4))) (\lambda (x: T).(\lambda 
+(H5: (sty1 g c0 t2 x)).(\lambda (H6: (cnt x)).(let H_x \def (sty1_cast2 g c0 
+t2 x H5 v1 v2 H0) in (let H7 \def H_x in (ex2_ind T (\lambda (v3: T).(sty1 g 
+c0 v1 v3)) (\lambda (v3: T).(sty1 g c0 (THead (Flat Cast) v1 t2) (THead (Flat 
+Cast) v3 x))) (ex2 T (\lambda (t4: T).(sty1 g c0 (THead (Flat Cast) v1 t2) 
+t4)) (\lambda (t4: T).(cnt t4))) (\lambda (x0: T).(\lambda (_: (sty1 g c0 v1 
+x0)).(\lambda (H9: (sty1 g c0 (THead (Flat Cast) v1 t2) (THead (Flat Cast) x0 
+x))).(ex_intro2 T (\lambda (t4: T).(sty1 g c0 (THead (Flat Cast) v1 t2) t4)) 
+(\lambda (t4: T).(cnt t4)) (THead (Flat Cast) x0 x) H9 (cnt_head x H6 (Flat 
+Cast) x0))))) H7)))))) H4))))))))))) c t1 t H))))).
+
diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty1/defs.ma b/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty1/defs.ma
new file mode 100644 (file)
index 0000000..711bcc4
--- /dev/null
@@ -0,0 +1,23 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "LambdaDelta-1/sty0/defs.ma".
+
+inductive sty1 (g: G) (c: C) (t1: T): T \to Prop \def
+| sty1_sty0: \forall (t2: T).((sty0 g c t1 t2) \to (sty1 g c t1 t2))
+| sty1_sing: \forall (t: T).((sty1 g c t1 t) \to (\forall (t2: T).((sty0 g c 
+t t2) \to (sty1 g c t1 t2)))).
+
diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty1/props.ma b/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/sty1/props.ma
new file mode 100644 (file)
index 0000000..0dec20c
--- /dev/null
@@ -0,0 +1,142 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "LambdaDelta-1/sty1/defs.ma".
+
+include "LambdaDelta-1/sty0/props.ma".
+
+theorem sty1_trans:
+ \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t: T).((sty1 g c 
+t1 t) \to (\forall (t2: T).((sty1 g c t t2) \to (sty1 g c t1 t2)))))))
+\def
+ \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: 
+(sty1 g c t1 t)).(\lambda (t2: T).(\lambda (H0: (sty1 g c t t2)).(sty1_ind g 
+c t (\lambda (t0: T).(sty1 g c t1 t0)) (\lambda (t3: T).(\lambda (H1: (sty0 g 
+c t t3)).(sty1_sing g c t1 t H t3 H1))) (\lambda (t0: T).(\lambda (_: (sty1 g 
+c t t0)).(\lambda (H2: (sty1 g c t1 t0)).(\lambda (t3: T).(\lambda (H3: (sty0 
+g c t0 t3)).(sty1_sing g c t1 t0 H2 t3 H3)))))) t2 H0))))))).
+
+theorem sty1_bind:
+ \forall (g: G).(\forall (b: B).(\forall (c: C).(\forall (v: T).(\forall (t1: 
+T).(\forall (t2: T).((sty1 g (CHead c (Bind b) v) t1 t2) \to (sty1 g c (THead 
+(Bind b) v t1) (THead (Bind b) v t2))))))))
+\def
+ \lambda (g: G).(\lambda (b: B).(\lambda (c: C).(\lambda (v: T).(\lambda (t1: 
+T).(\lambda (t2: T).(\lambda (H: (sty1 g (CHead c (Bind b) v) t1 
+t2)).(sty1_ind g (CHead c (Bind b) v) t1 (\lambda (t: T).(sty1 g c (THead 
+(Bind b) v t1) (THead (Bind b) v t))) (\lambda (t3: T).(\lambda (H0: (sty0 g 
+(CHead c (Bind b) v) t1 t3)).(sty1_sty0 g c (THead (Bind b) v t1) (THead 
+(Bind b) v t3) (sty0_bind g b c v t1 t3 H0)))) (\lambda (t: T).(\lambda (_: 
+(sty1 g (CHead c (Bind b) v) t1 t)).(\lambda (H1: (sty1 g c (THead (Bind b) v 
+t1) (THead (Bind b) v t))).(\lambda (t3: T).(\lambda (H2: (sty0 g (CHead c 
+(Bind b) v) t t3)).(sty1_sing g c (THead (Bind b) v t1) (THead (Bind b) v t) 
+H1 (THead (Bind b) v t3) (sty0_bind g b c v t t3 H2))))))) t2 H))))))).
+
+theorem sty1_appl:
+ \forall (g: G).(\forall (c: C).(\forall (v: T).(\forall (t1: T).(\forall 
+(t2: T).((sty1 g c t1 t2) \to (sty1 g c (THead (Flat Appl) v t1) (THead (Flat 
+Appl) v t2)))))))
+\def
+ \lambda (g: G).(\lambda (c: C).(\lambda (v: T).(\lambda (t1: T).(\lambda 
+(t2: T).(\lambda (H: (sty1 g c t1 t2)).(sty1_ind g c t1 (\lambda (t: T).(sty1 
+g c (THead (Flat Appl) v t1) (THead (Flat Appl) v t))) (\lambda (t3: 
+T).(\lambda (H0: (sty0 g c t1 t3)).(sty1_sty0 g c (THead (Flat Appl) v t1) 
+(THead (Flat Appl) v t3) (sty0_appl g c v t1 t3 H0)))) (\lambda (t: 
+T).(\lambda (_: (sty1 g c t1 t)).(\lambda (H1: (sty1 g c (THead (Flat Appl) v 
+t1) (THead (Flat Appl) v t))).(\lambda (t3: T).(\lambda (H2: (sty0 g c t 
+t3)).(sty1_sing g c (THead (Flat Appl) v t1) (THead (Flat Appl) v t) H1 
+(THead (Flat Appl) v t3) (sty0_appl g c v t t3 H2))))))) t2 H)))))).
+
+theorem sty1_lift:
+ \forall (g: G).(\forall (e: C).(\forall (t1: T).(\forall (t2: T).((sty1 g e 
+t1 t2) \to (\forall (c: C).(\forall (h: nat).(\forall (d: nat).((drop h d c 
+e) \to (sty1 g c (lift h d t1) (lift h d t2))))))))))
+\def
+ \lambda (g: G).(\lambda (e: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
+(H: (sty1 g e t1 t2)).(sty1_ind g e t1 (\lambda (t: T).(\forall (c: 
+C).(\forall (h: nat).(\forall (d: nat).((drop h d c e) \to (sty1 g c (lift h 
+d t1) (lift h d t))))))) (\lambda (t3: T).(\lambda (H0: (sty0 g e t1 
+t3)).(\lambda (c: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1: (drop 
+h d c e)).(sty1_sty0 g c (lift h d t1) (lift h d t3) (sty0_lift g e t1 t3 H0 
+c h d H1)))))))) (\lambda (t: T).(\lambda (_: (sty1 g e t1 t)).(\lambda (H1: 
+((\forall (c: C).(\forall (h: nat).(\forall (d: nat).((drop h d c e) \to 
+(sty1 g c (lift h d t1) (lift h d t)))))))).(\lambda (t3: T).(\lambda (H2: 
+(sty0 g e t t3)).(\lambda (c: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda 
+(H3: (drop h d c e)).(sty1_sing g c (lift h d t1) (lift h d t) (H1 c h d H3) 
+(lift h d t3) (sty0_lift g e t t3 H2 c h d H3))))))))))) t2 H))))).
+
+theorem sty1_correct:
+ \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t: T).((sty1 g c 
+t1 t) \to (ex T (\lambda (t2: T).(sty0 g c t t2)))))))
+\def
+ \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: 
+(sty1 g c t1 t)).(sty1_ind g c t1 (\lambda (t0: T).(ex T (\lambda (t2: 
+T).(sty0 g c t0 t2)))) (\lambda (t2: T).(\lambda (H0: (sty0 g c t1 
+t2)).(sty0_correct g c t1 t2 H0))) (\lambda (t0: T).(\lambda (_: (sty1 g c t1 
+t0)).(\lambda (_: (ex T (\lambda (t2: T).(sty0 g c t0 t2)))).(\lambda (t2: 
+T).(\lambda (H2: (sty0 g c t0 t2)).(sty0_correct g c t0 t2 H2)))))) t H))))).
+
+theorem sty1_abbr:
+ \forall (g: G).(\forall (c: C).(\forall (d: C).(\forall (v: T).(\forall (i: 
+nat).((getl i c (CHead d (Bind Abbr) v)) \to (\forall (w: T).((sty1 g d v w) 
+\to (sty1 g c (TLRef i) (lift (S i) O w)))))))))
+\def
+ \lambda (g: G).(\lambda (c: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: 
+nat).(\lambda (H: (getl i c (CHead d (Bind Abbr) v))).(\lambda (w: 
+T).(\lambda (H0: (sty1 g d v w)).(sty1_ind g d v (\lambda (t: T).(sty1 g c 
+(TLRef i) (lift (S i) O t))) (\lambda (t2: T).(\lambda (H1: (sty0 g d v 
+t2)).(sty1_sty0 g c (TLRef i) (lift (S i) O t2) (sty0_abbr g c d v i H t2 
+H1)))) (\lambda (t: T).(\lambda (_: (sty1 g d v t)).(\lambda (H2: (sty1 g c 
+(TLRef i) (lift (S i) O t))).(\lambda (t2: T).(\lambda (H3: (sty0 g d t 
+t2)).(sty1_sing g c (TLRef i) (lift (S i) O t) H2 (lift (S i) O t2) 
+(sty0_lift g d t t2 H3 c (S i) O (getl_drop Abbr c d v i H)))))))) w 
+H0)))))))).
+
+theorem sty1_cast2:
+ \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t2: T).((sty1 g c 
+t1 t2) \to (\forall (v1: T).(\forall (v2: T).((sty0 g c v1 v2) \to (ex2 T 
+(\lambda (v3: T).(sty1 g c v1 v3)) (\lambda (v3: T).(sty1 g c (THead (Flat 
+Cast) v1 t1) (THead (Flat Cast) v3 t2)))))))))))
+\def
+ \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
+(H: (sty1 g c t1 t2)).(sty1_ind g c t1 (\lambda (t: T).(\forall (v1: 
+T).(\forall (v2: T).((sty0 g c v1 v2) \to (ex2 T (\lambda (v3: T).(sty1 g c 
+v1 v3)) (\lambda (v3: T).(sty1 g c (THead (Flat Cast) v1 t1) (THead (Flat 
+Cast) v3 t)))))))) (\lambda (t3: T).(\lambda (H0: (sty0 g c t1 t3)).(\lambda 
+(v1: T).(\lambda (v2: T).(\lambda (H1: (sty0 g c v1 v2)).(ex_intro2 T 
+(\lambda (v3: T).(sty1 g c v1 v3)) (\lambda (v3: T).(sty1 g c (THead (Flat 
+Cast) v1 t1) (THead (Flat Cast) v3 t3))) v2 (sty1_sty0 g c v1 v2 H1) 
+(sty1_sty0 g c (THead (Flat Cast) v1 t1) (THead (Flat Cast) v2 t3) (sty0_cast 
+g c v1 v2 H1 t1 t3 H0)))))))) (\lambda (t: T).(\lambda (_: (sty1 g c t1 
+t)).(\lambda (H1: ((\forall (v1: T).(\forall (v2: T).((sty0 g c v1 v2) \to 
+(ex2 T (\lambda (v3: T).(sty1 g c v1 v3)) (\lambda (v3: T).(sty1 g c (THead 
+(Flat Cast) v1 t1) (THead (Flat Cast) v3 t))))))))).(\lambda (t3: T).(\lambda 
+(H2: (sty0 g c t t3)).(\lambda (v1: T).(\lambda (v2: T).(\lambda (H3: (sty0 g 
+c v1 v2)).(let H_x \def (H1 v1 v2 H3) in (let H4 \def H_x in (ex2_ind T 
+(\lambda (v3: T).(sty1 g c v1 v3)) (\lambda (v3: T).(sty1 g c (THead (Flat 
+Cast) v1 t1) (THead (Flat Cast) v3 t))) (ex2 T (\lambda (v3: T).(sty1 g c v1 
+v3)) (\lambda (v3: T).(sty1 g c (THead (Flat Cast) v1 t1) (THead (Flat Cast) 
+v3 t3)))) (\lambda (x: T).(\lambda (H5: (sty1 g c v1 x)).(\lambda (H6: (sty1 
+g c (THead (Flat Cast) v1 t1) (THead (Flat Cast) x t))).(let H_x0 \def 
+(sty1_correct g c v1 x H5) in (let H7 \def H_x0 in (ex_ind T (\lambda (t4: 
+T).(sty0 g c x t4)) (ex2 T (\lambda (v3: T).(sty1 g c v1 v3)) (\lambda (v3: 
+T).(sty1 g c (THead (Flat Cast) v1 t1) (THead (Flat Cast) v3 t3)))) (\lambda 
+(x0: T).(\lambda (H8: (sty0 g c x x0)).(ex_intro2 T (\lambda (v3: T).(sty1 g 
+c v1 v3)) (\lambda (v3: T).(sty1 g c (THead (Flat Cast) v1 t1) (THead (Flat 
+Cast) v3 t3))) x0 (sty1_sing g c v1 x H5 x0 H8) (sty1_sing g c (THead (Flat 
+Cast) v1 t1) (THead (Flat Cast) x t) H6 (THead (Flat Cast) x0 t3) (sty0_cast 
+g c x x0 H8 t t3 H2))))) H7)))))) H4))))))))))) t2 H))))).
+
diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau0/defs.ma b/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau0/defs.ma
deleted file mode 100644 (file)
index 58ff7e1..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "LambdaDelta-1/G/defs.ma".
-
-include "LambdaDelta-1/getl/defs.ma".
-
-inductive tau0 (g: G): C \to (T \to (T \to Prop)) \def
-| tau0_sort: \forall (c: C).(\forall (n: nat).(tau0 g c (TSort n) (TSort 
-(next g n))))
-| tau0_abbr: \forall (c: C).(\forall (d: C).(\forall (v: T).(\forall (i: 
-nat).((getl i c (CHead d (Bind Abbr) v)) \to (\forall (w: T).((tau0 g d v w) 
-\to (tau0 g c (TLRef i) (lift (S i) O w))))))))
-| tau0_abst: \forall (c: C).(\forall (d: C).(\forall (v: T).(\forall (i: 
-nat).((getl i c (CHead d (Bind Abst) v)) \to (\forall (w: T).((tau0 g d v w) 
-\to (tau0 g c (TLRef i) (lift (S i) O v))))))))
-| tau0_bind: \forall (b: B).(\forall (c: C).(\forall (v: T).(\forall (t1: 
-T).(\forall (t2: T).((tau0 g (CHead c (Bind b) v) t1 t2) \to (tau0 g c (THead 
-(Bind b) v t1) (THead (Bind b) v t2)))))))
-| tau0_appl: \forall (c: C).(\forall (v: T).(\forall (t1: T).(\forall (t2: 
-T).((tau0 g c t1 t2) \to (tau0 g c (THead (Flat Appl) v t1) (THead (Flat 
-Appl) v t2))))))
-| tau0_cast: \forall (c: C).(\forall (v1: T).(\forall (v2: T).((tau0 g c v1 
-v2) \to (\forall (t1: T).(\forall (t2: T).((tau0 g c t1 t2) \to (tau0 g c 
-(THead (Flat Cast) v1 t1) (THead (Flat Cast) v2 t2)))))))).
-
diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau0/fwd.ma b/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau0/fwd.ma
deleted file mode 100644 (file)
index 3034732..0000000
+++ /dev/null
@@ -1,547 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "LambdaDelta-1/tau0/defs.ma".
-
-theorem tau0_gen_sort:
- \forall (g: G).(\forall (c: C).(\forall (x: T).(\forall (n: nat).((tau0 g c 
-(TSort n) x) \to (eq T x (TSort (next g n)))))))
-\def
- \lambda (g: G).(\lambda (c: C).(\lambda (x: T).(\lambda (n: nat).(\lambda 
-(H: (tau0 g c (TSort n) x)).(insert_eq T (TSort n) (\lambda (t: T).(tau0 g c 
-t x)) (\lambda (_: T).(eq T x (TSort (next g n)))) (\lambda (y: T).(\lambda 
-(H0: (tau0 g c y x)).(tau0_ind g (\lambda (_: C).(\lambda (t: T).(\lambda 
-(t0: T).((eq T t (TSort n)) \to (eq T t0 (TSort (next g n))))))) (\lambda (_: 
-C).(\lambda (n0: nat).(\lambda (H1: (eq T (TSort n0) (TSort n))).(let H2 \def 
-(f_equal T nat (\lambda (e: T).(match e in T return (\lambda (_: T).nat) with 
-[(TSort n1) \Rightarrow n1 | (TLRef _) \Rightarrow n0 | (THead _ _ _) 
-\Rightarrow n0])) (TSort n0) (TSort n) H1) in (eq_ind_r nat n (\lambda (n1: 
-nat).(eq T (TSort (next g n1)) (TSort (next g n)))) (refl_equal T (TSort 
-(next g n))) n0 H2))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (v: 
-T).(\lambda (i: nat).(\lambda (_: (getl i c0 (CHead d (Bind Abbr) 
-v))).(\lambda (w: T).(\lambda (_: (tau0 g d v w)).(\lambda (_: (((eq T v 
-(TSort n)) \to (eq T w (TSort (next g n)))))).(\lambda (H4: (eq T (TLRef i) 
-(TSort n))).(let H5 \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) H4) in 
-(False_ind (eq T (lift (S i) O w) (TSort (next g n))) H5))))))))))) (\lambda 
-(c0: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda (_: (getl 
-i c0 (CHead d (Bind Abst) v))).(\lambda (w: T).(\lambda (_: (tau0 g d v 
-w)).(\lambda (_: (((eq T v (TSort n)) \to (eq T w (TSort (next g 
-n)))))).(\lambda (H4: (eq T (TLRef i) (TSort n))).(let H5 \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) H4) in (False_ind (eq T (lift (S i) O v) 
-(TSort (next g n))) H5))))))))))) (\lambda (b: B).(\lambda (c0: C).(\lambda 
-(v: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda (_: (tau0 g (CHead c0 (Bind 
-b) v) t1 t2)).(\lambda (_: (((eq T t1 (TSort n)) \to (eq T t2 (TSort (next g 
-n)))))).(\lambda (H3: (eq T (THead (Bind b) v t1) (TSort n))).(let H4 \def 
-(eq_ind T (THead (Bind b) v t1) (\lambda (ee: T).(match ee in T return 
-(\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
-\Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TSort n) H3) in 
-(False_ind (eq T (THead (Bind b) v t2) (TSort (next g n))) H4)))))))))) 
-(\lambda (c0: C).(\lambda (v: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
-(_: (tau0 g c0 t1 t2)).(\lambda (_: (((eq T t1 (TSort n)) \to (eq T t2 (TSort 
-(next g n)))))).(\lambda (H3: (eq T (THead (Flat Appl) v t1) (TSort n))).(let 
-H4 \def (eq_ind T (THead (Flat Appl) v t1) (\lambda (ee: T).(match ee in T 
-return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
-\Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TSort n) H3) in 
-(False_ind (eq T (THead (Flat Appl) v t2) (TSort (next g n))) H4))))))))) 
-(\lambda (c0: C).(\lambda (v1: T).(\lambda (v2: T).(\lambda (_: (tau0 g c0 v1 
-v2)).(\lambda (_: (((eq T v1 (TSort n)) \to (eq T v2 (TSort (next g 
-n)))))).(\lambda (t1: T).(\lambda (t2: T).(\lambda (_: (tau0 g c0 t1 
-t2)).(\lambda (_: (((eq T t1 (TSort n)) \to (eq T t2 (TSort (next g 
-n)))))).(\lambda (H5: (eq T (THead (Flat Cast) v1 t1) (TSort n))).(let H6 
-\def (eq_ind T (THead (Flat Cast) v1 t1) (\lambda (ee: T).(match ee in T 
-return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
-\Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TSort n) H5) in 
-(False_ind (eq T (THead (Flat Cast) v2 t2) (TSort (next g n))) H6)))))))))))) 
-c y x H0))) H))))).
-
-theorem tau0_gen_lref:
- \forall (g: G).(\forall (c: C).(\forall (x: T).(\forall (n: nat).((tau0 g c 
-(TLRef n) x) \to (or (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda 
-(_: T).(getl n c (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
-T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
-(t: T).(eq T x (lift (S n) O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda 
-(u: T).(\lambda (_: T).(getl n c (CHead e (Bind Abst) u))))) (\lambda (e: 
-C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda 
-(u: T).(\lambda (_: T).(eq T x (lift (S n) O u)))))))))))
-\def
- \lambda (g: G).(\lambda (c: C).(\lambda (x: T).(\lambda (n: nat).(\lambda 
-(H: (tau0 g c (TLRef n) x)).(insert_eq T (TLRef n) (\lambda (t: T).(tau0 g c 
-t x)) (\lambda (_: T).(or (ex3_3 C T T (\lambda (e: C).(\lambda (u: 
-T).(\lambda (_: T).(getl n c (CHead e (Bind Abbr) u))))) (\lambda (e: 
-C).(\lambda (u: T).(\lambda (t0: T).(tau0 g e u t0)))) (\lambda (_: 
-C).(\lambda (_: T).(\lambda (t0: T).(eq T x (lift (S n) O t0)))))) (ex3_3 C T 
-T (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c (CHead e (Bind 
-Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t0: T).(tau0 g e u 
-t0)))) (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq T x (lift (S n) O 
-u)))))))) (\lambda (y: T).(\lambda (H0: (tau0 g c y x)).(tau0_ind g (\lambda 
-(c0: C).(\lambda (t: T).(\lambda (t0: T).((eq T t (TLRef n)) \to (or (ex3_3 C 
-T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
-Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t1: T).(tau0 g e u 
-t1)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t1: T).(eq T t0 (lift (S n) 
-O t1)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl 
-n c0 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda 
-(t1: T).(tau0 g e u t1)))) (\lambda (_: C).(\lambda (u: T).(\lambda (_: 
-T).(eq T t0 (lift (S n) O u))))))))))) (\lambda (c0: C).(\lambda (n0: 
-nat).(\lambda (H1: (eq T (TSort n0) (TLRef n))).(let H2 \def (eq_ind T (TSort 
-n0) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) with [(TSort 
-_) \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
-False])) I (TLRef n) H1) in (False_ind (or (ex3_3 C T T (\lambda (e: 
-C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u))))) 
-(\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u t)))) (\lambda 
-(_: C).(\lambda (_: T).(\lambda (t: T).(eq T (TSort (next g n0)) (lift (S n) 
-O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl 
-n c0 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: 
-T).(tau0 g e u t)))) (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq T 
-(TSort (next g n0)) (lift (S n) O u))))))) H2))))) (\lambda (c0: C).(\lambda 
-(d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda (H1: (getl i c0 (CHead d 
-(Bind Abbr) v))).(\lambda (w: T).(\lambda (H2: (tau0 g d v w)).(\lambda (_: 
-(((eq T v (TLRef n)) \to (or (ex3_3 C T T (\lambda (e: C).(\lambda (u: 
-T).(\lambda (_: T).(getl n d (CHead e (Bind Abbr) u))))) (\lambda (e: 
-C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda 
-(_: T).(\lambda (t: T).(eq T w (lift (S n) O t)))))) (ex3_3 C T T (\lambda 
-(e: C).(\lambda (u: T).(\lambda (_: T).(getl n d (CHead e (Bind Abst) u))))) 
-(\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u t)))) (\lambda 
-(_: C).(\lambda (u: T).(\lambda (_: T).(eq T w (lift (S n) O 
-u)))))))))).(\lambda (H4: (eq T (TLRef i) (TLRef n))).(let H5 \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) H4) in (let H6 \def (eq_ind nat i (\lambda (n0: 
-nat).(getl n0 c0 (CHead d (Bind Abbr) v))) H1 n H5) in (eq_ind_r nat n 
-(\lambda (n0: nat).(or (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda 
-(_: T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
-T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
-(t: T).(eq T (lift (S n0) O w) (lift (S n) O t)))))) (ex3_3 C T T (\lambda 
-(e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) 
-(\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u t)))) (\lambda 
-(_: C).(\lambda (u: T).(\lambda (_: T).(eq T (lift (S n0) O w) (lift (S n) O 
-u)))))))) (or_introl (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda 
-(_: T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
-T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
-(t: T).(eq T (lift (S n) O w) (lift (S n) O t)))))) (ex3_3 C T T (\lambda (e: 
-C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) 
-(\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u t)))) (\lambda 
-(_: C).(\lambda (u: T).(\lambda (_: T).(eq T (lift (S n) O w) (lift (S n) O 
-u)))))) (ex3_3_intro C T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: 
-T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
-T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
-(t: T).(eq T (lift (S n) O w) (lift (S n) O t))))) d v w H6 H2 (refl_equal T 
-(lift (S n) O w)))) i H5)))))))))))) (\lambda (c0: C).(\lambda (d: 
-C).(\lambda (v: T).(\lambda (i: nat).(\lambda (H1: (getl i c0 (CHead d (Bind 
-Abst) v))).(\lambda (w: T).(\lambda (H2: (tau0 g d v w)).(\lambda (_: (((eq T 
-v (TLRef n)) \to (or (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda 
-(_: T).(getl n d (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
-T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
-(t: T).(eq T w (lift (S n) O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda 
-(u: T).(\lambda (_: T).(getl n d (CHead e (Bind Abst) u))))) (\lambda (e: 
-C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda 
-(u: T).(\lambda (_: T).(eq T w (lift (S n) O u)))))))))).(\lambda (H4: (eq T 
-(TLRef i) (TLRef n))).(let H5 \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) H4) in 
-(let H6 \def (eq_ind nat i (\lambda (n0: nat).(getl n0 c0 (CHead d (Bind 
-Abst) v))) H1 n H5) in (eq_ind_r nat n (\lambda (n0: nat).(or (ex3_3 C T T 
-(\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
-Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u 
-t)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(eq T (lift (S n0) O v) 
-(lift (S n) O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda 
-(_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: 
-T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda (u: T).(\lambda 
-(_: T).(eq T (lift (S n0) O v) (lift (S n) O u)))))))) (or_intror (ex3_3 C T 
-T (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
-Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u 
-t)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(eq T (lift (S n) O v) 
-(lift (S n) O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda 
-(_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: 
-T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda (u: T).(\lambda 
-(_: T).(eq T (lift (S n) O v) (lift (S n) O u)))))) (ex3_3_intro C T T 
-(\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
-Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u 
-t)))) (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq T (lift (S n) O v) 
-(lift (S n) O u))))) d v w H6 H2 (refl_equal T (lift (S n) O v)))) i 
-H5)))))))))))) (\lambda (b: B).(\lambda (c0: C).(\lambda (v: T).(\lambda (t1: 
-T).(\lambda (t2: T).(\lambda (_: (tau0 g (CHead c0 (Bind b) v) t1 
-t2)).(\lambda (_: (((eq T t1 (TLRef n)) \to (or (ex3_3 C T T (\lambda (e: 
-C).(\lambda (u: T).(\lambda (_: T).(getl n (CHead c0 (Bind b) v) (CHead e 
-(Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(tau0 g e 
-u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(eq T t2 (lift (S n) 
-O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl 
-n (CHead c0 (Bind b) v) (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda 
-(u: T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda (u: 
-T).(\lambda (_: T).(eq T t2 (lift (S n) O u)))))))))).(\lambda (H3: (eq T 
-(THead (Bind b) v t1) (TLRef n))).(let H4 \def (eq_ind T (THead (Bind b) v 
-t1) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) with [(TSort 
-_) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) 
-\Rightarrow True])) I (TLRef n) H3) in (False_ind (or (ex3_3 C T T (\lambda 
-(e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u))))) 
-(\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u t)))) (\lambda 
-(_: C).(\lambda (_: T).(\lambda (t: T).(eq T (THead (Bind b) v t2) (lift (S 
-n) O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: 
-T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: 
-T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda (u: T).(\lambda 
-(_: T).(eq T (THead (Bind b) v t2) (lift (S n) O u))))))) H4)))))))))) 
-(\lambda (c0: C).(\lambda (v: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
-(_: (tau0 g c0 t1 t2)).(\lambda (_: (((eq T t1 (TLRef n)) \to (or (ex3_3 C T 
-T (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
-Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u 
-t)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(eq T t2 (lift (S n) O 
-t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n 
-c0 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: 
-T).(tau0 g e u t)))) (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq T t2 
-(lift (S n) O u)))))))))).(\lambda (H3: (eq T (THead (Flat Appl) v t1) (TLRef 
-n))).(let H4 \def (eq_ind T (THead (Flat Appl) v t1) (\lambda (ee: T).(match 
-ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
-(TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef n) 
-H3) in (False_ind (or (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda 
-(_: T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
-T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
-(t: T).(eq T (THead (Flat Appl) v t2) (lift (S n) O t)))))) (ex3_3 C T T 
-(\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
-Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u 
-t)))) (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq T (THead (Flat 
-Appl) v t2) (lift (S n) O u))))))) H4))))))))) (\lambda (c0: C).(\lambda (v1: 
-T).(\lambda (v2: T).(\lambda (_: (tau0 g c0 v1 v2)).(\lambda (_: (((eq T v1 
-(TLRef n)) \to (or (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: 
-T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
-T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
-(t: T).(eq T v2 (lift (S n) O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda 
-(u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: 
-C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda 
-(u: T).(\lambda (_: T).(eq T v2 (lift (S n) O u)))))))))).(\lambda (t1: 
-T).(\lambda (t2: T).(\lambda (_: (tau0 g c0 t1 t2)).(\lambda (_: (((eq T t1 
-(TLRef n)) \to (or (ex3_3 C T T (\lambda (e: C).(\lambda (u: T).(\lambda (_: 
-T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
-T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
-(t: T).(eq T t2 (lift (S n) O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda 
-(u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: 
-C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda 
-(u: T).(\lambda (_: T).(eq T t2 (lift (S n) O u)))))))))).(\lambda (H5: (eq T 
-(THead (Flat Cast) v1 t1) (TLRef n))).(let H6 \def (eq_ind T (THead (Flat 
-Cast) v1 t1) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) 
-with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ 
-_) \Rightarrow True])) I (TLRef n) H5) in (False_ind (or (ex3_3 C T T 
-(\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
-Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u 
-t)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(eq T (THead (Flat 
-Cast) v2 t2) (lift (S n) O t)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u: 
-T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: 
-C).(\lambda (u: T).(\lambda (t: T).(tau0 g e u t)))) (\lambda (_: C).(\lambda 
-(u: T).(\lambda (_: T).(eq T (THead (Flat Cast) v2 t2) (lift (S n) O u))))))) 
-H6)))))))))))) c y x H0))) H))))).
-
-theorem tau0_gen_bind:
- \forall (g: G).(\forall (b: B).(\forall (c: C).(\forall (u: T).(\forall (t1: 
-T).(\forall (x: T).((tau0 g c (THead (Bind b) u t1) x) \to (ex2 T (\lambda 
-(t2: T).(tau0 g (CHead c (Bind b) u) t1 t2)) (\lambda (t2: T).(eq T x (THead 
-(Bind b) u t2))))))))))
-\def
- \lambda (g: G).(\lambda (b: B).(\lambda (c: C).(\lambda (u: T).(\lambda (t1: 
-T).(\lambda (x: T).(\lambda (H: (tau0 g c (THead (Bind b) u t1) 
-x)).(insert_eq T (THead (Bind b) u t1) (\lambda (t: T).(tau0 g c t x)) 
-(\lambda (_: T).(ex2 T (\lambda (t2: T).(tau0 g (CHead c (Bind b) u) t1 t2)) 
-(\lambda (t2: T).(eq T x (THead (Bind b) u t2))))) (\lambda (y: T).(\lambda 
-(H0: (tau0 g c y x)).(tau0_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda 
-(t0: T).((eq T t (THead (Bind b) u t1)) \to (ex2 T (\lambda (t2: T).(tau0 g 
-(CHead c0 (Bind b) u) t1 t2)) (\lambda (t2: T).(eq T t0 (THead (Bind b) u 
-t2)))))))) (\lambda (c0: C).(\lambda (n: nat).(\lambda (H1: (eq T (TSort n) 
-(THead (Bind b) u t1))).(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 
-(THead (Bind b) u t1) H1) in (False_ind (ex2 T (\lambda (t2: T).(tau0 g 
-(CHead c0 (Bind b) u) t1 t2)) (\lambda (t2: T).(eq T (TSort (next g n)) 
-(THead (Bind b) u t2)))) H2))))) (\lambda (c0: C).(\lambda (d: C).(\lambda 
-(v: T).(\lambda (i: nat).(\lambda (_: (getl i c0 (CHead d (Bind Abbr) 
-v))).(\lambda (w: T).(\lambda (_: (tau0 g d v w)).(\lambda (_: (((eq T v 
-(THead (Bind b) u t1)) \to (ex2 T (\lambda (t2: T).(tau0 g (CHead d (Bind b) 
-u) t1 t2)) (\lambda (t2: T).(eq T w (THead (Bind b) u t2))))))).(\lambda (H4: 
-(eq T (TLRef i) (THead (Bind b) u t1))).(let H5 \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 (Bind b) u t1) H4) in (False_ind (ex2 T (\lambda (t2: 
-T).(tau0 g (CHead c0 (Bind b) u) t1 t2)) (\lambda (t2: T).(eq T (lift (S i) O 
-w) (THead (Bind b) u t2)))) H5))))))))))) (\lambda (c0: C).(\lambda (d: 
-C).(\lambda (v: T).(\lambda (i: nat).(\lambda (_: (getl i c0 (CHead d (Bind 
-Abst) v))).(\lambda (w: T).(\lambda (_: (tau0 g d v w)).(\lambda (_: (((eq T 
-v (THead (Bind b) u t1)) \to (ex2 T (\lambda (t2: T).(tau0 g (CHead d (Bind 
-b) u) t1 t2)) (\lambda (t2: T).(eq T w (THead (Bind b) u t2))))))).(\lambda 
-(H4: (eq T (TLRef i) (THead (Bind b) u t1))).(let H5 \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 (Bind b) u t1) H4) in (False_ind (ex2 T (\lambda (t2: 
-T).(tau0 g (CHead c0 (Bind b) u) t1 t2)) (\lambda (t2: T).(eq T (lift (S i) O 
-v) (THead (Bind b) u t2)))) H5))))))))))) (\lambda (b0: B).(\lambda (c0: 
-C).(\lambda (v: T).(\lambda (t0: T).(\lambda (t2: T).(\lambda (H1: (tau0 g 
-(CHead c0 (Bind b0) v) t0 t2)).(\lambda (H2: (((eq T t0 (THead (Bind b) u 
-t1)) \to (ex2 T (\lambda (t3: T).(tau0 g (CHead (CHead c0 (Bind b0) v) (Bind 
-b) u) t1 t3)) (\lambda (t3: T).(eq T t2 (THead (Bind b) u t3))))))).(\lambda 
-(H3: (eq T (THead (Bind b0) v t0) (THead (Bind b) u t1))).(let H4 \def 
-(f_equal T B (\lambda (e: T).(match e in T return (\lambda (_: T).B) with 
-[(TSort _) \Rightarrow b0 | (TLRef _) \Rightarrow b0 | (THead k _ _) 
-\Rightarrow (match k in K return (\lambda (_: K).B) with [(Bind b1) 
-\Rightarrow b1 | (Flat _) \Rightarrow b0])])) (THead (Bind b0) v t0) (THead 
-(Bind b) u t1) H3) in ((let H5 \def (f_equal T T (\lambda (e: T).(match e in 
-T return (\lambda (_: T).T) with [(TSort _) \Rightarrow v | (TLRef _) 
-\Rightarrow v | (THead _ t _) \Rightarrow t])) (THead (Bind b0) v t0) (THead 
-(Bind b) u t1) H3) in ((let H6 \def (f_equal T T (\lambda (e: T).(match e in 
-T return (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef _) 
-\Rightarrow t0 | (THead _ _ t) \Rightarrow t])) (THead (Bind b0) v t0) (THead 
-(Bind b) u t1) H3) in (\lambda (H7: (eq T v u)).(\lambda (H8: (eq B b0 
-b)).(let H9 \def (eq_ind T t0 (\lambda (t: T).((eq T t (THead (Bind b) u t1)) 
-\to (ex2 T (\lambda (t3: T).(tau0 g (CHead (CHead c0 (Bind b0) v) (Bind b) u) 
-t1 t3)) (\lambda (t3: T).(eq T t2 (THead (Bind b) u t3)))))) H2 t1 H6) in 
-(let H10 \def (eq_ind T t0 (\lambda (t: T).(tau0 g (CHead c0 (Bind b0) v) t 
-t2)) H1 t1 H6) in (let H11 \def (eq_ind T v (\lambda (t: T).((eq T t1 (THead 
-(Bind b) u t1)) \to (ex2 T (\lambda (t3: T).(tau0 g (CHead (CHead c0 (Bind 
-b0) t) (Bind b) u) t1 t3)) (\lambda (t3: T).(eq T t2 (THead (Bind b) u 
-t3)))))) H9 u H7) in (let H12 \def (eq_ind T v (\lambda (t: T).(tau0 g (CHead 
-c0 (Bind b0) t) t1 t2)) H10 u H7) in (eq_ind_r T u (\lambda (t: T).(ex2 T 
-(\lambda (t3: T).(tau0 g (CHead c0 (Bind b) u) t1 t3)) (\lambda (t3: T).(eq T 
-(THead (Bind b0) t t2) (THead (Bind b) u t3))))) (let H13 \def (eq_ind B b0 
-(\lambda (b1: B).((eq T t1 (THead (Bind b) u t1)) \to (ex2 T (\lambda (t3: 
-T).(tau0 g (CHead (CHead c0 (Bind b1) u) (Bind b) u) t1 t3)) (\lambda (t3: 
-T).(eq T t2 (THead (Bind b) u t3)))))) H11 b H8) in (let H14 \def (eq_ind B 
-b0 (\lambda (b1: B).(tau0 g (CHead c0 (Bind b1) u) t1 t2)) H12 b H8) in 
-(eq_ind_r B b (\lambda (b1: B).(ex2 T (\lambda (t3: T).(tau0 g (CHead c0 
-(Bind b) u) t1 t3)) (\lambda (t3: T).(eq T (THead (Bind b1) u t2) (THead 
-(Bind b) u t3))))) (ex_intro2 T (\lambda (t3: T).(tau0 g (CHead c0 (Bind b) 
-u) t1 t3)) (\lambda (t3: T).(eq T (THead (Bind b) u t2) (THead (Bind b) u 
-t3))) t2 H14 (refl_equal T (THead (Bind b) u t2))) b0 H8))) v H7)))))))) H5)) 
-H4)))))))))) (\lambda (c0: C).(\lambda (v: T).(\lambda (t0: T).(\lambda (t2: 
-T).(\lambda (_: (tau0 g c0 t0 t2)).(\lambda (_: (((eq T t0 (THead (Bind b) u 
-t1)) \to (ex2 T (\lambda (t3: T).(tau0 g (CHead c0 (Bind b) u) t1 t3)) 
-(\lambda (t3: T).(eq T t2 (THead (Bind b) u t3))))))).(\lambda (H3: (eq T 
-(THead (Flat Appl) v t0) (THead (Bind b) u t1))).(let H4 \def (eq_ind T 
-(THead (Flat Appl) v t0) (\lambda (ee: T).(match ee in T return (\lambda (_: 
-T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
-(THead k _ _) \Rightarrow (match k in K return (\lambda (_: K).Prop) with 
-[(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind 
-b) u t1) H3) in (False_ind (ex2 T (\lambda (t3: T).(tau0 g (CHead c0 (Bind b) 
-u) t1 t3)) (\lambda (t3: T).(eq T (THead (Flat Appl) v t2) (THead (Bind b) u 
-t3)))) H4))))))))) (\lambda (c0: C).(\lambda (v1: T).(\lambda (v2: 
-T).(\lambda (_: (tau0 g c0 v1 v2)).(\lambda (_: (((eq T v1 (THead (Bind b) u 
-t1)) \to (ex2 T (\lambda (t2: T).(tau0 g (CHead c0 (Bind b) u) t1 t2)) 
-(\lambda (t2: T).(eq T v2 (THead (Bind b) u t2))))))).(\lambda (t0: 
-T).(\lambda (t2: T).(\lambda (_: (tau0 g c0 t0 t2)).(\lambda (_: (((eq T t0 
-(THead (Bind b) u t1)) \to (ex2 T (\lambda (t3: T).(tau0 g (CHead c0 (Bind b) 
-u) t1 t3)) (\lambda (t3: T).(eq T t2 (THead (Bind b) u t3))))))).(\lambda 
-(H5: (eq T (THead (Flat Cast) v1 t0) (THead (Bind b) u t1))).(let H6 \def 
-(eq_ind T (THead (Flat Cast) v1 t0) (\lambda (ee: T).(match ee in T return 
-(\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
-\Rightarrow False | (THead k _ _) \Rightarrow (match k in K return (\lambda 
-(_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow 
-True])])) I (THead (Bind b) u t1) H5) in (False_ind (ex2 T (\lambda (t3: 
-T).(tau0 g (CHead c0 (Bind b) u) t1 t3)) (\lambda (t3: T).(eq T (THead (Flat 
-Cast) v2 t2) (THead (Bind b) u t3)))) H6)))))))))))) c y x H0))) H))))))).
-
-theorem tau0_gen_appl:
- \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (t1: T).(\forall (x: 
-T).((tau0 g c (THead (Flat Appl) u t1) x) \to (ex2 T (\lambda (t2: T).(tau0 g 
-c t1 t2)) (\lambda (t2: T).(eq T x (THead (Flat Appl) u t2)))))))))
-\def
- \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (t1: T).(\lambda (x: 
-T).(\lambda (H: (tau0 g c (THead (Flat Appl) u t1) x)).(insert_eq T (THead 
-(Flat Appl) u t1) (\lambda (t: T).(tau0 g c t x)) (\lambda (_: T).(ex2 T 
-(\lambda (t2: T).(tau0 g c t1 t2)) (\lambda (t2: T).(eq T x (THead (Flat 
-Appl) u t2))))) (\lambda (y: T).(\lambda (H0: (tau0 g c y x)).(tau0_ind g 
-(\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).((eq T t (THead (Flat Appl) 
-u t1)) \to (ex2 T (\lambda (t2: T).(tau0 g c0 t1 t2)) (\lambda (t2: T).(eq T 
-t0 (THead (Flat Appl) u t2)))))))) (\lambda (c0: C).(\lambda (n: 
-nat).(\lambda (H1: (eq T (TSort n) (THead (Flat Appl) u t1))).(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 (THead (Flat Appl) u t1) H1) in 
-(False_ind (ex2 T (\lambda (t2: T).(tau0 g c0 t1 t2)) (\lambda (t2: T).(eq T 
-(TSort (next g n)) (THead (Flat Appl) u t2)))) H2))))) (\lambda (c0: 
-C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda (_: (getl i c0 
-(CHead d (Bind Abbr) v))).(\lambda (w: T).(\lambda (_: (tau0 g d v 
-w)).(\lambda (_: (((eq T v (THead (Flat Appl) u t1)) \to (ex2 T (\lambda (t2: 
-T).(tau0 g d t1 t2)) (\lambda (t2: T).(eq T w (THead (Flat Appl) u 
-t2))))))).(\lambda (H4: (eq T (TLRef i) (THead (Flat Appl) u t1))).(let H5 
-\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 (Flat Appl) u t1) H4) in 
-(False_ind (ex2 T (\lambda (t2: T).(tau0 g c0 t1 t2)) (\lambda (t2: T).(eq T 
-(lift (S i) O w) (THead (Flat Appl) u t2)))) H5))))))))))) (\lambda (c0: 
-C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda (_: (getl i c0 
-(CHead d (Bind Abst) v))).(\lambda (w: T).(\lambda (_: (tau0 g d v 
-w)).(\lambda (_: (((eq T v (THead (Flat Appl) u t1)) \to (ex2 T (\lambda (t2: 
-T).(tau0 g d t1 t2)) (\lambda (t2: T).(eq T w (THead (Flat Appl) u 
-t2))))))).(\lambda (H4: (eq T (TLRef i) (THead (Flat Appl) u t1))).(let H5 
-\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 (Flat Appl) u t1) H4) in 
-(False_ind (ex2 T (\lambda (t2: T).(tau0 g c0 t1 t2)) (\lambda (t2: T).(eq T 
-(lift (S i) O v) (THead (Flat Appl) u t2)))) H5))))))))))) (\lambda (b: 
-B).(\lambda (c0: C).(\lambda (v: T).(\lambda (t0: T).(\lambda (t2: 
-T).(\lambda (_: (tau0 g (CHead c0 (Bind b) v) t0 t2)).(\lambda (_: (((eq T t0 
-(THead (Flat Appl) u t1)) \to (ex2 T (\lambda (t3: T).(tau0 g (CHead c0 (Bind 
-b) v) t1 t3)) (\lambda (t3: T).(eq T t2 (THead (Flat Appl) u 
-t3))))))).(\lambda (H3: (eq T (THead (Bind b) v t0) (THead (Flat Appl) u 
-t1))).(let H4 \def (eq_ind T (THead (Bind b) v t0) (\lambda (ee: T).(match ee 
-in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef 
-_) \Rightarrow False | (THead k _ _) \Rightarrow (match k in K return 
-(\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow 
-False])])) I (THead (Flat Appl) u t1) H3) in (False_ind (ex2 T (\lambda (t3: 
-T).(tau0 g c0 t1 t3)) (\lambda (t3: T).(eq T (THead (Bind b) v t2) (THead 
-(Flat Appl) u t3)))) H4)))))))))) (\lambda (c0: C).(\lambda (v: T).(\lambda 
-(t0: T).(\lambda (t2: T).(\lambda (H1: (tau0 g c0 t0 t2)).(\lambda (H2: (((eq 
-T t0 (THead (Flat Appl) u t1)) \to (ex2 T (\lambda (t3: T).(tau0 g c0 t1 t3)) 
-(\lambda (t3: T).(eq T t2 (THead (Flat Appl) u t3))))))).(\lambda (H3: (eq T 
-(THead (Flat Appl) v t0) (THead (Flat Appl) u t1))).(let H4 \def (f_equal T T 
-(\lambda (e: T).(match e in T return (\lambda (_: T).T) with [(TSort _) 
-\Rightarrow v | (TLRef _) \Rightarrow v | (THead _ t _) \Rightarrow t])) 
-(THead (Flat Appl) v t0) (THead (Flat Appl) u t1) H3) in ((let H5 \def 
-(f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) with 
-[(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) 
-\Rightarrow t])) (THead (Flat Appl) v t0) (THead (Flat Appl) u t1) H3) in 
-(\lambda (H6: (eq T v u)).(let H7 \def (eq_ind T t0 (\lambda (t: T).((eq T t 
-(THead (Flat Appl) u t1)) \to (ex2 T (\lambda (t3: T).(tau0 g c0 t1 t3)) 
-(\lambda (t3: T).(eq T t2 (THead (Flat Appl) u t3)))))) H2 t1 H5) in (let H8 
-\def (eq_ind T t0 (\lambda (t: T).(tau0 g c0 t t2)) H1 t1 H5) in (eq_ind_r T 
-u (\lambda (t: T).(ex2 T (\lambda (t3: T).(tau0 g c0 t1 t3)) (\lambda (t3: 
-T).(eq T (THead (Flat Appl) t t2) (THead (Flat Appl) u t3))))) (ex_intro2 T 
-(\lambda (t3: T).(tau0 g c0 t1 t3)) (\lambda (t3: T).(eq T (THead (Flat Appl) 
-u t2) (THead (Flat Appl) u t3))) t2 H8 (refl_equal T (THead (Flat Appl) u 
-t2))) v H6))))) H4))))))))) (\lambda (c0: C).(\lambda (v1: T).(\lambda (v2: 
-T).(\lambda (_: (tau0 g c0 v1 v2)).(\lambda (_: (((eq T v1 (THead (Flat Appl) 
-u t1)) \to (ex2 T (\lambda (t2: T).(tau0 g c0 t1 t2)) (\lambda (t2: T).(eq T 
-v2 (THead (Flat Appl) u t2))))))).(\lambda (t0: T).(\lambda (t2: T).(\lambda 
-(_: (tau0 g c0 t0 t2)).(\lambda (_: (((eq T t0 (THead (Flat Appl) u t1)) \to 
-(ex2 T (\lambda (t3: T).(tau0 g c0 t1 t3)) (\lambda (t3: T).(eq T t2 (THead 
-(Flat Appl) u t3))))))).(\lambda (H5: (eq T (THead (Flat Cast) v1 t0) (THead 
-(Flat Appl) u t1))).(let H6 \def (eq_ind T (THead (Flat Cast) v1 t0) (\lambda 
-(ee: T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) 
-\Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
-(match k in K return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | 
-(Flat f) \Rightarrow (match f in F return (\lambda (_: F).Prop) with [Appl 
-\Rightarrow False | Cast \Rightarrow True])])])) I (THead (Flat Appl) u t1) 
-H5) in (False_ind (ex2 T (\lambda (t3: T).(tau0 g c0 t1 t3)) (\lambda (t3: 
-T).(eq T (THead (Flat Cast) v2 t2) (THead (Flat Appl) u t3)))) H6)))))))))))) 
-c y x H0))) H)))))).
-
-theorem tau0_gen_cast:
- \forall (g: G).(\forall (c: C).(\forall (v1: T).(\forall (t1: T).(\forall 
-(x: T).((tau0 g c (THead (Flat Cast) v1 t1) x) \to (ex3_2 T T (\lambda (v2: 
-T).(\lambda (_: T).(tau0 g c v1 v2))) (\lambda (_: T).(\lambda (t2: T).(tau0 
-g c t1 t2))) (\lambda (v2: T).(\lambda (t2: T).(eq T x (THead (Flat Cast) v2 
-t2))))))))))
-\def
- \lambda (g: G).(\lambda (c: C).(\lambda (v1: T).(\lambda (t1: T).(\lambda 
-(x: T).(\lambda (H: (tau0 g c (THead (Flat Cast) v1 t1) x)).(insert_eq T 
-(THead (Flat Cast) v1 t1) (\lambda (t: T).(tau0 g c t x)) (\lambda (_: 
-T).(ex3_2 T T (\lambda (v2: T).(\lambda (_: T).(tau0 g c v1 v2))) (\lambda 
-(_: T).(\lambda (t2: T).(tau0 g c t1 t2))) (\lambda (v2: T).(\lambda (t2: 
-T).(eq T x (THead (Flat Cast) v2 t2)))))) (\lambda (y: T).(\lambda (H0: (tau0 
-g c y x)).(tau0_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).((eq 
-T t (THead (Flat Cast) v1 t1)) \to (ex3_2 T T (\lambda (v2: T).(\lambda (_: 
-T).(tau0 g c0 v1 v2))) (\lambda (_: T).(\lambda (t2: T).(tau0 g c0 t1 t2))) 
-(\lambda (v2: T).(\lambda (t2: T).(eq T t0 (THead (Flat Cast) v2 t2))))))))) 
-(\lambda (c0: C).(\lambda (n: nat).(\lambda (H1: (eq T (TSort n) (THead (Flat 
-Cast) v1 t1))).(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 (THead (Flat Cast) 
-v1 t1) H1) in (False_ind (ex3_2 T T (\lambda (v2: T).(\lambda (_: T).(tau0 g 
-c0 v1 v2))) (\lambda (_: T).(\lambda (t2: T).(tau0 g c0 t1 t2))) (\lambda 
-(v2: T).(\lambda (t2: T).(eq T (TSort (next g n)) (THead (Flat Cast) v2 
-t2))))) H2))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: 
-nat).(\lambda (_: (getl i c0 (CHead d (Bind Abbr) v))).(\lambda (w: 
-T).(\lambda (_: (tau0 g d v w)).(\lambda (_: (((eq T v (THead (Flat Cast) v1 
-t1)) \to (ex3_2 T T (\lambda (v2: T).(\lambda (_: T).(tau0 g d v1 v2))) 
-(\lambda (_: T).(\lambda (t2: T).(tau0 g d t1 t2))) (\lambda (v2: T).(\lambda 
-(t2: T).(eq T w (THead (Flat Cast) v2 t2)))))))).(\lambda (H4: (eq T (TLRef 
-i) (THead (Flat Cast) v1 t1))).(let H5 \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 (Flat Cast) v1 t1) H4) in (False_ind (ex3_2 T T (\lambda (v2: 
-T).(\lambda (_: T).(tau0 g c0 v1 v2))) (\lambda (_: T).(\lambda (t2: T).(tau0 
-g c0 t1 t2))) (\lambda (v2: T).(\lambda (t2: T).(eq T (lift (S i) O w) (THead 
-(Flat Cast) v2 t2))))) H5))))))))))) (\lambda (c0: C).(\lambda (d: 
-C).(\lambda (v: T).(\lambda (i: nat).(\lambda (_: (getl i c0 (CHead d (Bind 
-Abst) v))).(\lambda (w: T).(\lambda (_: (tau0 g d v w)).(\lambda (_: (((eq T 
-v (THead (Flat Cast) v1 t1)) \to (ex3_2 T T (\lambda (v2: T).(\lambda (_: 
-T).(tau0 g d v1 v2))) (\lambda (_: T).(\lambda (t2: T).(tau0 g d t1 t2))) 
-(\lambda (v2: T).(\lambda (t2: T).(eq T w (THead (Flat Cast) v2 
-t2)))))))).(\lambda (H4: (eq T (TLRef i) (THead (Flat Cast) v1 t1))).(let H5 
-\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 (Flat Cast) v1 t1) H4) in 
-(False_ind (ex3_2 T T (\lambda (v2: T).(\lambda (_: T).(tau0 g c0 v1 v2))) 
-(\lambda (_: T).(\lambda (t2: T).(tau0 g c0 t1 t2))) (\lambda (v2: 
-T).(\lambda (t2: T).(eq T (lift (S i) O v) (THead (Flat Cast) v2 t2))))) 
-H5))))))))))) (\lambda (b: B).(\lambda (c0: C).(\lambda (v: T).(\lambda (t0: 
-T).(\lambda (t2: T).(\lambda (_: (tau0 g (CHead c0 (Bind b) v) t0 
-t2)).(\lambda (_: (((eq T t0 (THead (Flat Cast) v1 t1)) \to (ex3_2 T T 
-(\lambda (v2: T).(\lambda (_: T).(tau0 g (CHead c0 (Bind b) v) v1 v2))) 
-(\lambda (_: T).(\lambda (t3: T).(tau0 g (CHead c0 (Bind b) v) t1 t3))) 
-(\lambda (v2: T).(\lambda (t3: T).(eq T t2 (THead (Flat Cast) v2 
-t3)))))))).(\lambda (H3: (eq T (THead (Bind b) v t0) (THead (Flat Cast) v1 
-t1))).(let H4 \def (eq_ind T (THead (Bind b) v t0) (\lambda (ee: T).(match ee 
-in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef 
-_) \Rightarrow False | (THead k _ _) \Rightarrow (match k in K return 
-(\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow 
-False])])) I (THead (Flat Cast) v1 t1) H3) in (False_ind (ex3_2 T T (\lambda 
-(v2: T).(\lambda (_: T).(tau0 g c0 v1 v2))) (\lambda (_: T).(\lambda (t3: 
-T).(tau0 g c0 t1 t3))) (\lambda (v2: T).(\lambda (t3: T).(eq T (THead (Bind 
-b) v t2) (THead (Flat Cast) v2 t3))))) H4)))))))))) (\lambda (c0: C).(\lambda 
-(v: T).(\lambda (t0: T).(\lambda (t2: T).(\lambda (_: (tau0 g c0 t0 
-t2)).(\lambda (_: (((eq T t0 (THead (Flat Cast) v1 t1)) \to (ex3_2 T T 
-(\lambda (v2: T).(\lambda (_: T).(tau0 g c0 v1 v2))) (\lambda (_: T).(\lambda 
-(t3: T).(tau0 g c0 t1 t3))) (\lambda (v2: T).(\lambda (t3: T).(eq T t2 (THead 
-(Flat Cast) v2 t3)))))))).(\lambda (H3: (eq T (THead (Flat Appl) v t0) (THead 
-(Flat Cast) v1 t1))).(let H4 \def (eq_ind T (THead (Flat Appl) v t0) (\lambda 
-(ee: T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) 
-\Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
-(match k in K return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | 
-(Flat f) \Rightarrow (match f in F return (\lambda (_: F).Prop) with [Appl 
-\Rightarrow True | Cast \Rightarrow False])])])) I (THead (Flat Cast) v1 t1) 
-H3) in (False_ind (ex3_2 T T (\lambda (v2: T).(\lambda (_: T).(tau0 g c0 v1 
-v2))) (\lambda (_: T).(\lambda (t3: T).(tau0 g c0 t1 t3))) (\lambda (v2: 
-T).(\lambda (t3: T).(eq T (THead (Flat Appl) v t2) (THead (Flat Cast) v2 
-t3))))) H4))))))))) (\lambda (c0: C).(\lambda (v0: T).(\lambda (v2: 
-T).(\lambda (H1: (tau0 g c0 v0 v2)).(\lambda (H2: (((eq T v0 (THead (Flat 
-Cast) v1 t1)) \to (ex3_2 T T (\lambda (v3: T).(\lambda (_: T).(tau0 g c0 v1 
-v3))) (\lambda (_: T).(\lambda (t2: T).(tau0 g c0 t1 t2))) (\lambda (v3: 
-T).(\lambda (t2: T).(eq T v2 (THead (Flat Cast) v3 t2)))))))).(\lambda (t0: 
-T).(\lambda (t2: T).(\lambda (H3: (tau0 g c0 t0 t2)).(\lambda (H4: (((eq T t0 
-(THead (Flat Cast) v1 t1)) \to (ex3_2 T T (\lambda (v3: T).(\lambda (_: 
-T).(tau0 g c0 v1 v3))) (\lambda (_: T).(\lambda (t3: T).(tau0 g c0 t1 t3))) 
-(\lambda (v3: T).(\lambda (t3: T).(eq T t2 (THead (Flat Cast) v3 
-t3)))))))).(\lambda (H5: (eq T (THead (Flat Cast) v0 t0) (THead (Flat Cast) 
-v1 t1))).(let H6 \def (f_equal T T (\lambda (e: T).(match e in T return 
-(\lambda (_: T).T) with [(TSort _) \Rightarrow v0 | (TLRef _) \Rightarrow v0 
-| (THead _ t _) \Rightarrow t])) (THead (Flat Cast) v0 t0) (THead (Flat Cast) 
-v1 t1) H5) in ((let H7 \def (f_equal T T (\lambda (e: T).(match e in T return 
-(\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 
-| (THead _ _ t) \Rightarrow t])) (THead (Flat Cast) v0 t0) (THead (Flat Cast) 
-v1 t1) H5) in (\lambda (H8: (eq T v0 v1)).(let H9 \def (eq_ind T t0 (\lambda 
-(t: T).((eq T t (THead (Flat Cast) v1 t1)) \to (ex3_2 T T (\lambda (v3: 
-T).(\lambda (_: T).(tau0 g c0 v1 v3))) (\lambda (_: T).(\lambda (t3: T).(tau0 
-g c0 t1 t3))) (\lambda (v3: T).(\lambda (t3: T).(eq T t2 (THead (Flat Cast) 
-v3 t3))))))) H4 t1 H7) in (let H10 \def (eq_ind T t0 (\lambda (t: T).(tau0 g 
-c0 t t2)) H3 t1 H7) in (let H11 \def (eq_ind T v0 (\lambda (t: T).((eq T t 
-(THead (Flat Cast) v1 t1)) \to (ex3_2 T T (\lambda (v3: T).(\lambda (_: 
-T).(tau0 g c0 v1 v3))) (\lambda (_: T).(\lambda (t3: T).(tau0 g c0 t1 t3))) 
-(\lambda (v3: T).(\lambda (t3: T).(eq T v2 (THead (Flat Cast) v3 t3))))))) H2 
-v1 H8) in (let H12 \def (eq_ind T v0 (\lambda (t: T).(tau0 g c0 t v2)) H1 v1 
-H8) in (ex3_2_intro T T (\lambda (v3: T).(\lambda (_: T).(tau0 g c0 v1 v3))) 
-(\lambda (_: T).(\lambda (t3: T).(tau0 g c0 t1 t3))) (\lambda (v3: 
-T).(\lambda (t3: T).(eq T (THead (Flat Cast) v2 t2) (THead (Flat Cast) v3 
-t3)))) v2 t2 H12 H10 (refl_equal T (THead (Flat Cast) v2 t2))))))))) 
-H6)))))))))))) c y x H0))) H)))))).
-
diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau0/props.ma b/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau0/props.ma
deleted file mode 100644 (file)
index 236215b..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "LambdaDelta-1/tau0/defs.ma".
-
-include "LambdaDelta-1/getl/drop.ma".
-
-theorem tau0_lift:
- \forall (g: G).(\forall (e: C).(\forall (t1: T).(\forall (t2: T).((tau0 g e 
-t1 t2) \to (\forall (c: C).(\forall (h: nat).(\forall (d: nat).((drop h d c 
-e) \to (tau0 g c (lift h d t1) (lift h d t2))))))))))
-\def
- \lambda (g: G).(\lambda (e: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
-(H: (tau0 g e t1 t2)).(tau0_ind g (\lambda (c: C).(\lambda (t: T).(\lambda 
-(t0: T).(\forall (c0: C).(\forall (h: nat).(\forall (d: nat).((drop h d c0 c) 
-\to (tau0 g c0 (lift h d t) (lift h d t0))))))))) (\lambda (c: C).(\lambda 
-(n: nat).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (_: 
-(drop h d c0 c)).(eq_ind_r T (TSort n) (\lambda (t: T).(tau0 g c0 t (lift h d 
-(TSort (next g n))))) (eq_ind_r T (TSort (next g n)) (\lambda (t: T).(tau0 g 
-c0 (TSort n) t)) (tau0_sort g c0 n) (lift h d (TSort (next g n))) (lift_sort 
-(next g n) h d)) (lift h d (TSort n)) (lift_sort n h d)))))))) (\lambda (c: 
-C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda (H0: (getl i c 
-(CHead d (Bind Abbr) v))).(\lambda (w: T).(\lambda (H1: (tau0 g d v 
-w)).(\lambda (H2: ((\forall (c0: C).(\forall (h: nat).(\forall (d0: 
-nat).((drop h d0 c0 d) \to (tau0 g c0 (lift h d0 v) (lift h d0 
-w)))))))).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d0: nat).(\lambda (H3: 
-(drop h d0 c0 c)).(lt_le_e i d0 (tau0 g c0 (lift h d0 (TLRef i)) (lift h d0 
-(lift (S i) O w))) (\lambda (H4: (lt i d0)).(let H5 \def (drop_getl_trans_le 
-i d0 (le_S_n i d0 (le_S (S i) d0 H4)) c0 c h H3 (CHead d (Bind Abbr) v) H0) 
-in (ex3_2_ind C C (\lambda (e0: C).(\lambda (_: C).(drop i O c0 e0))) 
-(\lambda (e0: C).(\lambda (e1: C).(drop h (minus d0 i) e0 e1))) (\lambda (_: 
-C).(\lambda (e1: C).(clear e1 (CHead d (Bind Abbr) v)))) (tau0 g c0 (lift h 
-d0 (TLRef i)) (lift h d0 (lift (S i) O w))) (\lambda (x0: C).(\lambda (x1: 
-C).(\lambda (H6: (drop i O c0 x0)).(\lambda (H7: (drop h (minus d0 i) x0 
-x1)).(\lambda (H8: (clear x1 (CHead d (Bind Abbr) v))).(let H9 \def (eq_ind 
-nat (minus d0 i) (\lambda (n: nat).(drop h n x0 x1)) H7 (S (minus d0 (S i))) 
-(minus_x_Sy d0 i H4)) in (let H10 \def (drop_clear_S x1 x0 h (minus d0 (S i)) 
-H9 Abbr d v H8) in (ex2_ind C (\lambda (c1: C).(clear x0 (CHead c1 (Bind 
-Abbr) (lift h (minus d0 (S i)) v)))) (\lambda (c1: C).(drop h (minus d0 (S 
-i)) c1 d)) (tau0 g c0 (lift h d0 (TLRef i)) (lift h d0 (lift (S i) O w))) 
-(\lambda (x: C).(\lambda (H11: (clear x0 (CHead x (Bind Abbr) (lift h (minus 
-d0 (S i)) v)))).(\lambda (H12: (drop h (minus d0 (S i)) x d)).(eq_ind_r T 
-(TLRef i) (\lambda (t: T).(tau0 g c0 t (lift h d0 (lift (S i) O w)))) (eq_ind 
-nat (plus (S i) (minus d0 (S i))) (\lambda (n: nat).(tau0 g c0 (TLRef i) 
-(lift h n (lift (S i) O w)))) (eq_ind_r T (lift (S i) O (lift h (minus d0 (S 
-i)) w)) (\lambda (t: T).(tau0 g c0 (TLRef i) t)) (eq_ind nat d0 (\lambda (_: 
-nat).(tau0 g c0 (TLRef i) (lift (S i) O (lift h (minus d0 (S i)) w)))) 
-(tau0_abbr g c0 x (lift h (minus d0 (S i)) v) i (getl_intro i c0 (CHead x 
-(Bind Abbr) (lift h (minus d0 (S i)) v)) x0 H6 H11) (lift h (minus d0 (S i)) 
-w) (H2 x h (minus d0 (S i)) H12)) (plus (S i) (minus d0 (S i))) 
-(le_plus_minus (S i) d0 H4)) (lift h (plus (S i) (minus d0 (S i))) (lift (S 
-i) O w)) (lift_d w h (S i) (minus d0 (S i)) O (le_O_n (minus d0 (S i))))) d0 
-(le_plus_minus_r (S i) d0 H4)) (lift h d0 (TLRef i)) (lift_lref_lt i h d0 
-H4))))) H10)))))))) H5))) (\lambda (H4: (le d0 i)).(eq_ind_r T (TLRef (plus i 
-h)) (\lambda (t: T).(tau0 g c0 t (lift h d0 (lift (S i) O w)))) (eq_ind nat 
-(S i) (\lambda (_: nat).(tau0 g c0 (TLRef (plus i h)) (lift h d0 (lift (S i) 
-O w)))) (eq_ind_r T (lift (plus h (S i)) O w) (\lambda (t: T).(tau0 g c0 
-(TLRef (plus i h)) t)) (eq_ind_r nat (plus (S i) h) (\lambda (n: nat).(tau0 g 
-c0 (TLRef (plus i h)) (lift n O w))) (tau0_abbr g c0 d v (plus i h) 
-(drop_getl_trans_ge i c0 c d0 h H3 (CHead d (Bind Abbr) v) H0 H4) w H1) (plus 
-h (S i)) (plus_sym h (S i))) (lift h d0 (lift (S i) O w)) (lift_free w (S i) 
-h O d0 (le_S d0 i H4) (le_O_n d0))) (plus i (S O)) (eq_ind_r nat (plus (S O) 
-i) (\lambda (n: nat).(eq nat (S i) n)) (refl_equal nat (plus (S O) i)) (plus 
-i (S O)) (plus_sym i (S O)))) (lift h d0 (TLRef i)) (lift_lref_ge i h d0 
-H4)))))))))))))))) (\lambda (c: C).(\lambda (d: C).(\lambda (v: T).(\lambda 
-(i: nat).(\lambda (H0: (getl i c (CHead d (Bind Abst) v))).(\lambda (w: 
-T).(\lambda (H1: (tau0 g d v w)).(\lambda (H2: ((\forall (c0: C).(\forall (h: 
-nat).(\forall (d0: nat).((drop h d0 c0 d) \to (tau0 g c0 (lift h d0 v) (lift 
-h d0 w)))))))).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d0: nat).(\lambda 
-(H3: (drop h d0 c0 c)).(lt_le_e i d0 (tau0 g c0 (lift h d0 (TLRef i)) (lift h 
-d0 (lift (S i) O v))) (\lambda (H4: (lt i d0)).(let H5 \def 
-(drop_getl_trans_le i d0 (le_S_n i d0 (le_S (S i) d0 H4)) c0 c h H3 (CHead d 
-(Bind Abst) v) H0) in (ex3_2_ind C C (\lambda (e0: C).(\lambda (_: C).(drop i 
-O c0 e0))) (\lambda (e0: C).(\lambda (e1: C).(drop h (minus d0 i) e0 e1))) 
-(\lambda (_: C).(\lambda (e1: C).(clear e1 (CHead d (Bind Abst) v)))) (tau0 g 
-c0 (lift h d0 (TLRef i)) (lift h d0 (lift (S i) O v))) (\lambda (x0: 
-C).(\lambda (x1: C).(\lambda (H6: (drop i O c0 x0)).(\lambda (H7: (drop h 
-(minus d0 i) x0 x1)).(\lambda (H8: (clear x1 (CHead d (Bind Abst) v))).(let 
-H9 \def (eq_ind nat (minus d0 i) (\lambda (n: nat).(drop h n x0 x1)) H7 (S 
-(minus d0 (S i))) (minus_x_Sy d0 i H4)) in (let H10 \def (drop_clear_S x1 x0 
-h (minus d0 (S i)) H9 Abst d v H8) in (ex2_ind C (\lambda (c1: C).(clear x0 
-(CHead c1 (Bind Abst) (lift h (minus d0 (S i)) v)))) (\lambda (c1: C).(drop h 
-(minus d0 (S i)) c1 d)) (tau0 g c0 (lift h d0 (TLRef i)) (lift h d0 (lift (S 
-i) O v))) (\lambda (x: C).(\lambda (H11: (clear x0 (CHead x (Bind Abst) (lift 
-h (minus d0 (S i)) v)))).(\lambda (H12: (drop h (minus d0 (S i)) x 
-d)).(eq_ind_r T (TLRef i) (\lambda (t: T).(tau0 g c0 t (lift h d0 (lift (S i) 
-O v)))) (eq_ind nat (plus (S i) (minus d0 (S i))) (\lambda (n: nat).(tau0 g 
-c0 (TLRef i) (lift h n (lift (S i) O v)))) (eq_ind_r T (lift (S i) O (lift h 
-(minus d0 (S i)) v)) (\lambda (t: T).(tau0 g c0 (TLRef i) t)) (eq_ind nat d0 
-(\lambda (_: nat).(tau0 g c0 (TLRef i) (lift (S i) O (lift h (minus d0 (S i)) 
-v)))) (tau0_abst g c0 x (lift h (minus d0 (S i)) v) i (getl_intro i c0 (CHead 
-x (Bind Abst) (lift h (minus d0 (S i)) v)) x0 H6 H11) (lift h (minus d0 (S 
-i)) w) (H2 x h (minus d0 (S i)) H12)) (plus (S i) (minus d0 (S i))) 
-(le_plus_minus (S i) d0 H4)) (lift h (plus (S i) (minus d0 (S i))) (lift (S 
-i) O v)) (lift_d v h (S i) (minus d0 (S i)) O (le_O_n (minus d0 (S i))))) d0 
-(le_plus_minus_r (S i) d0 H4)) (lift h d0 (TLRef i)) (lift_lref_lt i h d0 
-H4))))) H10)))))))) H5))) (\lambda (H4: (le d0 i)).(eq_ind_r T (TLRef (plus i 
-h)) (\lambda (t: T).(tau0 g c0 t (lift h d0 (lift (S i) O v)))) (eq_ind nat 
-(S i) (\lambda (_: nat).(tau0 g c0 (TLRef (plus i h)) (lift h d0 (lift (S i) 
-O v)))) (eq_ind_r T (lift (plus h (S i)) O v) (\lambda (t: T).(tau0 g c0 
-(TLRef (plus i h)) t)) (eq_ind_r nat (plus (S i) h) (\lambda (n: nat).(tau0 g 
-c0 (TLRef (plus i h)) (lift n O v))) (tau0_abst g c0 d v (plus i h) 
-(drop_getl_trans_ge i c0 c d0 h H3 (CHead d (Bind Abst) v) H0 H4) w H1) (plus 
-h (S i)) (plus_sym h (S i))) (lift h d0 (lift (S i) O v)) (lift_free v (S i) 
-h O d0 (le_S d0 i H4) (le_O_n d0))) (plus i (S O)) (eq_ind_r nat (plus (S O) 
-i) (\lambda (n: nat).(eq nat (S i) n)) (refl_equal nat (plus (S O) i)) (plus 
-i (S O)) (plus_sym i (S O)))) (lift h d0 (TLRef i)) (lift_lref_ge i h d0 
-H4)))))))))))))))) (\lambda (b: B).(\lambda (c: C).(\lambda (v: T).(\lambda 
-(t3: T).(\lambda (t4: T).(\lambda (_: (tau0 g (CHead c (Bind b) v) t3 
-t4)).(\lambda (H1: ((\forall (c0: C).(\forall (h: nat).(\forall (d: 
-nat).((drop h d c0 (CHead c (Bind b) v)) \to (tau0 g c0 (lift h d t3) (lift h 
-d t4)))))))).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda 
-(H2: (drop h d c0 c)).(eq_ind_r T (THead (Bind b) (lift h d v) (lift h (s 
-(Bind b) d) t3)) (\lambda (t: T).(tau0 g c0 t (lift h d (THead (Bind b) v 
-t4)))) (eq_ind_r T (THead (Bind b) (lift h d v) (lift h (s (Bind b) d) t4)) 
-(\lambda (t: T).(tau0 g c0 (THead (Bind b) (lift h d v) (lift h (s (Bind b) 
-d) t3)) t)) (tau0_bind g b c0 (lift h d v) (lift h (S d) t3) (lift h (S d) 
-t4) (H1 (CHead c0 (Bind b) (lift h d v)) h (S d) (drop_skip_bind h d c0 c H2 
-b v))) (lift h d (THead (Bind b) v t4)) (lift_head (Bind b) v t4 h d)) (lift 
-h d (THead (Bind b) v t3)) (lift_head (Bind b) v t3 h d))))))))))))) (\lambda 
-(c: C).(\lambda (v: T).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (tau0 g 
-c t3 t4)).(\lambda (H1: ((\forall (c0: C).(\forall (h: nat).(\forall (d: 
-nat).((drop h d c0 c) \to (tau0 g c0 (lift h d t3) (lift h d 
-t4)))))))).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H2: 
-(drop h d c0 c)).(eq_ind_r T (THead (Flat Appl) (lift h d v) (lift h (s (Flat 
-Appl) d) t3)) (\lambda (t: T).(tau0 g c0 t (lift h d (THead (Flat Appl) v 
-t4)))) (eq_ind_r T (THead (Flat Appl) (lift h d v) (lift h (s (Flat Appl) d) 
-t4)) (\lambda (t: T).(tau0 g c0 (THead (Flat Appl) (lift h d v) (lift h (s 
-(Flat Appl) d) t3)) t)) (tau0_appl g c0 (lift h d v) (lift h (s (Flat Appl) 
-d) t3) (lift h (s (Flat Appl) d) t4) (H1 c0 h (s (Flat Appl) d) H2)) (lift h 
-d (THead (Flat Appl) v t4)) (lift_head (Flat Appl) v t4 h d)) (lift h d 
-(THead (Flat Appl) v t3)) (lift_head (Flat Appl) v t3 h d)))))))))))) 
-(\lambda (c: C).(\lambda (v1: T).(\lambda (v2: T).(\lambda (_: (tau0 g c v1 
-v2)).(\lambda (H1: ((\forall (c0: C).(\forall (h: nat).(\forall (d: 
-nat).((drop h d c0 c) \to (tau0 g c0 (lift h d v1) (lift h d 
-v2)))))))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (tau0 g c t3 
-t4)).(\lambda (H3: ((\forall (c0: C).(\forall (h: nat).(\forall (d: 
-nat).((drop h d c0 c) \to (tau0 g c0 (lift h d t3) (lift h d 
-t4)))))))).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H4: 
-(drop h d c0 c)).(eq_ind_r T (THead (Flat Cast) (lift h d v1) (lift h (s 
-(Flat Cast) d) t3)) (\lambda (t: T).(tau0 g c0 t (lift h d (THead (Flat Cast) 
-v2 t4)))) (eq_ind_r T (THead (Flat Cast) (lift h d v2) (lift h (s (Flat Cast) 
-d) t4)) (\lambda (t: T).(tau0 g c0 (THead (Flat Cast) (lift h d v1) (lift h 
-(s (Flat Cast) d) t3)) t)) (tau0_cast g c0 (lift h d v1) (lift h d v2) (H1 c0 
-h d H4) (lift h (s (Flat Cast) d) t3) (lift h (s (Flat Cast) d) t4) (H3 c0 h 
-(s (Flat Cast) d) H4)) (lift h d (THead (Flat Cast) v2 t4)) (lift_head (Flat 
-Cast) v2 t4 h d)) (lift h d (THead (Flat Cast) v1 t3)) (lift_head (Flat Cast) 
-v1 t3 h d))))))))))))))) e t1 t2 H))))).
-
-theorem tau0_correct:
- \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t: T).((tau0 g c 
-t1 t) \to (ex T (\lambda (t2: T).(tau0 g c t t2)))))))
-\def
- \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: 
-(tau0 g c t1 t)).(tau0_ind g (\lambda (c0: C).(\lambda (_: T).(\lambda (t2: 
-T).(ex T (\lambda (t3: T).(tau0 g c0 t2 t3)))))) (\lambda (c0: C).(\lambda 
-(n: nat).(ex_intro T (\lambda (t2: T).(tau0 g c0 (TSort (next g n)) t2)) 
-(TSort (next g (next g n))) (tau0_sort g c0 (next g n))))) (\lambda (c0: 
-C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda (H0: (getl i c0 
-(CHead d (Bind Abbr) v))).(\lambda (w: T).(\lambda (_: (tau0 g d v 
-w)).(\lambda (H2: (ex T (\lambda (t2: T).(tau0 g d w t2)))).(let H3 \def H2 
-in (ex_ind T (\lambda (t2: T).(tau0 g d w t2)) (ex T (\lambda (t2: T).(tau0 g 
-c0 (lift (S i) O w) t2))) (\lambda (x: T).(\lambda (H4: (tau0 g d w 
-x)).(ex_intro T (\lambda (t2: T).(tau0 g c0 (lift (S i) O w) t2)) (lift (S i) 
-O x) (tau0_lift g d w x H4 c0 (S i) O (getl_drop Abbr c0 d v i H0))))) 
-H3)))))))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: 
-nat).(\lambda (H0: (getl i c0 (CHead d (Bind Abst) v))).(\lambda (w: 
-T).(\lambda (H1: (tau0 g d v w)).(\lambda (H2: (ex T (\lambda (t2: T).(tau0 g 
-d w t2)))).(let H3 \def H2 in (ex_ind T (\lambda (t2: T).(tau0 g d w t2)) (ex 
-T (\lambda (t2: T).(tau0 g c0 (lift (S i) O v) t2))) (\lambda (x: T).(\lambda 
-(_: (tau0 g d w x)).(ex_intro T (\lambda (t2: T).(tau0 g c0 (lift (S i) O v) 
-t2)) (lift (S i) O w) (tau0_lift g d v w H1 c0 (S i) O (getl_drop Abst c0 d v 
-i H0))))) H3)))))))))) (\lambda (b: B).(\lambda (c0: C).(\lambda (v: 
-T).(\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (tau0 g (CHead c0 (Bind b) 
-v) t2 t3)).(\lambda (H1: (ex T (\lambda (t4: T).(tau0 g (CHead c0 (Bind b) v) 
-t3 t4)))).(let H2 \def H1 in (ex_ind T (\lambda (t4: T).(tau0 g (CHead c0 
-(Bind b) v) t3 t4)) (ex T (\lambda (t4: T).(tau0 g c0 (THead (Bind b) v t3) 
-t4))) (\lambda (x: T).(\lambda (H3: (tau0 g (CHead c0 (Bind b) v) t3 
-x)).(ex_intro T (\lambda (t4: T).(tau0 g c0 (THead (Bind b) v t3) t4)) (THead 
-(Bind b) v x) (tau0_bind g b c0 v t3 x H3)))) H2))))))))) (\lambda (c0: 
-C).(\lambda (v: T).(\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (tau0 g c0 
-t2 t3)).(\lambda (H1: (ex T (\lambda (t4: T).(tau0 g c0 t3 t4)))).(let H2 
-\def H1 in (ex_ind T (\lambda (t4: T).(tau0 g c0 t3 t4)) (ex T (\lambda (t4: 
-T).(tau0 g c0 (THead (Flat Appl) v t3) t4))) (\lambda (x: T).(\lambda (H3: 
-(tau0 g c0 t3 x)).(ex_intro T (\lambda (t4: T).(tau0 g c0 (THead (Flat Appl) 
-v t3) t4)) (THead (Flat Appl) v x) (tau0_appl g c0 v t3 x H3)))) H2)))))))) 
-(\lambda (c0: C).(\lambda (v1: T).(\lambda (v2: T).(\lambda (_: (tau0 g c0 v1 
-v2)).(\lambda (H1: (ex T (\lambda (t2: T).(tau0 g c0 v2 t2)))).(\lambda (t2: 
-T).(\lambda (t3: T).(\lambda (_: (tau0 g c0 t2 t3)).(\lambda (H3: (ex T 
-(\lambda (t4: T).(tau0 g c0 t3 t4)))).(let H4 \def H1 in (ex_ind T (\lambda 
-(t4: T).(tau0 g c0 v2 t4)) (ex T (\lambda (t4: T).(tau0 g c0 (THead (Flat 
-Cast) v2 t3) t4))) (\lambda (x: T).(\lambda (H5: (tau0 g c0 v2 x)).(let H6 
-\def H3 in (ex_ind T (\lambda (t4: T).(tau0 g c0 t3 t4)) (ex T (\lambda (t4: 
-T).(tau0 g c0 (THead (Flat Cast) v2 t3) t4))) (\lambda (x0: T).(\lambda (H7: 
-(tau0 g c0 t3 x0)).(ex_intro T (\lambda (t4: T).(tau0 g c0 (THead (Flat Cast) 
-v2 t3) t4)) (THead (Flat Cast) x x0) (tau0_cast g c0 v2 x H5 t3 x0 H7)))) 
-H6)))) H4))))))))))) c t1 t H))))).
-
diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau1/cnt.ma b/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau1/cnt.ma
deleted file mode 100644 (file)
index 571001d..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "LambdaDelta-1/tau1/props.ma".
-
-include "LambdaDelta-1/cnt/props.ma".
-
-theorem tau1_cnt:
- \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t: T).((tau0 g c 
-t1 t) \to (ex2 T (\lambda (t2: T).(tau1 g c t1 t2)) (\lambda (t2: T).(cnt 
-t2)))))))
-\def
- \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: 
-(tau0 g c t1 t)).(tau0_ind g (\lambda (c0: C).(\lambda (t0: T).(\lambda (_: 
-T).(ex2 T (\lambda (t3: T).(tau1 g c0 t0 t3)) (\lambda (t3: T).(cnt t3)))))) 
-(\lambda (c0: C).(\lambda (n: nat).(ex_intro2 T (\lambda (t2: T).(tau1 g c0 
-(TSort n) t2)) (\lambda (t2: T).(cnt t2)) (TSort (next g n)) (tau1_tau0 g c0 
-(TSort n) (TSort (next g n)) (tau0_sort g c0 n)) (cnt_sort (next g n))))) 
-(\lambda (c0: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda 
-(H0: (getl i c0 (CHead d (Bind Abbr) v))).(\lambda (w: T).(\lambda (_: (tau0 
-g d v w)).(\lambda (H2: (ex2 T (\lambda (t2: T).(tau1 g d v t2)) (\lambda 
-(t2: T).(cnt t2)))).(let H3 \def H2 in (ex2_ind T (\lambda (t2: T).(tau1 g d 
-v t2)) (\lambda (t2: T).(cnt t2)) (ex2 T (\lambda (t2: T).(tau1 g c0 (TLRef 
-i) t2)) (\lambda (t2: T).(cnt t2))) (\lambda (x: T).(\lambda (H4: (tau1 g d v 
-x)).(\lambda (H5: (cnt x)).(ex_intro2 T (\lambda (t2: T).(tau1 g c0 (TLRef i) 
-t2)) (\lambda (t2: T).(cnt t2)) (lift (S i) O x) (tau1_abbr g c0 d v i H0 x 
-H4) (cnt_lift x H5 (S i) O))))) H3)))))))))) (\lambda (c0: C).(\lambda (d: 
-C).(\lambda (v: T).(\lambda (i: nat).(\lambda (H0: (getl i c0 (CHead d (Bind 
-Abst) v))).(\lambda (w: T).(\lambda (H1: (tau0 g d v w)).(\lambda (H2: (ex2 T 
-(\lambda (t2: T).(tau1 g d v t2)) (\lambda (t2: T).(cnt t2)))).(let H3 \def 
-H2 in (ex2_ind T (\lambda (t2: T).(tau1 g d v t2)) (\lambda (t2: T).(cnt t2)) 
-(ex2 T (\lambda (t2: T).(tau1 g c0 (TLRef i) t2)) (\lambda (t2: T).(cnt t2))) 
-(\lambda (x: T).(\lambda (H4: (tau1 g d v x)).(\lambda (H5: (cnt 
-x)).(ex_intro2 T (\lambda (t2: T).(tau1 g c0 (TLRef i) t2)) (\lambda (t2: 
-T).(cnt t2)) (lift (S i) O x) (tau1_trans g c0 (TLRef i) (lift (S i) O v) 
-(tau1_tau0 g c0 (TLRef i) (lift (S i) O v) (tau0_abst g c0 d v i H0 w H1)) 
-(lift (S i) O x) (tau1_lift g d v x H4 c0 (S i) O (getl_drop Abst c0 d v i 
-H0))) (cnt_lift x H5 (S i) O))))) H3)))))))))) (\lambda (b: B).(\lambda (c0: 
-C).(\lambda (v: T).(\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (tau0 g 
-(CHead c0 (Bind b) v) t2 t3)).(\lambda (H1: (ex2 T (\lambda (t4: T).(tau1 g 
-(CHead c0 (Bind b) v) t2 t4)) (\lambda (t4: T).(cnt t4)))).(let H2 \def H1 in 
-(ex2_ind T (\lambda (t4: T).(tau1 g (CHead c0 (Bind b) v) t2 t4)) (\lambda 
-(t4: T).(cnt t4)) (ex2 T (\lambda (t4: T).(tau1 g c0 (THead (Bind b) v t2) 
-t4)) (\lambda (t4: T).(cnt t4))) (\lambda (x: T).(\lambda (H3: (tau1 g (CHead 
-c0 (Bind b) v) t2 x)).(\lambda (H4: (cnt x)).(ex_intro2 T (\lambda (t4: 
-T).(tau1 g c0 (THead (Bind b) v t2) t4)) (\lambda (t4: T).(cnt t4)) (THead 
-(Bind b) v x) (tau1_bind g b c0 v t2 x H3) (cnt_head x H4 (Bind b) v))))) 
-H2))))))))) (\lambda (c0: C).(\lambda (v: T).(\lambda (t2: T).(\lambda (t3: 
-T).(\lambda (_: (tau0 g c0 t2 t3)).(\lambda (H1: (ex2 T (\lambda (t4: 
-T).(tau1 g c0 t2 t4)) (\lambda (t4: T).(cnt t4)))).(let H2 \def H1 in 
-(ex2_ind T (\lambda (t4: T).(tau1 g c0 t2 t4)) (\lambda (t4: T).(cnt t4)) 
-(ex2 T (\lambda (t4: T).(tau1 g c0 (THead (Flat Appl) v t2) t4)) (\lambda 
-(t4: T).(cnt t4))) (\lambda (x: T).(\lambda (H3: (tau1 g c0 t2 x)).(\lambda 
-(H4: (cnt x)).(ex_intro2 T (\lambda (t4: T).(tau1 g c0 (THead (Flat Appl) v 
-t2) t4)) (\lambda (t4: T).(cnt t4)) (THead (Flat Appl) v x) (tau1_appl g c0 v 
-t2 x H3) (cnt_head x H4 (Flat Appl) v))))) H2)))))))) (\lambda (c0: 
-C).(\lambda (v1: T).(\lambda (v2: T).(\lambda (H0: (tau0 g c0 v1 
-v2)).(\lambda (_: (ex2 T (\lambda (t2: T).(tau1 g c0 v1 t2)) (\lambda (t2: 
-T).(cnt t2)))).(\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (tau0 g c0 t2 
-t3)).(\lambda (H3: (ex2 T (\lambda (t4: T).(tau1 g c0 t2 t4)) (\lambda (t4: 
-T).(cnt t4)))).(let H4 \def H3 in (ex2_ind T (\lambda (t4: T).(tau1 g c0 t2 
-t4)) (\lambda (t4: T).(cnt t4)) (ex2 T (\lambda (t4: T).(tau1 g c0 (THead 
-(Flat Cast) v1 t2) t4)) (\lambda (t4: T).(cnt t4))) (\lambda (x: T).(\lambda 
-(H5: (tau1 g c0 t2 x)).(\lambda (H6: (cnt x)).(let H_x \def (tau1_cast2 g c0 
-t2 x H5 v1 v2 H0) in (let H7 \def H_x in (ex2_ind T (\lambda (v3: T).(tau1 g 
-c0 v1 v3)) (\lambda (v3: T).(tau1 g c0 (THead (Flat Cast) v1 t2) (THead (Flat 
-Cast) v3 x))) (ex2 T (\lambda (t4: T).(tau1 g c0 (THead (Flat Cast) v1 t2) 
-t4)) (\lambda (t4: T).(cnt t4))) (\lambda (x0: T).(\lambda (_: (tau1 g c0 v1 
-x0)).(\lambda (H9: (tau1 g c0 (THead (Flat Cast) v1 t2) (THead (Flat Cast) x0 
-x))).(ex_intro2 T (\lambda (t4: T).(tau1 g c0 (THead (Flat Cast) v1 t2) t4)) 
-(\lambda (t4: T).(cnt t4)) (THead (Flat Cast) x0 x) H9 (cnt_head x H6 (Flat 
-Cast) x0))))) H7)))))) H4))))))))))) c t1 t H))))).
-
diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau1/defs.ma b/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau1/defs.ma
deleted file mode 100644 (file)
index 559bf5d..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "LambdaDelta-1/tau0/defs.ma".
-
-inductive tau1 (g: G) (c: C) (t1: T): T \to Prop \def
-| tau1_tau0: \forall (t2: T).((tau0 g c t1 t2) \to (tau1 g c t1 t2))
-| tau1_sing: \forall (t: T).((tau1 g c t1 t) \to (\forall (t2: T).((tau0 g c 
-t t2) \to (tau1 g c t1 t2)))).
-
diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau1/props.ma b/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/tau1/props.ma
deleted file mode 100644 (file)
index d7fc28b..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "LambdaDelta-1/tau1/defs.ma".
-
-include "LambdaDelta-1/tau0/props.ma".
-
-theorem tau1_trans:
- \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t: T).((tau1 g c 
-t1 t) \to (\forall (t2: T).((tau1 g c t t2) \to (tau1 g c t1 t2)))))))
-\def
- \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: 
-(tau1 g c t1 t)).(\lambda (t2: T).(\lambda (H0: (tau1 g c t t2)).(tau1_ind g 
-c t (\lambda (t0: T).(tau1 g c t1 t0)) (\lambda (t3: T).(\lambda (H1: (tau0 g 
-c t t3)).(tau1_sing g c t1 t H t3 H1))) (\lambda (t0: T).(\lambda (_: (tau1 g 
-c t t0)).(\lambda (H2: (tau1 g c t1 t0)).(\lambda (t3: T).(\lambda (H3: (tau0 
-g c t0 t3)).(tau1_sing g c t1 t0 H2 t3 H3)))))) t2 H0))))))).
-
-theorem tau1_bind:
- \forall (g: G).(\forall (b: B).(\forall (c: C).(\forall (v: T).(\forall (t1: 
-T).(\forall (t2: T).((tau1 g (CHead c (Bind b) v) t1 t2) \to (tau1 g c (THead 
-(Bind b) v t1) (THead (Bind b) v t2))))))))
-\def
- \lambda (g: G).(\lambda (b: B).(\lambda (c: C).(\lambda (v: T).(\lambda (t1: 
-T).(\lambda (t2: T).(\lambda (H: (tau1 g (CHead c (Bind b) v) t1 
-t2)).(tau1_ind g (CHead c (Bind b) v) t1 (\lambda (t: T).(tau1 g c (THead 
-(Bind b) v t1) (THead (Bind b) v t))) (\lambda (t3: T).(\lambda (H0: (tau0 g 
-(CHead c (Bind b) v) t1 t3)).(tau1_tau0 g c (THead (Bind b) v t1) (THead 
-(Bind b) v t3) (tau0_bind g b c v t1 t3 H0)))) (\lambda (t: T).(\lambda (_: 
-(tau1 g (CHead c (Bind b) v) t1 t)).(\lambda (H1: (tau1 g c (THead (Bind b) v 
-t1) (THead (Bind b) v t))).(\lambda (t3: T).(\lambda (H2: (tau0 g (CHead c 
-(Bind b) v) t t3)).(tau1_sing g c (THead (Bind b) v t1) (THead (Bind b) v t) 
-H1 (THead (Bind b) v t3) (tau0_bind g b c v t t3 H2))))))) t2 H))))))).
-
-theorem tau1_appl:
- \forall (g: G).(\forall (c: C).(\forall (v: T).(\forall (t1: T).(\forall 
-(t2: T).((tau1 g c t1 t2) \to (tau1 g c (THead (Flat Appl) v t1) (THead (Flat 
-Appl) v t2)))))))
-\def
- \lambda (g: G).(\lambda (c: C).(\lambda (v: T).(\lambda (t1: T).(\lambda 
-(t2: T).(\lambda (H: (tau1 g c t1 t2)).(tau1_ind g c t1 (\lambda (t: T).(tau1 
-g c (THead (Flat Appl) v t1) (THead (Flat Appl) v t))) (\lambda (t3: 
-T).(\lambda (H0: (tau0 g c t1 t3)).(tau1_tau0 g c (THead (Flat Appl) v t1) 
-(THead (Flat Appl) v t3) (tau0_appl g c v t1 t3 H0)))) (\lambda (t: 
-T).(\lambda (_: (tau1 g c t1 t)).(\lambda (H1: (tau1 g c (THead (Flat Appl) v 
-t1) (THead (Flat Appl) v t))).(\lambda (t3: T).(\lambda (H2: (tau0 g c t 
-t3)).(tau1_sing g c (THead (Flat Appl) v t1) (THead (Flat Appl) v t) H1 
-(THead (Flat Appl) v t3) (tau0_appl g c v t t3 H2))))))) t2 H)))))).
-
-theorem tau1_lift:
- \forall (g: G).(\forall (e: C).(\forall (t1: T).(\forall (t2: T).((tau1 g e 
-t1 t2) \to (\forall (c: C).(\forall (h: nat).(\forall (d: nat).((drop h d c 
-e) \to (tau1 g c (lift h d t1) (lift h d t2))))))))))
-\def
- \lambda (g: G).(\lambda (e: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
-(H: (tau1 g e t1 t2)).(tau1_ind g e t1 (\lambda (t: T).(\forall (c: 
-C).(\forall (h: nat).(\forall (d: nat).((drop h d c e) \to (tau1 g c (lift h 
-d t1) (lift h d t))))))) (\lambda (t3: T).(\lambda (H0: (tau0 g e t1 
-t3)).(\lambda (c: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1: (drop 
-h d c e)).(tau1_tau0 g c (lift h d t1) (lift h d t3) (tau0_lift g e t1 t3 H0 
-c h d H1)))))))) (\lambda (t: T).(\lambda (_: (tau1 g e t1 t)).(\lambda (H1: 
-((\forall (c: C).(\forall (h: nat).(\forall (d: nat).((drop h d c e) \to 
-(tau1 g c (lift h d t1) (lift h d t)))))))).(\lambda (t3: T).(\lambda (H2: 
-(tau0 g e t t3)).(\lambda (c: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda 
-(H3: (drop h d c e)).(tau1_sing g c (lift h d t1) (lift h d t) (H1 c h d H3) 
-(lift h d t3) (tau0_lift g e t t3 H2 c h d H3))))))))))) t2 H))))).
-
-theorem tau1_correct:
- \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t: T).((tau1 g c 
-t1 t) \to (ex T (\lambda (t2: T).(tau0 g c t t2)))))))
-\def
- \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: 
-(tau1 g c t1 t)).(tau1_ind g c t1 (\lambda (t0: T).(ex T (\lambda (t2: 
-T).(tau0 g c t0 t2)))) (\lambda (t2: T).(\lambda (H0: (tau0 g c t1 
-t2)).(tau0_correct g c t1 t2 H0))) (\lambda (t0: T).(\lambda (_: (tau1 g c t1 
-t0)).(\lambda (_: (ex T (\lambda (t2: T).(tau0 g c t0 t2)))).(\lambda (t2: 
-T).(\lambda (H2: (tau0 g c t0 t2)).(tau0_correct g c t0 t2 H2)))))) t H))))).
-
-theorem tau1_abbr:
- \forall (g: G).(\forall (c: C).(\forall (d: C).(\forall (v: T).(\forall (i: 
-nat).((getl i c (CHead d (Bind Abbr) v)) \to (\forall (w: T).((tau1 g d v w) 
-\to (tau1 g c (TLRef i) (lift (S i) O w)))))))))
-\def
- \lambda (g: G).(\lambda (c: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: 
-nat).(\lambda (H: (getl i c (CHead d (Bind Abbr) v))).(\lambda (w: 
-T).(\lambda (H0: (tau1 g d v w)).(tau1_ind g d v (\lambda (t: T).(tau1 g c 
-(TLRef i) (lift (S i) O t))) (\lambda (t2: T).(\lambda (H1: (tau0 g d v 
-t2)).(tau1_tau0 g c (TLRef i) (lift (S i) O t2) (tau0_abbr g c d v i H t2 
-H1)))) (\lambda (t: T).(\lambda (_: (tau1 g d v t)).(\lambda (H2: (tau1 g c 
-(TLRef i) (lift (S i) O t))).(\lambda (t2: T).(\lambda (H3: (tau0 g d t 
-t2)).(tau1_sing g c (TLRef i) (lift (S i) O t) H2 (lift (S i) O t2) 
-(tau0_lift g d t t2 H3 c (S i) O (getl_drop Abbr c d v i H)))))))) w 
-H0)))))))).
-
-theorem tau1_cast2:
- \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t2: T).((tau1 g c 
-t1 t2) \to (\forall (v1: T).(\forall (v2: T).((tau0 g c v1 v2) \to (ex2 T 
-(\lambda (v3: T).(tau1 g c v1 v3)) (\lambda (v3: T).(tau1 g c (THead (Flat 
-Cast) v1 t1) (THead (Flat Cast) v3 t2)))))))))))
-\def
- \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
-(H: (tau1 g c t1 t2)).(tau1_ind g c t1 (\lambda (t: T).(\forall (v1: 
-T).(\forall (v2: T).((tau0 g c v1 v2) \to (ex2 T (\lambda (v3: T).(tau1 g c 
-v1 v3)) (\lambda (v3: T).(tau1 g c (THead (Flat Cast) v1 t1) (THead (Flat 
-Cast) v3 t)))))))) (\lambda (t3: T).(\lambda (H0: (tau0 g c t1 t3)).(\lambda 
-(v1: T).(\lambda (v2: T).(\lambda (H1: (tau0 g c v1 v2)).(ex_intro2 T 
-(\lambda (v3: T).(tau1 g c v1 v3)) (\lambda (v3: T).(tau1 g c (THead (Flat 
-Cast) v1 t1) (THead (Flat Cast) v3 t3))) v2 (tau1_tau0 g c v1 v2 H1) 
-(tau1_tau0 g c (THead (Flat Cast) v1 t1) (THead (Flat Cast) v2 t3) (tau0_cast 
-g c v1 v2 H1 t1 t3 H0)))))))) (\lambda (t: T).(\lambda (_: (tau1 g c t1 
-t)).(\lambda (H1: ((\forall (v1: T).(\forall (v2: T).((tau0 g c v1 v2) \to 
-(ex2 T (\lambda (v3: T).(tau1 g c v1 v3)) (\lambda (v3: T).(tau1 g c (THead 
-(Flat Cast) v1 t1) (THead (Flat Cast) v3 t))))))))).(\lambda (t3: T).(\lambda 
-(H2: (tau0 g c t t3)).(\lambda (v1: T).(\lambda (v2: T).(\lambda (H3: (tau0 g 
-c v1 v2)).(let H_x \def (H1 v1 v2 H3) in (let H4 \def H_x in (ex2_ind T 
-(\lambda (v3: T).(tau1 g c v1 v3)) (\lambda (v3: T).(tau1 g c (THead (Flat 
-Cast) v1 t1) (THead (Flat Cast) v3 t))) (ex2 T (\lambda (v3: T).(tau1 g c v1 
-v3)) (\lambda (v3: T).(tau1 g c (THead (Flat Cast) v1 t1) (THead (Flat Cast) 
-v3 t3)))) (\lambda (x: T).(\lambda (H5: (tau1 g c v1 x)).(\lambda (H6: (tau1 
-g c (THead (Flat Cast) v1 t1) (THead (Flat Cast) x t))).(let H_x0 \def 
-(tau1_correct g c v1 x H5) in (let H7 \def H_x0 in (ex_ind T (\lambda (t4: 
-T).(tau0 g c x t4)) (ex2 T (\lambda (v3: T).(tau1 g c v1 v3)) (\lambda (v3: 
-T).(tau1 g c (THead (Flat Cast) v1 t1) (THead (Flat Cast) v3 t3)))) (\lambda 
-(x0: T).(\lambda (H8: (tau0 g c x x0)).(ex_intro2 T (\lambda (v3: T).(tau1 g 
-c v1 v3)) (\lambda (v3: T).(tau1 g c (THead (Flat Cast) v1 t1) (THead (Flat 
-Cast) v3 t3))) x0 (tau1_sing g c v1 x H5 x0 H8) (tau1_sing g c (THead (Flat 
-Cast) v1 t1) (THead (Flat Cast) x t) H6 (THead (Flat Cast) x0 t3) (tau0_cast 
-g c x x0 H8 t t3 H2))))) H7)))))) H4))))))))))) t2 H))))).
-
index 3f5d5414d23b5b0f81260966f725a456816e5034..e2c568a376a9af3d3430414a92069747e422a7e6 100644 (file)
@@ -18,7 +18,7 @@ include "LambdaDelta-1/subst0/tlt.ma".
 
 include "LambdaDelta-1/subst/props.ma".
 
-include "LambdaDelta-1/tau1/cnt.ma".
+include "LambdaDelta-1/sty1/cnt.ma".
 
 include "LambdaDelta-1/ex0/props.ma".
 
@@ -30,7 +30,7 @@ include "LambdaDelta-1/ex2/props.ma".
 
 include "LambdaDelta-1/ex1/props.ma".
 
-include "LambdaDelta-1/ty3/tau0.ma".
+include "LambdaDelta-1/ty3/sty0.ma".
 
 include "LambdaDelta-1/ty3/nf2.ma".
 
index 659b8fd8492aea4a473c20252266bed7dfd95a50..41a31b1f003b2ce59ccf4f6c961736da23068978 100644 (file)
@@ -288,12 +288,12 @@ t4 H17 (S O) O))))) (ty3_correct g (CHead c2 (Bind b) u) (lift (S O) O t4) t3
 (H18 (CHead c2 (Bind b) u) (wcpr0_comp c c2 H4 u u (pr0_refl u) (Bind b)) 
 (lift (S O) O t4) (pr0_lift t5 t4 H17 (S O) O)))))))) t6 (sym_eq T t6 t4 
 H15))) t2 H14)) u0 (sym_eq T u0 u H13))) b0 (sym_eq B b0 b H12))) H11)) H10)) 
-H9 H6 H7))) | (pr0_epsilon t5 t6 H6 u0) \Rightarrow (\lambda (H7: (eq T 
-(THead (Flat Cast) u0 t5) (THead (Bind b) u t2))).(\lambda (H8: (eq T t6 
-t4)).((let H9 \def (eq_ind T (THead (Flat Cast) u0 t5) (\lambda (e: T).(match 
-e in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
-(TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k in K return 
-(\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow 
+H9 H6 H7))) | (pr0_tau t5 t6 H6 u0) \Rightarrow (\lambda (H7: (eq T (THead 
+(Flat Cast) u0 t5) (THead (Bind b) u t2))).(\lambda (H8: (eq T t6 t4)).((let 
+H9 \def (eq_ind T (THead (Flat Cast) u0 t5) (\lambda (e: T).(match e in T 
+return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
+\Rightarrow False | (THead k _ _) \Rightarrow (match k in K return (\lambda 
+(_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow 
 True])])) I (THead (Bind b) u t2) H7) in (False_ind ((eq T t6 t4) \to ((pr0 
 t5 t6) \to (ty3 g c2 t4 (THead (Bind b) u t3)))) H9)) H8 H6)))]) in (H6 
 (refl_equal T (THead (Bind b) u t2)) (refl_equal T t4))))))))))))))))) 
@@ -535,7 +535,7 @@ T (THead (Bind b) u0 (lift (S O) O t3)) (\lambda (e: T).(match e in T return
 (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow 
 False])])) I (THead (Flat Appl) w v) H8) in (False_ind ((eq T t4 t2) \to 
 ((not (eq B b Abst)) \to ((pr0 t3 t4) \to (ty3 g c2 t2 (THead (Flat Appl) w 
-(THead (Bind Abst) u t0)))))) H10)) H9 H6 H7))) | (pr0_epsilon t3 t4 H6 u0) 
+(THead (Bind Abst) u t0)))))) H10)) H9 H6 H7))) | (pr0_tau t3 t4 H6 u0) 
 \Rightarrow (\lambda (H7: (eq T (THead (Flat Cast) u0 t3) (THead (Flat Appl) 
 w v))).(\lambda (H8: (eq T t4 t2)).((let H9 \def (eq_ind T (THead (Flat Cast) 
 u0 t3) (\lambda (e: T).(match e in T return (\lambda (_: T).Prop) with 
@@ -635,8 +635,8 @@ T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False |
 [(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat 
 Cast) t3 t2) H8) in (False_ind ((eq T t6 t4) \to ((not (eq B b Abst)) \to 
 ((pr0 t5 t6) \to (ty3 g c2 t4 (THead (Flat Cast) t0 t3))))) H10)) H9 H6 H7))) 
-| (pr0_epsilon t5 t6 H6 u) \Rightarrow (\lambda (H7: (eq T (THead (Flat Cast) 
-t5) (THead (Flat Cast) t3 t2))).(\lambda (H8: (eq T t6 t4)).((let H9 \def 
+| (pr0_tau t5 t6 H6 u) \Rightarrow (\lambda (H7: (eq T (THead (Flat Cast) u 
+t5) (THead (Flat Cast) t3 t2))).(\lambda (H8: (eq T t6 t4)).((let H9 \def 
 (f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) with 
 [(TSort _) \Rightarrow t5 | (TLRef _) \Rightarrow t5 | (THead _ _ t7) 
 \Rightarrow t7])) (THead (Flat Cast) u t5) (THead (Flat Cast) t3 t2) H7) in 
@@ -653,10 +653,10 @@ g c2 t4 (THead (Flat Cast) t0 t3)) (\lambda (x: T).(\lambda (H14: (ty3 g c2
 t0 x)).(ty3_conv g c2 (THead (Flat Cast) t0 t3) (THead (Flat Cast) x t0) 
 (ty3_cast g c2 t3 t0 (H3 c2 H4 t3 (pr0_refl t3)) x H14) t4 t3 (H1 c2 H4 t4 
 H13) (pc3_pr2_x c2 t3 (THead (Flat Cast) t0 t3) (pr2_free c2 (THead (Flat 
-Cast) t0 t3) t3 (pr0_epsilon t3 t3 (pr0_refl t3) t0)))))) (ty3_correct g c2 
-t3 t0 (H3 c2 H4 t3 (pr0_refl t3))))) t6 (sym_eq T t6 t4 H12))) t5 (sym_eq T 
-t5 t2 H11))) u (sym_eq T u t3 H10))) H9)) H8 H6)))]) in (H6 (refl_equal T 
-(THead (Flat Cast) t3 t2)) (refl_equal T t4))))))))))))))) c1 t1 t H))))).
+Cast) t0 t3) t3 (pr0_tau t3 t3 (pr0_refl t3) t0)))))) (ty3_correct g c2 t3 t0 
+(H3 c2 H4 t3 (pr0_refl t3))))) t6 (sym_eq T t6 t4 H12))) t5 (sym_eq T t5 t2 
+H11))) u (sym_eq T u t3 H10))) H9)) H8 H6)))]) in (H6 (refl_equal T (THead 
+(Flat Cast) t3 t2)) (refl_equal T t4))))))))))))))) c1 t1 t H))))).
 
 theorem ty3_sred_pr0:
  \forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to (\forall (g: G).(\forall 
diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/ty3/sty0.ma b/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/ty3/sty0.ma
new file mode 100644 (file)
index 0000000..59bff03
--- /dev/null
@@ -0,0 +1,234 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "LambdaDelta-1/ty3/pr3_props.ma".
+
+include "LambdaDelta-1/sty0/fwd.ma".
+
+theorem ty3_sty0:
+ \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (t1: T).((ty3 g c u 
+t1) \to (\forall (t2: T).((sty0 g c u t2) \to (ty3 g c u t2)))))))
+\def
+ \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (t1: T).(\lambda (H: 
+(ty3 g c u t1)).(ty3_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda (_: 
+T).(\forall (t2: T).((sty0 g c0 t t2) \to (ty3 g c0 t t2)))))) (\lambda (c0: 
+C).(\lambda (t2: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 t2 t)).(\lambda 
+(_: ((\forall (t3: T).((sty0 g c0 t2 t3) \to (ty3 g c0 t2 t3))))).(\lambda 
+(u0: T).(\lambda (t3: T).(\lambda (_: (ty3 g c0 u0 t3)).(\lambda (H3: 
+((\forall (t4: T).((sty0 g c0 u0 t4) \to (ty3 g c0 u0 t4))))).(\lambda (_: 
+(pc3 c0 t3 t2)).(\lambda (t0: T).(\lambda (H5: (sty0 g c0 u0 t0)).(H3 t0 
+H5))))))))))))) (\lambda (c0: C).(\lambda (m: nat).(\lambda (t2: T).(\lambda 
+(H0: (sty0 g c0 (TSort m) t2)).(let H_y \def (sty0_gen_sort g c0 t2 m H0) in 
+(let H1 \def (f_equal T T (\lambda (e: T).e) t2 (TSort (next g m)) H_y) in 
+(eq_ind_r T (TSort (next g m)) (\lambda (t: T).(ty3 g c0 (TSort m) t)) 
+(ty3_sort g c0 m) t2 H1))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda 
+(d: C).(\lambda (u0: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abbr) 
+u0))).(\lambda (t: T).(\lambda (_: (ty3 g d u0 t)).(\lambda (H2: ((\forall 
+(t2: T).((sty0 g d u0 t2) \to (ty3 g d u0 t2))))).(\lambda (t2: T).(\lambda 
+(H3: (sty0 g c0 (TLRef n) t2)).(let H_x \def (sty0_gen_lref g c0 t2 n H3) in 
+(let H4 \def H_x in (or_ind (ex3_3 C T T (\lambda (e: C).(\lambda (u1: 
+T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u1))))) (\lambda (e: 
+C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g e u1 t0)))) (\lambda (_: 
+C).(\lambda (_: T).(\lambda (t0: T).(eq T t2 (lift (S n) O t0)))))) (ex3_3 C 
+T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e 
+(Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g 
+e u1 t0)))) (\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq T t2 (lift 
+(S n) O u1)))))) (ty3 g c0 (TLRef n) t2) (\lambda (H5: (ex3_3 C T T (\lambda 
+(e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) 
+u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g e u1 t0)))) 
+(\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(eq T t2 (lift (S n) O 
+t0))))))).(ex3_3_ind C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: 
+T).(getl n c0 (CHead e (Bind Abbr) u1))))) (\lambda (e: C).(\lambda (u1: 
+T).(\lambda (t0: T).(sty0 g e u1 t0)))) (\lambda (_: C).(\lambda (_: 
+T).(\lambda (t0: T).(eq T t2 (lift (S n) O t0))))) (ty3 g c0 (TLRef n) t2) 
+(\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (H6: (getl n c0 
+(CHead x0 (Bind Abbr) x1))).(\lambda (H7: (sty0 g x0 x1 x2)).(\lambda (H8: 
+(eq T t2 (lift (S n) O x2))).(let H9 \def (f_equal T T (\lambda (e: T).e) t2 
+(lift (S n) O x2) H8) in (eq_ind_r T (lift (S n) O x2) (\lambda (t0: T).(ty3 
+g c0 (TLRef n) t0)) (let H10 \def (eq_ind C (CHead d (Bind Abbr) u0) (\lambda 
+(c1: C).(getl n c0 c1)) H0 (CHead x0 (Bind Abbr) x1) (getl_mono c0 (CHead d 
+(Bind Abbr) u0) n H0 (CHead x0 (Bind Abbr) x1) H6)) in (let H11 \def (f_equal 
+C C (\lambda (e: C).(match e in C return (\lambda (_: C).C) with [(CSort _) 
+\Rightarrow d | (CHead c1 _ _) \Rightarrow c1])) (CHead d (Bind Abbr) u0) 
+(CHead x0 (Bind Abbr) x1) (getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead 
+x0 (Bind Abbr) x1) H6)) in ((let H12 \def (f_equal C T (\lambda (e: C).(match 
+e in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ 
+t0) \Rightarrow t0])) (CHead d (Bind Abbr) u0) (CHead x0 (Bind Abbr) x1) 
+(getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead x0 (Bind Abbr) x1) H6)) in 
+(\lambda (H13: (eq C d x0)).(let H14 \def (eq_ind_r T x1 (\lambda (t0: 
+T).(getl n c0 (CHead x0 (Bind Abbr) t0))) H10 u0 H12) in (let H15 \def 
+(eq_ind_r T x1 (\lambda (t0: T).(sty0 g x0 t0 x2)) H7 u0 H12) in (let H16 
+\def (eq_ind_r C x0 (\lambda (c1: C).(getl n c0 (CHead c1 (Bind Abbr) u0))) 
+H14 d H13) in (let H17 \def (eq_ind_r C x0 (\lambda (c1: C).(sty0 g c1 u0 
+x2)) H15 d H13) in (ty3_abbr g n c0 d u0 H16 x2 (H2 x2 H17)))))))) H11))) t2 
+H9)))))))) H5)) (\lambda (H5: (ex3_3 C T T (\lambda (e: C).(\lambda (u1: 
+T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: 
+C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g e u1 t0)))) (\lambda (_: 
+C).(\lambda (u1: T).(\lambda (_: T).(eq T t2 (lift (S n) O 
+u1))))))).(ex3_3_ind C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: 
+T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: 
+T).(\lambda (t0: T).(sty0 g e u1 t0)))) (\lambda (_: C).(\lambda (u1: 
+T).(\lambda (_: T).(eq T t2 (lift (S n) O u1))))) (ty3 g c0 (TLRef n) t2) 
+(\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (H6: (getl n c0 
+(CHead x0 (Bind Abst) x1))).(\lambda (_: (sty0 g x0 x1 x2)).(\lambda (H8: (eq 
+T t2 (lift (S n) O x1))).(let H9 \def (f_equal T T (\lambda (e: T).e) t2 
+(lift (S n) O x1) H8) in (eq_ind_r T (lift (S n) O x1) (\lambda (t0: T).(ty3 
+g c0 (TLRef n) t0)) (let H10 \def (eq_ind C (CHead d (Bind Abbr) u0) (\lambda 
+(c1: C).(getl n c0 c1)) H0 (CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d 
+(Bind Abbr) u0) n H0 (CHead x0 (Bind Abst) x1) H6)) in (let H11 \def (eq_ind 
+C (CHead d (Bind Abbr) u0) (\lambda (ee: C).(match ee in C return (\lambda 
+(_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow 
+(match k in K return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match 
+b in B return (\lambda (_: B).Prop) with [Abbr \Rightarrow True | Abst 
+\Rightarrow False | Void \Rightarrow False]) | (Flat _) \Rightarrow 
+False])])) I (CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d (Bind Abbr) u0) 
+n H0 (CHead x0 (Bind Abst) x1) H6)) in (False_ind (ty3 g c0 (TLRef n) (lift 
+(S n) O x1)) H11))) t2 H9)))))))) H5)) H4))))))))))))) (\lambda (n: 
+nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u0: T).(\lambda (H0: (getl n 
+c0 (CHead d (Bind Abst) u0))).(\lambda (t: T).(\lambda (H1: (ty3 g d u0 
+t)).(\lambda (_: ((\forall (t2: T).((sty0 g d u0 t2) \to (ty3 g d u0 
+t2))))).(\lambda (t2: T).(\lambda (H3: (sty0 g c0 (TLRef n) t2)).(let H_x 
+\def (sty0_gen_lref g c0 t2 n H3) in (let H4 \def H_x in (or_ind (ex3_3 C T T 
+(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
+Abbr) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g e u1 
+t0)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(eq T t2 (lift (S n) 
+O t0)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: 
+T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: 
+T).(\lambda (t0: T).(sty0 g e u1 t0)))) (\lambda (_: C).(\lambda (u1: 
+T).(\lambda (_: T).(eq T t2 (lift (S n) O u1)))))) (ty3 g c0 (TLRef n) t2) 
+(\lambda (H5: (ex3_3 C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: 
+T).(getl n c0 (CHead e (Bind Abbr) u1))))) (\lambda (e: C).(\lambda (u1: 
+T).(\lambda (t0: T).(sty0 g e u1 t0)))) (\lambda (_: C).(\lambda (_: 
+T).(\lambda (t0: T).(eq T t2 (lift (S n) O t0))))))).(ex3_3_ind C T T 
+(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
+Abbr) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g e u1 
+t0)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(eq T t2 (lift (S n) 
+O t0))))) (ty3 g c0 (TLRef n) t2) (\lambda (x0: C).(\lambda (x1: T).(\lambda 
+(x2: T).(\lambda (H6: (getl n c0 (CHead x0 (Bind Abbr) x1))).(\lambda (_: 
+(sty0 g x0 x1 x2)).(\lambda (H8: (eq T t2 (lift (S n) O x2))).(let H9 \def 
+(f_equal T T (\lambda (e: T).e) t2 (lift (S n) O x2) H8) in (eq_ind_r T (lift 
+(S n) O x2) (\lambda (t0: T).(ty3 g c0 (TLRef n) t0)) (let H10 \def (eq_ind C 
+(CHead d (Bind Abst) u0) (\lambda (c1: C).(getl n c0 c1)) H0 (CHead x0 (Bind 
+Abbr) x1) (getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead x0 (Bind Abbr) 
+x1) H6)) in (let H11 \def (eq_ind C (CHead d (Bind Abst) u0) (\lambda (ee: 
+C).(match ee in C return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow 
+False | (CHead _ k _) \Rightarrow (match k in K return (\lambda (_: K).Prop) 
+with [(Bind b) \Rightarrow (match b in B return (\lambda (_: B).Prop) with 
+[Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow False]) | 
+(Flat _) \Rightarrow False])])) I (CHead x0 (Bind Abbr) x1) (getl_mono c0 
+(CHead d (Bind Abst) u0) n H0 (CHead x0 (Bind Abbr) x1) H6)) in (False_ind 
+(ty3 g c0 (TLRef n) (lift (S n) O x2)) H11))) t2 H9)))))))) H5)) (\lambda 
+(H5: (ex3_3 C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 
+(CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: 
+T).(sty0 g e u1 t0)))) (\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq T 
+t2 (lift (S n) O u1))))))).(ex3_3_ind C T T (\lambda (e: C).(\lambda (u1: 
+T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: 
+C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g e u1 t0)))) (\lambda (_: 
+C).(\lambda (u1: T).(\lambda (_: T).(eq T t2 (lift (S n) O u1))))) (ty3 g c0 
+(TLRef n) t2) (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda 
+(H6: (getl n c0 (CHead x0 (Bind Abst) x1))).(\lambda (H7: (sty0 g x0 x1 
+x2)).(\lambda (H8: (eq T t2 (lift (S n) O x1))).(let H9 \def (f_equal T T 
+(\lambda (e: T).e) t2 (lift (S n) O x1) H8) in (eq_ind_r T (lift (S n) O x1) 
+(\lambda (t0: T).(ty3 g c0 (TLRef n) t0)) (let H10 \def (eq_ind C (CHead d 
+(Bind Abst) u0) (\lambda (c1: C).(getl n c0 c1)) H0 (CHead x0 (Bind Abst) x1) 
+(getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead x0 (Bind Abst) x1) H6)) in 
+(let H11 \def (f_equal C C (\lambda (e: C).(match e in C return (\lambda (_: 
+C).C) with [(CSort _) \Rightarrow d | (CHead c1 _ _) \Rightarrow c1])) (CHead 
+d (Bind Abst) u0) (CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d (Bind 
+Abst) u0) n H0 (CHead x0 (Bind Abst) x1) H6)) in ((let H12 \def (f_equal C T 
+(\lambda (e: C).(match e in C return (\lambda (_: C).T) with [(CSort _) 
+\Rightarrow u0 | (CHead _ _ t0) \Rightarrow t0])) (CHead d (Bind Abst) u0) 
+(CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead 
+x0 (Bind Abst) x1) H6)) in (\lambda (H13: (eq C d x0)).(let H14 \def 
+(eq_ind_r T x1 (\lambda (t0: T).(getl n c0 (CHead x0 (Bind Abst) t0))) H10 u0 
+H12) in (let H15 \def (eq_ind_r T x1 (\lambda (t0: T).(sty0 g x0 t0 x2)) H7 
+u0 H12) in (eq_ind T u0 (\lambda (t0: T).(ty3 g c0 (TLRef n) (lift (S n) O 
+t0))) (let H16 \def (eq_ind_r C x0 (\lambda (c1: C).(getl n c0 (CHead c1 
+(Bind Abst) u0))) H14 d H13) in (let H17 \def (eq_ind_r C x0 (\lambda (c1: 
+C).(sty0 g c1 u0 x2)) H15 d H13) in (ty3_abst g n c0 d u0 H16 t H1))) x1 
+H12))))) H11))) t2 H9)))))))) H5)) H4))))))))))))) (\lambda (c0: C).(\lambda 
+(u0: T).(\lambda (t: T).(\lambda (H0: (ty3 g c0 u0 t)).(\lambda (_: ((\forall 
+(t2: T).((sty0 g c0 u0 t2) \to (ty3 g c0 u0 t2))))).(\lambda (b: B).(\lambda 
+(t2: T).(\lambda (t3: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u0) t2 
+t3)).(\lambda (H3: ((\forall (t4: T).((sty0 g (CHead c0 (Bind b) u0) t2 t4) 
+\to (ty3 g (CHead c0 (Bind b) u0) t2 t4))))).(\lambda (t0: T).(\lambda (H4: 
+(sty0 g c0 (THead (Bind b) u0 t2) t0)).(let H_x \def (sty0_gen_bind g b c0 u0 
+t2 t0 H4) in (let H5 \def H_x in (ex2_ind T (\lambda (t4: T).(sty0 g (CHead 
+c0 (Bind b) u0) t2 t4)) (\lambda (t4: T).(eq T t0 (THead (Bind b) u0 t4))) 
+(ty3 g c0 (THead (Bind b) u0 t2) t0) (\lambda (x: T).(\lambda (H6: (sty0 g 
+(CHead c0 (Bind b) u0) t2 x)).(\lambda (H7: (eq T t0 (THead (Bind b) u0 
+x))).(let H8 \def (f_equal T T (\lambda (e: T).e) t0 (THead (Bind b) u0 x) 
+H7) in (eq_ind_r T (THead (Bind b) u0 x) (\lambda (t4: T).(ty3 g c0 (THead 
+(Bind b) u0 t2) t4)) (ty3_bind g c0 u0 t H0 b t2 x (H3 x H6)) t0 H8))))) 
+H5))))))))))))))) (\lambda (c0: C).(\lambda (w: T).(\lambda (u0: T).(\lambda 
+(H0: (ty3 g c0 w u0)).(\lambda (_: ((\forall (t2: T).((sty0 g c0 w t2) \to 
+(ty3 g c0 w t2))))).(\lambda (v: T).(\lambda (t: T).(\lambda (H2: (ty3 g c0 v 
+(THead (Bind Abst) u0 t))).(\lambda (H3: ((\forall (t2: T).((sty0 g c0 v t2) 
+\to (ty3 g c0 v t2))))).(\lambda (t2: T).(\lambda (H4: (sty0 g c0 (THead 
+(Flat Appl) w v) t2)).(let H_x \def (sty0_gen_appl g c0 w v t2 H4) in (let H5 
+\def H_x in (ex2_ind T (\lambda (t3: T).(sty0 g c0 v t3)) (\lambda (t3: 
+T).(eq T t2 (THead (Flat Appl) w t3))) (ty3 g c0 (THead (Flat Appl) w v) t2) 
+(\lambda (x: T).(\lambda (H6: (sty0 g c0 v x)).(\lambda (H7: (eq T t2 (THead 
+(Flat Appl) w x))).(let H8 \def (f_equal T T (\lambda (e: T).e) t2 (THead 
+(Flat Appl) w x) H7) in (eq_ind_r T (THead (Flat Appl) w x) (\lambda (t0: 
+T).(ty3 g c0 (THead (Flat Appl) w v) t0)) (let H_y \def (H3 x H6) in (let H9 
+\def (ty3_unique g c0 v x H_y (THead (Bind Abst) u0 t) H2) in (ex_ind T 
+(\lambda (t0: T).(ty3 g c0 x t0)) (ty3 g c0 (THead (Flat Appl) w v) (THead 
+(Flat Appl) w x)) (\lambda (x0: T).(\lambda (H10: (ty3 g c0 x x0)).(ex_ind T 
+(\lambda (t0: T).(ty3 g c0 u0 t0)) (ty3 g c0 (THead (Flat Appl) w v) (THead 
+(Flat Appl) w x)) (\lambda (x1: T).(\lambda (_: (ty3 g c0 u0 x1)).(ex_ind T 
+(\lambda (t0: T).(ty3 g c0 (THead (Bind Abst) u0 t) t0)) (ty3 g c0 (THead 
+(Flat Appl) w v) (THead (Flat Appl) w x)) (\lambda (x2: T).(\lambda (H12: 
+(ty3 g c0 (THead (Bind Abst) u0 t) x2)).(ex3_2_ind T T (\lambda (t3: 
+T).(\lambda (_: T).(pc3 c0 (THead (Bind Abst) u0 t3) x2))) (\lambda (_: 
+T).(\lambda (t0: T).(ty3 g c0 u0 t0))) (\lambda (t3: T).(\lambda (_: T).(ty3 
+g (CHead c0 (Bind Abst) u0) t t3))) (ty3 g c0 (THead (Flat Appl) w v) (THead 
+(Flat Appl) w x)) (\lambda (x3: T).(\lambda (x4: T).(\lambda (_: (pc3 c0 
+(THead (Bind Abst) u0 x3) x2)).(\lambda (H14: (ty3 g c0 u0 x4)).(\lambda 
+(H15: (ty3 g (CHead c0 (Bind Abst) u0) t x3)).(ty3_conv g c0 (THead (Flat 
+Appl) w x) (THead (Flat Appl) w (THead (Bind Abst) u0 x3)) (ty3_appl g c0 w 
+u0 H0 x x3 (ty3_sconv g c0 x x0 H10 (THead (Bind Abst) u0 t) (THead (Bind 
+Abst) u0 x3) (ty3_bind g c0 u0 x4 H14 Abst t x3 H15) H9)) (THead (Flat Appl) 
+w v) (THead (Flat Appl) w (THead (Bind Abst) u0 t)) (ty3_appl g c0 w u0 H0 v 
+t H2) (pc3_thin_dx c0 (THead (Bind Abst) u0 t) x (ty3_unique g c0 v (THead 
+(Bind Abst) u0 t) H2 x H_y) w Appl))))))) (ty3_gen_bind g Abst c0 u0 t x2 
+H12)))) (ty3_correct g c0 v (THead (Bind Abst) u0 t) H2)))) (ty3_correct g c0 
+w u0 H0)))) (ty3_correct g c0 v x H_y)))) t2 H8))))) H5)))))))))))))) 
+(\lambda (c0: C).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H0: (ty3 g c0 t2 
+t3)).(\lambda (H1: ((\forall (t4: T).((sty0 g c0 t2 t4) \to (ty3 g c0 t2 
+t4))))).(\lambda (t0: T).(\lambda (_: (ty3 g c0 t3 t0)).(\lambda (H3: 
+((\forall (t4: T).((sty0 g c0 t3 t4) \to (ty3 g c0 t3 t4))))).(\lambda (t4: 
+T).(\lambda (H4: (sty0 g c0 (THead (Flat Cast) t3 t2) t4)).(let H_x \def 
+(sty0_gen_cast g c0 t3 t2 t4 H4) in (let H5 \def H_x in (ex3_2_ind T T 
+(\lambda (v2: T).(\lambda (_: T).(sty0 g c0 t3 v2))) (\lambda (_: T).(\lambda 
+(t5: T).(sty0 g c0 t2 t5))) (\lambda (v2: T).(\lambda (t5: T).(eq T t4 (THead 
+(Flat Cast) v2 t5)))) (ty3 g c0 (THead (Flat Cast) t3 t2) t4) (\lambda (x0: 
+T).(\lambda (x1: T).(\lambda (H6: (sty0 g c0 t3 x0)).(\lambda (H7: (sty0 g c0 
+t2 x1)).(\lambda (H8: (eq T t4 (THead (Flat Cast) x0 x1))).(let H9 \def 
+(f_equal T T (\lambda (e: T).e) t4 (THead (Flat Cast) x0 x1) H8) in (eq_ind_r 
+T (THead (Flat Cast) x0 x1) (\lambda (t: T).(ty3 g c0 (THead (Flat Cast) t3 
+t2) t)) (let H_y \def (H1 x1 H7) in (let H_y0 \def (H3 x0 H6) in (let H10 
+\def (ty3_unique g c0 t2 x1 H_y t3 H0) in (ex_ind T (\lambda (t: T).(ty3 g c0 
+x0 t)) (ty3 g c0 (THead (Flat Cast) t3 t2) (THead (Flat Cast) x0 x1)) 
+(\lambda (x: T).(\lambda (H11: (ty3 g c0 x0 x)).(ex_ind T (\lambda (t: 
+T).(ty3 g c0 x1 t)) (ty3 g c0 (THead (Flat Cast) t3 t2) (THead (Flat Cast) x0 
+x1)) (\lambda (x2: T).(\lambda (H12: (ty3 g c0 x1 x2)).(ty3_conv g c0 (THead 
+(Flat Cast) x0 x1) (THead (Flat Cast) x x0) (ty3_cast g c0 x1 x0 (ty3_sconv g 
+c0 x1 x2 H12 t3 x0 H_y0 H10) x H11) (THead (Flat Cast) t3 t2) (THead (Flat 
+Cast) x0 t3) (ty3_cast g c0 t2 t3 H0 x0 H_y0) (pc3_thin_dx c0 t3 x1 
+(ty3_unique g c0 t2 t3 H0 x1 H_y) x0 Cast)))) (ty3_correct g c0 t2 x1 H_y)))) 
+(ty3_correct g c0 t3 x0 H_y0))))) t4 H9))))))) H5))))))))))))) c u t1 H))))).
+
diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/ty3/tau0.ma b/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/ty3/tau0.ma
deleted file mode 100644 (file)
index 5e1cef7..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "LambdaDelta-1/ty3/pr3_props.ma".
-
-include "LambdaDelta-1/tau0/fwd.ma".
-
-theorem ty3_tau0:
- \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (t1: T).((ty3 g c u 
-t1) \to (\forall (t2: T).((tau0 g c u t2) \to (ty3 g c u t2)))))))
-\def
- \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (t1: T).(\lambda (H: 
-(ty3 g c u t1)).(ty3_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda (_: 
-T).(\forall (t2: T).((tau0 g c0 t t2) \to (ty3 g c0 t t2)))))) (\lambda (c0: 
-C).(\lambda (t2: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 t2 t)).(\lambda 
-(_: ((\forall (t3: T).((tau0 g c0 t2 t3) \to (ty3 g c0 t2 t3))))).(\lambda 
-(u0: T).(\lambda (t3: T).(\lambda (_: (ty3 g c0 u0 t3)).(\lambda (H3: 
-((\forall (t4: T).((tau0 g c0 u0 t4) \to (ty3 g c0 u0 t4))))).(\lambda (_: 
-(pc3 c0 t3 t2)).(\lambda (t0: T).(\lambda (H5: (tau0 g c0 u0 t0)).(H3 t0 
-H5))))))))))))) (\lambda (c0: C).(\lambda (m: nat).(\lambda (t2: T).(\lambda 
-(H0: (tau0 g c0 (TSort m) t2)).(let H_y \def (tau0_gen_sort g c0 t2 m H0) in 
-(let H1 \def (f_equal T T (\lambda (e: T).e) t2 (TSort (next g m)) H_y) in 
-(eq_ind_r T (TSort (next g m)) (\lambda (t: T).(ty3 g c0 (TSort m) t)) 
-(ty3_sort g c0 m) t2 H1))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda 
-(d: C).(\lambda (u0: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abbr) 
-u0))).(\lambda (t: T).(\lambda (_: (ty3 g d u0 t)).(\lambda (H2: ((\forall 
-(t2: T).((tau0 g d u0 t2) \to (ty3 g d u0 t2))))).(\lambda (t2: T).(\lambda 
-(H3: (tau0 g c0 (TLRef n) t2)).(let H_x \def (tau0_gen_lref g c0 t2 n H3) in 
-(let H4 \def H_x in (or_ind (ex3_3 C T T (\lambda (e: C).(\lambda (u1: 
-T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u1))))) (\lambda (e: 
-C).(\lambda (u1: T).(\lambda (t0: T).(tau0 g e u1 t0)))) (\lambda (_: 
-C).(\lambda (_: T).(\lambda (t0: T).(eq T t2 (lift (S n) O t0)))))) (ex3_3 C 
-T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e 
-(Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(tau0 g 
-e u1 t0)))) (\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq T t2 (lift 
-(S n) O u1)))))) (ty3 g c0 (TLRef n) t2) (\lambda (H5: (ex3_3 C T T (\lambda 
-(e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) 
-u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(tau0 g e u1 t0)))) 
-(\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(eq T t2 (lift (S n) O 
-t0))))))).(ex3_3_ind C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: 
-T).(getl n c0 (CHead e (Bind Abbr) u1))))) (\lambda (e: C).(\lambda (u1: 
-T).(\lambda (t0: T).(tau0 g e u1 t0)))) (\lambda (_: C).(\lambda (_: 
-T).(\lambda (t0: T).(eq T t2 (lift (S n) O t0))))) (ty3 g c0 (TLRef n) t2) 
-(\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (H6: (getl n c0 
-(CHead x0 (Bind Abbr) x1))).(\lambda (H7: (tau0 g x0 x1 x2)).(\lambda (H8: 
-(eq T t2 (lift (S n) O x2))).(let H9 \def (f_equal T T (\lambda (e: T).e) t2 
-(lift (S n) O x2) H8) in (eq_ind_r T (lift (S n) O x2) (\lambda (t0: T).(ty3 
-g c0 (TLRef n) t0)) (let H10 \def (eq_ind C (CHead d (Bind Abbr) u0) (\lambda 
-(c1: C).(getl n c0 c1)) H0 (CHead x0 (Bind Abbr) x1) (getl_mono c0 (CHead d 
-(Bind Abbr) u0) n H0 (CHead x0 (Bind Abbr) x1) H6)) in (let H11 \def (f_equal 
-C C (\lambda (e: C).(match e in C return (\lambda (_: C).C) with [(CSort _) 
-\Rightarrow d | (CHead c1 _ _) \Rightarrow c1])) (CHead d (Bind Abbr) u0) 
-(CHead x0 (Bind Abbr) x1) (getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead 
-x0 (Bind Abbr) x1) H6)) in ((let H12 \def (f_equal C T (\lambda (e: C).(match 
-e in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ 
-t0) \Rightarrow t0])) (CHead d (Bind Abbr) u0) (CHead x0 (Bind Abbr) x1) 
-(getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead x0 (Bind Abbr) x1) H6)) in 
-(\lambda (H13: (eq C d x0)).(let H14 \def (eq_ind_r T x1 (\lambda (t0: 
-T).(getl n c0 (CHead x0 (Bind Abbr) t0))) H10 u0 H12) in (let H15 \def 
-(eq_ind_r T x1 (\lambda (t0: T).(tau0 g x0 t0 x2)) H7 u0 H12) in (let H16 
-\def (eq_ind_r C x0 (\lambda (c1: C).(getl n c0 (CHead c1 (Bind Abbr) u0))) 
-H14 d H13) in (let H17 \def (eq_ind_r C x0 (\lambda (c1: C).(tau0 g c1 u0 
-x2)) H15 d H13) in (ty3_abbr g n c0 d u0 H16 x2 (H2 x2 H17)))))))) H11))) t2 
-H9)))))))) H5)) (\lambda (H5: (ex3_3 C T T (\lambda (e: C).(\lambda (u1: 
-T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: 
-C).(\lambda (u1: T).(\lambda (t0: T).(tau0 g e u1 t0)))) (\lambda (_: 
-C).(\lambda (u1: T).(\lambda (_: T).(eq T t2 (lift (S n) O 
-u1))))))).(ex3_3_ind C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: 
-T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: 
-T).(\lambda (t0: T).(tau0 g e u1 t0)))) (\lambda (_: C).(\lambda (u1: 
-T).(\lambda (_: T).(eq T t2 (lift (S n) O u1))))) (ty3 g c0 (TLRef n) t2) 
-(\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (H6: (getl n c0 
-(CHead x0 (Bind Abst) x1))).(\lambda (_: (tau0 g x0 x1 x2)).(\lambda (H8: (eq 
-T t2 (lift (S n) O x1))).(let H9 \def (f_equal T T (\lambda (e: T).e) t2 
-(lift (S n) O x1) H8) in (eq_ind_r T (lift (S n) O x1) (\lambda (t0: T).(ty3 
-g c0 (TLRef n) t0)) (let H10 \def (eq_ind C (CHead d (Bind Abbr) u0) (\lambda 
-(c1: C).(getl n c0 c1)) H0 (CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d 
-(Bind Abbr) u0) n H0 (CHead x0 (Bind Abst) x1) H6)) in (let H11 \def (eq_ind 
-C (CHead d (Bind Abbr) u0) (\lambda (ee: C).(match ee in C return (\lambda 
-(_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow 
-(match k in K return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match 
-b in B return (\lambda (_: B).Prop) with [Abbr \Rightarrow True | Abst 
-\Rightarrow False | Void \Rightarrow False]) | (Flat _) \Rightarrow 
-False])])) I (CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d (Bind Abbr) u0) 
-n H0 (CHead x0 (Bind Abst) x1) H6)) in (False_ind (ty3 g c0 (TLRef n) (lift 
-(S n) O x1)) H11))) t2 H9)))))))) H5)) H4))))))))))))) (\lambda (n: 
-nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u0: T).(\lambda (H0: (getl n 
-c0 (CHead d (Bind Abst) u0))).(\lambda (t: T).(\lambda (H1: (ty3 g d u0 
-t)).(\lambda (_: ((\forall (t2: T).((tau0 g d u0 t2) \to (ty3 g d u0 
-t2))))).(\lambda (t2: T).(\lambda (H3: (tau0 g c0 (TLRef n) t2)).(let H_x 
-\def (tau0_gen_lref g c0 t2 n H3) in (let H4 \def H_x in (or_ind (ex3_3 C T T 
-(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
-Abbr) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(tau0 g e u1 
-t0)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(eq T t2 (lift (S n) 
-O t0)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: 
-T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: 
-T).(\lambda (t0: T).(tau0 g e u1 t0)))) (\lambda (_: C).(\lambda (u1: 
-T).(\lambda (_: T).(eq T t2 (lift (S n) O u1)))))) (ty3 g c0 (TLRef n) t2) 
-(\lambda (H5: (ex3_3 C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: 
-T).(getl n c0 (CHead e (Bind Abbr) u1))))) (\lambda (e: C).(\lambda (u1: 
-T).(\lambda (t0: T).(tau0 g e u1 t0)))) (\lambda (_: C).(\lambda (_: 
-T).(\lambda (t0: T).(eq T t2 (lift (S n) O t0))))))).(ex3_3_ind C T T 
-(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
-Abbr) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(tau0 g e u1 
-t0)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(eq T t2 (lift (S n) 
-O t0))))) (ty3 g c0 (TLRef n) t2) (\lambda (x0: C).(\lambda (x1: T).(\lambda 
-(x2: T).(\lambda (H6: (getl n c0 (CHead x0 (Bind Abbr) x1))).(\lambda (_: 
-(tau0 g x0 x1 x2)).(\lambda (H8: (eq T t2 (lift (S n) O x2))).(let H9 \def 
-(f_equal T T (\lambda (e: T).e) t2 (lift (S n) O x2) H8) in (eq_ind_r T (lift 
-(S n) O x2) (\lambda (t0: T).(ty3 g c0 (TLRef n) t0)) (let H10 \def (eq_ind C 
-(CHead d (Bind Abst) u0) (\lambda (c1: C).(getl n c0 c1)) H0 (CHead x0 (Bind 
-Abbr) x1) (getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead x0 (Bind Abbr) 
-x1) H6)) in (let H11 \def (eq_ind C (CHead d (Bind Abst) u0) (\lambda (ee: 
-C).(match ee in C return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow 
-False | (CHead _ k _) \Rightarrow (match k in K return (\lambda (_: K).Prop) 
-with [(Bind b) \Rightarrow (match b in B return (\lambda (_: B).Prop) with 
-[Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow False]) | 
-(Flat _) \Rightarrow False])])) I (CHead x0 (Bind Abbr) x1) (getl_mono c0 
-(CHead d (Bind Abst) u0) n H0 (CHead x0 (Bind Abbr) x1) H6)) in (False_ind 
-(ty3 g c0 (TLRef n) (lift (S n) O x2)) H11))) t2 H9)))))))) H5)) (\lambda 
-(H5: (ex3_3 C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 
-(CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: 
-T).(tau0 g e u1 t0)))) (\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq T 
-t2 (lift (S n) O u1))))))).(ex3_3_ind C T T (\lambda (e: C).(\lambda (u1: 
-T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: 
-C).(\lambda (u1: T).(\lambda (t0: T).(tau0 g e u1 t0)))) (\lambda (_: 
-C).(\lambda (u1: T).(\lambda (_: T).(eq T t2 (lift (S n) O u1))))) (ty3 g c0 
-(TLRef n) t2) (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda 
-(H6: (getl n c0 (CHead x0 (Bind Abst) x1))).(\lambda (H7: (tau0 g x0 x1 
-x2)).(\lambda (H8: (eq T t2 (lift (S n) O x1))).(let H9 \def (f_equal T T 
-(\lambda (e: T).e) t2 (lift (S n) O x1) H8) in (eq_ind_r T (lift (S n) O x1) 
-(\lambda (t0: T).(ty3 g c0 (TLRef n) t0)) (let H10 \def (eq_ind C (CHead d 
-(Bind Abst) u0) (\lambda (c1: C).(getl n c0 c1)) H0 (CHead x0 (Bind Abst) x1) 
-(getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead x0 (Bind Abst) x1) H6)) in 
-(let H11 \def (f_equal C C (\lambda (e: C).(match e in C return (\lambda (_: 
-C).C) with [(CSort _) \Rightarrow d | (CHead c1 _ _) \Rightarrow c1])) (CHead 
-d (Bind Abst) u0) (CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d (Bind 
-Abst) u0) n H0 (CHead x0 (Bind Abst) x1) H6)) in ((let H12 \def (f_equal C T 
-(\lambda (e: C).(match e in C return (\lambda (_: C).T) with [(CSort _) 
-\Rightarrow u0 | (CHead _ _ t0) \Rightarrow t0])) (CHead d (Bind Abst) u0) 
-(CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead 
-x0 (Bind Abst) x1) H6)) in (\lambda (H13: (eq C d x0)).(let H14 \def 
-(eq_ind_r T x1 (\lambda (t0: T).(getl n c0 (CHead x0 (Bind Abst) t0))) H10 u0 
-H12) in (let H15 \def (eq_ind_r T x1 (\lambda (t0: T).(tau0 g x0 t0 x2)) H7 
-u0 H12) in (eq_ind T u0 (\lambda (t0: T).(ty3 g c0 (TLRef n) (lift (S n) O 
-t0))) (let H16 \def (eq_ind_r C x0 (\lambda (c1: C).(getl n c0 (CHead c1 
-(Bind Abst) u0))) H14 d H13) in (let H17 \def (eq_ind_r C x0 (\lambda (c1: 
-C).(tau0 g c1 u0 x2)) H15 d H13) in (ty3_abst g n c0 d u0 H16 t H1))) x1 
-H12))))) H11))) t2 H9)))))))) H5)) H4))))))))))))) (\lambda (c0: C).(\lambda 
-(u0: T).(\lambda (t: T).(\lambda (H0: (ty3 g c0 u0 t)).(\lambda (_: ((\forall 
-(t2: T).((tau0 g c0 u0 t2) \to (ty3 g c0 u0 t2))))).(\lambda (b: B).(\lambda 
-(t2: T).(\lambda (t3: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u0) t2 
-t3)).(\lambda (H3: ((\forall (t4: T).((tau0 g (CHead c0 (Bind b) u0) t2 t4) 
-\to (ty3 g (CHead c0 (Bind b) u0) t2 t4))))).(\lambda (t0: T).(\lambda (H4: 
-(tau0 g c0 (THead (Bind b) u0 t2) t0)).(let H_x \def (tau0_gen_bind g b c0 u0 
-t2 t0 H4) in (let H5 \def H_x in (ex2_ind T (\lambda (t4: T).(tau0 g (CHead 
-c0 (Bind b) u0) t2 t4)) (\lambda (t4: T).(eq T t0 (THead (Bind b) u0 t4))) 
-(ty3 g c0 (THead (Bind b) u0 t2) t0) (\lambda (x: T).(\lambda (H6: (tau0 g 
-(CHead c0 (Bind b) u0) t2 x)).(\lambda (H7: (eq T t0 (THead (Bind b) u0 
-x))).(let H8 \def (f_equal T T (\lambda (e: T).e) t0 (THead (Bind b) u0 x) 
-H7) in (eq_ind_r T (THead (Bind b) u0 x) (\lambda (t4: T).(ty3 g c0 (THead 
-(Bind b) u0 t2) t4)) (ty3_bind g c0 u0 t H0 b t2 x (H3 x H6)) t0 H8))))) 
-H5))))))))))))))) (\lambda (c0: C).(\lambda (w: T).(\lambda (u0: T).(\lambda 
-(H0: (ty3 g c0 w u0)).(\lambda (_: ((\forall (t2: T).((tau0 g c0 w t2) \to 
-(ty3 g c0 w t2))))).(\lambda (v: T).(\lambda (t: T).(\lambda (H2: (ty3 g c0 v 
-(THead (Bind Abst) u0 t))).(\lambda (H3: ((\forall (t2: T).((tau0 g c0 v t2) 
-\to (ty3 g c0 v t2))))).(\lambda (t2: T).(\lambda (H4: (tau0 g c0 (THead 
-(Flat Appl) w v) t2)).(let H_x \def (tau0_gen_appl g c0 w v t2 H4) in (let H5 
-\def H_x in (ex2_ind T (\lambda (t3: T).(tau0 g c0 v t3)) (\lambda (t3: 
-T).(eq T t2 (THead (Flat Appl) w t3))) (ty3 g c0 (THead (Flat Appl) w v) t2) 
-(\lambda (x: T).(\lambda (H6: (tau0 g c0 v x)).(\lambda (H7: (eq T t2 (THead 
-(Flat Appl) w x))).(let H8 \def (f_equal T T (\lambda (e: T).e) t2 (THead 
-(Flat Appl) w x) H7) in (eq_ind_r T (THead (Flat Appl) w x) (\lambda (t0: 
-T).(ty3 g c0 (THead (Flat Appl) w v) t0)) (let H_y \def (H3 x H6) in (let H9 
-\def (ty3_unique g c0 v x H_y (THead (Bind Abst) u0 t) H2) in (ex_ind T 
-(\lambda (t0: T).(ty3 g c0 x t0)) (ty3 g c0 (THead (Flat Appl) w v) (THead 
-(Flat Appl) w x)) (\lambda (x0: T).(\lambda (H10: (ty3 g c0 x x0)).(ex_ind T 
-(\lambda (t0: T).(ty3 g c0 u0 t0)) (ty3 g c0 (THead (Flat Appl) w v) (THead 
-(Flat Appl) w x)) (\lambda (x1: T).(\lambda (_: (ty3 g c0 u0 x1)).(ex_ind T 
-(\lambda (t0: T).(ty3 g c0 (THead (Bind Abst) u0 t) t0)) (ty3 g c0 (THead 
-(Flat Appl) w v) (THead (Flat Appl) w x)) (\lambda (x2: T).(\lambda (H12: 
-(ty3 g c0 (THead (Bind Abst) u0 t) x2)).(ex3_2_ind T T (\lambda (t3: 
-T).(\lambda (_: T).(pc3 c0 (THead (Bind Abst) u0 t3) x2))) (\lambda (_: 
-T).(\lambda (t0: T).(ty3 g c0 u0 t0))) (\lambda (t3: T).(\lambda (_: T).(ty3 
-g (CHead c0 (Bind Abst) u0) t t3))) (ty3 g c0 (THead (Flat Appl) w v) (THead 
-(Flat Appl) w x)) (\lambda (x3: T).(\lambda (x4: T).(\lambda (_: (pc3 c0 
-(THead (Bind Abst) u0 x3) x2)).(\lambda (H14: (ty3 g c0 u0 x4)).(\lambda 
-(H15: (ty3 g (CHead c0 (Bind Abst) u0) t x3)).(ty3_conv g c0 (THead (Flat 
-Appl) w x) (THead (Flat Appl) w (THead (Bind Abst) u0 x3)) (ty3_appl g c0 w 
-u0 H0 x x3 (ty3_sconv g c0 x x0 H10 (THead (Bind Abst) u0 t) (THead (Bind 
-Abst) u0 x3) (ty3_bind g c0 u0 x4 H14 Abst t x3 H15) H9)) (THead (Flat Appl) 
-w v) (THead (Flat Appl) w (THead (Bind Abst) u0 t)) (ty3_appl g c0 w u0 H0 v 
-t H2) (pc3_thin_dx c0 (THead (Bind Abst) u0 t) x (ty3_unique g c0 v (THead 
-(Bind Abst) u0 t) H2 x H_y) w Appl))))))) (ty3_gen_bind g Abst c0 u0 t x2 
-H12)))) (ty3_correct g c0 v (THead (Bind Abst) u0 t) H2)))) (ty3_correct g c0 
-w u0 H0)))) (ty3_correct g c0 v x H_y)))) t2 H8))))) H5)))))))))))))) 
-(\lambda (c0: C).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H0: (ty3 g c0 t2 
-t3)).(\lambda (H1: ((\forall (t4: T).((tau0 g c0 t2 t4) \to (ty3 g c0 t2 
-t4))))).(\lambda (t0: T).(\lambda (_: (ty3 g c0 t3 t0)).(\lambda (H3: 
-((\forall (t4: T).((tau0 g c0 t3 t4) \to (ty3 g c0 t3 t4))))).(\lambda (t4: 
-T).(\lambda (H4: (tau0 g c0 (THead (Flat Cast) t3 t2) t4)).(let H_x \def 
-(tau0_gen_cast g c0 t3 t2 t4 H4) in (let H5 \def H_x in (ex3_2_ind T T 
-(\lambda (v2: T).(\lambda (_: T).(tau0 g c0 t3 v2))) (\lambda (_: T).(\lambda 
-(t5: T).(tau0 g c0 t2 t5))) (\lambda (v2: T).(\lambda (t5: T).(eq T t4 (THead 
-(Flat Cast) v2 t5)))) (ty3 g c0 (THead (Flat Cast) t3 t2) t4) (\lambda (x0: 
-T).(\lambda (x1: T).(\lambda (H6: (tau0 g c0 t3 x0)).(\lambda (H7: (tau0 g c0 
-t2 x1)).(\lambda (H8: (eq T t4 (THead (Flat Cast) x0 x1))).(let H9 \def 
-(f_equal T T (\lambda (e: T).e) t4 (THead (Flat Cast) x0 x1) H8) in (eq_ind_r 
-T (THead (Flat Cast) x0 x1) (\lambda (t: T).(ty3 g c0 (THead (Flat Cast) t3 
-t2) t)) (let H_y \def (H1 x1 H7) in (let H_y0 \def (H3 x0 H6) in (let H10 
-\def (ty3_unique g c0 t2 x1 H_y t3 H0) in (ex_ind T (\lambda (t: T).(ty3 g c0 
-x0 t)) (ty3 g c0 (THead (Flat Cast) t3 t2) (THead (Flat Cast) x0 x1)) 
-(\lambda (x: T).(\lambda (H11: (ty3 g c0 x0 x)).(ex_ind T (\lambda (t: 
-T).(ty3 g c0 x1 t)) (ty3 g c0 (THead (Flat Cast) t3 t2) (THead (Flat Cast) x0 
-x1)) (\lambda (x2: T).(\lambda (H12: (ty3 g c0 x1 x2)).(ty3_conv g c0 (THead 
-(Flat Cast) x0 x1) (THead (Flat Cast) x x0) (ty3_cast g c0 x1 x0 (ty3_sconv g 
-c0 x1 x2 H12 t3 x0 H_y0 H10) x H11) (THead (Flat Cast) t3 t2) (THead (Flat 
-Cast) x0 t3) (ty3_cast g c0 t2 t3 H0 x0 H_y0) (pc3_thin_dx c0 t3 x1 
-(ty3_unique g c0 t2 t3 H0 x1 H_y) x0 Cast)))) (ty3_correct g c0 t2 x1 H_y)))) 
-(ty3_correct g c0 t3 x0 H_y0))))) t4 H9))))))) H5))))))))))))) c u t1 H))))).
-
index a2dd820a13dab13ddb4bf316daf0601b896585aa..175a39cdd6cbb7cd61f6c9c2ebf9d3244618699a 100644 (file)
@@ -16,5 +16,3 @@
 
 include "Legacy-2/preamble.ma".
 
-inline procedural "Legacy-1/coq/defs.ma".
-
index a2c8a84ed1358d82d02d60b2a1c5694c54af07d1..b9b749816f0a47d6b69ab5d130a1e940d0d32858 100644 (file)
@@ -34,15 +34,25 @@ default "false"
 default "absurd"
  cic:/matita/LAMBDA-TYPES/Legacy-1/coq/props/absurd.con. 
 
-interpretation "Coq's natural plus" 'plus x y = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/plus.con x y).
-interpretation "Coq's natural minus" 'minus x y = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/minus.con x y).
-interpretation "Coq's logical and" 'and x y = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/land.ind#xpointer(1/1) x y).
-interpretation "Coq's logical or" 'or x y = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/or.ind#xpointer(1/1) x y).
-interpretation "Coq's logical not" 'not x = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/not.con x).
-interpretation "Coq's exists" 'exists \eta.x = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/ex.ind#xpointer(1/1) _ x).
-interpretation "Coq's natural 'less or equal to'" 'leq x y = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/le.ind#xpointer(1/1) x y).
-interpretation "Coq's natural 'less than'" 'lt x y = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/lt.con x y).
-interpretation "Coq's leibnitz's equality" 'eq x y = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/eq.ind#xpointer(1/1) _ x y).
+interpretation "Coq 7.3.1 natural plus" 'plus x y = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/plus.con x y).
+interpretation "Coq 7.3.1 natural minus" 'minus x y = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/minus.con x y).
+interpretation "Coq 7.3.1 logical and" 'and x y = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/land.ind#xpointer(1/1) x y).
+interpretation "Coq 7.3.1 logical or" 'or x y = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/or.ind#xpointer(1/1) x y).
+interpretation "Coq 7.3.1 logical not" 'not x = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/not.con x).
+interpretation "Coq 7.3.1 exists" 'exists \eta.x = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/ex.ind#xpointer(1/1) _ x).
+interpretation "Coq 7.3.1 natural 'less or equal to'" 'leq x y = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/le.ind#xpointer(1/1) x y).
+interpretation "Coq 7.3.1 natural 'less than'" 'lt x y = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/lt.con x y).
+interpretation "Coq 7.3.1 leibnitz's equality" 'eq x y = (cic:/matita/LAMBDA-TYPES/Legacy-1/coq/defs/eq.ind#xpointer(1/1) _ x y).
+
+alias symbol "plus" = "Coq 7.3.1 natural plus".
+alias symbol "minus" = "Coq 7.3.1 natural minus".
+alias symbol "and" = "Coq 7.3.1 logical and".
+alias symbol "or" = "Coq 7.3.1 logical or".
+alias symbol "not" = "Coq 7.3.1 logical not".
+alias symbol "exists" = "Coq 7.3.1 exists".
+alias symbol "leq" = "Coq 7.3.1 natural 'less or equal to'".
+alias symbol "lt" = "Coq 7.3.1 natural 'less than'".
+alias symbol "eq" = "Coq 7.3.1 leibnitz's equality".
 
 theorem f_equal_sym: \forall A,B:Set.\forall f:A\to B.\forall x,y.
                      x = y \to (f y) = (f x).
index 7edd288175fa5f33afdbba7d34b125aceed81dd7..a5bf300152540a9a1c0a3ab72a57a06ac08947c1 100644 (file)
@@ -6,9 +6,10 @@ MATITAOPTIONS=$(MATITAUSEROPTIONS) -onepass
 
 DIR=$(shell basename $$PWD)
 
-MMAS = $(shell find Legacy-2 -name "*.mma") # Base-2 
+MMAS = $(shell find Legacy-2 -name "*.mma")
+# Base-2 
 MAS = $(MMAS:%.mma=%.ma)
-XMAS = Legacy-2/theory.ma Base-2/theory.ma LambdaDelta-2/theory.ma
+XMAS = Legacy-2/theory.ma Base-2/theory.ma LambdaDelta-2/theory.ma
 
 $(DIR) all: depends
        $(H)$(MAKE) H=$(H) --no-print-directory build
@@ -43,12 +44,14 @@ clean.ma:
 depend:
        @echo matitadep
        $(H)$(BIN)matitadep $(foreach FILE,$(XMAS),-exclude $(FILE))
-       $(H)cat Legacy-2/depends >> depends # Base-2/depends
+       $(H)cat Legacy-2/depends >> depends
+# Base-2/depends
        
 depend.opt:
        @echo matitadep.opt
        $(H)$(BIN)matitadep.opt $(foreach FILE,$(XMAS),-exclude $(FILE))
-       $(H)cat Legacy-2/depends >> depends # Base-2/depends
+       $(H)cat Legacy-2/depends >> depends
+# Base-2/depends
 
 depends: depend.opt