]> matita.cs.unibo.it Git - helm.git/blob - matita/contribs/LAMBDA-TYPES/Level-1/LambdaDelta/getl/flt.ma
589f2dd50cb759458d00f86b2c82fd8405a294de
[helm.git] / matita / contribs / LAMBDA-TYPES / Level-1 / LambdaDelta / getl / flt.ma
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 (* This file was automatically generated: do not edit *********************)
16
17 set "baseuri" "cic:/matita/LAMBDA-TYPES/Level-1/LambdaDelta/getl/flt".
18
19 include "getl/fwd.ma".
20
21 include "clear/props.ma".
22
23 include "flt/props.ma".
24
25 theorem getl_flt:
26  \forall (b: B).(\forall (c: C).(\forall (e: C).(\forall (u: T).(\forall (i: 
27 nat).((getl i c (CHead e (Bind b) u)) \to (flt e u c (TLRef i)))))))
28 \def
29  \lambda (b: B).(\lambda (c: C).(C_ind (\lambda (c0: C).(\forall (e: 
30 C).(\forall (u: T).(\forall (i: nat).((getl i c0 (CHead e (Bind b) u)) \to 
31 (flt e u c0 (TLRef i))))))) (\lambda (n: nat).(\lambda (e: C).(\lambda (u: 
32 T).(\lambda (i: nat).(\lambda (H: (getl i (CSort n) (CHead e (Bind b) 
33 u))).(getl_gen_sort n i (CHead e (Bind b) u) H (flt e u (CSort n) (TLRef 
34 i)))))))) (\lambda (c0: C).(\lambda (H: ((\forall (e: C).(\forall (u: 
35 T).(\forall (i: nat).((getl i c0 (CHead e (Bind b) u)) \to (flt e u c0 (TLRef 
36 i)))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (e: C).(\lambda (u: 
37 T).(\lambda (i: nat).(match i in nat return (\lambda (n: nat).((getl n (CHead 
38 c0 k t) (CHead e (Bind b) u)) \to (flt e u (CHead c0 k t) (TLRef n)))) with 
39 [O \Rightarrow (\lambda (H0: (getl O (CHead c0 k t) (CHead e (Bind b) 
40 u))).((match k in K return (\lambda (k0: K).((clear (CHead c0 k0 t) (CHead e 
41 (Bind b) u)) \to (flt e u (CHead c0 k0 t) (TLRef O)))) with [(Bind b0) 
42 \Rightarrow (\lambda (H1: (clear (CHead c0 (Bind b0) t) (CHead e (Bind b) 
43 u))).(let H2 \def (f_equal C C (\lambda (e0: C).(match e0 in C return 
44 (\lambda (_: C).C) with [(CSort _) \Rightarrow e | (CHead c _ _) \Rightarrow 
45 c])) (CHead e (Bind b) u) (CHead c0 (Bind b0) t) (clear_gen_bind b0 c0 (CHead 
46 e (Bind b) u) t H1)) in ((let H3 \def (f_equal C B (\lambda (e0: C).(match e0 
47 in C return (\lambda (_: C).B) with [(CSort _) \Rightarrow b | (CHead _ k _) 
48 \Rightarrow (match k in K return (\lambda (_: K).B) with [(Bind b) 
49 \Rightarrow b | (Flat _) \Rightarrow b])])) (CHead e (Bind b) u) (CHead c0 
50 (Bind b0) t) (clear_gen_bind b0 c0 (CHead e (Bind b) u) t H1)) in ((let H4 
51 \def (f_equal C T (\lambda (e0: C).(match e0 in C return (\lambda (_: C).T) 
52 with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead e (Bind 
53 b) u) (CHead c0 (Bind b0) t) (clear_gen_bind b0 c0 (CHead e (Bind b) u) t 
54 H1)) in (\lambda (H5: (eq B b b0)).(\lambda (H6: (eq C e c0)).(eq_ind_r T t 
55 (\lambda (t0: T).(flt e t0 (CHead c0 (Bind b0) t) (TLRef O))) (eq_ind_r C c0 
56 (\lambda (c1: C).(flt c1 t (CHead c0 (Bind b0) t) (TLRef O))) (eq_ind B b 
57 (\lambda (b1: B).(flt c0 t (CHead c0 (Bind b1) t) (TLRef O))) (flt_arith0 
58 (Bind b) c0 t O) b0 H5) e H6) u H4)))) H3)) H2))) | (Flat f) \Rightarrow 
59 (\lambda (H1: (clear (CHead c0 (Flat f) t) (CHead e (Bind b) u))).(flt_arith1 
60 (Bind b) e c0 u (clear_cle c0 (CHead e (Bind b) u) (clear_gen_flat f c0 
61 (CHead e (Bind b) u) t H1)) (Flat f) t O))]) (getl_gen_O (CHead c0 k t) 
62 (CHead e (Bind b) u) H0))) | (S n) \Rightarrow (\lambda (H0: (getl (S n) 
63 (CHead c0 k t) (CHead e (Bind b) u))).(let H_y \def (H e u (r k n) 
64 (getl_gen_S k c0 (CHead e (Bind b) u) t n H0)) in (flt_arith2 e c0 u (r k n) 
65 H_y k t (S n))))])))))))) c)).
66