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".
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)).(let TMP_1 \def (\lambda (e: C).(drop i O c1 e)) in (let TMP_2 \def
39 (\lambda (e: C).(clear e c2)) in (let TMP_3 \def (ex2 C TMP_1 TMP_2) in (let
40 TMP_6 \def (\lambda (e: C).(\lambda (H0: (drop i O c1 e)).(\lambda (H1:
41 (clear e c2)).(let TMP_4 \def (\lambda (e0: C).(drop i O c1 e0)) in (let
42 TMP_5 \def (\lambda (e0: C).(clear e0 c2)) in (ex_intro2 C TMP_4 TMP_5 e H0
43 H1)))))) in (getl_ind i c1 c2 TMP_3 TMP_6 H)))))))).
45 theorem getl_gen_sort:
46 \forall (n: nat).(\forall (h: nat).(\forall (x: C).((getl h (CSort n) x) \to
47 (\forall (P: Prop).P))))
49 \lambda (n: nat).(\lambda (h: nat).(\lambda (x: C).(\lambda (H: (getl h
50 (CSort n) x)).(\lambda (P: Prop).(let TMP_1 \def (CSort n) in (let H0 \def
51 (getl_gen_all TMP_1 x h H) in (let TMP_3 \def (\lambda (e: C).(let TMP_2 \def
52 (CSort n) in (drop h O TMP_2 e))) in (let TMP_4 \def (\lambda (e: C).(clear e
53 x)) in (let TMP_13 \def (\lambda (x0: C).(\lambda (H1: (drop h O (CSort n)
54 x0)).(\lambda (H2: (clear x0 x)).(let TMP_5 \def (CSort n) in (let TMP_6 \def
55 (eq C x0 TMP_5) in (let TMP_7 \def (eq nat h O) in (let TMP_8 \def (eq nat O
56 O) in (let TMP_11 \def (\lambda (H3: (eq C x0 (CSort n))).(\lambda (_: (eq
57 nat h O)).(\lambda (_: (eq nat O O)).(let TMP_9 \def (\lambda (c: C).(clear c
58 x)) in (let TMP_10 \def (CSort n) in (let H6 \def (eq_ind C x0 TMP_9 H2
59 TMP_10 H3) in (clear_gen_sort x n H6 P))))))) in (let TMP_12 \def
60 (drop_gen_sort n h O x0 H1) in (and3_ind TMP_6 TMP_7 TMP_8 P TMP_11
61 TMP_12)))))))))) in (ex2_ind C TMP_3 TMP_4 P TMP_13 H0)))))))))).
64 \forall (e: C).(\forall (x: C).((getl O e x) \to (clear e x)))
66 \lambda (e: C).(\lambda (x: C).(\lambda (H: (getl O e x)).(let H0 \def
67 (getl_gen_all e x O H) in (let TMP_1 \def (\lambda (e0: C).(drop O O e e0))
68 in (let TMP_2 \def (\lambda (e0: C).(clear e0 x)) in (let TMP_3 \def (clear e
69 x) in (let TMP_6 \def (\lambda (x0: C).(\lambda (H1: (drop O O e
70 x0)).(\lambda (H2: (clear x0 x)).(let TMP_4 \def (\lambda (c: C).(clear c x))
71 in (let TMP_5 \def (drop_gen_refl e x0 H1) in (let H3 \def (eq_ind_r C x0
72 TMP_4 H2 e TMP_5) in H3)))))) in (ex2_ind C TMP_1 TMP_2 TMP_3 TMP_6
76 \forall (k: K).(\forall (c: C).(\forall (x: C).(\forall (u: T).(\forall (h:
77 nat).((getl (S h) (CHead c k u) x) \to (getl (r k h) c x))))))
79 \lambda (k: K).(\lambda (c: C).(\lambda (x: C).(\lambda (u: T).(\lambda (h:
80 nat).(\lambda (H: (getl (S h) (CHead c k u) x)).(let TMP_1 \def (CHead c k u)
81 in (let TMP_2 \def (S h) in (let H0 \def (getl_gen_all TMP_1 x TMP_2 H) in
82 (let TMP_5 \def (\lambda (e: C).(let TMP_3 \def (S h) in (let TMP_4 \def
83 (CHead c k u) in (drop TMP_3 O TMP_4 e)))) in (let TMP_6 \def (\lambda (e:
84 C).(clear e x)) in (let TMP_7 \def (r k h) in (let TMP_8 \def (getl TMP_7 c
85 x) in (let TMP_11 \def (\lambda (x0: C).(\lambda (H1: (drop (S h) O (CHead c
86 k u) x0)).(\lambda (H2: (clear x0 x)).(let TMP_9 \def (r k h) in (let TMP_10
87 \def (drop_gen_drop k c x0 u h H1) in (getl_intro TMP_9 c x x0 TMP_10
88 H2)))))) in (ex2_ind C TMP_5 TMP_6 TMP_8 TMP_11 H0)))))))))))))).
91 \forall (c1: C).(\forall (c2: C).(\forall (i: nat).((getl i c1 c2) \to (ex_3
92 B C T (\lambda (b: B).(\lambda (c: C).(\lambda (v: T).(eq C c2 (CHead c (Bind
95 \lambda (c1: C).(\lambda (c2: C).(\lambda (i: nat).(\lambda (H: (getl i c1
96 c2)).(let H0 \def (getl_gen_all c1 c2 i H) in (let TMP_1 \def (\lambda (e:
97 C).(drop i O c1 e)) in (let TMP_2 \def (\lambda (e: C).(clear e c2)) in (let
98 TMP_5 \def (\lambda (b: B).(\lambda (c: C).(\lambda (v: T).(let TMP_3 \def
99 (Bind b) in (let TMP_4 \def (CHead c TMP_3 v) in (eq C c2 TMP_4)))))) in (let
100 TMP_6 \def (ex_3 B C T TMP_5) in (let TMP_33 \def (\lambda (x: C).(\lambda
101 (_: (drop i O c1 x)).(\lambda (H2: (clear x c2)).(let H3 \def (clear_gen_all
102 x c2 H2) in (let TMP_9 \def (\lambda (b: B).(\lambda (e: C).(\lambda (u:
103 T).(let TMP_7 \def (Bind b) in (let TMP_8 \def (CHead e TMP_7 u) in (eq C c2
104 TMP_8)))))) in (let TMP_12 \def (\lambda (b: B).(\lambda (c: C).(\lambda (v:
105 T).(let TMP_10 \def (Bind b) in (let TMP_11 \def (CHead c TMP_10 v) in (eq C
106 c2 TMP_11)))))) in (let TMP_13 \def (ex_3 B C T TMP_12) in (let TMP_32 \def
107 (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: T).(\lambda (H4: (eq C c2
108 (CHead x1 (Bind x0) x2))).(let TMP_14 \def (\lambda (c: C).(clear x c)) in
109 (let TMP_15 \def (Bind x0) in (let TMP_16 \def (CHead x1 TMP_15 x2) in (let
110 H5 \def (eq_ind C c2 TMP_14 H2 TMP_16 H4) in (let TMP_17 \def (Bind x0) in
111 (let TMP_18 \def (CHead x1 TMP_17 x2) in (let TMP_22 \def (\lambda (c:
112 C).(let TMP_21 \def (\lambda (b: B).(\lambda (c0: C).(\lambda (v: T).(let
113 TMP_19 \def (Bind b) in (let TMP_20 \def (CHead c0 TMP_19 v) in (eq C c
114 TMP_20)))))) in (ex_3 B C T TMP_21))) in (let TMP_27 \def (\lambda (b:
115 B).(\lambda (c: C).(\lambda (v: T).(let TMP_23 \def (Bind x0) in (let TMP_24
116 \def (CHead x1 TMP_23 x2) in (let TMP_25 \def (Bind b) in (let TMP_26 \def
117 (CHead c TMP_25 v) in (eq C TMP_24 TMP_26)))))))) in (let TMP_28 \def (Bind
118 x0) in (let TMP_29 \def (CHead x1 TMP_28 x2) in (let TMP_30 \def (refl_equal
119 C TMP_29) in (let TMP_31 \def (ex_3_intro B C T TMP_27 x0 x1 x2 TMP_30) in
120 (eq_ind_r C TMP_18 TMP_22 TMP_31 c2 H4))))))))))))))))) in (ex_3_ind B C T
121 TMP_9 TMP_13 TMP_32 H3))))))))) in (ex2_ind C TMP_1 TMP_2 TMP_6 TMP_33
124 theorem getl_gen_flat:
125 \forall (f: F).(\forall (e: C).(\forall (d: C).(\forall (v: T).(\forall (i:
126 nat).((getl i (CHead e (Flat f) v) d) \to (getl i e d))))))
128 \lambda (f: F).(\lambda (e: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i:
129 nat).(let TMP_1 \def (\lambda (n: nat).((getl n (CHead e (Flat f) v) d) \to
130 (getl n e d))) in (let TMP_7 \def (\lambda (H: (getl O (CHead e (Flat f) v)
131 d)).(let TMP_2 \def (drop_refl e) in (let TMP_3 \def (Flat f) in (let TMP_4
132 \def (CHead e TMP_3 v) in (let TMP_5 \def (getl_gen_O TMP_4 d H) in (let
133 TMP_6 \def (clear_gen_flat f e d v TMP_5) in (getl_intro O e d e TMP_2
134 TMP_6))))))) in (let TMP_9 \def (\lambda (n: nat).(\lambda (_: (((getl n
135 (CHead e (Flat f) v) d) \to (getl n e d)))).(\lambda (H0: (getl (S n) (CHead
136 e (Flat f) v) d)).(let TMP_8 \def (Flat f) in (getl_gen_S TMP_8 e d v n
137 H0))))) in (nat_ind TMP_1 TMP_7 TMP_9 i)))))))).
139 theorem getl_gen_bind:
140 \forall (b: B).(\forall (e: C).(\forall (d: C).(\forall (v: T).(\forall (i:
141 nat).((getl i (CHead e (Bind b) v) d) \to (or (land (eq nat i O) (eq C d
142 (CHead e (Bind b) v))) (ex2 nat (\lambda (j: nat).(eq nat i (S j))) (\lambda
143 (j: nat).(getl j e d)))))))))
145 \lambda (b: B).(\lambda (e: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i:
146 nat).(let TMP_10 \def (\lambda (n: nat).((getl n (CHead e (Bind b) v) d) \to
147 (let TMP_1 \def (eq nat n O) in (let TMP_2 \def (Bind b) in (let TMP_3 \def
148 (CHead e TMP_2 v) in (let TMP_4 \def (eq C d TMP_3) in (let TMP_5 \def (land
149 TMP_1 TMP_4) in (let TMP_7 \def (\lambda (j: nat).(let TMP_6 \def (S j) in
150 (eq nat n TMP_6))) in (let TMP_8 \def (\lambda (j: nat).(getl j e d)) in (let
151 TMP_9 \def (ex2 nat TMP_7 TMP_8) in (or TMP_5 TMP_9))))))))))) in (let TMP_52
152 \def (\lambda (H: (getl O (CHead e (Bind b) v) d)).(let TMP_11 \def (Bind b)
153 in (let TMP_12 \def (CHead e TMP_11 v) in (let TMP_22 \def (\lambda (c:
154 C).(let TMP_13 \def (eq nat O O) in (let TMP_14 \def (Bind b) in (let TMP_15
155 \def (CHead e TMP_14 v) in (let TMP_16 \def (eq C c TMP_15) in (let TMP_17
156 \def (land TMP_13 TMP_16) in (let TMP_19 \def (\lambda (j: nat).(let TMP_18
157 \def (S j) in (eq nat O TMP_18))) in (let TMP_20 \def (\lambda (j: nat).(getl
158 j e c)) in (let TMP_21 \def (ex2 nat TMP_19 TMP_20) in (or TMP_17
159 TMP_21)))))))))) in (let TMP_23 \def (eq nat O O) in (let TMP_24 \def (Bind
160 b) in (let TMP_25 \def (CHead e TMP_24 v) in (let TMP_26 \def (Bind b) in
161 (let TMP_27 \def (CHead e TMP_26 v) in (let TMP_28 \def (eq C TMP_25 TMP_27)
162 in (let TMP_29 \def (land TMP_23 TMP_28) in (let TMP_31 \def (\lambda (j:
163 nat).(let TMP_30 \def (S j) in (eq nat O TMP_30))) in (let TMP_34 \def
164 (\lambda (j: nat).(let TMP_32 \def (Bind b) in (let TMP_33 \def (CHead e
165 TMP_32 v) in (getl j e TMP_33)))) in (let TMP_35 \def (ex2 nat TMP_31 TMP_34)
166 in (let TMP_36 \def (eq nat O O) in (let TMP_37 \def (Bind b) in (let TMP_38
167 \def (CHead e TMP_37 v) in (let TMP_39 \def (Bind b) in (let TMP_40 \def
168 (CHead e TMP_39 v) in (let TMP_41 \def (eq C TMP_38 TMP_40) in (let TMP_42
169 \def (refl_equal nat O) in (let TMP_43 \def (Bind b) in (let TMP_44 \def
170 (CHead e TMP_43 v) in (let TMP_45 \def (refl_equal C TMP_44) in (let TMP_46
171 \def (conj TMP_36 TMP_41 TMP_42 TMP_45) in (let TMP_47 \def (or_introl TMP_29
172 TMP_35 TMP_46) in (let TMP_48 \def (Bind b) in (let TMP_49 \def (CHead e
173 TMP_48 v) in (let TMP_50 \def (getl_gen_O TMP_49 d H) in (let TMP_51 \def
174 (clear_gen_bind b e d v TMP_50) in (eq_ind_r C TMP_12 TMP_22 TMP_47 d
175 TMP_51))))))))))))))))))))))))))))))) in (let TMP_73 \def (\lambda (n:
176 nat).(\lambda (_: (((getl n (CHead e (Bind b) v) d) \to (or (land (eq nat n
177 O) (eq C d (CHead e (Bind b) v))) (ex2 nat (\lambda (j: nat).(eq nat n (S
178 j))) (\lambda (j: nat).(getl j e d))))))).(\lambda (H0: (getl (S n) (CHead e
179 (Bind b) v) d)).(let TMP_53 \def (S n) in (let TMP_54 \def (eq nat TMP_53 O)
180 in (let TMP_55 \def (Bind b) in (let TMP_56 \def (CHead e TMP_55 v) in (let
181 TMP_57 \def (eq C d TMP_56) in (let TMP_58 \def (land TMP_54 TMP_57) in (let
182 TMP_61 \def (\lambda (j: nat).(let TMP_59 \def (S n) in (let TMP_60 \def (S
183 j) in (eq nat TMP_59 TMP_60)))) in (let TMP_62 \def (\lambda (j: nat).(getl j
184 e d)) in (let TMP_63 \def (ex2 nat TMP_61 TMP_62) in (let TMP_66 \def
185 (\lambda (j: nat).(let TMP_64 \def (S n) in (let TMP_65 \def (S j) in (eq nat
186 TMP_64 TMP_65)))) in (let TMP_67 \def (\lambda (j: nat).(getl j e d)) in (let
187 TMP_68 \def (S n) in (let TMP_69 \def (refl_equal nat TMP_68) in (let TMP_70
188 \def (Bind b) in (let TMP_71 \def (getl_gen_S TMP_70 e d v n H0) in (let
189 TMP_72 \def (ex_intro2 nat TMP_66 TMP_67 n TMP_69 TMP_71) in (or_intror
190 TMP_58 TMP_63 TMP_72)))))))))))))))))))) in (nat_ind TMP_10 TMP_52 TMP_73
194 \forall (c: C).(\forall (x1: C).(\forall (h: nat).((getl h c x1) \to
195 (\forall (x2: C).((getl h c x2) \to (eq C x1 x2))))))
197 \lambda (c: C).(\lambda (x1: C).(\lambda (h: nat).(\lambda (H: (getl h c
198 x1)).(\lambda (x2: C).(\lambda (H0: (getl h c x2)).(let H1 \def (getl_gen_all
199 c x2 h H0) in (let TMP_1 \def (\lambda (e: C).(drop h O c e)) in (let TMP_2
200 \def (\lambda (e: C).(clear e x2)) in (let TMP_3 \def (eq C x1 x2) in (let
201 TMP_14 \def (\lambda (x: C).(\lambda (H2: (drop h O c x)).(\lambda (H3:
202 (clear x x2)).(let H4 \def (getl_gen_all c x1 h H) in (let TMP_4 \def
203 (\lambda (e: C).(drop h O c e)) in (let TMP_5 \def (\lambda (e: C).(clear e
204 x1)) in (let TMP_6 \def (eq C x1 x2) in (let TMP_13 \def (\lambda (x0:
205 C).(\lambda (H5: (drop h O c x0)).(\lambda (H6: (clear x0 x1)).(let TMP_7
206 \def (\lambda (c0: C).(drop h O c c0)) in (let TMP_8 \def (drop_mono c x O h
207 H2 x0 H5) in (let H7 \def (eq_ind C x TMP_7 H2 x0 TMP_8) in (let TMP_9 \def
208 (\lambda (c0: C).(drop h O c c0)) in (let TMP_10 \def (drop_mono c x O h H2
209 x0 H5) in (let H8 \def (eq_ind_r C x0 TMP_9 H7 x TMP_10) in (let TMP_11 \def
210 (\lambda (c0: C).(clear c0 x1)) in (let TMP_12 \def (drop_mono c x O h H2 x0
211 H5) in (let H9 \def (eq_ind_r C x0 TMP_11 H6 x TMP_12) in (clear_mono x x1 H9
212 x2 H3))))))))))))) in (ex2_ind C TMP_4 TMP_5 TMP_6 TMP_13 H4))))))))) in
213 (ex2_ind C TMP_1 TMP_2 TMP_3 TMP_14 H1))))))))))).