]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/basic_1/leq/props.ma
components: A asucc aplus leq llt aprem ex0
[helm.git] / matita / matita / contribs / lambdadelta / basic_1 / leq / 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/leq/fwd.ma".
18
19 include "basic_1/aplus/props.ma".
20
21 theorem leq_refl:
22  \forall (g: G).(\forall (a: A).(leq g a a))
23 \def
24  \lambda (g: G).(\lambda (a: A).(let TMP_1 \def (\lambda (a0: A).(leq g a0 
25 a0)) in (let TMP_5 \def (\lambda (n: nat).(\lambda (n0: nat).(let TMP_2 \def 
26 (ASort n n0) in (let TMP_3 \def (aplus g TMP_2 O) in (let TMP_4 \def 
27 (refl_equal A TMP_3) in (leq_sort g n n n0 n0 O TMP_4)))))) in (let TMP_6 
28 \def (\lambda (a0: A).(\lambda (H: (leq g a0 a0)).(\lambda (a1: A).(\lambda 
29 (H0: (leq g a1 a1)).(leq_head g a0 a0 H a1 a1 H0))))) in (A_ind TMP_1 TMP_5 
30 TMP_6 a))))).
31
32 theorem leq_eq:
33  \forall (g: G).(\forall (a1: A).(\forall (a2: A).((eq A a1 a2) \to (leq g a1 
34 a2))))
35 \def
36  \lambda (g: G).(\lambda (a1: A).(\lambda (a2: A).(\lambda (H: (eq A a1 
37 a2)).(let TMP_1 \def (\lambda (a: A).(leq g a1 a)) in (let TMP_2 \def 
38 (leq_refl g a1) in (eq_ind A a1 TMP_1 TMP_2 a2 H)))))).
39
40 theorem leq_sym:
41  \forall (g: G).(\forall (a1: A).(\forall (a2: A).((leq g a1 a2) \to (leq g 
42 a2 a1))))
43 \def
44  \lambda (g: G).(\lambda (a1: A).(\lambda (a2: A).(\lambda (H: (leq g a1 
45 a2)).(let TMP_1 \def (\lambda (a: A).(\lambda (a0: A).(leq g a0 a))) in (let 
46 TMP_7 \def (\lambda (h1: nat).(\lambda (h2: nat).(\lambda (n1: nat).(\lambda 
47 (n2: nat).(\lambda (k: nat).(\lambda (H0: (eq A (aplus g (ASort h1 n1) k) 
48 (aplus g (ASort h2 n2) k))).(let TMP_2 \def (ASort h1 n1) in (let TMP_3 \def 
49 (aplus g TMP_2 k) in (let TMP_4 \def (ASort h2 n2) in (let TMP_5 \def (aplus 
50 g TMP_4 k) in (let TMP_6 \def (sym_eq A TMP_3 TMP_5 H0) in (leq_sort g h2 h1 
51 n2 n1 k TMP_6)))))))))))) in (let TMP_8 \def (\lambda (a3: A).(\lambda (a4: 
52 A).(\lambda (_: (leq g a3 a4)).(\lambda (H1: (leq g a4 a3)).(\lambda (a5: 
53 A).(\lambda (a6: A).(\lambda (_: (leq g a5 a6)).(\lambda (H3: (leq g a6 
54 a5)).(leq_head g a4 a3 H1 a6 a5 H3))))))))) in (leq_ind g TMP_1 TMP_7 TMP_8 
55 a1 a2 H))))))).
56
57 theorem leq_trans:
58  \forall (g: G).(\forall (a1: A).(\forall (a2: A).((leq g a1 a2) \to (\forall 
59 (a3: A).((leq g a2 a3) \to (leq g a1 a3))))))
60 \def
61  \lambda (g: G).(\lambda (a1: A).(\lambda (a2: A).(\lambda (H: (leq g a1 
62 a2)).(let TMP_1 \def (\lambda (a: A).(\lambda (a0: A).(\forall (a3: A).((leq 
63 g a0 a3) \to (leq g a a3))))) in (let TMP_63 \def (\lambda (h1: nat).(\lambda 
64 (h2: nat).(\lambda (n1: nat).(\lambda (n2: nat).(\lambda (k: nat).(\lambda 
65 (H0: (eq A (aplus g (ASort h1 n1) k) (aplus g (ASort h2 n2) k))).(\lambda 
66 (a3: A).(\lambda (H1: (leq g (ASort h2 n2) a3)).(let H_x \def (leq_gen_sort1 
67 g h2 n2 a3 H1) in (let H2 \def H_x in (let TMP_6 \def (\lambda (n3: 
68 nat).(\lambda (h3: nat).(\lambda (k0: nat).(let TMP_2 \def (ASort h2 n2) in 
69 (let TMP_3 \def (aplus g TMP_2 k0) in (let TMP_4 \def (ASort h3 n3) in (let 
70 TMP_5 \def (aplus g TMP_4 k0) in (eq A TMP_3 TMP_5)))))))) in (let TMP_8 \def 
71 (\lambda (n3: nat).(\lambda (h3: nat).(\lambda (_: nat).(let TMP_7 \def 
72 (ASort h3 n3) in (eq A a3 TMP_7))))) in (let TMP_9 \def (ASort h1 n1) in (let 
73 TMP_10 \def (leq g TMP_9 a3) in (let TMP_62 \def (\lambda (x0: nat).(\lambda 
74 (x1: nat).(\lambda (x2: nat).(\lambda (H3: (eq A (aplus g (ASort h2 n2) x2) 
75 (aplus g (ASort x1 x0) x2))).(\lambda (H4: (eq A a3 (ASort x1 x0))).(let 
76 TMP_11 \def (\lambda (e: A).e) in (let TMP_12 \def (ASort x1 x0) in (let H5 
77 \def (f_equal A A TMP_11 a3 TMP_12 H4) in (let TMP_13 \def (ASort x1 x0) in 
78 (let TMP_15 \def (\lambda (a: A).(let TMP_14 \def (ASort h1 n1) in (leq g 
79 TMP_14 a))) in (let TMP_16 \def (ASort h1 n1) in (let TMP_17 \def (ASort x1 
80 x0) in (let TMP_18 \def (leq g TMP_16 TMP_17) in (let TMP_41 \def (\lambda 
81 (H6: (lt k x2)).(let TMP_19 \def (ASort h1 n1) in (let TMP_20 \def (ASort h2 
82 n2) in (let TMP_21 \def (minus x2 k) in (let H_y \def (aplus_reg_r g TMP_19 
83 TMP_20 k k H0 TMP_21) in (let TMP_22 \def (minus x2 k) in (let TMP_23 \def 
84 (plus TMP_22 k) in (let TMP_28 \def (\lambda (n: nat).(let TMP_24 \def (ASort 
85 h1 n1) in (let TMP_25 \def (aplus g TMP_24 n) in (let TMP_26 \def (ASort h2 
86 n2) in (let TMP_27 \def (aplus g TMP_26 n) in (eq A TMP_25 TMP_27)))))) in 
87 (let TMP_29 \def (S k) in (let TMP_30 \def (le_n k) in (let TMP_31 \def (le_S 
88 k k TMP_30) in (let TMP_32 \def (le_trans k TMP_29 x2 TMP_31 H6) in (let 
89 TMP_33 \def (le_plus_minus_sym k x2 TMP_32) in (let H7 \def (eq_ind_r nat 
90 TMP_23 TMP_28 H_y x2 TMP_33) in (let TMP_34 \def (ASort h1 n1) in (let TMP_35 
91 \def (aplus g TMP_34 x2) in (let TMP_36 \def (ASort h2 n2) in (let TMP_37 
92 \def (aplus g TMP_36 x2) in (let TMP_38 \def (ASort x1 x0) in (let TMP_39 
93 \def (aplus g TMP_38 x2) in (let TMP_40 \def (trans_eq A TMP_35 TMP_37 TMP_39 
94 H7 H3) in (leq_sort g h1 x1 n1 x0 x2 TMP_40)))))))))))))))))))))) in (let 
95 TMP_60 \def (\lambda (H6: (le x2 k)).(let TMP_42 \def (ASort h2 n2) in (let 
96 TMP_43 \def (ASort x1 x0) in (let TMP_44 \def (minus k x2) in (let H_y \def 
97 (aplus_reg_r g TMP_42 TMP_43 x2 x2 H3 TMP_44) in (let TMP_45 \def (minus k 
98 x2) in (let TMP_46 \def (plus TMP_45 x2) in (let TMP_51 \def (\lambda (n: 
99 nat).(let TMP_47 \def (ASort h2 n2) in (let TMP_48 \def (aplus g TMP_47 n) in 
100 (let TMP_49 \def (ASort x1 x0) in (let TMP_50 \def (aplus g TMP_49 n) in (eq 
101 A TMP_48 TMP_50)))))) in (let TMP_52 \def (le_plus_minus_sym x2 k H6) in (let 
102 H7 \def (eq_ind_r nat TMP_46 TMP_51 H_y k TMP_52) in (let TMP_53 \def (ASort 
103 h1 n1) in (let TMP_54 \def (aplus g TMP_53 k) in (let TMP_55 \def (ASort h2 
104 n2) in (let TMP_56 \def (aplus g TMP_55 k) in (let TMP_57 \def (ASort x1 x0) 
105 in (let TMP_58 \def (aplus g TMP_57 k) in (let TMP_59 \def (trans_eq A TMP_54 
106 TMP_56 TMP_58 H0 H7) in (leq_sort g h1 x1 n1 x0 k TMP_59)))))))))))))))))) in 
107 (let TMP_61 \def (lt_le_e k x2 TMP_18 TMP_41 TMP_60) in (eq_ind_r A TMP_13 
108 TMP_15 TMP_61 a3 H5))))))))))))))))) in (ex2_3_ind nat nat nat TMP_6 TMP_8 
109 TMP_10 TMP_62 H2)))))))))))))))) in (let TMP_79 \def (\lambda (a3: 
110 A).(\lambda (a4: A).(\lambda (_: (leq g a3 a4)).(\lambda (H1: ((\forall (a5: 
111 A).((leq g a4 a5) \to (leq g a3 a5))))).(\lambda (a5: A).(\lambda (a6: 
112 A).(\lambda (_: (leq g a5 a6)).(\lambda (H3: ((\forall (a7: A).((leq g a6 a7) 
113 \to (leq g a5 a7))))).(\lambda (a0: A).(\lambda (H4: (leq g (AHead a4 a6) 
114 a0)).(let H_x \def (leq_gen_head1 g a4 a6 a0 H4) in (let H5 \def H_x in (let 
115 TMP_64 \def (\lambda (a7: A).(\lambda (_: A).(leq g a4 a7))) in (let TMP_65 
116 \def (\lambda (_: A).(\lambda (a8: A).(leq g a6 a8))) in (let TMP_67 \def 
117 (\lambda (a7: A).(\lambda (a8: A).(let TMP_66 \def (AHead a7 a8) in (eq A a0 
118 TMP_66)))) in (let TMP_68 \def (AHead a3 a5) in (let TMP_69 \def (leq g 
119 TMP_68 a0) in (let TMP_78 \def (\lambda (x0: A).(\lambda (x1: A).(\lambda 
120 (H6: (leq g a4 x0)).(\lambda (H7: (leq g a6 x1)).(\lambda (H8: (eq A a0 
121 (AHead x0 x1))).(let TMP_70 \def (\lambda (e: A).e) in (let TMP_71 \def 
122 (AHead x0 x1) in (let H9 \def (f_equal A A TMP_70 a0 TMP_71 H8) in (let 
123 TMP_72 \def (AHead x0 x1) in (let TMP_74 \def (\lambda (a: A).(let TMP_73 
124 \def (AHead a3 a5) in (leq g TMP_73 a))) in (let TMP_75 \def (H1 x0 H6) in 
125 (let TMP_76 \def (H3 x1 H7) in (let TMP_77 \def (leq_head g a3 x0 TMP_75 a5 
126 x1 TMP_76) in (eq_ind_r A TMP_72 TMP_74 TMP_77 a0 H9)))))))))))))) in 
127 (ex3_2_ind A A TMP_64 TMP_65 TMP_67 TMP_69 TMP_78 H5))))))))))))))))))) in 
128 (leq_ind g TMP_1 TMP_63 TMP_79 a1 a2 H))))))).
129
130 theorem leq_ahead_false_1:
131  \forall (g: G).(\forall (a1: A).(\forall (a2: A).((leq g (AHead a1 a2) a1) 
132 \to (\forall (P: Prop).P))))
133 \def
134  \lambda (g: G).(\lambda (a1: A).(let TMP_1 \def (\lambda (a: A).(\forall 
135 (a2: A).((leq g (AHead a a2) a) \to (\forall (P: Prop).P)))) in (let TMP_34 
136 \def (\lambda (n: nat).(\lambda (n0: nat).(\lambda (a2: A).(\lambda (H: (leq 
137 g (AHead (ASort n n0) a2) (ASort n n0))).(\lambda (P: Prop).(let TMP_2 \def 
138 (\lambda (n1: nat).((leq g (AHead (ASort n1 n0) a2) (ASort n1 n0)) \to P)) in 
139 (let TMP_15 \def (\lambda (H0: (leq g (AHead (ASort O n0) a2) (ASort O 
140 n0))).(let TMP_3 \def (ASort O n0) in (let TMP_4 \def (ASort O n0) in (let 
141 H_x \def (leq_gen_head1 g TMP_3 a2 TMP_4 H0) in (let H1 \def H_x in (let 
142 TMP_6 \def (\lambda (a3: A).(\lambda (_: A).(let TMP_5 \def (ASort O n0) in 
143 (leq g TMP_5 a3)))) in (let TMP_7 \def (\lambda (_: A).(\lambda (a4: A).(leq 
144 g a2 a4))) in (let TMP_10 \def (\lambda (a3: A).(\lambda (a4: A).(let TMP_8 
145 \def (ASort O n0) in (let TMP_9 \def (AHead a3 a4) in (eq A TMP_8 TMP_9))))) 
146 in (let TMP_14 \def (\lambda (x0: A).(\lambda (x1: A).(\lambda (_: (leq g 
147 (ASort O n0) x0)).(\lambda (_: (leq g a2 x1)).(\lambda (H4: (eq A (ASort O 
148 n0) (AHead x0 x1))).(let TMP_11 \def (ASort O n0) in (let TMP_12 \def 
149 (\lambda (ee: A).(match ee with [(ASort _ _) \Rightarrow True | (AHead _ _) 
150 \Rightarrow False])) in (let TMP_13 \def (AHead x0 x1) in (let H5 \def 
151 (eq_ind A TMP_11 TMP_12 I TMP_13 H4) in (False_ind P H5)))))))))) in 
152 (ex3_2_ind A A TMP_6 TMP_7 TMP_10 P TMP_14 H1)))))))))) in (let TMP_33 \def 
153 (\lambda (n1: nat).(\lambda (_: (((leq g (AHead (ASort n1 n0) a2) (ASort n1 
154 n0)) \to P))).(\lambda (H0: (leq g (AHead (ASort (S n1) n0) a2) (ASort (S n1) 
155 n0))).(let TMP_16 \def (S n1) in (let TMP_17 \def (ASort TMP_16 n0) in (let 
156 TMP_18 \def (S n1) in (let TMP_19 \def (ASort TMP_18 n0) in (let H_x \def 
157 (leq_gen_head1 g TMP_17 a2 TMP_19 H0) in (let H1 \def H_x in (let TMP_22 \def 
158 (\lambda (a3: A).(\lambda (_: A).(let TMP_20 \def (S n1) in (let TMP_21 \def 
159 (ASort TMP_20 n0) in (leq g TMP_21 a3))))) in (let TMP_23 \def (\lambda (_: 
160 A).(\lambda (a4: A).(leq g a2 a4))) in (let TMP_27 \def (\lambda (a3: 
161 A).(\lambda (a4: A).(let TMP_24 \def (S n1) in (let TMP_25 \def (ASort TMP_24 
162 n0) in (let TMP_26 \def (AHead a3 a4) in (eq A TMP_25 TMP_26)))))) in (let 
163 TMP_32 \def (\lambda (x0: A).(\lambda (x1: A).(\lambda (_: (leq g (ASort (S 
164 n1) n0) x0)).(\lambda (_: (leq g a2 x1)).(\lambda (H4: (eq A (ASort (S n1) 
165 n0) (AHead x0 x1))).(let TMP_28 \def (S n1) in (let TMP_29 \def (ASort TMP_28 
166 n0) in (let TMP_30 \def (\lambda (ee: A).(match ee with [(ASort _ _) 
167 \Rightarrow True | (AHead _ _) \Rightarrow False])) in (let TMP_31 \def 
168 (AHead x0 x1) in (let H5 \def (eq_ind A TMP_29 TMP_30 I TMP_31 H4) in 
169 (False_ind P H5))))))))))) in (ex3_2_ind A A TMP_22 TMP_23 TMP_27 P TMP_32 
170 H1)))))))))))))) in (nat_ind TMP_2 TMP_15 TMP_33 n H))))))))) in (let TMP_54 
171 \def (\lambda (a: A).(\lambda (H: ((\forall (a2: A).((leq g (AHead a a2) a) 
172 \to (\forall (P: Prop).P))))).(\lambda (a0: A).(\lambda (_: ((\forall (a2: 
173 A).((leq g (AHead a0 a2) a0) \to (\forall (P: Prop).P))))).(\lambda (a2: 
174 A).(\lambda (H1: (leq g (AHead (AHead a a0) a2) (AHead a a0))).(\lambda (P: 
175 Prop).(let TMP_35 \def (AHead a a0) in (let TMP_36 \def (AHead a a0) in (let 
176 H_x \def (leq_gen_head1 g TMP_35 a2 TMP_36 H1) in (let H2 \def H_x in (let 
177 TMP_38 \def (\lambda (a3: A).(\lambda (_: A).(let TMP_37 \def (AHead a a0) in 
178 (leq g TMP_37 a3)))) in (let TMP_39 \def (\lambda (_: A).(\lambda (a4: 
179 A).(leq g a2 a4))) in (let TMP_42 \def (\lambda (a3: A).(\lambda (a4: A).(let 
180 TMP_40 \def (AHead a a0) in (let TMP_41 \def (AHead a3 a4) in (eq A TMP_40 
181 TMP_41))))) in (let TMP_53 \def (\lambda (x0: A).(\lambda (x1: A).(\lambda 
182 (H3: (leq g (AHead a a0) x0)).(\lambda (H4: (leq g a2 x1)).(\lambda (H5: (eq 
183 A (AHead a a0) (AHead x0 x1))).(let TMP_43 \def (\lambda (e: A).(match e with 
184 [(ASort _ _) \Rightarrow a | (AHead a3 _) \Rightarrow a3])) in (let TMP_44 
185 \def (AHead a a0) in (let TMP_45 \def (AHead x0 x1) in (let H6 \def (f_equal 
186 A A TMP_43 TMP_44 TMP_45 H5) in (let TMP_46 \def (\lambda (e: A).(match e 
187 with [(ASort _ _) \Rightarrow a0 | (AHead _ a3) \Rightarrow a3])) in (let 
188 TMP_47 \def (AHead a a0) in (let TMP_48 \def (AHead x0 x1) in (let H7 \def 
189 (f_equal A A TMP_46 TMP_47 TMP_48 H5) in (let TMP_52 \def (\lambda (H8: (eq A 
190 a x0)).(let TMP_49 \def (\lambda (a3: A).(leq g a2 a3)) in (let H9 \def 
191 (eq_ind_r A x1 TMP_49 H4 a0 H7) in (let TMP_51 \def (\lambda (a3: A).(let 
192 TMP_50 \def (AHead a a0) in (leq g TMP_50 a3))) in (let H10 \def (eq_ind_r A 
193 x0 TMP_51 H3 a H8) in (H a0 H10 P)))))) in (TMP_52 H6))))))))))))))) in 
194 (ex3_2_ind A A TMP_38 TMP_39 TMP_42 P TMP_53 H2)))))))))))))))) in (A_ind 
195 TMP_1 TMP_34 TMP_54 a1))))).
196
197 theorem leq_ahead_false_2:
198  \forall (g: G).(\forall (a2: A).(\forall (a1: A).((leq g (AHead a1 a2) a2) 
199 \to (\forall (P: Prop).P))))
200 \def
201  \lambda (g: G).(\lambda (a2: A).(let TMP_1 \def (\lambda (a: A).(\forall 
202 (a1: A).((leq g (AHead a1 a) a) \to (\forall (P: Prop).P)))) in (let TMP_34 
203 \def (\lambda (n: nat).(\lambda (n0: nat).(\lambda (a1: A).(\lambda (H: (leq 
204 g (AHead a1 (ASort n n0)) (ASort n n0))).(\lambda (P: Prop).(let TMP_2 \def 
205 (\lambda (n1: nat).((leq g (AHead a1 (ASort n1 n0)) (ASort n1 n0)) \to P)) in 
206 (let TMP_15 \def (\lambda (H0: (leq g (AHead a1 (ASort O n0)) (ASort O 
207 n0))).(let TMP_3 \def (ASort O n0) in (let TMP_4 \def (ASort O n0) in (let 
208 H_x \def (leq_gen_head1 g a1 TMP_3 TMP_4 H0) in (let H1 \def H_x in (let 
209 TMP_5 \def (\lambda (a3: A).(\lambda (_: A).(leq g a1 a3))) in (let TMP_7 
210 \def (\lambda (_: A).(\lambda (a4: A).(let TMP_6 \def (ASort O n0) in (leq g 
211 TMP_6 a4)))) in (let TMP_10 \def (\lambda (a3: A).(\lambda (a4: A).(let TMP_8 
212 \def (ASort O n0) in (let TMP_9 \def (AHead a3 a4) in (eq A TMP_8 TMP_9))))) 
213 in (let TMP_14 \def (\lambda (x0: A).(\lambda (x1: A).(\lambda (_: (leq g a1 
214 x0)).(\lambda (_: (leq g (ASort O n0) x1)).(\lambda (H4: (eq A (ASort O n0) 
215 (AHead x0 x1))).(let TMP_11 \def (ASort O n0) in (let TMP_12 \def (\lambda 
216 (ee: A).(match ee with [(ASort _ _) \Rightarrow True | (AHead _ _) 
217 \Rightarrow False])) in (let TMP_13 \def (AHead x0 x1) in (let H5 \def 
218 (eq_ind A TMP_11 TMP_12 I TMP_13 H4) in (False_ind P H5)))))))))) in 
219 (ex3_2_ind A A TMP_5 TMP_7 TMP_10 P TMP_14 H1)))))))))) in (let TMP_33 \def 
220 (\lambda (n1: nat).(\lambda (_: (((leq g (AHead a1 (ASort n1 n0)) (ASort n1 
221 n0)) \to P))).(\lambda (H0: (leq g (AHead a1 (ASort (S n1) n0)) (ASort (S n1) 
222 n0))).(let TMP_16 \def (S n1) in (let TMP_17 \def (ASort TMP_16 n0) in (let 
223 TMP_18 \def (S n1) in (let TMP_19 \def (ASort TMP_18 n0) in (let H_x \def 
224 (leq_gen_head1 g a1 TMP_17 TMP_19 H0) in (let H1 \def H_x in (let TMP_20 \def 
225 (\lambda (a3: A).(\lambda (_: A).(leq g a1 a3))) in (let TMP_23 \def (\lambda 
226 (_: A).(\lambda (a4: A).(let TMP_21 \def (S n1) in (let TMP_22 \def (ASort 
227 TMP_21 n0) in (leq g TMP_22 a4))))) in (let TMP_27 \def (\lambda (a3: 
228 A).(\lambda (a4: A).(let TMP_24 \def (S n1) in (let TMP_25 \def (ASort TMP_24 
229 n0) in (let TMP_26 \def (AHead a3 a4) in (eq A TMP_25 TMP_26)))))) in (let 
230 TMP_32 \def (\lambda (x0: A).(\lambda (x1: A).(\lambda (_: (leq g a1 
231 x0)).(\lambda (_: (leq g (ASort (S n1) n0) x1)).(\lambda (H4: (eq A (ASort (S 
232 n1) n0) (AHead x0 x1))).(let TMP_28 \def (S n1) in (let TMP_29 \def (ASort 
233 TMP_28 n0) in (let TMP_30 \def (\lambda (ee: A).(match ee with [(ASort _ _) 
234 \Rightarrow True | (AHead _ _) \Rightarrow False])) in (let TMP_31 \def 
235 (AHead x0 x1) in (let H5 \def (eq_ind A TMP_29 TMP_30 I TMP_31 H4) in 
236 (False_ind P H5))))))))))) in (ex3_2_ind A A TMP_20 TMP_23 TMP_27 P TMP_32 
237 H1)))))))))))))) in (nat_ind TMP_2 TMP_15 TMP_33 n H))))))))) in (let TMP_54 
238 \def (\lambda (a: A).(\lambda (_: ((\forall (a1: A).((leq g (AHead a1 a) a) 
239 \to (\forall (P: Prop).P))))).(\lambda (a0: A).(\lambda (H0: ((\forall (a1: 
240 A).((leq g (AHead a1 a0) a0) \to (\forall (P: Prop).P))))).(\lambda (a1: 
241 A).(\lambda (H1: (leq g (AHead a1 (AHead a a0)) (AHead a a0))).(\lambda (P: 
242 Prop).(let TMP_35 \def (AHead a a0) in (let TMP_36 \def (AHead a a0) in (let 
243 H_x \def (leq_gen_head1 g a1 TMP_35 TMP_36 H1) in (let H2 \def H_x in (let 
244 TMP_37 \def (\lambda (a3: A).(\lambda (_: A).(leq g a1 a3))) in (let TMP_39 
245 \def (\lambda (_: A).(\lambda (a4: A).(let TMP_38 \def (AHead a a0) in (leq g 
246 TMP_38 a4)))) in (let TMP_42 \def (\lambda (a3: A).(\lambda (a4: A).(let 
247 TMP_40 \def (AHead a a0) in (let TMP_41 \def (AHead a3 a4) in (eq A TMP_40 
248 TMP_41))))) in (let TMP_53 \def (\lambda (x0: A).(\lambda (x1: A).(\lambda 
249 (H3: (leq g a1 x0)).(\lambda (H4: (leq g (AHead a a0) x1)).(\lambda (H5: (eq 
250 A (AHead a a0) (AHead x0 x1))).(let TMP_43 \def (\lambda (e: A).(match e with 
251 [(ASort _ _) \Rightarrow a | (AHead a3 _) \Rightarrow a3])) in (let TMP_44 
252 \def (AHead a a0) in (let TMP_45 \def (AHead x0 x1) in (let H6 \def (f_equal 
253 A A TMP_43 TMP_44 TMP_45 H5) in (let TMP_46 \def (\lambda (e: A).(match e 
254 with [(ASort _ _) \Rightarrow a0 | (AHead _ a3) \Rightarrow a3])) in (let 
255 TMP_47 \def (AHead a a0) in (let TMP_48 \def (AHead x0 x1) in (let H7 \def 
256 (f_equal A A TMP_46 TMP_47 TMP_48 H5) in (let TMP_52 \def (\lambda (H8: (eq A 
257 a x0)).(let TMP_50 \def (\lambda (a3: A).(let TMP_49 \def (AHead a a0) in 
258 (leq g TMP_49 a3))) in (let H9 \def (eq_ind_r A x1 TMP_50 H4 a0 H7) in (let 
259 TMP_51 \def (\lambda (a3: A).(leq g a1 a3)) in (let H10 \def (eq_ind_r A x0 
260 TMP_51 H3 a H8) in (H0 a H9 P)))))) in (TMP_52 H6))))))))))))))) in 
261 (ex3_2_ind A A TMP_37 TMP_39 TMP_42 P TMP_53 H2)))))))))))))))) in (A_ind 
262 TMP_1 TMP_34 TMP_54 a2))))).
263