]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/basic_1/clear/props.ma
update in basic_2
[helm.git] / matita / matita / contribs / lambdadelta / basic_1 / clear / props.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 include "basic_1/clear/fwd.ma".
18
19 lemma clear_clear:
20  \forall (c1: C).(\forall (c2: C).((clear c1 c2) \to (clear c2 c2)))
21 \def
22  \lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: C).((clear c c2) \to 
23 (clear c2 c2)))) (\lambda (n: nat).(\lambda (c2: C).(\lambda (H: (clear 
24 (CSort n) c2)).(clear_gen_sort c2 n H (clear c2 c2))))) (\lambda (c: 
25 C).(\lambda (H: ((\forall (c2: C).((clear c c2) \to (clear c2 
26 c2))))).(\lambda (k: K).(\lambda (t: T).(\lambda (c2: C).(\lambda (H0: (clear 
27 (CHead c k t) c2)).(K_ind (\lambda (k0: K).((clear (CHead c k0 t) c2) \to 
28 (clear c2 c2))) (\lambda (b: B).(\lambda (H1: (clear (CHead c (Bind b) t) 
29 c2)).(eq_ind_r C (CHead c (Bind b) t) (\lambda (c0: C).(clear c0 c0)) 
30 (clear_bind b c t) c2 (clear_gen_bind b c c2 t H1)))) (\lambda (f: 
31 F).(\lambda (H1: (clear (CHead c (Flat f) t) c2)).(H c2 (clear_gen_flat f c 
32 c2 t H1)))) k H0))))))) c1).
33
34 theorem clear_trans:
35  \forall (c1: C).(\forall (c: C).((clear c1 c) \to (\forall (c2: C).((clear c 
36 c2) \to (clear c1 c2)))))
37 \def
38  \lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c0: C).((clear c c0) \to 
39 (\forall (c2: C).((clear c0 c2) \to (clear c c2)))))) (\lambda (n: 
40 nat).(\lambda (c: C).(\lambda (H: (clear (CSort n) c)).(\lambda (c2: 
41 C).(\lambda (_: (clear c c2)).(clear_gen_sort c n H (clear (CSort n) 
42 c2))))))) (\lambda (c: C).(\lambda (H: ((\forall (c0: C).((clear c c0) \to 
43 (\forall (c2: C).((clear c0 c2) \to (clear c c2))))))).(\lambda (k: 
44 K).(\lambda (t: T).(\lambda (c0: C).(\lambda (H0: (clear (CHead c k t) 
45 c0)).(\lambda (c2: C).(\lambda (H1: (clear c0 c2)).(K_ind (\lambda (k0: 
46 K).((clear (CHead c k0 t) c0) \to (clear (CHead c k0 t) c2))) (\lambda (b: 
47 B).(\lambda (H2: (clear (CHead c (Bind b) t) c0)).(let H3 \def (eq_ind C c0 
48 (\lambda (c3: C).(clear c3 c2)) H1 (CHead c (Bind b) t) (clear_gen_bind b c 
49 c0 t H2)) in (eq_ind_r C (CHead c (Bind b) t) (\lambda (c3: C).(clear (CHead 
50 c (Bind b) t) c3)) (clear_bind b c t) c2 (clear_gen_bind b c c2 t H3))))) 
51 (\lambda (f: F).(\lambda (H2: (clear (CHead c (Flat f) t) c0)).(clear_flat c 
52 c2 (H c0 (clear_gen_flat f c c0 t H2) c2 H1) f t))) k H0))))))))) c1).
53
54 lemma clear_ctail:
55  \forall (b: B).(\forall (c1: C).(\forall (c2: C).(\forall (u2: T).((clear c1 
56 (CHead c2 (Bind b) u2)) \to (\forall (k: K).(\forall (u1: T).(clear (CTail k 
57 u1 c1) (CHead (CTail k u1 c2) (Bind b) u2))))))))
58 \def
59  \lambda (b: B).(\lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: 
60 C).(\forall (u2: T).((clear c (CHead c2 (Bind b) u2)) \to (\forall (k: 
61 K).(\forall (u1: T).(clear (CTail k u1 c) (CHead (CTail k u1 c2) (Bind b) 
62 u2)))))))) (\lambda (n: nat).(\lambda (c2: C).(\lambda (u2: T).(\lambda (H: 
63 (clear (CSort n) (CHead c2 (Bind b) u2))).(\lambda (k: K).(\lambda (u1: 
64 T).(K_ind (\lambda (k0: K).(clear (CHead (CSort n) k0 u1) (CHead (CTail k0 u1 
65 c2) (Bind b) u2))) (\lambda (b0: B).(clear_gen_sort (CHead c2 (Bind b) u2) n 
66 H (clear (CHead (CSort n) (Bind b0) u1) (CHead (CTail (Bind b0) u1 c2) (Bind 
67 b) u2)))) (\lambda (f: F).(clear_gen_sort (CHead c2 (Bind b) u2) n H (clear 
68 (CHead (CSort n) (Flat f) u1) (CHead (CTail (Flat f) u1 c2) (Bind b) u2)))) 
69 k))))))) (\lambda (c: C).(\lambda (H: ((\forall (c2: C).(\forall (u2: 
70 T).((clear c (CHead c2 (Bind b) u2)) \to (\forall (k: K).(\forall (u1: 
71 T).(clear (CTail k u1 c) (CHead (CTail k u1 c2) (Bind b) u2))))))))).(\lambda 
72 (k: K).(\lambda (t: T).(\lambda (c2: C).(\lambda (u2: T).(\lambda (H0: (clear 
73 (CHead c k t) (CHead c2 (Bind b) u2))).(\lambda (k0: K).(\lambda (u1: 
74 T).(K_ind (\lambda (k1: K).((clear (CHead c k1 t) (CHead c2 (Bind b) u2)) \to 
75 (clear (CHead (CTail k0 u1 c) k1 t) (CHead (CTail k0 u1 c2) (Bind b) u2)))) 
76 (\lambda (b0: B).(\lambda (H1: (clear (CHead c (Bind b0) t) (CHead c2 (Bind 
77 b) u2))).(let H2 \def (f_equal C C (\lambda (e: C).(match e with [(CSort _) 
78 \Rightarrow c2 | (CHead c0 _ _) \Rightarrow c0])) (CHead c2 (Bind b) u2) 
79 (CHead c (Bind b0) t) (clear_gen_bind b0 c (CHead c2 (Bind b) u2) t H1)) in 
80 ((let H3 \def (f_equal C B (\lambda (e: C).(match e with [(CSort _) 
81 \Rightarrow b | (CHead _ k1 _) \Rightarrow (match k1 with [(Bind b1) 
82 \Rightarrow b1 | (Flat _) \Rightarrow b])])) (CHead c2 (Bind b) u2) (CHead c 
83 (Bind b0) t) (clear_gen_bind b0 c (CHead c2 (Bind b) u2) t H1)) in ((let H4 
84 \def (f_equal C T (\lambda (e: C).(match e with [(CSort _) \Rightarrow u2 | 
85 (CHead _ _ t0) \Rightarrow t0])) (CHead c2 (Bind b) u2) (CHead c (Bind b0) t) 
86 (clear_gen_bind b0 c (CHead c2 (Bind b) u2) t H1)) in (\lambda (H5: (eq B b 
87 b0)).(\lambda (H6: (eq C c2 c)).(eq_ind_r T t (\lambda (t0: T).(clear (CHead 
88 (CTail k0 u1 c) (Bind b0) t) (CHead (CTail k0 u1 c2) (Bind b) t0))) (eq_ind_r 
89 C c (\lambda (c0: C).(clear (CHead (CTail k0 u1 c) (Bind b0) t) (CHead (CTail 
90 k0 u1 c0) (Bind b) t))) (eq_ind B b (\lambda (b1: B).(clear (CHead (CTail k0 
91 u1 c) (Bind b1) t) (CHead (CTail k0 u1 c) (Bind b) t))) (clear_bind b (CTail 
92 k0 u1 c) t) b0 H5) c2 H6) u2 H4)))) H3)) H2)))) (\lambda (f: F).(\lambda (H1: 
93 (clear (CHead c (Flat f) t) (CHead c2 (Bind b) u2))).(clear_flat (CTail k0 u1 
94 c) (CHead (CTail k0 u1 c2) (Bind b) u2) (H c2 u2 (clear_gen_flat f c (CHead 
95 c2 (Bind b) u2) t H1) k0 u1) f t))) k H0)))))))))) c1)).
96