]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/basic_1/ty3/arity_props.ma
components: pc1, pc3, ty3, csubt, ex1
[helm.git] / matita / matita / contribs / lambdadelta / basic_1 / ty3 / arity_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/ty3/arity.ma".
18
19 include "basic_1/sc3/arity.ma".
20
21 theorem ty3_predicative:
22  \forall (g: G).(\forall (c: C).(\forall (v: T).(\forall (t: T).(\forall (u: 
23 T).((ty3 g c (THead (Bind Abst) v t) u) \to ((pc3 c u v) \to (\forall (P: 
24 Prop).P)))))))
25 \def
26  \lambda (g: G).(\lambda (c: C).(\lambda (v: T).(\lambda (t: T).(\lambda (u: 
27 T).(\lambda (H: (ty3 g c (THead (Bind Abst) v t) u)).(\lambda (H0: (pc3 c u 
28 v)).(\lambda (P: Prop).(let H1 \def H in (let TMP_3 \def (\lambda (t2: 
29 T).(\lambda (_: T).(let TMP_1 \def (Bind Abst) in (let TMP_2 \def (THead 
30 TMP_1 v t2) in (pc3 c TMP_2 u))))) in (let TMP_4 \def (\lambda (_: 
31 T).(\lambda (t0: T).(ty3 g c v t0))) in (let TMP_7 \def (\lambda (t2: 
32 T).(\lambda (_: T).(let TMP_5 \def (Bind Abst) in (let TMP_6 \def (CHead c 
33 TMP_5 v) in (ty3 g TMP_6 t t2))))) in (let TMP_34 \def (\lambda (x0: 
34 T).(\lambda (x1: T).(\lambda (_: (pc3 c (THead (Bind Abst) v x0) u)).(\lambda 
35 (H3: (ty3 g c v x1)).(\lambda (_: (ty3 g (CHead c (Bind Abst) v) t x0)).(let 
36 TMP_8 \def (Bind Abst) in (let TMP_9 \def (THead TMP_8 v t) in (let H_y \def 
37 (ty3_conv g c v x1 H3 TMP_9 u H H0) in (let TMP_10 \def (Bind Abst) in (let 
38 TMP_11 \def (THead TMP_10 v t) in (let H_x \def (ty3_arity g c TMP_11 v H_y) 
39 in (let H5 \def H_x in (let TMP_14 \def (\lambda (a1: A).(let TMP_12 \def 
40 (Bind Abst) in (let TMP_13 \def (THead TMP_12 v t) in (arity g c TMP_13 
41 a1)))) in (let TMP_16 \def (\lambda (a1: A).(let TMP_15 \def (asucc g a1) in 
42 (arity g c v TMP_15))) in (let TMP_33 \def (\lambda (x: A).(\lambda (H6: 
43 (arity g c (THead (Bind Abst) v t) x)).(\lambda (H7: (arity g c v (asucc g 
44 x))).(let H8 \def (arity_gen_abst g c v t x H6) in (let TMP_18 \def (\lambda 
45 (a1: A).(\lambda (a2: A).(let TMP_17 \def (AHead a1 a2) in (eq A x TMP_17)))) 
46 in (let TMP_20 \def (\lambda (a1: A).(\lambda (_: A).(let TMP_19 \def (asucc 
47 g a1) in (arity g c v TMP_19)))) in (let TMP_23 \def (\lambda (_: A).(\lambda 
48 (a2: A).(let TMP_21 \def (Bind Abst) in (let TMP_22 \def (CHead c TMP_21 v) 
49 in (arity g TMP_22 t a2))))) in (let TMP_32 \def (\lambda (x2: A).(\lambda 
50 (x3: A).(\lambda (H9: (eq A x (AHead x2 x3))).(\lambda (H10: (arity g c v 
51 (asucc g x2))).(\lambda (_: (arity g (CHead c (Bind Abst) v) t x3)).(let 
52 TMP_25 \def (\lambda (a: A).(let TMP_24 \def (asucc g a) in (arity g c v 
53 TMP_24))) in (let TMP_26 \def (AHead x2 x3) in (let H12 \def (eq_ind A x 
54 TMP_25 H7 TMP_26 H9) in (let TMP_27 \def (asucc g x3) in (let TMP_28 \def 
55 (AHead x2 x3) in (let TMP_29 \def (asucc g TMP_28) in (let TMP_30 \def (asucc 
56 g x2) in (let TMP_31 \def (arity_mono g c v TMP_29 H12 TMP_30 H10) in 
57 (leq_ahead_asucc_false g x2 TMP_27 TMP_31 P)))))))))))))) in (ex3_2_ind A A 
58 TMP_18 TMP_20 TMP_23 P TMP_32 H8))))))))) in (ex2_ind A TMP_14 TMP_16 P 
59 TMP_33 H5)))))))))))))))) in (let TMP_35 \def (ty3_gen_bind g Abst c v t u 
60 H1) in (ex3_2_ind T T TMP_3 TMP_4 TMP_7 P TMP_34 TMP_35)))))))))))))).
61
62 theorem ty3_repellent:
63  \forall (g: G).(\forall (c: C).(\forall (w: T).(\forall (t: T).(\forall (u1: 
64 T).((ty3 g c (THead (Bind Abst) w t) u1) \to (\forall (u2: T).((ty3 g (CHead 
65 c (Bind Abst) w) t (lift (S O) O u2)) \to ((pc3 c u1 u2) \to (\forall (P: 
66 Prop).P)))))))))
67 \def
68  \lambda (g: G).(\lambda (c: C).(\lambda (w: T).(\lambda (t: T).(\lambda (u1: 
69 T).(\lambda (H: (ty3 g c (THead (Bind Abst) w t) u1)).(\lambda (u2: 
70 T).(\lambda (H0: (ty3 g (CHead c (Bind Abst) w) t (lift (S O) O 
71 u2))).(\lambda (H1: (pc3 c u1 u2)).(\lambda (P: Prop).(let TMP_5 \def 
72 (\lambda (t0: T).(let TMP_1 \def (Bind Abst) in (let TMP_2 \def (CHead c 
73 TMP_1 w) in (let TMP_3 \def (S O) in (let TMP_4 \def (lift TMP_3 O u2) in 
74 (ty3 g TMP_2 TMP_4 t0)))))) in (let TMP_55 \def (\lambda (x: T).(\lambda (H2: 
75 (ty3 g (CHead c (Bind Abst) w) (lift (S O) O u2) x)).(let TMP_6 \def (Bind 
76 Abst) in (let TMP_7 \def (CHead c TMP_6 w) in (let TMP_8 \def (S O) in (let 
77 TMP_9 \def (Bind Abst) in (let TMP_10 \def (drop_refl c) in (let TMP_11 \def 
78 (drop_drop TMP_9 O c c TMP_10 w) in (let H3 \def (ty3_gen_lift g TMP_7 u2 x 
79 TMP_8 O H2 c TMP_11) in (let TMP_16 \def (\lambda (t2: T).(let TMP_12 \def 
80 (Bind Abst) in (let TMP_13 \def (CHead c TMP_12 w) in (let TMP_14 \def (S O) 
81 in (let TMP_15 \def (lift TMP_14 O t2) in (pc3 TMP_13 TMP_15 x)))))) in (let 
82 TMP_17 \def (\lambda (t2: T).(ty3 g c u2 t2)) in (let TMP_54 \def (\lambda 
83 (x0: T).(\lambda (_: (pc3 (CHead c (Bind Abst) w) (lift (S O) O x0) 
84 x)).(\lambda (H5: (ty3 g c u2 x0)).(let TMP_18 \def (Bind Abst) in (let 
85 TMP_19 \def (THead TMP_18 w t) in (let H_y \def (ty3_conv g c u2 x0 H5 TMP_19 
86 u1 H H1) in (let TMP_20 \def (Bind Abst) in (let TMP_21 \def (CHead c TMP_20 
87 w) in (let TMP_22 \def (S O) in (let TMP_23 \def (lift TMP_22 O u2) in (let 
88 H_x \def (ty3_arity g TMP_21 t TMP_23 H0) in (let H6 \def H_x in (let TMP_26 
89 \def (\lambda (a1: A).(let TMP_24 \def (Bind Abst) in (let TMP_25 \def (CHead 
90 c TMP_24 w) in (arity g TMP_25 t a1)))) in (let TMP_32 \def (\lambda (a1: 
91 A).(let TMP_27 \def (Bind Abst) in (let TMP_28 \def (CHead c TMP_27 w) in 
92 (let TMP_29 \def (S O) in (let TMP_30 \def (lift TMP_29 O u2) in (let TMP_31 
93 \def (asucc g a1) in (arity g TMP_28 TMP_30 TMP_31))))))) in (let TMP_53 \def 
94 (\lambda (x1: A).(\lambda (H7: (arity g (CHead c (Bind Abst) w) t 
95 x1)).(\lambda (H8: (arity g (CHead c (Bind Abst) w) (lift (S O) O u2) (asucc 
96 g x1))).(let TMP_33 \def (Bind Abst) in (let TMP_34 \def (THead TMP_33 w t) 
97 in (let H_x0 \def (ty3_arity g c TMP_34 u2 H_y) in (let H9 \def H_x0 in (let 
98 TMP_37 \def (\lambda (a1: A).(let TMP_35 \def (Bind Abst) in (let TMP_36 \def 
99 (THead TMP_35 w t) in (arity g c TMP_36 a1)))) in (let TMP_39 \def (\lambda 
100 (a1: A).(let TMP_38 \def (asucc g a1) in (arity g c u2 TMP_38))) in (let 
101 TMP_52 \def (\lambda (x2: A).(\lambda (H10: (arity g c (THead (Bind Abst) w 
102 t) x2)).(\lambda (H11: (arity g c u2 (asucc g x2))).(let TMP_40 \def (asucc g 
103 x1) in (let TMP_41 \def (Bind Abst) in (let TMP_42 \def (CHead c TMP_41 w) in 
104 (let TMP_43 \def (asucc g x1) in (let TMP_44 \def (S O) in (let TMP_45 \def 
105 (Bind Abst) in (let TMP_46 \def (drop_refl c) in (let TMP_47 \def (drop_drop 
106 TMP_45 O c c TMP_46 w) in (let TMP_48 \def (arity_gen_lift g TMP_42 u2 TMP_43 
107 TMP_44 O H8 c TMP_47) in (let TMP_49 \def (asucc g x2) in (let TMP_50 \def 
108 (arity_mono g c u2 TMP_40 TMP_48 TMP_49 H11) in (let TMP_51 \def (asucc_inj g 
109 x1 x2 TMP_50) in (arity_repellent g c w t x1 H7 x2 H10 TMP_51 
110 P)))))))))))))))) in (ex2_ind A TMP_37 TMP_39 P TMP_52 H9))))))))))) in 
111 (ex2_ind A TMP_26 TMP_32 P TMP_53 H6)))))))))))))))) in (ex2_ind T TMP_16 
112 TMP_17 P TMP_54 H3))))))))))))) in (let TMP_56 \def (Bind Abst) in (let 
113 TMP_57 \def (CHead c TMP_56 w) in (let TMP_58 \def (S O) in (let TMP_59 \def 
114 (lift TMP_58 O u2) in (let TMP_60 \def (ty3_correct g TMP_57 t TMP_59 H0) in 
115 (ex_ind T TMP_5 P TMP_55 TMP_60))))))))))))))))).
116
117 theorem ty3_acyclic:
118  \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (u: T).((ty3 g c t 
119 u) \to ((pc3 c u t) \to (\forall (P: Prop).P))))))
120 \def
121  \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (u: T).(\lambda (H: 
122 (ty3 g c t u)).(\lambda (H0: (pc3 c u t)).(\lambda (P: Prop).(let H_y \def 
123 (ty3_conv g c t u H t u H H0) in (let H_x \def (ty3_arity g c t t H_y) in 
124 (let H1 \def H_x in (let TMP_1 \def (\lambda (a1: A).(arity g c t a1)) in 
125 (let TMP_3 \def (\lambda (a1: A).(let TMP_2 \def (asucc g a1) in (arity g c t 
126 TMP_2))) in (let TMP_6 \def (\lambda (x: A).(\lambda (H2: (arity g c t 
127 x)).(\lambda (H3: (arity g c t (asucc g x))).(let TMP_4 \def (asucc g x) in 
128 (let TMP_5 \def (arity_mono g c t TMP_4 H3 x H2) in (leq_asucc_false g x 
129 TMP_5 P)))))) in (ex2_ind A TMP_1 TMP_3 P TMP_6 H1))))))))))))).
130
131 theorem ty3_sn3:
132  \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (u: T).((ty3 g c t 
133 u) \to (sn3 c t)))))
134 \def
135  \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (u: T).(\lambda (H: 
136 (ty3 g c t u)).(let H_x \def (ty3_arity g c t u H) in (let H0 \def H_x in 
137 (let TMP_1 \def (\lambda (a1: A).(arity g c t a1)) in (let TMP_3 \def 
138 (\lambda (a1: A).(let TMP_2 \def (asucc g a1) in (arity g c u TMP_2))) in 
139 (let TMP_4 \def (sn3 c t) in (let TMP_6 \def (\lambda (x: A).(\lambda (H1: 
140 (arity g c t x)).(\lambda (_: (arity g c u (asucc g x))).(let TMP_5 \def 
141 (sc3_arity g c t x H1) in (sc3_sn3 g x c t TMP_5))))) in (ex2_ind A TMP_1 
142 TMP_3 TMP_4 TMP_6 H0))))))))))).
143