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/ty3/pr3_props.ma".
19 include "basic_1/arity/pr3.ma".
21 include "basic_1/asucc/fwd.ma".
24 \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t2: T).((ty3 g c
25 t1 t2) \to (ex2 A (\lambda (a1: A).(arity g c t1 a1)) (\lambda (a1: A).(arity
26 g c t2 (asucc g a1))))))))
28 \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda
29 (H: (ty3 g c t1 t2)).(let TMP_4 \def (\lambda (c0: C).(\lambda (t:
30 T).(\lambda (t0: T).(let TMP_1 \def (\lambda (a1: A).(arity g c0 t a1)) in
31 (let TMP_3 \def (\lambda (a1: A).(let TMP_2 \def (asucc g a1) in (arity g c0
32 t0 TMP_2))) in (ex2 A TMP_1 TMP_3)))))) in (let TMP_40 \def (\lambda (c0:
33 C).(\lambda (t3: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 t3 t)).(\lambda
34 (H1: (ex2 A (\lambda (a1: A).(arity g c0 t3 a1)) (\lambda (a1: A).(arity g c0
35 t (asucc g a1))))).(\lambda (u: T).(\lambda (t4: T).(\lambda (_: (ty3 g c0 u
36 t4)).(\lambda (H3: (ex2 A (\lambda (a1: A).(arity g c0 u a1)) (\lambda (a1:
37 A).(arity g c0 t4 (asucc g a1))))).(\lambda (H4: (pc3 c0 t4 t3)).(let H5 \def
38 H1 in (let TMP_5 \def (\lambda (a1: A).(arity g c0 t3 a1)) in (let TMP_7 \def
39 (\lambda (a1: A).(let TMP_6 \def (asucc g a1) in (arity g c0 t TMP_6))) in
40 (let TMP_8 \def (\lambda (a1: A).(arity g c0 u a1)) in (let TMP_10 \def
41 (\lambda (a1: A).(let TMP_9 \def (asucc g a1) in (arity g c0 t3 TMP_9))) in
42 (let TMP_11 \def (ex2 A TMP_8 TMP_10) in (let TMP_39 \def (\lambda (x:
43 A).(\lambda (H6: (arity g c0 t3 x)).(\lambda (_: (arity g c0 t (asucc g
44 x))).(let H8 \def H3 in (let TMP_12 \def (\lambda (a1: A).(arity g c0 u a1))
45 in (let TMP_14 \def (\lambda (a1: A).(let TMP_13 \def (asucc g a1) in (arity
46 g c0 t4 TMP_13))) in (let TMP_15 \def (\lambda (a1: A).(arity g c0 u a1)) in
47 (let TMP_17 \def (\lambda (a1: A).(let TMP_16 \def (asucc g a1) in (arity g
48 c0 t3 TMP_16))) in (let TMP_18 \def (ex2 A TMP_15 TMP_17) in (let TMP_38 \def
49 (\lambda (x0: A).(\lambda (H9: (arity g c0 u x0)).(\lambda (H10: (arity g c0
50 t4 (asucc g x0))).(let H11 \def H4 in (let TMP_19 \def (\lambda (t0: T).(pr3
51 c0 t4 t0)) in (let TMP_20 \def (\lambda (t0: T).(pr3 c0 t3 t0)) in (let
52 TMP_21 \def (\lambda (a1: A).(arity g c0 u a1)) in (let TMP_23 \def (\lambda
53 (a1: A).(let TMP_22 \def (asucc g a1) in (arity g c0 t3 TMP_22))) in (let
54 TMP_24 \def (ex2 A TMP_21 TMP_23) in (let TMP_37 \def (\lambda (x1:
55 T).(\lambda (H12: (pr3 c0 t4 x1)).(\lambda (H13: (pr3 c0 t3 x1)).(let TMP_25
56 \def (\lambda (a1: A).(arity g c0 u a1)) in (let TMP_27 \def (\lambda (a1:
57 A).(let TMP_26 \def (asucc g a1) in (arity g c0 t3 TMP_26))) in (let TMP_28
58 \def (asucc g x0) in (let TMP_29 \def (asucc g x0) in (let TMP_30 \def (asucc
59 g x0) in (let TMP_31 \def (asucc g x0) in (let TMP_32 \def (arity_sred_pr3 c0
60 t4 x1 H12 g TMP_31 H10) in (let TMP_33 \def (arity_sred_pr3 c0 t3 x1 H13 g x
61 H6) in (let TMP_34 \def (arity_mono g c0 x1 TMP_30 TMP_32 x TMP_33) in (let
62 TMP_35 \def (leq_sym g TMP_29 x TMP_34) in (let TMP_36 \def (arity_repl g c0
63 t3 x H6 TMP_28 TMP_35) in (ex_intro2 A TMP_25 TMP_27 x0 H9
64 TMP_36))))))))))))))) in (ex2_ind T TMP_19 TMP_20 TMP_24 TMP_37
65 H11))))))))))) in (ex2_ind A TMP_12 TMP_14 TMP_18 TMP_38 H8))))))))))) in
66 (ex2_ind A TMP_5 TMP_7 TMP_11 TMP_39 H5)))))))))))))))))) in (let TMP_51 \def
67 (\lambda (c0: C).(\lambda (m: nat).(let TMP_42 \def (\lambda (a1: A).(let
68 TMP_41 \def (TSort m) in (arity g c0 TMP_41 a1))) in (let TMP_46 \def
69 (\lambda (a1: A).(let TMP_43 \def (next g m) in (let TMP_44 \def (TSort
70 TMP_43) in (let TMP_45 \def (asucc g a1) in (arity g c0 TMP_44 TMP_45))))) in
71 (let TMP_47 \def (ASort O m) in (let TMP_48 \def (arity_sort g c0 m) in (let
72 TMP_49 \def (next g m) in (let TMP_50 \def (arity_sort g c0 TMP_49) in
73 (ex_intro2 A TMP_42 TMP_46 TMP_47 TMP_48 TMP_50))))))))) in (let TMP_74 \def
74 (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda
75 (H0: (getl n c0 (CHead d (Bind Abbr) u))).(\lambda (t: T).(\lambda (_: (ty3 g
76 d u t)).(\lambda (H2: (ex2 A (\lambda (a1: A).(arity g d u a1)) (\lambda (a1:
77 A).(arity g d t (asucc g a1))))).(let H3 \def H2 in (let TMP_52 \def (\lambda
78 (a1: A).(arity g d u a1)) in (let TMP_54 \def (\lambda (a1: A).(let TMP_53
79 \def (asucc g a1) in (arity g d t TMP_53))) in (let TMP_56 \def (\lambda (a1:
80 A).(let TMP_55 \def (TLRef n) in (arity g c0 TMP_55 a1))) in (let TMP_60 \def
81 (\lambda (a1: A).(let TMP_57 \def (S n) in (let TMP_58 \def (lift TMP_57 O t)
82 in (let TMP_59 \def (asucc g a1) in (arity g c0 TMP_58 TMP_59))))) in (let
83 TMP_61 \def (ex2 A TMP_56 TMP_60) in (let TMP_73 \def (\lambda (x:
84 A).(\lambda (H4: (arity g d u x)).(\lambda (H5: (arity g d t (asucc g
85 x))).(let TMP_63 \def (\lambda (a1: A).(let TMP_62 \def (TLRef n) in (arity g
86 c0 TMP_62 a1))) in (let TMP_67 \def (\lambda (a1: A).(let TMP_64 \def (S n)
87 in (let TMP_65 \def (lift TMP_64 O t) in (let TMP_66 \def (asucc g a1) in
88 (arity g c0 TMP_65 TMP_66))))) in (let TMP_68 \def (arity_abbr g c0 d u n H0
89 x H4) in (let TMP_69 \def (asucc g x) in (let TMP_70 \def (S n) in (let
90 TMP_71 \def (getl_drop Abbr c0 d u n H0) in (let TMP_72 \def (arity_lift g d
91 t TMP_69 H5 c0 TMP_70 O TMP_71) in (ex_intro2 A TMP_63 TMP_67 x TMP_68
92 TMP_72))))))))))) in (ex2_ind A TMP_52 TMP_54 TMP_61 TMP_73
93 H3)))))))))))))))) in (let TMP_112 \def (\lambda (n: nat).(\lambda (c0:
94 C).(\lambda (d: C).(\lambda (u: T).(\lambda (H0: (getl n c0 (CHead d (Bind
95 Abst) u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (H2: (ex2 A
96 (\lambda (a1: A).(arity g d u a1)) (\lambda (a1: A).(arity g d t (asucc g
97 a1))))).(let H3 \def H2 in (let TMP_75 \def (\lambda (a1: A).(arity g d u
98 a1)) in (let TMP_77 \def (\lambda (a1: A).(let TMP_76 \def (asucc g a1) in
99 (arity g d t TMP_76))) in (let TMP_79 \def (\lambda (a1: A).(let TMP_78 \def
100 (TLRef n) in (arity g c0 TMP_78 a1))) in (let TMP_83 \def (\lambda (a1:
101 A).(let TMP_80 \def (S n) in (let TMP_81 \def (lift TMP_80 O u) in (let
102 TMP_82 \def (asucc g a1) in (arity g c0 TMP_81 TMP_82))))) in (let TMP_84
103 \def (ex2 A TMP_79 TMP_83) in (let TMP_111 \def (\lambda (x: A).(\lambda (H4:
104 (arity g d u x)).(\lambda (_: (arity g d t (asucc g x))).(let H_x \def
105 (leq_asucc g x) in (let H6 \def H_x in (let TMP_86 \def (\lambda (a0: A).(let
106 TMP_85 \def (asucc g a0) in (leq g x TMP_85))) in (let TMP_88 \def (\lambda
107 (a1: A).(let TMP_87 \def (TLRef n) in (arity g c0 TMP_87 a1))) in (let TMP_92
108 \def (\lambda (a1: A).(let TMP_89 \def (S n) in (let TMP_90 \def (lift TMP_89
109 O u) in (let TMP_91 \def (asucc g a1) in (arity g c0 TMP_90 TMP_91))))) in
110 (let TMP_93 \def (ex2 A TMP_88 TMP_92) in (let TMP_110 \def (\lambda (x0:
111 A).(\lambda (H7: (leq g x (asucc g x0))).(let TMP_95 \def (\lambda (a1:
112 A).(let TMP_94 \def (TLRef n) in (arity g c0 TMP_94 a1))) in (let TMP_99 \def
113 (\lambda (a1: A).(let TMP_96 \def (S n) in (let TMP_97 \def (lift TMP_96 O u)
114 in (let TMP_98 \def (asucc g a1) in (arity g c0 TMP_97 TMP_98))))) in (let
115 TMP_100 \def (asucc g x0) in (let TMP_101 \def (arity_repl g d u x H4 TMP_100
116 H7) in (let TMP_102 \def (arity_abst g c0 d u n H0 x0 TMP_101) in (let
117 TMP_103 \def (S n) in (let TMP_104 \def (lift TMP_103 O u) in (let TMP_105
118 \def (S n) in (let TMP_106 \def (getl_drop Abst c0 d u n H0) in (let TMP_107
119 \def (arity_lift g d u x H4 c0 TMP_105 O TMP_106) in (let TMP_108 \def (asucc
120 g x0) in (let TMP_109 \def (arity_repl g c0 TMP_104 x TMP_107 TMP_108 H7) in
121 (ex_intro2 A TMP_95 TMP_99 x0 TMP_102 TMP_109))))))))))))))) in (ex_ind A
122 TMP_86 TMP_93 TMP_110 H6))))))))))) in (ex2_ind A TMP_75 TMP_77 TMP_84
123 TMP_111 H3)))))))))))))))) in (let TMP_208 \def (\lambda (c0: C).(\lambda (u:
124 T).(\lambda (t: T).(\lambda (_: (ty3 g c0 u t)).(\lambda (H1: (ex2 A (\lambda
125 (a1: A).(arity g c0 u a1)) (\lambda (a1: A).(arity g c0 t (asucc g
126 a1))))).(\lambda (b: B).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (ty3 g
127 (CHead c0 (Bind b) u) t3 t4)).(\lambda (H3: (ex2 A (\lambda (a1: A).(arity g
128 (CHead c0 (Bind b) u) t3 a1)) (\lambda (a1: A).(arity g (CHead c0 (Bind b) u)
129 t4 (asucc g a1))))).(let H4 \def H1 in (let TMP_113 \def (\lambda (a1:
130 A).(arity g c0 u a1)) in (let TMP_115 \def (\lambda (a1: A).(let TMP_114 \def
131 (asucc g a1) in (arity g c0 t TMP_114))) in (let TMP_118 \def (\lambda (a1:
132 A).(let TMP_116 \def (Bind b) in (let TMP_117 \def (THead TMP_116 u t3) in
133 (arity g c0 TMP_117 a1)))) in (let TMP_122 \def (\lambda (a1: A).(let TMP_119
134 \def (Bind b) in (let TMP_120 \def (THead TMP_119 u t4) in (let TMP_121 \def
135 (asucc g a1) in (arity g c0 TMP_120 TMP_121))))) in (let TMP_123 \def (ex2 A
136 TMP_118 TMP_122) in (let TMP_207 \def (\lambda (x: A).(\lambda (H5: (arity g
137 c0 u x)).(\lambda (_: (arity g c0 t (asucc g x))).(let H7 \def H3 in (let
138 TMP_126 \def (\lambda (a1: A).(let TMP_124 \def (Bind b) in (let TMP_125 \def
139 (CHead c0 TMP_124 u) in (arity g TMP_125 t3 a1)))) in (let TMP_130 \def
140 (\lambda (a1: A).(let TMP_127 \def (Bind b) in (let TMP_128 \def (CHead c0
141 TMP_127 u) in (let TMP_129 \def (asucc g a1) in (arity g TMP_128 t4
142 TMP_129))))) in (let TMP_133 \def (\lambda (a1: A).(let TMP_131 \def (Bind b)
143 in (let TMP_132 \def (THead TMP_131 u t3) in (arity g c0 TMP_132 a1)))) in
144 (let TMP_137 \def (\lambda (a1: A).(let TMP_134 \def (Bind b) in (let TMP_135
145 \def (THead TMP_134 u t4) in (let TMP_136 \def (asucc g a1) in (arity g c0
146 TMP_135 TMP_136))))) in (let TMP_138 \def (ex2 A TMP_133 TMP_137) in (let
147 TMP_206 \def (\lambda (x0: A).(\lambda (H8: (arity g (CHead c0 (Bind b) u) t3
148 x0)).(\lambda (H9: (arity g (CHead c0 (Bind b) u) t4 (asucc g x0))).(let H_x
149 \def (leq_asucc g x) in (let H10 \def H_x in (let TMP_140 \def (\lambda (a0:
150 A).(let TMP_139 \def (asucc g a0) in (leq g x TMP_139))) in (let TMP_143 \def
151 (\lambda (a1: A).(let TMP_141 \def (Bind b) in (let TMP_142 \def (THead
152 TMP_141 u t3) in (arity g c0 TMP_142 a1)))) in (let TMP_147 \def (\lambda
153 (a1: A).(let TMP_144 \def (Bind b) in (let TMP_145 \def (THead TMP_144 u t4)
154 in (let TMP_146 \def (asucc g a1) in (arity g c0 TMP_145 TMP_146))))) in (let
155 TMP_148 \def (ex2 A TMP_143 TMP_147) in (let TMP_205 \def (\lambda (x1:
156 A).(\lambda (H11: (leq g x (asucc g x1))).(let TMP_156 \def (\lambda (b0:
157 B).((arity g (CHead c0 (Bind b0) u) t3 x0) \to ((arity g (CHead c0 (Bind b0)
158 u) t4 (asucc g x0)) \to (let TMP_151 \def (\lambda (a1: A).(let TMP_149 \def
159 (Bind b0) in (let TMP_150 \def (THead TMP_149 u t3) in (arity g c0 TMP_150
160 a1)))) in (let TMP_155 \def (\lambda (a1: A).(let TMP_152 \def (Bind b0) in
161 (let TMP_153 \def (THead TMP_152 u t4) in (let TMP_154 \def (asucc g a1) in
162 (arity g c0 TMP_153 TMP_154))))) in (ex2 A TMP_151 TMP_155)))))) in (let
163 TMP_167 \def (\lambda (H12: (arity g (CHead c0 (Bind Abbr) u) t3
164 x0)).(\lambda (H13: (arity g (CHead c0 (Bind Abbr) u) t4 (asucc g x0))).(let
165 TMP_159 \def (\lambda (a1: A).(let TMP_157 \def (Bind Abbr) in (let TMP_158
166 \def (THead TMP_157 u t3) in (arity g c0 TMP_158 a1)))) in (let TMP_163 \def
167 (\lambda (a1: A).(let TMP_160 \def (Bind Abbr) in (let TMP_161 \def (THead
168 TMP_160 u t4) in (let TMP_162 \def (asucc g a1) in (arity g c0 TMP_161
169 TMP_162))))) in (let TMP_164 \def (arity_bind g Abbr not_abbr_abst c0 u x H5
170 t3 x0 H12) in (let TMP_165 \def (asucc g x0) in (let TMP_166 \def (arity_bind
171 g Abbr not_abbr_abst c0 u x H5 t4 TMP_165 H13) in (ex_intro2 A TMP_159
172 TMP_163 x0 TMP_164 TMP_166)))))))) in (let TMP_193 \def (\lambda (H12: (arity
173 g (CHead c0 (Bind Abst) u) t3 x0)).(\lambda (H13: (arity g (CHead c0 (Bind
174 Abst) u) t4 (asucc g x0))).(let TMP_170 \def (\lambda (a1: A).(let TMP_168
175 \def (Bind Abst) in (let TMP_169 \def (THead TMP_168 u t3) in (arity g c0
176 TMP_169 a1)))) in (let TMP_174 \def (\lambda (a1: A).(let TMP_171 \def (Bind
177 Abst) in (let TMP_172 \def (THead TMP_171 u t4) in (let TMP_173 \def (asucc g
178 a1) in (arity g c0 TMP_172 TMP_173))))) in (let TMP_175 \def (AHead x1 x0) in
179 (let TMP_176 \def (asucc g x1) in (let TMP_177 \def (arity_repl g c0 u x H5
180 TMP_176 H11) in (let TMP_178 \def (arity_head g c0 u x1 TMP_177 t3 x0 H12) in
181 (let TMP_179 \def (Bind Abst) in (let TMP_180 \def (THead TMP_179 u t4) in
182 (let TMP_181 \def (asucc g x0) in (let TMP_182 \def (AHead x1 TMP_181) in
183 (let TMP_183 \def (asucc g x1) in (let TMP_184 \def (arity_repl g c0 u x H5
184 TMP_183 H11) in (let TMP_185 \def (asucc g x0) in (let TMP_186 \def
185 (arity_head g c0 u x1 TMP_184 t4 TMP_185 H13) in (let TMP_187 \def (AHead x1
186 x0) in (let TMP_188 \def (asucc g TMP_187) in (let TMP_189 \def (AHead x1 x0)
187 in (let TMP_190 \def (asucc g TMP_189) in (let TMP_191 \def (leq_refl g
188 TMP_190) in (let TMP_192 \def (arity_repl g c0 TMP_180 TMP_182 TMP_186
189 TMP_188 TMP_191) in (ex_intro2 A TMP_170 TMP_174 TMP_175 TMP_178
190 TMP_192))))))))))))))))))))))) in (let TMP_204 \def (\lambda (H12: (arity g
191 (CHead c0 (Bind Void) u) t3 x0)).(\lambda (H13: (arity g (CHead c0 (Bind
192 Void) u) t4 (asucc g x0))).(let TMP_196 \def (\lambda (a1: A).(let TMP_194
193 \def (Bind Void) in (let TMP_195 \def (THead TMP_194 u t3) in (arity g c0
194 TMP_195 a1)))) in (let TMP_200 \def (\lambda (a1: A).(let TMP_197 \def (Bind
195 Void) in (let TMP_198 \def (THead TMP_197 u t4) in (let TMP_199 \def (asucc g
196 a1) in (arity g c0 TMP_198 TMP_199))))) in (let TMP_201 \def (arity_bind g
197 Void not_void_abst c0 u x H5 t3 x0 H12) in (let TMP_202 \def (asucc g x0) in
198 (let TMP_203 \def (arity_bind g Void not_void_abst c0 u x H5 t4 TMP_202 H13)
199 in (ex_intro2 A TMP_196 TMP_200 x0 TMP_201 TMP_203)))))))) in (B_ind TMP_156
200 TMP_167 TMP_193 TMP_204 b H8 H9))))))) in (ex_ind A TMP_140 TMP_148 TMP_205
201 H10))))))))))) in (ex2_ind A TMP_126 TMP_130 TMP_138 TMP_206 H7))))))))))) in
202 (ex2_ind A TMP_113 TMP_115 TMP_123 TMP_207 H4)))))))))))))))))) in (let
203 TMP_304 \def (\lambda (c0: C).(\lambda (w: T).(\lambda (u: T).(\lambda (_:
204 (ty3 g c0 w u)).(\lambda (H1: (ex2 A (\lambda (a1: A).(arity g c0 w a1))
205 (\lambda (a1: A).(arity g c0 u (asucc g a1))))).(\lambda (v: T).(\lambda (t:
206 T).(\lambda (_: (ty3 g c0 v (THead (Bind Abst) u t))).(\lambda (H3: (ex2 A
207 (\lambda (a1: A).(arity g c0 v a1)) (\lambda (a1: A).(arity g c0 (THead (Bind
208 Abst) u t) (asucc g a1))))).(let H4 \def H1 in (let TMP_209 \def (\lambda
209 (a1: A).(arity g c0 w a1)) in (let TMP_211 \def (\lambda (a1: A).(let TMP_210
210 \def (asucc g a1) in (arity g c0 u TMP_210))) in (let TMP_214 \def (\lambda
211 (a1: A).(let TMP_212 \def (Flat Appl) in (let TMP_213 \def (THead TMP_212 w
212 v) in (arity g c0 TMP_213 a1)))) in (let TMP_220 \def (\lambda (a1: A).(let
213 TMP_215 \def (Flat Appl) in (let TMP_216 \def (Bind Abst) in (let TMP_217
214 \def (THead TMP_216 u t) in (let TMP_218 \def (THead TMP_215 w TMP_217) in
215 (let TMP_219 \def (asucc g a1) in (arity g c0 TMP_218 TMP_219))))))) in (let
216 TMP_221 \def (ex2 A TMP_214 TMP_220) in (let TMP_303 \def (\lambda (x:
217 A).(\lambda (H5: (arity g c0 w x)).(\lambda (H6: (arity g c0 u (asucc g
218 x))).(let H7 \def H3 in (let TMP_222 \def (\lambda (a1: A).(arity g c0 v a1))
219 in (let TMP_226 \def (\lambda (a1: A).(let TMP_223 \def (Bind Abst) in (let
220 TMP_224 \def (THead TMP_223 u t) in (let TMP_225 \def (asucc g a1) in (arity
221 g c0 TMP_224 TMP_225))))) in (let TMP_229 \def (\lambda (a1: A).(let TMP_227
222 \def (Flat Appl) in (let TMP_228 \def (THead TMP_227 w v) in (arity g c0
223 TMP_228 a1)))) in (let TMP_235 \def (\lambda (a1: A).(let TMP_230 \def (Flat
224 Appl) in (let TMP_231 \def (Bind Abst) in (let TMP_232 \def (THead TMP_231 u
225 t) in (let TMP_233 \def (THead TMP_230 w TMP_232) in (let TMP_234 \def (asucc
226 g a1) in (arity g c0 TMP_233 TMP_234))))))) in (let TMP_236 \def (ex2 A
227 TMP_229 TMP_235) in (let TMP_302 \def (\lambda (x0: A).(\lambda (H8: (arity g
228 c0 v x0)).(\lambda (H9: (arity g c0 (THead (Bind Abst) u t) (asucc g
229 x0))).(let TMP_237 \def (asucc g x0) in (let H10 \def (arity_gen_abst g c0 u
230 t TMP_237 H9) in (let TMP_240 \def (\lambda (a1: A).(\lambda (a2: A).(let
231 TMP_238 \def (asucc g x0) in (let TMP_239 \def (AHead a1 a2) in (eq A TMP_238
232 TMP_239))))) in (let TMP_242 \def (\lambda (a1: A).(\lambda (_: A).(let
233 TMP_241 \def (asucc g a1) in (arity g c0 u TMP_241)))) in (let TMP_245 \def
234 (\lambda (_: A).(\lambda (a2: A).(let TMP_243 \def (Bind Abst) in (let
235 TMP_244 \def (CHead c0 TMP_243 u) in (arity g TMP_244 t a2))))) in (let
236 TMP_248 \def (\lambda (a1: A).(let TMP_246 \def (Flat Appl) in (let TMP_247
237 \def (THead TMP_246 w v) in (arity g c0 TMP_247 a1)))) in (let TMP_254 \def
238 (\lambda (a1: A).(let TMP_249 \def (Flat Appl) in (let TMP_250 \def (Bind
239 Abst) in (let TMP_251 \def (THead TMP_250 u t) in (let TMP_252 \def (THead
240 TMP_249 w TMP_251) in (let TMP_253 \def (asucc g a1) in (arity g c0 TMP_252
241 TMP_253))))))) in (let TMP_255 \def (ex2 A TMP_248 TMP_254) in (let TMP_301
242 \def (\lambda (x1: A).(\lambda (x2: A).(\lambda (H11: (eq A (asucc g x0)
243 (AHead x1 x2))).(\lambda (H12: (arity g c0 u (asucc g x1))).(\lambda (H13:
244 (arity g (CHead c0 (Bind Abst) u) t x2)).(let TMP_256 \def (asucc g x0) in
245 (let TMP_257 \def (AHead x1 x2) in (let H14 \def (sym_eq A TMP_256 TMP_257
246 H11) in (let H15 \def (asucc_gen_head g x1 x2 x0 H14) in (let TMP_259 \def
247 (\lambda (a0: A).(let TMP_258 \def (AHead x1 a0) in (eq A x0 TMP_258))) in
248 (let TMP_261 \def (\lambda (a0: A).(let TMP_260 \def (asucc g a0) in (eq A x2
249 TMP_260))) in (let TMP_264 \def (\lambda (a1: A).(let TMP_262 \def (Flat
250 Appl) in (let TMP_263 \def (THead TMP_262 w v) in (arity g c0 TMP_263 a1))))
251 in (let TMP_270 \def (\lambda (a1: A).(let TMP_265 \def (Flat Appl) in (let
252 TMP_266 \def (Bind Abst) in (let TMP_267 \def (THead TMP_266 u t) in (let
253 TMP_268 \def (THead TMP_265 w TMP_267) in (let TMP_269 \def (asucc g a1) in
254 (arity g c0 TMP_268 TMP_269))))))) in (let TMP_271 \def (ex2 A TMP_264
255 TMP_270) in (let TMP_300 \def (\lambda (x3: A).(\lambda (H16: (eq A x0 (AHead
256 x1 x3))).(\lambda (H17: (eq A x2 (asucc g x3))).(let TMP_274 \def (\lambda
257 (a: A).(let TMP_272 \def (Bind Abst) in (let TMP_273 \def (CHead c0 TMP_272
258 u) in (arity g TMP_273 t a)))) in (let TMP_275 \def (asucc g x3) in (let H18
259 \def (eq_ind A x2 TMP_274 H13 TMP_275 H17) in (let TMP_276 \def (\lambda (a:
260 A).(arity g c0 v a)) in (let TMP_277 \def (AHead x1 x3) in (let H19 \def
261 (eq_ind A x0 TMP_276 H8 TMP_277 H16) in (let TMP_280 \def (\lambda (a1:
262 A).(let TMP_278 \def (Flat Appl) in (let TMP_279 \def (THead TMP_278 w v) in
263 (arity g c0 TMP_279 a1)))) in (let TMP_286 \def (\lambda (a1: A).(let TMP_281
264 \def (Flat Appl) in (let TMP_282 \def (Bind Abst) in (let TMP_283 \def (THead
265 TMP_282 u t) in (let TMP_284 \def (THead TMP_281 w TMP_283) in (let TMP_285
266 \def (asucc g a1) in (arity g c0 TMP_284 TMP_285))))))) in (let TMP_287 \def
267 (asucc g x1) in (let TMP_288 \def (asucc g x) in (let TMP_289 \def
268 (arity_mono g c0 u TMP_287 H12 TMP_288 H6) in (let TMP_290 \def (asucc_inj g
269 x1 x TMP_289) in (let TMP_291 \def (leq_sym g x1 x TMP_290) in (let TMP_292
270 \def (arity_repl g c0 w x H5 x1 TMP_291) in (let TMP_293 \def (arity_appl g
271 c0 w x1 TMP_292 v x3 H19) in (let TMP_294 \def (Bind Abst) in (let TMP_295
272 \def (THead TMP_294 u t) in (let TMP_296 \def (asucc g x3) in (let TMP_297
273 \def (asucc g x3) in (let TMP_298 \def (arity_head g c0 u x H6 t TMP_297 H18)
274 in (let TMP_299 \def (arity_appl g c0 w x H5 TMP_295 TMP_296 TMP_298) in
275 (ex_intro2 A TMP_280 TMP_286 x3 TMP_293 TMP_299))))))))))))))))))))))))) in
276 (ex2_ind A TMP_259 TMP_261 TMP_271 TMP_300 H15)))))))))))))))) in (ex3_2_ind
277 A A TMP_240 TMP_242 TMP_245 TMP_255 TMP_301 H10))))))))))))) in (ex2_ind A
278 TMP_222 TMP_226 TMP_236 TMP_302 H7))))))))))) in (ex2_ind A TMP_209 TMP_211
279 TMP_221 TMP_303 H4))))))))))))))))) in (let TMP_347 \def (\lambda (c0:
280 C).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (ty3 g c0 t3 t4)).(\lambda
281 (H1: (ex2 A (\lambda (a1: A).(arity g c0 t3 a1)) (\lambda (a1: A).(arity g c0
282 t4 (asucc g a1))))).(\lambda (t0: T).(\lambda (_: (ty3 g c0 t4 t0)).(\lambda
283 (H3: (ex2 A (\lambda (a1: A).(arity g c0 t4 a1)) (\lambda (a1: A).(arity g c0
284 t0 (asucc g a1))))).(let H4 \def H1 in (let TMP_305 \def (\lambda (a1:
285 A).(arity g c0 t3 a1)) in (let TMP_307 \def (\lambda (a1: A).(let TMP_306
286 \def (asucc g a1) in (arity g c0 t4 TMP_306))) in (let TMP_310 \def (\lambda
287 (a1: A).(let TMP_308 \def (Flat Cast) in (let TMP_309 \def (THead TMP_308 t4
288 t3) in (arity g c0 TMP_309 a1)))) in (let TMP_314 \def (\lambda (a1: A).(let
289 TMP_311 \def (Flat Cast) in (let TMP_312 \def (THead TMP_311 t0 t4) in (let
290 TMP_313 \def (asucc g a1) in (arity g c0 TMP_312 TMP_313))))) in (let TMP_315
291 \def (ex2 A TMP_310 TMP_314) in (let TMP_346 \def (\lambda (x: A).(\lambda
292 (H5: (arity g c0 t3 x)).(\lambda (H6: (arity g c0 t4 (asucc g x))).(let H7
293 \def H3 in (let TMP_316 \def (\lambda (a1: A).(arity g c0 t4 a1)) in (let
294 TMP_318 \def (\lambda (a1: A).(let TMP_317 \def (asucc g a1) in (arity g c0
295 t0 TMP_317))) in (let TMP_321 \def (\lambda (a1: A).(let TMP_319 \def (Flat
296 Cast) in (let TMP_320 \def (THead TMP_319 t4 t3) in (arity g c0 TMP_320
297 a1)))) in (let TMP_325 \def (\lambda (a1: A).(let TMP_322 \def (Flat Cast) in
298 (let TMP_323 \def (THead TMP_322 t0 t4) in (let TMP_324 \def (asucc g a1) in
299 (arity g c0 TMP_323 TMP_324))))) in (let TMP_326 \def (ex2 A TMP_321 TMP_325)
300 in (let TMP_345 \def (\lambda (x0: A).(\lambda (H8: (arity g c0 t4
301 x0)).(\lambda (H9: (arity g c0 t0 (asucc g x0))).(let TMP_329 \def (\lambda
302 (a1: A).(let TMP_327 \def (Flat Cast) in (let TMP_328 \def (THead TMP_327 t4
303 t3) in (arity g c0 TMP_328 a1)))) in (let TMP_333 \def (\lambda (a1: A).(let
304 TMP_330 \def (Flat Cast) in (let TMP_331 \def (THead TMP_330 t0 t4) in (let
305 TMP_332 \def (asucc g a1) in (arity g c0 TMP_331 TMP_332))))) in (let TMP_334
306 \def (arity_cast g c0 t4 x H6 t3 H5) in (let TMP_335 \def (asucc g x) in (let
307 TMP_336 \def (asucc g x0) in (let TMP_337 \def (asucc g x) in (let TMP_338
308 \def (asucc g TMP_337) in (let TMP_339 \def (asucc g x) in (let TMP_340 \def
309 (asucc g x) in (let TMP_341 \def (arity_mono g c0 t4 x0 H8 TMP_340 H6) in
310 (let TMP_342 \def (asucc_repl g x0 TMP_339 TMP_341) in (let TMP_343 \def
311 (arity_repl g c0 t0 TMP_336 H9 TMP_338 TMP_342) in (let TMP_344 \def
312 (arity_cast g c0 t0 TMP_335 TMP_343 t4 H6) in (ex_intro2 A TMP_329 TMP_333 x
313 TMP_334 TMP_344))))))))))))))))) in (ex2_ind A TMP_316 TMP_318 TMP_326
314 TMP_345 H7))))))))))) in (ex2_ind A TMP_305 TMP_307 TMP_315 TMP_346
315 H4)))))))))))))))) in (ty3_ind g TMP_4 TMP_40 TMP_51 TMP_74 TMP_112 TMP_208
316 TMP_304 TMP_347 c t1 t2 H))))))))))))).