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 set "baseuri" "cic:/matita/LAMBDA-TYPES/LambdaDelta-1/sn3/fwd".
19 include "sn3/defs.ma".
21 include "pr3/props.ma".
24 \forall (b: B).(\forall (c: C).(\forall (u: T).(\forall (t: T).((sn3 c
25 (THead (Bind b) u t)) \to (land (sn3 c u) (sn3 (CHead c (Bind b) u) t))))))
27 \lambda (b: B).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (H:
28 (sn3 c (THead (Bind b) u t))).(insert_eq T (THead (Bind b) u t) (\lambda (t0:
29 T).(sn3 c t0)) (land (sn3 c u) (sn3 (CHead c (Bind b) u) t)) (\lambda (y:
30 T).(\lambda (H0: (sn3 c y)).(unintro T t (\lambda (t0: T).((eq T y (THead
31 (Bind b) u t0)) \to (land (sn3 c u) (sn3 (CHead c (Bind b) u) t0)))) (unintro
32 T u (\lambda (t0: T).(\forall (x: T).((eq T y (THead (Bind b) t0 x)) \to
33 (land (sn3 c t0) (sn3 (CHead c (Bind b) t0) x))))) (sn3_ind c (\lambda (t0:
34 T).(\forall (x: T).(\forall (x0: T).((eq T t0 (THead (Bind b) x x0)) \to
35 (land (sn3 c x) (sn3 (CHead c (Bind b) x) x0)))))) (\lambda (t1: T).(\lambda
36 (H1: ((\forall (t2: T).((((eq T t1 t2) \to (\forall (P: Prop).P))) \to ((pr3
37 c t1 t2) \to (sn3 c t2)))))).(\lambda (H2: ((\forall (t2: T).((((eq T t1 t2)
38 \to (\forall (P: Prop).P))) \to ((pr3 c t1 t2) \to (\forall (x: T).(\forall
39 (x0: T).((eq T t2 (THead (Bind b) x x0)) \to (land (sn3 c x) (sn3 (CHead c
40 (Bind b) x) x0)))))))))).(\lambda (x: T).(\lambda (x0: T).(\lambda (H3: (eq T
41 t1 (THead (Bind b) x x0))).(let H4 \def (eq_ind T t1 (\lambda (t0:
42 T).(\forall (t2: T).((((eq T t0 t2) \to (\forall (P: Prop).P))) \to ((pr3 c
43 t0 t2) \to (\forall (x1: T).(\forall (x2: T).((eq T t2 (THead (Bind b) x1
44 x2)) \to (land (sn3 c x1) (sn3 (CHead c (Bind b) x1) x2))))))))) H2 (THead
45 (Bind b) x x0) H3) in (let H5 \def (eq_ind T t1 (\lambda (t0: T).(\forall
46 (t2: T).((((eq T t0 t2) \to (\forall (P: Prop).P))) \to ((pr3 c t0 t2) \to
47 (sn3 c t2))))) H1 (THead (Bind b) x x0) H3) in (conj (sn3 c x) (sn3 (CHead c
48 (Bind b) x) x0) (sn3_sing c x (\lambda (t2: T).(\lambda (H6: (((eq T x t2)
49 \to (\forall (P: Prop).P)))).(\lambda (H7: (pr3 c x t2)).(let H8 \def (H4
50 (THead (Bind b) t2 x0) (\lambda (H8: (eq T (THead (Bind b) x x0) (THead (Bind
51 b) t2 x0))).(\lambda (P: Prop).(let H9 \def (f_equal T T (\lambda (e:
52 T).(match e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow x |
53 (TLRef _) \Rightarrow x | (THead _ t0 _) \Rightarrow t0])) (THead (Bind b) x
54 x0) (THead (Bind b) t2 x0) H8) in (let H10 \def (eq_ind_r T t2 (\lambda (t0:
55 T).(pr3 c x t0)) H7 x H9) in (let H11 \def (eq_ind_r T t2 (\lambda (t0:
56 T).((eq T x t0) \to (\forall (P0: Prop).P0))) H6 x H9) in (H11 (refl_equal T
57 x) P)))))) (pr3_head_12 c x t2 H7 (Bind b) x0 x0 (pr3_refl (CHead c (Bind b)
58 t2) x0)) t2 x0 (refl_equal T (THead (Bind b) t2 x0))) in (and_ind (sn3 c t2)
59 (sn3 (CHead c (Bind b) t2) x0) (sn3 c t2) (\lambda (H9: (sn3 c t2)).(\lambda
60 (_: (sn3 (CHead c (Bind b) t2) x0)).H9)) H8)))))) (sn3_sing (CHead c (Bind b)
61 x) x0 (\lambda (t2: T).(\lambda (H6: (((eq T x0 t2) \to (\forall (P:
62 Prop).P)))).(\lambda (H7: (pr3 (CHead c (Bind b) x) x0 t2)).(let H8 \def (H4
63 (THead (Bind b) x t2) (\lambda (H8: (eq T (THead (Bind b) x x0) (THead (Bind
64 b) x t2))).(\lambda (P: Prop).(let H9 \def (f_equal T T (\lambda (e:
65 T).(match e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow x0 |
66 (TLRef _) \Rightarrow x0 | (THead _ _ t0) \Rightarrow t0])) (THead (Bind b) x
67 x0) (THead (Bind b) x t2) H8) in (let H10 \def (eq_ind_r T t2 (\lambda (t0:
68 T).(pr3 (CHead c (Bind b) x) x0 t0)) H7 x0 H9) in (let H11 \def (eq_ind_r T
69 t2 (\lambda (t0: T).((eq T x0 t0) \to (\forall (P0: Prop).P0))) H6 x0 H9) in
70 (H11 (refl_equal T x0) P)))))) (pr3_head_12 c x x (pr3_refl c x) (Bind b) x0
71 t2 H7) x t2 (refl_equal T (THead (Bind b) x t2))) in (and_ind (sn3 c x) (sn3
72 (CHead c (Bind b) x) t2) (sn3 (CHead c (Bind b) x) t2) (\lambda (_: (sn3 c
73 x)).(\lambda (H10: (sn3 (CHead c (Bind b) x) t2)).H10)) H8))))))))))))))) y
77 \forall (f: F).(\forall (c: C).(\forall (u: T).(\forall (t: T).((sn3 c
78 (THead (Flat f) u t)) \to (land (sn3 c u) (sn3 c t))))))
80 \lambda (f: F).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (H:
81 (sn3 c (THead (Flat f) u t))).(insert_eq T (THead (Flat f) u t) (\lambda (t0:
82 T).(sn3 c t0)) (land (sn3 c u) (sn3 c t)) (\lambda (y: T).(\lambda (H0: (sn3
83 c y)).(unintro T t (\lambda (t0: T).((eq T y (THead (Flat f) u t0)) \to (land
84 (sn3 c u) (sn3 c t0)))) (unintro T u (\lambda (t0: T).(\forall (x: T).((eq T
85 y (THead (Flat f) t0 x)) \to (land (sn3 c t0) (sn3 c x))))) (sn3_ind c
86 (\lambda (t0: T).(\forall (x: T).(\forall (x0: T).((eq T t0 (THead (Flat f) x
87 x0)) \to (land (sn3 c x) (sn3 c x0)))))) (\lambda (t1: T).(\lambda (H1:
88 ((\forall (t2: T).((((eq T t1 t2) \to (\forall (P: Prop).P))) \to ((pr3 c t1
89 t2) \to (sn3 c t2)))))).(\lambda (H2: ((\forall (t2: T).((((eq T t1 t2) \to
90 (\forall (P: Prop).P))) \to ((pr3 c t1 t2) \to (\forall (x: T).(\forall (x0:
91 T).((eq T t2 (THead (Flat f) x x0)) \to (land (sn3 c x) (sn3 c
92 x0)))))))))).(\lambda (x: T).(\lambda (x0: T).(\lambda (H3: (eq T t1 (THead
93 (Flat f) x x0))).(let H4 \def (eq_ind T t1 (\lambda (t0: T).(\forall (t2:
94 T).((((eq T t0 t2) \to (\forall (P: Prop).P))) \to ((pr3 c t0 t2) \to
95 (\forall (x1: T).(\forall (x2: T).((eq T t2 (THead (Flat f) x1 x2)) \to (land
96 (sn3 c x1) (sn3 c x2))))))))) H2 (THead (Flat f) x x0) H3) in (let H5 \def
97 (eq_ind T t1 (\lambda (t0: T).(\forall (t2: T).((((eq T t0 t2) \to (\forall
98 (P: Prop).P))) \to ((pr3 c t0 t2) \to (sn3 c t2))))) H1 (THead (Flat f) x x0)
99 H3) in (conj (sn3 c x) (sn3 c x0) (sn3_sing c x (\lambda (t2: T).(\lambda
100 (H6: (((eq T x t2) \to (\forall (P: Prop).P)))).(\lambda (H7: (pr3 c x
101 t2)).(let H8 \def (H4 (THead (Flat f) t2 x0) (\lambda (H8: (eq T (THead (Flat
102 f) x x0) (THead (Flat f) t2 x0))).(\lambda (P: Prop).(let H9 \def (f_equal T
103 T (\lambda (e: T).(match e in T return (\lambda (_: T).T) with [(TSort _)
104 \Rightarrow x | (TLRef _) \Rightarrow x | (THead _ t0 _) \Rightarrow t0]))
105 (THead (Flat f) x x0) (THead (Flat f) t2 x0) H8) in (let H10 \def (eq_ind_r T
106 t2 (\lambda (t0: T).(pr3 c x t0)) H7 x H9) in (let H11 \def (eq_ind_r T t2
107 (\lambda (t0: T).((eq T x t0) \to (\forall (P0: Prop).P0))) H6 x H9) in (H11
108 (refl_equal T x) P)))))) (pr3_head_12 c x t2 H7 (Flat f) x0 x0 (pr3_refl
109 (CHead c (Flat f) t2) x0)) t2 x0 (refl_equal T (THead (Flat f) t2 x0))) in
110 (and_ind (sn3 c t2) (sn3 c x0) (sn3 c t2) (\lambda (H9: (sn3 c t2)).(\lambda
111 (_: (sn3 c x0)).H9)) H8)))))) (sn3_sing c x0 (\lambda (t2: T).(\lambda (H6:
112 (((eq T x0 t2) \to (\forall (P: Prop).P)))).(\lambda (H7: (pr3 c x0 t2)).(let
113 H8 \def (H4 (THead (Flat f) x t2) (\lambda (H8: (eq T (THead (Flat f) x x0)
114 (THead (Flat f) x t2))).(\lambda (P: Prop).(let H9 \def (f_equal T T (\lambda
115 (e: T).(match e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow x0
116 | (TLRef _) \Rightarrow x0 | (THead _ _ t0) \Rightarrow t0])) (THead (Flat f)
117 x x0) (THead (Flat f) x t2) H8) in (let H10 \def (eq_ind_r T t2 (\lambda (t0:
118 T).(pr3 c x0 t0)) H7 x0 H9) in (let H11 \def (eq_ind_r T t2 (\lambda (t0:
119 T).((eq T x0 t0) \to (\forall (P0: Prop).P0))) H6 x0 H9) in (H11 (refl_equal
120 T x0) P)))))) (pr3_thin_dx c x0 t2 H7 x f) x t2 (refl_equal T (THead (Flat f)
121 x t2))) in (and_ind (sn3 c x) (sn3 c t2) (sn3 c t2) (\lambda (_: (sn3 c
122 x)).(\lambda (H10: (sn3 c t2)).H10)) H8))))))))))))))) y H0))))) H))))).
124 theorem sn3_gen_head:
125 \forall (k: K).(\forall (c: C).(\forall (u: T).(\forall (t: T).((sn3 c
126 (THead k u t)) \to (sn3 c u)))))
128 \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (c: C).(\forall (u:
129 T).(\forall (t: T).((sn3 c (THead k0 u t)) \to (sn3 c u)))))) (\lambda (b:
130 B).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (H: (sn3 c (THead
131 (Bind b) u t))).(let H_x \def (sn3_gen_bind b c u t H) in (let H0 \def H_x in
132 (and_ind (sn3 c u) (sn3 (CHead c (Bind b) u) t) (sn3 c u) (\lambda (H1: (sn3
133 c u)).(\lambda (_: (sn3 (CHead c (Bind b) u) t)).H1)) H0)))))))) (\lambda (f:
134 F).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (H: (sn3 c (THead
135 (Flat f) u t))).(let H_x \def (sn3_gen_flat f c u t H) in (let H0 \def H_x in
136 (and_ind (sn3 c u) (sn3 c t) (sn3 c u) (\lambda (H1: (sn3 c u)).(\lambda (_:
137 (sn3 c t)).H1)) H0)))))))) k).
139 theorem sn3_gen_cflat:
140 \forall (f: F).(\forall (c: C).(\forall (u: T).(\forall (t: T).((sn3 (CHead
141 c (Flat f) u) t) \to (sn3 c t)))))
143 \lambda (f: F).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (H:
144 (sn3 (CHead c (Flat f) u) t)).(sn3_ind (CHead c (Flat f) u) (\lambda (t0:
145 T).(sn3 c t0)) (\lambda (t1: T).(\lambda (_: ((\forall (t2: T).((((eq T t1
146 t2) \to (\forall (P: Prop).P))) \to ((pr3 (CHead c (Flat f) u) t1 t2) \to
147 (sn3 (CHead c (Flat f) u) t2)))))).(\lambda (H1: ((\forall (t2: T).((((eq T
148 t1 t2) \to (\forall (P: Prop).P))) \to ((pr3 (CHead c (Flat f) u) t1 t2) \to
149 (sn3 c t2)))))).(sn3_sing c t1 (\lambda (t2: T).(\lambda (H2: (((eq T t1 t2)
150 \to (\forall (P: Prop).P)))).(\lambda (H3: (pr3 c t1 t2)).(H1 t2 H2
151 (pr3_cflat c t1 t2 H3 f u))))))))) t H))))).
153 theorem sn3_gen_lift:
154 \forall (c1: C).(\forall (t: T).(\forall (h: nat).(\forall (d: nat).((sn3 c1
155 (lift h d t)) \to (\forall (c2: C).((drop h d c1 c2) \to (sn3 c2 t)))))))
157 \lambda (c1: C).(\lambda (t: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda
158 (H: (sn3 c1 (lift h d t))).(insert_eq T (lift h d t) (\lambda (t0: T).(sn3 c1
159 t0)) (\forall (c2: C).((drop h d c1 c2) \to (sn3 c2 t))) (\lambda (y:
160 T).(\lambda (H0: (sn3 c1 y)).(unintro T t (\lambda (t0: T).((eq T y (lift h d
161 t0)) \to (\forall (c2: C).((drop h d c1 c2) \to (sn3 c2 t0))))) (sn3_ind c1
162 (\lambda (t0: T).(\forall (x: T).((eq T t0 (lift h d x)) \to (\forall (c2:
163 C).((drop h d c1 c2) \to (sn3 c2 x)))))) (\lambda (t1: T).(\lambda (H1:
164 ((\forall (t2: T).((((eq T t1 t2) \to (\forall (P: Prop).P))) \to ((pr3 c1 t1
165 t2) \to (sn3 c1 t2)))))).(\lambda (H2: ((\forall (t2: T).((((eq T t1 t2) \to
166 (\forall (P: Prop).P))) \to ((pr3 c1 t1 t2) \to (\forall (x: T).((eq T t2
167 (lift h d x)) \to (\forall (c2: C).((drop h d c1 c2) \to (sn3 c2
168 x)))))))))).(\lambda (x: T).(\lambda (H3: (eq T t1 (lift h d x))).(\lambda
169 (c2: C).(\lambda (H4: (drop h d c1 c2)).(let H5 \def (eq_ind T t1 (\lambda
170 (t0: T).(\forall (t2: T).((((eq T t0 t2) \to (\forall (P: Prop).P))) \to
171 ((pr3 c1 t0 t2) \to (\forall (x0: T).((eq T t2 (lift h d x0)) \to (\forall
172 (c3: C).((drop h d c1 c3) \to (sn3 c3 x0))))))))) H2 (lift h d x) H3) in (let
173 H6 \def (eq_ind T t1 (\lambda (t0: T).(\forall (t2: T).((((eq T t0 t2) \to
174 (\forall (P: Prop).P))) \to ((pr3 c1 t0 t2) \to (sn3 c1 t2))))) H1 (lift h d
175 x) H3) in (sn3_sing c2 x (\lambda (t2: T).(\lambda (H7: (((eq T x t2) \to
176 (\forall (P: Prop).P)))).(\lambda (H8: (pr3 c2 x t2)).(H5 (lift h d t2)
177 (\lambda (H9: (eq T (lift h d x) (lift h d t2))).(\lambda (P: Prop).(let H10
178 \def (eq_ind_r T t2 (\lambda (t0: T).(pr3 c2 x t0)) H8 x (lift_inj x t2 h d
179 H9)) in (let H11 \def (eq_ind_r T t2 (\lambda (t0: T).((eq T x t0) \to
180 (\forall (P0: Prop).P0))) H7 x (lift_inj x t2 h d H9)) in (H11 (refl_equal T
181 x) P))))) (pr3_lift c1 c2 h d H4 x t2 H8) t2 (refl_equal T (lift h d t2)) c2
182 H4)))))))))))))) y H0)))) H))))).