]> matita.cs.unibo.it Git - helm.git/blob - matita/contribs/LAMBDA-TYPES/Level-1/LambdaDelta/sn3/fwd.ma
- transcript: patched to generate CoRN_notation.ma instead of CoRN.ma
[helm.git] / matita / contribs / LAMBDA-TYPES / Level-1 / LambdaDelta / sn3 / fwd.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/sn3/fwd".
18
19 include "sn3/defs.ma".
20
21 include "pr3/props.ma".
22
23 theorem sn3_gen_flat:
24  \forall (f: F).(\forall (c: C).(\forall (u: T).(\forall (t: T).((sn3 c 
25 (THead (Flat f) u t)) \to (land (sn3 c u) (sn3 c t))))))
26 \def
27  \lambda (f: F).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (H: 
28 (sn3 c (THead (Flat f) u t))).(insert_eq T (THead (Flat f) u t) (\lambda (t0: 
29 T).(sn3 c t0)) (land (sn3 c u) (sn3 c t)) (\lambda (y: T).(\lambda (H0: (sn3 
30 c y)).(unintro T t (\lambda (t0: T).((eq T y (THead (Flat f) u t0)) \to (land 
31 (sn3 c u) (sn3 c t0)))) (unintro T u (\lambda (t0: T).(\forall (x: T).((eq T 
32 y (THead (Flat f) t0 x)) \to (land (sn3 c t0) (sn3 c x))))) (sn3_ind c 
33 (\lambda (t0: T).(\forall (x: T).(\forall (x0: T).((eq T t0 (THead (Flat f) x 
34 x0)) \to (land (sn3 c x) (sn3 c x0)))))) (\lambda (t1: T).(\lambda (H1: 
35 ((\forall (t2: T).((((eq T t1 t2) \to (\forall (P: Prop).P))) \to ((pr3 c t1 
36 t2) \to (sn3 c t2)))))).(\lambda (H2: ((\forall (t2: T).((((eq T t1 t2) \to 
37 (\forall (P: Prop).P))) \to ((pr3 c t1 t2) \to (\forall (x: T).(\forall (x0: 
38 T).((eq T t2 (THead (Flat f) x x0)) \to (land (sn3 c x) (sn3 c 
39 x0)))))))))).(\lambda (x: T).(\lambda (x0: T).(\lambda (H3: (eq T t1 (THead 
40 (Flat f) x x0))).(let H4 \def (eq_ind T t1 (\lambda (t0: T).(\forall (t2: 
41 T).((((eq T t0 t2) \to (\forall (P: Prop).P))) \to ((pr3 c t0 t2) \to 
42 (\forall (x1: T).(\forall (x2: T).((eq T t2 (THead (Flat f) x1 x2)) \to (land 
43 (sn3 c x1) (sn3 c x2))))))))) H2 (THead (Flat f) x x0) H3) in (let H5 \def 
44 (eq_ind T t1 (\lambda (t0: T).(\forall (t2: T).((((eq T t0 t2) \to (\forall 
45 (P: Prop).P))) \to ((pr3 c t0 t2) \to (sn3 c t2))))) H1 (THead (Flat f) x x0) 
46 H3) in (conj (sn3 c x) (sn3 c x0) (sn3_sing c x (\lambda (t2: T).(\lambda 
47 (H6: (((eq T x t2) \to (\forall (P: Prop).P)))).(\lambda (H7: (pr3 c x 
48 t2)).(let H8 \def (H4 (THead (Flat f) t2 x0) (\lambda (H8: (eq T (THead (Flat 
49 f) x x0) (THead (Flat f) t2 x0))).(\lambda (P: Prop).(let H9 \def (f_equal T 
50 T (\lambda (e: T).(match e in T return (\lambda (_: T).T) with [(TSort _) 
51 \Rightarrow x | (TLRef _) \Rightarrow x | (THead _ t0 _) \Rightarrow t0])) 
52 (THead (Flat f) x x0) (THead (Flat f) t2 x0) H8) in (let H10 \def (eq_ind_r T 
53 t2 (\lambda (t0: T).(pr3 c x t0)) H7 x H9) in (let H11 \def (eq_ind_r T t2 
54 (\lambda (t0: T).((eq T x t0) \to (\forall (P0: Prop).P0))) H6 x H9) in (H11 
55 (refl_equal T x) P)))))) (pr3_head_12 c x t2 H7 (Flat f) x0 x0 (pr3_refl 
56 (CHead c (Flat f) t2) x0)) t2 x0 (refl_equal T (THead (Flat f) t2 x0))) in 
57 (and_ind (sn3 c t2) (sn3 c x0) (sn3 c t2) (\lambda (H9: (sn3 c t2)).(\lambda 
58 (_: (sn3 c x0)).H9)) H8)))))) (sn3_sing c x0 (\lambda (t2: T).(\lambda (H6: 
59 (((eq T x0 t2) \to (\forall (P: Prop).P)))).(\lambda (H7: (pr3 c x0 t2)).(let 
60 H8 \def (H4 (THead (Flat f) x t2) (\lambda (H8: (eq T (THead (Flat f) x x0) 
61 (THead (Flat f) x t2))).(\lambda (P: Prop).(let H9 \def (f_equal T T (\lambda 
62 (e: T).(match e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow x0 
63 | (TLRef _) \Rightarrow x0 | (THead _ _ t0) \Rightarrow t0])) (THead (Flat f) 
64 x x0) (THead (Flat f) x t2) H8) in (let H10 \def (eq_ind_r T t2 (\lambda (t0: 
65 T).(pr3 c x0 t0)) H7 x0 H9) in (let H11 \def (eq_ind_r T t2 (\lambda (t0: 
66 T).((eq T x0 t0) \to (\forall (P0: Prop).P0))) H6 x0 H9) in (H11 (refl_equal 
67 T x0) P)))))) (pr3_thin_dx c x0 t2 H7 x f) x t2 (refl_equal T (THead (Flat f) 
68 x t2))) in (and_ind (sn3 c x) (sn3 c t2) (sn3 c t2) (\lambda (_: (sn3 c 
69 x)).(\lambda (H10: (sn3 c t2)).H10)) H8))))))))))))))) y H0))))) H))))).
70
71 theorem sn3_gen_lift:
72  \forall (c1: C).(\forall (t: T).(\forall (h: nat).(\forall (d: nat).((sn3 c1 
73 (lift h d t)) \to (\forall (c2: C).((drop h d c1 c2) \to (sn3 c2 t)))))))
74 \def
75  \lambda (c1: C).(\lambda (t: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda 
76 (H: (sn3 c1 (lift h d t))).(insert_eq T (lift h d t) (\lambda (t0: T).(sn3 c1 
77 t0)) (\forall (c2: C).((drop h d c1 c2) \to (sn3 c2 t))) (\lambda (y: 
78 T).(\lambda (H0: (sn3 c1 y)).(unintro T t (\lambda (t0: T).((eq T y (lift h d 
79 t0)) \to (\forall (c2: C).((drop h d c1 c2) \to (sn3 c2 t0))))) (sn3_ind c1 
80 (\lambda (t0: T).(\forall (x: T).((eq T t0 (lift h d x)) \to (\forall (c2: 
81 C).((drop h d c1 c2) \to (sn3 c2 x)))))) (\lambda (t1: T).(\lambda (H1: 
82 ((\forall (t2: T).((((eq T t1 t2) \to (\forall (P: Prop).P))) \to ((pr3 c1 t1 
83 t2) \to (sn3 c1 t2)))))).(\lambda (H2: ((\forall (t2: T).((((eq T t1 t2) \to 
84 (\forall (P: Prop).P))) \to ((pr3 c1 t1 t2) \to (\forall (x: T).((eq T t2 
85 (lift h d x)) \to (\forall (c2: C).((drop h d c1 c2) \to (sn3 c2 
86 x)))))))))).(\lambda (x: T).(\lambda (H3: (eq T t1 (lift h d x))).(\lambda 
87 (c2: C).(\lambda (H4: (drop h d c1 c2)).(let H5 \def (eq_ind T t1 (\lambda 
88 (t0: T).(\forall (t2: T).((((eq T t0 t2) \to (\forall (P: Prop).P))) \to 
89 ((pr3 c1 t0 t2) \to (\forall (x0: T).((eq T t2 (lift h d x0)) \to (\forall 
90 (c3: C).((drop h d c1 c3) \to (sn3 c3 x0))))))))) H2 (lift h d x) H3) in (let 
91 H6 \def (eq_ind T t1 (\lambda (t0: T).(\forall (t2: T).((((eq T t0 t2) \to 
92 (\forall (P: Prop).P))) \to ((pr3 c1 t0 t2) \to (sn3 c1 t2))))) H1 (lift h d 
93 x) H3) in (sn3_sing c2 x (\lambda (t2: T).(\lambda (H7: (((eq T x t2) \to 
94 (\forall (P: Prop).P)))).(\lambda (H8: (pr3 c2 x t2)).(H5 (lift h d t2) 
95 (\lambda (H9: (eq T (lift h d x) (lift h d t2))).(\lambda (P: Prop).(let H10 
96 \def (eq_ind_r T t2 (\lambda (t0: T).(pr3 c2 x t0)) H8 x (lift_inj x t2 h d 
97 H9)) in (let H11 \def (eq_ind_r T t2 (\lambda (t0: T).((eq T x t0) \to 
98 (\forall (P0: Prop).P0))) H7 x (lift_inj x t2 h d H9)) in (H11 (refl_equal T 
99 x) P))))) (pr3_lift c1 c2 h d H4 x t2 H8) t2 (refl_equal T (lift h d t2)) c2 
100 H4)))))))))))))) y H0)))) H))))).
101