1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 (* This file was automatically generated: do not edit *********************)
17 include "basic_1/getl/defs.ma".
19 include "basic_1/drop/fwd.ma".
21 include "basic_1/clear/fwd.ma".
23 implied lemma getl_ind:
24 \forall (h: nat).(\forall (c1: C).(\forall (c2: C).(\forall (P:
25 Prop).(((\forall (e: C).((drop h O c1 e) \to ((clear e c2) \to P)))) \to
26 ((getl h c1 c2) \to P)))))
28 \lambda (h: nat).(\lambda (c1: C).(\lambda (c2: C).(\lambda (P:
29 Prop).(\lambda (f: ((\forall (e: C).((drop h O c1 e) \to ((clear e c2) \to
30 P))))).(\lambda (g: (getl h c1 c2)).(match g with [(getl_intro x x0 x1)
31 \Rightarrow (f x x0 x1)])))))).
34 \forall (c1: C).(\forall (c2: C).(\forall (i: nat).((getl i c1 c2) \to (ex2
35 C (\lambda (e: C).(drop i O c1 e)) (\lambda (e: C).(clear e c2))))))
37 \lambda (c1: C).(\lambda (c2: C).(\lambda (i: nat).(\lambda (H: (getl i c1
38 c2)).(getl_ind i c1 c2 (ex2 C (\lambda (e: C).(drop i O c1 e)) (\lambda (e:
39 C).(clear e c2))) (\lambda (e: C).(\lambda (H0: (drop i O c1 e)).(\lambda
40 (H1: (clear e c2)).(ex_intro2 C (\lambda (e0: C).(drop i O c1 e0)) (\lambda
41 (e0: C).(clear e0 c2)) e H0 H1)))) H)))).
44 \forall (n: nat).(\forall (h: nat).(\forall (x: C).((getl h (CSort n) x) \to
45 (\forall (P: Prop).P))))
47 \lambda (n: nat).(\lambda (h: nat).(\lambda (x: C).(\lambda (H: (getl h
48 (CSort n) x)).(\lambda (P: Prop).(let H0 \def (getl_gen_all (CSort n) x h H)
49 in (ex2_ind C (\lambda (e: C).(drop h O (CSort n) e)) (\lambda (e: C).(clear
50 e x)) P (\lambda (x0: C).(\lambda (H1: (drop h O (CSort n) x0)).(\lambda (H2:
51 (clear x0 x)).(and3_ind (eq C x0 (CSort n)) (eq nat h O) (eq nat O O) P
52 (\lambda (H3: (eq C x0 (CSort n))).(\lambda (_: (eq nat h O)).(\lambda (_:
53 (eq nat O O)).(let H6 \def (eq_ind C x0 (\lambda (c: C).(clear c x)) H2
54 (CSort n) H3) in (clear_gen_sort x n H6 P))))) (drop_gen_sort n h O x0
58 \forall (e: C).(\forall (x: C).((getl O e x) \to (clear e x)))
60 \lambda (e: C).(\lambda (x: C).(\lambda (H: (getl O e x)).(let H0 \def
61 (getl_gen_all e x O H) in (ex2_ind C (\lambda (e0: C).(drop O O e e0))
62 (\lambda (e0: C).(clear e0 x)) (clear e x) (\lambda (x0: C).(\lambda (H1:
63 (drop O O e x0)).(\lambda (H2: (clear x0 x)).(let H3 \def (eq_ind_r C x0
64 (\lambda (c: C).(clear c x)) H2 e (drop_gen_refl e x0 H1)) in H3)))) H0)))).
67 \forall (k: K).(\forall (c: C).(\forall (x: C).(\forall (u: T).(\forall (h:
68 nat).((getl (S h) (CHead c k u) x) \to (getl (r k h) c x))))))
70 \lambda (k: K).(\lambda (c: C).(\lambda (x: C).(\lambda (u: T).(\lambda (h:
71 nat).(\lambda (H: (getl (S h) (CHead c k u) x)).(let H0 \def (getl_gen_all
72 (CHead c k u) x (S h) H) in (ex2_ind C (\lambda (e: C).(drop (S h) O (CHead c
73 k u) e)) (\lambda (e: C).(clear e x)) (getl (r k h) c x) (\lambda (x0:
74 C).(\lambda (H1: (drop (S h) O (CHead c k u) x0)).(\lambda (H2: (clear x0
75 x)).(getl_intro (r k h) c x x0 (drop_gen_drop k c x0 u h H1) H2)))) H0))))))).
78 \forall (c1: C).(\forall (c2: C).(\forall (i: nat).((getl i c1 c2) \to (ex_3
79 B C T (\lambda (b: B).(\lambda (c: C).(\lambda (v: T).(eq C c2 (CHead c (Bind
82 \lambda (c1: C).(\lambda (c2: C).(\lambda (i: nat).(\lambda (H: (getl i c1
83 c2)).(let H0 \def (getl_gen_all c1 c2 i H) in (ex2_ind C (\lambda (e:
84 C).(drop i O c1 e)) (\lambda (e: C).(clear e c2)) (ex_3 B C T (\lambda (b:
85 B).(\lambda (c: C).(\lambda (v: T).(eq C c2 (CHead c (Bind b) v))))))
86 (\lambda (x: C).(\lambda (_: (drop i O c1 x)).(\lambda (H2: (clear x
87 c2)).(let H3 \def (clear_gen_all x c2 H2) in (ex_3_ind B C T (\lambda (b:
88 B).(\lambda (e: C).(\lambda (u: T).(eq C c2 (CHead e (Bind b) u))))) (ex_3 B
89 C T (\lambda (b: B).(\lambda (c: C).(\lambda (v: T).(eq C c2 (CHead c (Bind
90 b) v)))))) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: T).(\lambda (H4:
91 (eq C c2 (CHead x1 (Bind x0) x2))).(let H5 \def (eq_ind C c2 (\lambda (c:
92 C).(clear x c)) H2 (CHead x1 (Bind x0) x2) H4) in (eq_ind_r C (CHead x1 (Bind
93 x0) x2) (\lambda (c: C).(ex_3 B C T (\lambda (b: B).(\lambda (c0: C).(\lambda
94 (v: T).(eq C c (CHead c0 (Bind b) v))))))) (ex_3_intro B C T (\lambda (b:
95 B).(\lambda (c: C).(\lambda (v: T).(eq C (CHead x1 (Bind x0) x2) (CHead c
96 (Bind b) v))))) x0 x1 x2 (refl_equal C (CHead x1 (Bind x0) x2))) c2 H4))))))
100 \forall (f: F).(\forall (e: C).(\forall (d: C).(\forall (v: T).(\forall (i:
101 nat).((getl i (CHead e (Flat f) v) d) \to (getl i e d))))))
103 \lambda (f: F).(\lambda (e: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i:
104 nat).(nat_ind (\lambda (n: nat).((getl n (CHead e (Flat f) v) d) \to (getl n
105 e d))) (\lambda (H: (getl O (CHead e (Flat f) v) d)).(getl_intro O e d e
106 (drop_refl e) (clear_gen_flat f e d v (getl_gen_O (CHead e (Flat f) v) d
107 H)))) (\lambda (n: nat).(\lambda (_: (((getl n (CHead e (Flat f) v) d) \to
108 (getl n e d)))).(\lambda (H0: (getl (S n) (CHead e (Flat f) v)
109 d)).(getl_gen_S (Flat f) e d v n H0)))) i))))).
112 \forall (b: B).(\forall (e: C).(\forall (d: C).(\forall (v: T).(\forall (i:
113 nat).((getl i (CHead e (Bind b) v) d) \to (or (land (eq nat i O) (eq C d
114 (CHead e (Bind b) v))) (ex2 nat (\lambda (j: nat).(eq nat i (S j))) (\lambda
115 (j: nat).(getl j e d)))))))))
117 \lambda (b: B).(\lambda (e: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i:
118 nat).(nat_ind (\lambda (n: nat).((getl n (CHead e (Bind b) v) d) \to (or
119 (land (eq nat n O) (eq C d (CHead e (Bind b) v))) (ex2 nat (\lambda (j:
120 nat).(eq nat n (S j))) (\lambda (j: nat).(getl j e d)))))) (\lambda (H: (getl
121 O (CHead e (Bind b) v) d)).(eq_ind_r C (CHead e (Bind b) v) (\lambda (c:
122 C).(or (land (eq nat O O) (eq C c (CHead e (Bind b) v))) (ex2 nat (\lambda
123 (j: nat).(eq nat O (S j))) (\lambda (j: nat).(getl j e c))))) (or_introl
124 (land (eq nat O O) (eq C (CHead e (Bind b) v) (CHead e (Bind b) v))) (ex2 nat
125 (\lambda (j: nat).(eq nat O (S j))) (\lambda (j: nat).(getl j e (CHead e
126 (Bind b) v)))) (conj (eq nat O O) (eq C (CHead e (Bind b) v) (CHead e (Bind
127 b) v)) (refl_equal nat O) (refl_equal C (CHead e (Bind b) v)))) d
128 (clear_gen_bind b e d v (getl_gen_O (CHead e (Bind b) v) d H)))) (\lambda (n:
129 nat).(\lambda (_: (((getl n (CHead e (Bind b) v) d) \to (or (land (eq nat n
130 O) (eq C d (CHead e (Bind b) v))) (ex2 nat (\lambda (j: nat).(eq nat n (S
131 j))) (\lambda (j: nat).(getl j e d))))))).(\lambda (H0: (getl (S n) (CHead e
132 (Bind b) v) d)).(or_intror (land (eq nat (S n) O) (eq C d (CHead e (Bind b)
133 v))) (ex2 nat (\lambda (j: nat).(eq nat (S n) (S j))) (\lambda (j: nat).(getl
134 j e d))) (ex_intro2 nat (\lambda (j: nat).(eq nat (S n) (S j))) (\lambda (j:
135 nat).(getl j e d)) n (refl_equal nat (S n)) (getl_gen_S (Bind b) e d v n
139 \forall (c: C).(\forall (x1: C).(\forall (h: nat).((getl h c x1) \to
140 (\forall (x2: C).((getl h c x2) \to (eq C x1 x2))))))
142 \lambda (c: C).(\lambda (x1: C).(\lambda (h: nat).(\lambda (H: (getl h c
143 x1)).(\lambda (x2: C).(\lambda (H0: (getl h c x2)).(let H1 \def (getl_gen_all
144 c x2 h H0) in (ex2_ind C (\lambda (e: C).(drop h O c e)) (\lambda (e:
145 C).(clear e x2)) (eq C x1 x2) (\lambda (x: C).(\lambda (H2: (drop h O c
146 x)).(\lambda (H3: (clear x x2)).(let H4 \def (getl_gen_all c x1 h H) in
147 (ex2_ind C (\lambda (e: C).(drop h O c e)) (\lambda (e: C).(clear e x1)) (eq
148 C x1 x2) (\lambda (x0: C).(\lambda (H5: (drop h O c x0)).(\lambda (H6: (clear
149 x0 x1)).(let H7 \def (eq_ind C x (\lambda (c0: C).(drop h O c c0)) H2 x0
150 (drop_mono c x O h H2 x0 H5)) in (let H8 \def (eq_ind_r C x0 (\lambda (c0:
151 C).(drop h O c c0)) H7 x (drop_mono c x O h H2 x0 H5)) in (let H9 \def
152 (eq_ind_r C x0 (\lambda (c0: C).(clear c0 x1)) H6 x (drop_mono c x O h H2 x0
153 H5)) in (clear_mono x x1 H9 x2 H3))))))) H4))))) H1))))))).