Update from HH
[Flyspeck/.git] / text_formalization / local / IMJXPHR.hl
1 (* ========================================================================== *)
2 (* FLYSPECK - BOOK FORMALIZATION                                              *)
3 (*                                                                            *)
4 (* Chapter: Local Fan                                              *)
5 (* Author: Hoang Le Truong                                        *)
6 (* Date: 2012-04-01                                                           *)
7 (* ========================================================================= *)
8
9
10 (*
11 remaining conclusions from appendix to Local Fan chapter
12 *)
13
14
15 module Imjxphr = struct
16
17
18 open Polyhedron;;
19 open Sphere;;
20 open Topology;;         
21 open Fan_misc;;
22 open Planarity;; 
23 open Conforming;;
24 open Hypermap;;
25 open Fan;;
26 open Topology;;
27 open Wrgcvdr_cizmrrh;;
28 open Local_lemmas;;
29 open Collect_geom;;
30 open Dih2k_hypermap;;
31 open Wjscpro;;
32 open Tecoxbm;;
33 open Hdplygy;;
34 open Nkezbfc_local;;
35 open Flyspeck_constants;;
36 open Gbycpxs;;
37 open Pcrttid;;
38 open Local_lemmas1;;
39 open Pack_defs;;
40
41 open Hales_tactic;;
42
43 open Appendix;;
44
45
46
47
48
49 open Hypermap;;
50 open Fan;;
51 open Wrgcvdr_cizmrrh;;
52 open Local_lemmas;;
53 open Flyspeck_constants;;
54 open Pack_defs;;
55
56 open Hales_tactic;;
57
58 open Appendix;;
59
60
61 open Zithlqn;;
62
63
64 open Xwitccn;;
65
66 open Ayqjtmd;;
67
68 open Jkqewgv;;
69
70
71 open Mtuwlun;;
72
73
74 open Uxckfpe;;
75 open Sgtrnaf;;
76
77 open Yxionxl;;
78
79 open Qknvmlb;;
80 open Odxlstcv2;;
81
82 open Yxionxl2;;
83 open Eyypqdw;;
84 open Ocbicby;;
85
86
87 let v3_defor_v4=new_definition`v3_defor_v4 a x1 x2 x6 v1 w v t= 
88 if v= w then (v3_defor_v1 a v1 w x1 x2 x6 x6 (x2-t)) else v`;;
89
90
91 let FUN_V3_DEFOR=prove(`v3_defor_v4 a x1 x2 x6 v1 w v = (\t. v3_defor_v4 a x1 x2 x6 v1 w v t)`,REWRITE_TAC[FUN_EQ_THM]);;
92
93
94
95
96
97 let BBS_IMP_CONVEX_LOCAL_FAN=prove(` 3<k/\ scs_k_v39 s =k /\ BBs_v39 s w ==> convex_local_fan (IMAGE w (:num),IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num),IMAGE (\i. w i,w (SUC i)) (:num))`,
98 STRIP_TAC
99 THEN POP_ASSUM MP_TAC
100 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
101 THEN RESA_TAC
102 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
103 THEN RESA_TAC);;
104
105
106 let MOD_ADD_SUB_1=prove(`1<k==> ~((l+k-1) MOD k= l MOD k)`,
107 STRIP_TAC
108 THEN MP_TAC(ARITH_RULE`1<k==> ~(k=0)/\ 1 + l + k - 1=1*k+l/\ 1+l= SUC(l)`)
109 THEN RESA_TAC
110 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
111 THEN MRESA_TAC (Ocbicby.MOD_EQ_MOD_SHIFT)[`k:num`;`l+k-1`;`l:num`;`1`]
112 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
113 THEN ASM_SIMP_TAC[Qknvmlb.SUC_MOD_NOT_EQ]);;
114
115
116
117
118 let UPS_X_POS_SEG=prove(`~(collinear{vec 0,v1,v2:real^3}) /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ &0< x2
119 ==> ?e. &0< e/\ (!t. -- e< t/\ t< e ==> &0< ups_x x1 (x2-t) x6/\ &0< x2-t)`,
120 STRIP_TAC
121 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`v2:real^3`]
122 THEN MRESAL_TAC (GEN_ALL Trigonometry1.DIST_UPS_X_POS)[`vec 0:real^3`;`v1:real^3`;`v2:real^3`][dist;VECTOR_ARITH`vec 0- A= --A/\ A- vec 0=A:real^3`;GSYM DOT_SQUARE_NORM;NORM_NEG]
123 THEN MRESAL_TAC Collect_geom.FHFMKIY[`vec 0:real^3`;`v1:real^3`;`v2:real^3`;`x1:real`;`x2:real`;`x6:real`][dist;VECTOR_ARITH`vec 0- A= --A/\ A- vec 0=A:real^3`;GSYM DOT_SQUARE_NORM;NORM_NEG]
124 THEN MP_TAC LIFT_UPS_CONTINUOUS
125 THEN RESA_TAC
126 THEN POP_ASSUM MP_TAC
127 THEN REWRITE_TAC[continuous_atreal;o_DEF;DIST_LIFT]
128 THEN ABBREV_TAC`a=ups_x x1 x2 x6`
129 THEN ABBREV_TAC`b= min a x2`
130 THEN MP_TAC(REAL_ARITH`&0<= a/\ ~(a= &0)/\ &0<x2/\ b=min a x2 ==> &0<b/ &2/\ &0< a- b/ &2`)
131 THEN RESA_TAC
132 THEN STRIP_TAC
133 THEN POP_ASSUM(fun th-> MRESA_TAC th[`b/ &2`])
134 THEN EXISTS_TAC`min d x2:real`
135 THEN ASM_REWRITE_TAC[]
136 THEN MP_TAC(REAL_ARITH`&0<d/\ &0< x2==> &0< min d x2`)
137 THEN RESA_TAC
138 THEN GEN_TAC
139 THEN POP_ASSUM MP_TAC
140 THEN POP_ASSUM(fun th-> STRIP_TAC THEN STRIP_TAC THEN MRESA_TAC th[`x2-t:real`])
141 THEN POP_ASSUM MP_TAC
142 THEN ASM_REWRITE_TAC[GSYM REAL_ABS_BETWEEN;REAL_ARITH`x2 - d < x2 - t<=> t<d`;
143 REAL_ARITH`x2 - t < x2 + d<=> --d<t`;REAL_ARITH`a- a/ &2=a/ &2`]
144 THEN MP_TAC(REAL_ARITH`--min d x2<t /\ t< min d x2/\ &0<x2 ==> t < d /\ --d < t/\ &0< x2-t`)
145 THEN RESA_TAC
146 THEN ASM_TAC
147 THEN REAL_ARITH_TAC);;
148
149
150
151
152 let UPS_X_POS_SEG_C=prove(`~(collinear{vec 0,v1,v2:real^3}) /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ &0< x2/\ &0<c
153 ==> ?e. &0< e/\ (!t. -- e< t/\ t< e ==> &0< ups_x x1 (x2-t) x6/\ &0< x2-t/\ t<c)`,
154 STRIP_TAC
155 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`v2:real^3`]
156 THEN MRESAL_TAC (GEN_ALL Trigonometry1.DIST_UPS_X_POS)[`vec 0:real^3`;`v1:real^3`;`v2:real^3`][dist;VECTOR_ARITH`vec 0- A= --A/\ A- vec 0=A:real^3`;GSYM DOT_SQUARE_NORM;NORM_NEG]
157 THEN MRESAL_TAC Collect_geom.FHFMKIY[`vec 0:real^3`;`v1:real^3`;`v2:real^3`;`x1:real`;`x2:real`;`x6:real`][dist;VECTOR_ARITH`vec 0- A= --A/\ A- vec 0=A:real^3`;GSYM DOT_SQUARE_NORM;NORM_NEG]
158 THEN MP_TAC LIFT_UPS_CONTINUOUS
159 THEN RESA_TAC
160 THEN POP_ASSUM MP_TAC
161 THEN REWRITE_TAC[continuous_atreal;o_DEF;DIST_LIFT]
162 THEN ABBREV_TAC`a=ups_x x1 x2 x6`
163 THEN ABBREV_TAC`b= (min a x2) `
164 THEN MP_TAC(REAL_ARITH`&0<= a/\ ~(a= &0)/\ &0<x2/\ b=(min a x2)  ==> &0<b/ &2/\ &0< a- b/ &2`)
165 THEN RESA_TAC
166 THEN STRIP_TAC
167 THEN POP_ASSUM(fun th-> MRESA_TAC th[`b/ &2`])
168 THEN ABBREV_TAC`e1=min (min d x2) c/ &2`
169 THEN EXISTS_TAC`e1:real`
170 THEN ASM_REWRITE_TAC[]
171 THEN MP_TAC(REAL_ARITH`&0<d/\ &0< x2/\ &0< c/\ e1=min (min d x2) c/ &2 ==> &0<e1/\ e1<c/\ e1<d/\ e1<x2`)
172 THEN RESA_TAC
173 THEN GEN_TAC
174 THEN REPLICATE_TAC (24-19) (POP_ASSUM MP_TAC)
175 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC THEN MRESA_TAC th[`x2-t:real`])
176 THEN POP_ASSUM MP_TAC
177 THEN ASM_REWRITE_TAC[GSYM REAL_ABS_BETWEEN;REAL_ARITH`x2 - d < x2 - t<=> t<d`;
178 REAL_ARITH`x2 - t < x2 + d<=> --d<t`;REAL_ARITH`a- a/ &2=a/ &2`]
179 THEN MP_TAC(REAL_ARITH`--e1<t /\ t<e1/\ &0<d/\ &0<e1/\ e1<d/\ e1<x2/\ e1<c==> t < d /\ --d < t/\ &0< x2-t/\ t<c`)
180 THEN RESA_TAC
181 THEN ASM_TAC
182 THEN REAL_ARITH_TAC);;
183
184
185
186
187
188
189
190 let V3_DEFOR_V1_O_DEF=prove(`(\t. v3_defor_v1 a v1 w x1 x2 x6 x6 (x2 - t)) = (\x3. v3_defor_v1 a v1 w x1 x2 x6 x6 x3) o (\t. x2-t)`,
191 REWRITE_TAC[o_DEF]);;
192
193
194 let V3_DEFOR_ID=prove(`&0< x1/\ ~(collinear{vec 0,v1,w:real^3})/\ norm v1 pow 2 = x1/\ norm w pow 2 =x2/\ norm(v1-w) pow 2=x6
195 /\ a = -- &1
196 ==> v3_defor_v1 a v1 w x1 x2 x6 x6 (x2 - &0) = w`,
197 STRIP_TAC
198 THEN ASM_REWRITE_TAC[v3_defor_v1;CROSS_LAGRANGE;REAL_ARITH`A- &0=A`]
199 THEN ASM_REWRITE_TAC[DOT_LADD;DOT_RADD;DOT_LMUL; DOT_RMUL;DOT_CROSS_SELF;REAL_ARITH`A* &0= &0/\ A+ &0=A/\ &0 +A=A`;DOT_CROSS;REAL_INV_MUL;CROSS_LAGRANGE;CROSS_LADD;VECTOR_ARITH`A-B=A+(--B):real^3/\ a % vec 0= vec 0 /\ vec 0 +A=A`;CROSS_LMUL;CROSS_REFL;CROSS_LADD;CROSS_LNEG;DOT_SQUARE_NORM;o_DEF]
200 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`w:real^3`]
201 THEN MRESAL_TAC (GEN_ALL Trigonometry1.DIST_UPS_X_POS)[`vec 0:real^3`;`v1:real^3`;`w:real^3`][dist;VECTOR_ARITH`vec 0- A= --A/\ A- vec 0=A:real^3`;GSYM DOT_SQUARE_NORM;NORM_NEG]
202 THEN MRESAL_TAC Collect_geom.FHFMKIY[`vec 0:real^3`;`v1:real^3`;`w:real^3`;`x1:real`;`x2:real`;`x6:real`][dist;VECTOR_ARITH`vec 0- A= --A/\ A- vec 0=A:real^3`;GSYM DOT_SQUARE_NORM;NORM_NEG]
203 THEN ASM_TAC
204 THEN REWRITE_TAC[GSYM DOT_SQUARE_NORM]
205 THEN ASM_REWRITE_TAC[DOT_LSUB;DOT_RSUB;DOT_LMUL; DOT_RMUL;DOT_CROSS_SELF;REAL_ARITH`A* &0= &0/\ A+ &0=A/\ &0 +A=A`;DOT_CROSS;REAL_INV_MUL;]
206 THEN REPEAT RESA_TAC
207 THEN MRESA_TAC DOT_SYM[`w:real^3`;`v1:real^3`]
208 THEN REPLICATE_TAC (13-3)(POP_ASSUM MP_TAC)
209 THEN POP_ASSUM(fun th-> 
210 REPEAT STRIP_TAC
211 THEN MP_TAC th)
212 THEN ASM_REWRITE_TAC[]
213 THEN ASM_REWRITE_TAC[REAL_ARITH`x1 - v1 dot v2 - (v1 dot v2 - x2) = x6
214 <=>  v1 dot v2  = (x1 + x2 - x6)/ &2`;REAL_ARITH`a*a *b=a pow 2 *b/\ A- &0=A/\ (a*b) pow 2=a pow 2 * b pow 2`;REAL_INV_MUL]
215 THEN RESA_TAC
216 THEN MRESA_TAC REAL_MUL_LINV[`ups_x x1 x2 x6`]
217 THEN MRESAL_TAC SQRT_UNIQUE[`&1`;`&1`][REAL_ARITH`&0<= &1/\ &1 pow 2= &1`]
218 THEN REWRITE_TAC[VECTOR_ARITH`((inv (&2) * inv x1) * (x1 + x2 - x6)) % v1 +
219  (inv x1 * -- &1 * &1) % ((x1 + x2 - x6) / &2 % v1 + --(x1 % w))
220
221  (inv x1 *x1) % w`]
222 THEN MP_TAC(REAL_ARITH`&0< x1==> ~(x1= &0)`)
223 THEN RESA_TAC
224 THEN MRESA_TAC REAL_MUL_LINV[`x1:real`]
225 THEN VECTOR_ARITH_TAC);;
226
227
228 let V3_DEFOR_DEFORMATION=prove_by_refinement(`
229 &0< x1 /\ &0<x2  /\ &0<x4 /\ &0<x5 /\ &0< x6 /\
230 ~(collinear{vec 0,v1,w:real^3})/\ norm v1 pow 2 = x1/\ norm w pow 2 =x2/\ norm(v1-w) pow 2=x6
231 /\ a= -- &1
232 ==> 
233 (?e. &0<e /\ deformation (v3_defor_v4 a x1 x2 x6 v1 w) V (-- e,e))`,
234 [REWRITE_TAC[deformation;real_interval;IN_ELIM_THM;REAL_ARITH`(-- &1 < &0 /\ &0 < &1)`]
235 THEN STRIP_TAC
236 THEN MRESA_TAC(GEN_ALL UPS_X_POS_SEG)[`v1:real^3`;`w:real^3`;`x1:real`;`x6:real`;`x2:real`]
237 THEN EXISTS_TAC`e:real`
238 THEN ASM_REWRITE_TAC[]
239 THEN MP_TAC(REAL_ARITH`&0< e==> -- e< &0`)
240 THEN RESA_TAC
241 THEN STRIP_TAC;
242
243 REPEAT STRIP_TAC
244 THEN ONCE_REWRITE_TAC[FUN_V3_DEFOR]
245 THEN REWRITE_TAC[v3_defor_v4]
246 THEN MP_TAC(SET_RULE`v=w:real^3\/ ~(v=w)`)
247 THEN RESA_TAC;
248
249 REWRITE_TAC[V3_DEFOR_V1_O_DEF]
250 THEN MATCH_MP_TAC CONTINUOUS_REAL_CONTINUOUS_ATREAL_COMPOSE
251 THEN STRIP_TAC;
252
253 MATCH_MP_TAC REAL_CONTINUOUS_SUB
254 THEN ASM_SIMP_TAC[REAL_CONTINUOUS_CONST;REAL_CONTINUOUS_AT_ID];
255
256 MATCH_MP_TAC CONTINUOUS_ATREAL_WITHINREAL
257 THEN REWRITE_TAC[]
258 THEN MATCH_MP_TAC EYYPQDW_CONTINUOUS_AT_X
259 THEN ASM_REWRITE_TAC[]
260 THEN REPLICATE_TAC (16-11) (POP_ASSUM MP_TAC)
261 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
262 THEN MRESA_TAC th[`r:real`])
263 THEN REWRITE_TAC[SET_RULE`a IN{a,b}`];
264
265 ASM_SIMP_TAC[CONTINUOUS_CONST;REAL_CONTINUOUS_AT_ID];
266
267 REPEAT STRIP_TAC
268 THEN ONCE_REWRITE_TAC[FUN_V3_DEFOR]
269 THEN REWRITE_TAC[v3_defor_v4]
270 THEN MP_TAC(SET_RULE`v=w:real^3\/ ~(v=w)`)
271 THEN RESA_TAC;
272
273 MATCH_MP_TAC V3_DEFOR_ID
274 THEN ASM_REWRITE_TAC[]]);;
275
276
277
278
279 let V3_DEFOR_IN_BALL_ANNULUS_DEFORMATION=prove_by_refinement(`&0< x1 /\ &0<x2   /\ &0< x6 /\
280 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1/\ v2 IN ball_annulus/\ ~(norm v2 = &2)
281 ==>  ?e. &0< e/\ (!t. &0<t/\ t< e==> v3_defor_v4 a x1 x2 x6 v1 v2 v2 t IN ball_annulus)`,
282 [
283 REWRITE_TAC[ball_annulus;cball;DIFF;ball;IN_ELIM_THM;dist; VECTOR_ARITH`vec 0 -A= --A`;NORM_NEG;NORM_MUL;REAL_ARITH`~(a<b)<=> b<= a`]
284 THEN STRIP_TAC
285 THEN MRESAL_TAC (GEN_ALL NORM_GE_SQUARE)[`&2`;`v2:real^3`][REAL_ARITH`~(&2<= &0)/\ (a>=b<=> b<=a)`]
286 THEN POP_ASSUM MP_TAC
287 THEN ASM_REWRITE_TAC[DOT_SQUARE_NORM]
288 THEN MRESAL_TAC (GEN_ALL NORM_EQ_SQUARE)[`&2`;`v2:real^3`][REAL_ARITH`(&0<= &2)/\ (a>=b<=> b<=a)`]
289 THEN POP_ASSUM MP_TAC
290 THEN ASM_REWRITE_TAC[DOT_SQUARE_NORM]
291 THEN REPEAT STRIP_TAC
292 THEN MP_TAC(REAL_ARITH`&2 pow 2 <= x2 /\ ~(x2= &2 pow 2)==> &0 < (x2- &4)/ &2 `)
293 THEN RESA_TAC
294 THEN MRESA_TAC (GEN_ALL UPS_X_POS_SEG_C)[`v1:real^3`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`(x2- &4)/  &2`]
295 THEN EXISTS_TAC`e:real`
296 THEN ASM_REWRITE_TAC[v3_defor_v4]
297 THEN GEN_TAC
298 THEN POP_ASSUM(fun th-> STRIP_TAC
299 THEN MP_TAC(REAL_ARITH`&0< e/\ &0<t==> --e<t`)
300 THEN RESA_TAC
301 THEN MRESA_TAC th[`t:real`])
302 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORMV3)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`x2-t:real`][SET_RULE`a IN{a,b}`;v3_defor_v1]
303 THEN POP_ASSUM MP_TAC
304 THEN REWRITE_TAC[GSYM v3_defor_v1]
305 THEN ASM_TAC
306 THEN REWRITE_TAC[NORM_LE_SQUARE;NORM_GE_SQUARE]
307 THEN ASM_REWRITE_TAC[DOT_SQUARE_NORM]
308 THEN REPEAT RESA_TAC;
309
310 ASM_TAC
311 THEN REAL_ARITH_TAC;
312
313 ASM_TAC
314 THEN REWRITE_TAC[REAL_ARITH`~(&2<= &0)/\ (a<=b<=> b>=a)`;NORM_GE_SQUARE]
315 THEN REPEAT RESA_TAC
316 THEN ASM_REWRITE_TAC[DOT_SQUARE_NORM]
317 THEN ASM_TAC
318 THEN REAL_ARITH_TAC]);;
319
320
321 let NORM_POS_COLLINEAR=prove(`~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 
322 ==> &0< x1 /\ &0<x2   /\ &0< x6`,
323 STRIP_TAC
324 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`v2:real^3`]
325 THEN MP_TAC(REAL_ARITH`&0<= norm (v1:real^3) pow 2==> norm v1 pow 2 = &0 \/ &0<norm v1 pow 2`)
326 THEN REWRITE_TAC[REAL_LE_POW_2]
327 THEN REWRITE_TAC[GSYM DOT_SQUARE_NORM]
328 THEN STRIP_TAC
329 THEN MRESAL_TAC (GEN_ALL NORM_EQ_SQUARE)[`&0`;`v1:real^3`][REAL_ARITH`&0<= &0/\ &0 pow 2= &0`;NORM_EQ_0]
330 THEN POP_ASSUM MP_TAC
331 THEN POP_ASSUM MP_TAC
332 THEN ASM_REWRITE_TAC[DOT_SQUARE_NORM]
333 THEN RESA_TAC
334 THEN MP_TAC(REAL_ARITH`&0<= norm (v2:real^3) pow 2==> norm v2 pow 2 = &0 \/ &0<norm v2 pow 2`)
335 THEN REWRITE_TAC[REAL_LE_POW_2]
336 THEN REWRITE_TAC[GSYM DOT_SQUARE_NORM]
337 THEN STRIP_TAC
338 THEN MRESAL_TAC (GEN_ALL NORM_EQ_SQUARE)[`&0`;`v2:real^3`][REAL_ARITH`&0<= &0/\ &0 pow 2= &0`;NORM_EQ_0]
339 THEN POP_ASSUM MP_TAC
340 THEN POP_ASSUM MP_TAC
341 THEN ASM_REWRITE_TAC[DOT_SQUARE_NORM]
342 THEN RESA_TAC
343 THEN MP_TAC(REAL_ARITH`&0<= norm (v1-v2:real^3) pow 2==> norm (v1-v2) pow 2 = &0 \/ &0<norm (v1-v2) pow 2`)
344 THEN REWRITE_TAC[REAL_LE_POW_2]
345 THEN REWRITE_TAC[GSYM DOT_SQUARE_NORM]
346 THEN STRIP_TAC
347 THEN MRESAL_TAC (GEN_ALL NORM_EQ_SQUARE)[`&0`;`v1-v2:real^3`][REAL_ARITH`&0<= &0/\ &0 pow 2= &0`;NORM_EQ_0]
348 THEN POP_ASSUM MP_TAC
349 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b= vec 0<=> a=b`]
350 THENL[
351 MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
352 THEN POP_ASSUM MP_TAC
353 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
354 THEN ASM_REWRITE_TAC[]
355 THEN RESA_TAC;
356
357 POP_ASSUM MP_TAC
358 THEN ASM_REWRITE_TAC[DOT_SQUARE_NORM]
359 THEN RESA_TAC]);;
360
361
362
363 let HYPER_MM_COLLINEAR=prove_by_refinement(`scs_k_v39 s =k/\is_scs_v39 s /\
364   MMs_v39 s w /\
365  3<k/\ w l=v2/\ w (SUC l) =v1
366 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6
367 ==>
368 &0< x1 /\ &0<x2   /\ &0< x6 /\
369 ~(collinear{vec 0,v1,v2:real^3}) `,
370 [REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;]
371 THEN STRIP_TAC
372 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
373 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
374 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
375 THEN ASM_TAC
376 THEN RESA_TAC
377 THEN REPEAT DISCH_TAC;
378
379 ASM_TAC
380 THEN ARITH_TAC;
381
382 SUBGOAL_THEN`((v2,v1):real^3#real^3) IN FF`ASSUME_TAC;
383
384 EXPAND_TAC"FF"
385 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
386 THEN EXISTS_TAC`l:num`
387 THEN ASM_REWRITE_TAC[SET_RULE`(a:num) IN (:num)`];
388
389 MP_TAC Local_lemmas.CVLF_LF_F
390 THEN RESA_TAC
391 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,v1):real^3#real^3`]
392 THEN POP_ASSUM MP_TAC
393 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
394 THEN STRIP_TAC
395 THEN MP_TAC NORM_POS_COLLINEAR
396 THEN RESA_TAC
397 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
398 THEN ASM_REWRITE_TAC[]]);;
399
400
401
402
403
404 let EYYPQDW_CONTINUOUS_LIFT_DIST=prove(`&0< x1 /\ &0<x2 /\ &0< x3 /\ &0<x4 /\ &0<x5 /\ &0< x6 /\
405 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6
406 /\ a IN {-- &1, &1}
407  /\ &0< ups_x x1 x3 x5
408 ==> 
409 lift o (\x3. dist(v3_defor_v1 a v1 v2 x1 x2 x5 x6 x3,v))  continuous atreal (x3)`,
410 REPEAT STRIP_TAC
411 THEN SUBGOAL_THEN`lift o(\x3. dist(v3_defor_v1 a v1 v2 x1 x2 x5 x6 x3,v))=  (lift o (\x. dist(x,v))) o(\x3. v3_defor_v1 a v1 v2 x1 x2 x5 x6 x3)`ASSUME_TAC
412 THENL[
413 REWRITE_TAC[o_DEF];
414 ASM_REWRITE_TAC[]
415 THEN MATCH_MP_TAC CONTINUOUS_ATREAL_COMPOSE
416 THEN MP_TAC EYYPQDW_CONTINUOUS_AT_X
417 THEN ASM_REWRITE_TAC[]
418 THEN RESA_TAC
419 THEN MATCH_MP_TAC CONTINUOUS_AT_WITHIN
420 THEN ONCE_REWRITE_TAC[DIST_SYM]
421 THEN ASM_SIMP_TAC[CONTINUOUS_AT_LIFT_DIST]]);;
422
423
424
425
426
427 let EXISTS_SMALL_LE_CONST=prove(`&0< x1 /\ &0<x2   /\ &0< x6 /\
428 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a = -- &1 /\ c< dist(v2,w)
429 ==>
430 ?e. &0< e /\ (!t. &0<t /\ t<e ==> c<dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w))`,
431 STRIP_TAC
432 THEN MP_TAC UPS_X_POS_SEG
433 THEN RESA_TAC
434 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`]
435 THEN ASSUME_TAC th)
436 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_ID)[`a:real`;`v1:real^3`;`x1:real`;`x6:real`;`x2:real`;`v2:real^3`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`]
437 THEN MP_TAC(REAL_ARITH`c< dist(v2,w:real^3)==> &0< (dist(v2,w:real^3)- c )/ &2/\ c< dist (v2,w) - (dist (v2,w) - c) / &2`)
438 THEN RESA_TAC
439 THEN MRESAL_TAC (GEN_ALL EYYPQDW_CONTINUOUS_LIFT_DIST)[`x2:real`;`a:real`;`v1:real^3`;`v2:real^3`;`x1:real`;`x2:real`;`x6:real`;`x6:real`;`w:real^3`;`x2:real`][SET_RULE`A IN {A, B}`;continuous_atreal;DIST_LIFT;o_DEF;GSYM REAL_ABS_BETWEEN]
440 THEN POP_ASSUM (fun th-> MRESA_TAC th[`(dist(v2,w:real^3)- c )/ &2`])
441 THEN POP_ASSUM MP_TAC
442 THEN RESA_TAC
443 THEN EXISTS_TAC`d:real`
444 THEN ASM_REWRITE_TAC[]
445 THEN GEN_TAC
446 THEN POP_ASSUM(fun th-> STRIP_TAC
447 THEN MP_TAC(REAL_ARITH` &0< d/\ &0<t ==> --d<t`)
448 THEN RESA_TAC
449 THEN MRESAL_TAC th[`x2-t:real`][REAL_ARITH`x2 - d < x2 - t /\ x2 - t < x2 + d <=> --d<t/\ t<d`])
450 THEN ASM_TAC
451 THEN REAL_ARITH_TAC);;
452
453
454
455
456 let EXISTS_SMALL_LE_CONST_V1=prove(`&0< x1 /\ &0<x2   /\ &0< x6 /\
457 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a = -- &1 /\ c< dist(v2,w)
458 ==>
459 ?e. &0< e /\ (!t. --e<t /\ t<e ==> c<dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w))`,
460 STRIP_TAC
461 THEN MP_TAC UPS_X_POS_SEG
462 THEN RESA_TAC
463 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`]
464 THEN ASSUME_TAC th)
465 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_ID)[`a:real`;`v1:real^3`;`x1:real`;`x6:real`;`x2:real`;`v2:real^3`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`]
466 THEN MP_TAC(REAL_ARITH`c< dist(v2,w:real^3)==> &0< (dist(v2,w:real^3)- c )/ &2/\ c< dist (v2,w) - (dist (v2,w) - c) / &2`)
467 THEN RESA_TAC
468 THEN MRESAL_TAC (GEN_ALL EYYPQDW_CONTINUOUS_LIFT_DIST)[`x2:real`;`a:real`;`v1:real^3`;`v2:real^3`;`x1:real`;`x2:real`;`x6:real`;`x6:real`;`w:real^3`;`x2:real`][SET_RULE`A IN {A, B}`;continuous_atreal;DIST_LIFT;o_DEF;GSYM REAL_ABS_BETWEEN]
469 THEN POP_ASSUM (fun th-> MRESA_TAC th[`(dist(v2,w:real^3)- c )/ &2`])
470 THEN POP_ASSUM MP_TAC
471 THEN RESA_TAC
472 THEN EXISTS_TAC`d:real`
473 THEN ASM_REWRITE_TAC[]
474 THEN GEN_TAC
475 THEN POP_ASSUM(fun th-> STRIP_TAC
476 THEN MRESAL_TAC th[`x2-t:real`][REAL_ARITH`x2 - d < x2 - t /\ x2 - t < x2 + d <=> --d<t/\ t<d`])
477 THEN ASM_TAC
478 THEN REAL_ARITH_TAC);;
479
480
481
482 let DEFORMATION_DIST_LE_V3_DEFOR_A=prove(`is_scs_v39 s /\
483   MMs_v39 s w /\
484   scs_k_v39 s =k/\
485  3<k /\ w l=v2/\ w (SUC l) =v1
486 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
487 /\ 
488   (!i. ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)          ==> scs_a_v39 s l i < dist (v2,w i))
489 ==> (!i. ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k) ==> ?e. &0< e/\
490 (!t. &0< t/\ t< e  ==> scs_a_v39 s l i < dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)))`,
491 STRIP_TAC 
492 THEN MP_TAC HYPER_MM_COLLINEAR
493 THEN RESA_TAC
494 THEN REPEAT STRIP_TAC
495 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST
496 THEN ASM_REWRITE_TAC[]
497 THEN REPLICATE_TAC (16-10)(POP_ASSUM MP_TAC)
498 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
499 THEN MRESA_TAC th[`i:num`]));;
500
501
502
503 let DEFORMATION_DIST_LE_V3_DEFOR_A_COM=prove_by_refinement(`is_scs_v39 s /\
504   MMs_v39 s w /\
505   scs_k_v39 s =k/\
506  3<k /\ w l=v2/\ w (SUC l) =v1
507 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
508 /\ 
509   (!i. ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)          ==> scs_a_v39 s l i < dist (v2,w i))
510 ==>   ?e. &0< e/\
511 (!t i. &0< t/\ t< e /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k) ==> scs_a_v39 s l i < dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))`,
512 [
513 REPEAT STRIP_TAC
514 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A
515 THEN RESA_TAC
516 THEN POP_ASSUM MP_TAC
517 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
518 THEN REWRITE_TAC[SKOLEM_THM]
519 THEN STRIP_TAC
520 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`
521 THEN EXISTS_TAC`e1:real`
522 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`ASSUME_TAC;
523
524 MATCH_MP_TAC FINITE_SUBSET
525 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
526 THEN STRIP_TAC;
527
528 MATCH_MP_TAC FINITE_IMAGE
529 THEN REWRITE_TAC[FINITE_NUMSEG];
530
531 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_ELIM_THM]
532 THEN GEN_TAC
533 THEN RESA_TAC
534 THEN EXISTS_TAC`i:num`
535 THEN ASM_REWRITE_TAC[IN_NUMSEG]
536 THEN REPLICATE_TAC (16-12)(POP_ASSUM MP_TAC)
537 THEN ARITH_TAC;
538
539 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)} = {})`ASSUME_TAC;
540
541 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
542 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(l MOD k =0)`)
543 THEN RESA_TAC;
544
545 EXISTS_TAC`(e:num->real)1`
546 THEN EXISTS_TAC`1`
547 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
548 THEN MP_TAC(ARITH_RULE`3<k==> 1<k/\ 2<k /\ ~(k=0)/\ SUC 1=2/\ ~(0=1)/\ ~(0=2)`)
549 THEN RESA_TAC
550 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
551 THEN MRESA_TAC MOD_LT[`2`;`k:num`];
552
553 MP_TAC(SET_RULE`l MOD k=1\/ ~(l MOD k= 1 )`)
554 THEN RESA_TAC;
555
556 EXISTS_TAC`(e:num->real)2`
557 THEN EXISTS_TAC`2`
558 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
559 THEN MP_TAC(ARITH_RULE`3<k==> 1<k/\ 2<k /\ ~(k=0)/\ SUC 1=2/\ ~(1=2)/\ ~(1=3)/\ SUC 2=3`)
560 THEN RESA_TAC
561 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
562 THEN MRESA_TAC MOD_LT[`3`;`k:num`];
563
564 EXISTS_TAC`(e:num->real)0`
565 THEN EXISTS_TAC`0`
566 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
567 THEN MP_TAC(ARITH_RULE`3<k==> 0<k/\ 1<k /\ ~(k=0)/\ SUC 1=2/\ ~(1=2)/\ ~(1=3)/\ SUC 0=1`)
568 THEN RESA_TAC
569 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
570 THEN MRESA_TAC MOD_LT[`1`;`k:num`];
571
572 STRIP_TAC;
573
574 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`;`&0`]
575 THEN REWRITE_TAC[IN_ELIM_THM]
576 THEN REPEAT RESA_TAC
577 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
578 THEN REPLICATE_TAC (20-11) (POP_ASSUM MP_TAC)
579 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
580 THEN MRESA_TAC th[`i:num`]);
581
582 REPEAT STRIP_TAC
583 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`;`t:real`]
584 THEN POP_ASSUM MP_TAC
585 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`ASSUME_TAC;
586
587 REWRITE_TAC[IN_ELIM_THM]
588 THEN EXISTS_TAC`i MOD k`
589 THEN ASM_REWRITE_TAC[]
590 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
591 THEN RESA_TAC
592 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
593 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
594 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
595 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1];
596
597 STRIP_TAC
598 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
599 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
600 THEN RESA_TAC
601 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
602 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
603 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
604 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1]
605 THEN REPLICATE_TAC (27-11) (POP_ASSUM MP_TAC)
606 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
607 THEN MRESA_TAC th[`i:num MOD k`])
608 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
609 THEN ASM_TAC
610 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
611 THEN REPEAT RESA_TAC
612 THEN POP_ASSUM MP_TAC
613 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
614 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
615 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
616 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])]);;
617
618
619
620 let DEFORMATION_DIST_LE_V3_DEFOR_A_SUC=prove(`is_scs_v39 s /\
621   MMs_v39 s w /\
622   scs_k_v39 s =k/\
623  3<k /\ w l=v2/\ w (SUC l) =v1
624 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
625 /\ 
626   (!i. ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)          ==> scs_a_v39 s l i < dist (v2,w i))
627 ==> (!i. ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k) ==> ?e. &0< e/\
628 (!t. &0< t/\ t< e  ==> scs_a_v39 s l i < dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)))`,
629 STRIP_TAC 
630 THEN MP_TAC HYPER_MM_COLLINEAR
631 THEN RESA_TAC
632 THEN REPEAT STRIP_TAC
633 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST
634 THEN ASM_REWRITE_TAC[]
635 THEN REPLICATE_TAC (16-10)(POP_ASSUM MP_TAC)
636 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
637 THEN MRESA_TAC th[`i:num`]));;
638
639
640
641 let DEFORMATION_DIST_LE_V3_DEFOR_A_COM_SUC=prove_by_refinement(
642 `is_scs_v39 s /\
643   MMs_v39 s w /\
644   scs_k_v39 s =k/\
645  3<k /\ w l=v2/\ w (SUC l) =v1
646 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
647 /\ 
648   (!i. ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)          ==> scs_a_v39 s l i < dist (v2,w i))
649 ==>   ?e. &0< e/\
650 (!t i. &0< t/\ t< e /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k) ==> scs_a_v39 s l i < dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))`,
651 [
652 REPEAT STRIP_TAC
653 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_SUC
654 THEN RESA_TAC
655 THEN POP_ASSUM MP_TAC
656 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
657 THEN REWRITE_TAC[SKOLEM_THM]
658 THEN STRIP_TAC
659 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`
660 THEN EXISTS_TAC`e1:real`
661 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`ASSUME_TAC;
662
663 MATCH_MP_TAC FINITE_SUBSET
664 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
665 THEN STRIP_TAC;
666
667 MATCH_MP_TAC FINITE_IMAGE
668 THEN REWRITE_TAC[FINITE_NUMSEG];
669
670 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_ELIM_THM]
671 THEN GEN_TAC
672 THEN RESA_TAC
673 THEN EXISTS_TAC`i:num`
674 THEN ASM_REWRITE_TAC[IN_NUMSEG]
675 THEN REPLICATE_TAC (16-12)(POP_ASSUM MP_TAC)
676 THEN ARITH_TAC;
677
678 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)} = {})`ASSUME_TAC;
679
680 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
681 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(l MOD k =0)`)
682 THEN RESA_TAC;
683
684
685 EXISTS_TAC`(e:num->real)2`
686 THEN EXISTS_TAC`2`
687 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
688 THEN MP_TAC(ARITH_RULE`3<k==> 0<k/\ 1<k/\ 2<k /\ ~(k=0)/\ SUC 1=2/\ ~(0=1)/\ ~(0=2)/\ SUC 0=1/\ ~(1=2)`)
689 THEN RESA_TAC
690 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
691 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
692 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
693 THEN MRESA_TAC (GEN_ALL Zithlqn.IMP_SUC_MOD_EQ)[`l:num`;`0:num`;`k:num`];
694
695 MP_TAC(SET_RULE`l MOD k=1\/ ~(l MOD k= 1 )`)
696 THEN RESA_TAC;
697
698 EXISTS_TAC`(e:num->real)3`
699 THEN EXISTS_TAC`3`
700 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
701 THEN MP_TAC(ARITH_RULE`3<k==> 0<k/\ 1<k/\ 2<k/\ 3<k /\ ~(k=0)/\ SUC 1=2/\ ~(0=1)/\ ~(0=2)/\ SUC 0=1/\ ~(1=2)/\ ~(1=3)/\ ~(2=3)`)
702 THEN RESA_TAC
703 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
704 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
705 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
706 THEN MRESA_TAC MOD_LT[`3`;`k:num`]
707 THEN MRESA_TAC (GEN_ALL Zithlqn.IMP_SUC_MOD_EQ)[`l:num`;`1:num`;`k:num`];
708
709 EXISTS_TAC`(e:num->real)1`
710 THEN EXISTS_TAC`1`
711 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
712 THEN MP_TAC(ARITH_RULE`3<k==> 0<k/\ 1<k/\ 2<k/\ 3<k /\ ~(k=0)/\ SUC 1=2/\ ~(0=1)/\ ~(0=2)/\ SUC 0=1/\ ~(1=2)/\ ~(1=3)/\ ~(2=3)`)
713 THEN RESA_TAC
714 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
715 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
716 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
717 THEN MRESA_TAC MOD_LT[`3`;`k:num`]
718 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l:num`;`0:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`];
719
720 STRIP_TAC;
721
722 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`;`&0`]
723 THEN REWRITE_TAC[IN_ELIM_THM]
724 THEN REPEAT RESA_TAC
725 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
726 THEN REPLICATE_TAC (20-11) (POP_ASSUM MP_TAC)
727 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
728 THEN MRESA_TAC th[`i:num`]);
729
730 REPEAT STRIP_TAC
731 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`;`t:real`]
732 THEN POP_ASSUM MP_TAC
733 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`ASSUME_TAC;
734
735 REWRITE_TAC[IN_ELIM_THM]
736 THEN EXISTS_TAC`i MOD k`
737 THEN ASM_REWRITE_TAC[]
738 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
739 THEN RESA_TAC
740 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
741 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
742 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
743 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1];
744
745 STRIP_TAC
746 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
747 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
748 THEN RESA_TAC
749 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
750 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
751 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
752 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1]
753 THEN REPLICATE_TAC (27-11) (POP_ASSUM MP_TAC)
754 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
755 THEN MRESA_TAC th[`i:num MOD k`])
756 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
757 THEN ASM_TAC
758 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
759 THEN REPEAT RESA_TAC
760 THEN POP_ASSUM MP_TAC
761 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
762 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
763 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
764 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])]);;
765
766
767 (***SCS_B***)
768
769 let EXISTS_SMALL_LT_CONST=prove(`&0< x1 /\ &0<x2   /\ &0< x6 /\
770 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a = -- &1 /\ dist(v2,w)<c
771 ==>
772 ?e. &0< e /\ (!t. &0<t /\ t<e ==> dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w)<c)`,
773 STRIP_TAC
774 THEN MP_TAC UPS_X_POS_SEG
775 THEN RESA_TAC
776 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`]
777 THEN ASSUME_TAC th)
778 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_ID)[`a:real`;`v1:real^3`;`x1:real`;`x6:real`;`x2:real`;`v2:real^3`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`]
779 THEN MP_TAC(REAL_ARITH`dist(v2,w:real^3)<c==> &0< (c-dist(v2,w:real^3))/ &2/\  dist (v2,w) + (c-dist (v2,w) ) / &2<c`)
780 THEN RESA_TAC
781 THEN MRESAL_TAC (GEN_ALL EYYPQDW_CONTINUOUS_LIFT_DIST)[`x2:real`;`a:real`;`v1:real^3`;`v2:real^3`;`x1:real`;`x2:real`;`x6:real`;`x6:real`;`w:real^3`;`x2:real`][SET_RULE`A IN {A, B}`;continuous_atreal;DIST_LIFT;o_DEF;GSYM REAL_ABS_BETWEEN]
782 THEN POP_ASSUM (fun th-> MRESA_TAC th[`(c-dist(v2,w:real^3))/ &2`])
783 THEN POP_ASSUM MP_TAC
784 THEN RESA_TAC
785 THEN EXISTS_TAC`d:real`
786 THEN ASM_REWRITE_TAC[]
787 THEN GEN_TAC
788 THEN POP_ASSUM(fun th-> STRIP_TAC
789 THEN MP_TAC(REAL_ARITH` &0< d/\ &0<t ==> --d<t`)
790 THEN RESA_TAC
791 THEN MRESAL_TAC th[`x2-t:real`][REAL_ARITH`x2 - d < x2 - t /\ x2 - t < x2 + d <=> --d<t/\ t<d`])
792 THEN ASM_TAC
793 THEN REAL_ARITH_TAC);;
794
795
796 let EXISTS_SMALL_LT_CONST_V1=prove(`&0< x1 /\ &0<x2   /\ &0< x6 /\
797 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a = -- &1 /\ dist(v2,w)<c
798 ==>
799 ?e. &0< e /\ (!t. --e <t /\ t<e ==> dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w)<c)`,
800 STRIP_TAC
801 THEN MP_TAC UPS_X_POS_SEG
802 THEN RESA_TAC
803 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`]
804 THEN ASSUME_TAC th)
805 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_ID)[`a:real`;`v1:real^3`;`x1:real`;`x6:real`;`x2:real`;`v2:real^3`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`]
806 THEN MP_TAC(REAL_ARITH`dist(v2,w:real^3)<c==> &0< (c-dist(v2,w:real^3))/ &2/\  dist (v2,w) + (c-dist (v2,w) ) / &2<c`)
807 THEN RESA_TAC
808 THEN MRESAL_TAC (GEN_ALL EYYPQDW_CONTINUOUS_LIFT_DIST)[`x2:real`;`a:real`;`v1:real^3`;`v2:real^3`;`x1:real`;`x2:real`;`x6:real`;`x6:real`;`w:real^3`;`x2:real`][SET_RULE`A IN {A, B}`;continuous_atreal;DIST_LIFT;o_DEF;GSYM REAL_ABS_BETWEEN]
809 THEN POP_ASSUM (fun th-> MRESA_TAC th[`(c-dist(v2,w:real^3))/ &2`])
810 THEN POP_ASSUM MP_TAC
811 THEN RESA_TAC
812 THEN EXISTS_TAC`d:real`
813 THEN ASM_REWRITE_TAC[]
814 THEN GEN_TAC
815 THEN POP_ASSUM(fun th-> STRIP_TAC
816 THEN MRESAL_TAC th[`x2-t:real`][REAL_ARITH`x2 - d < x2 - t /\ x2 - t < x2 + d <=> --d<t/\ t<d`])
817 THEN ASM_TAC
818 THEN REAL_ARITH_TAC);;
819
820
821
822 let DEFORMATION_DIST_LE_V3_DEFOR_B_SUC=prove_by_refinement(
823 `  scs_k_v39 s =k/\
824  3<k /\ is_scs_v39 s /\
825   MMs_v39 s w /\
826  w l=v2/\ w (SUC l) =v1
827 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
828 /\     (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
829 ==> (!i. scs_diag k l i ==> ?e. &0< e/\
830 (!t. &0< t/\ t< e  ==>  dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)<scs_b_v39 s l i)) `,
831 [STRIP_TAC 
832 THEN MP_TAC HYPER_MM_COLLINEAR
833 THEN RESA_TAC
834 THEN REPEAT STRIP_TAC
835 THEN MATCH_MP_TAC EXISTS_SMALL_LT_CONST
836 THEN ASM_REWRITE_TAC[]
837 THEN ASM_TAC
838 THEN STRIP_TAC
839 THEN STRIP_TAC
840 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)`)
841 THEN RESA_TAC
842 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
843 THEN REPEAT RESA_TAC
844 THEN SUBGOAL_THEN`v2 IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
845
846  REWRITE_TAC[IN_ELIM_THM;IMAGE]
847 THEN EXISTS_TAC`l:num`
848 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
849
850 SUBGOAL_THEN`w i IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
851
852  REWRITE_TAC[IN_ELIM_THM;IMAGE]
853 THEN EXISTS_TAC`i:num`
854 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
855
856 MP_TAC(SET_RULE`v2 IN IMAGE w (:num)/\ w i IN IMAGE w (:num)/\ IMAGE w (:num) SUBSET ball_annulus ==> v2 IN  ball_annulus/\ w i IN ball_annulus`)
857 THEN ASM_REWRITE_TAC[]
858 THEN REWRITE_TAC[IN_ELIM_THM;DIFF;ball_annulus;cball;]
859 THEN REPEAT STRIP_TAC
860 THEN MRESA_TAC DIST_TRIANGLE[`v2:real^3`;`vec 0:real^3`;`(w:num->real^3) i`]
861 THEN MP_TAC(REAL_ARITH`dist (v2,vec 0) <= &2 * h0/\ dist (vec 0,w i) <= &2 * h0/\ dist (v2,w i) <= dist (v2,vec 0) + dist (vec 0,w i)
862 ==> dist (v2,(w:num->real^3) i)<= &4 *h0`)
863 THEN ASM_REWRITE_TAC[]
864 THEN ONCE_REWRITE_TAC[DIST_SYM]
865 THEN ASM_REWRITE_TAC[]
866 THEN ONCE_REWRITE_TAC[DIST_SYM]
867 THEN REPLICATE_TAC (53-41)(POP_ASSUM MP_TAC)
868 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
869 THEN MRESA_TAC th[`i:num`])
870 THEN REPLICATE_TAC (2)(POP_ASSUM MP_TAC)
871 THEN REAL_ARITH_TAC]);;
872
873
874
875
876
877 let xrr_decreasing_lt = prove_by_refinement(
878 `!y1 y1' y2 y6. &2 <= y1 /\ &2 <= y1' /\ &2 <= y2 /\ &2 <= y6 /\ y2 <= &2 * h0 /\ y1 < y1' ==>
879     xrr y1' y2 y6 < xrr y1 y2 y6`,
880   (* {{{ proof *)
881 [  REPEAT WEAKER_STRIP_TAC;
882   INTRO_TAC REAL_MVT_SIMPLE [`(\q. xrr q y2 y6)`;`\q. ( -- &4 * ((q*q + y6*y6 - y2*y2)/ (q pow 2 * y2)))`;`y1`;`y1'`];
883   REWRITE_TAC[IN_REAL_INTERVAL];
884   ANTS_TAC;
885     CONJ_TAC;
886       BY(ASM_TAC THEN REAL_ARITH_TAC);
887     REPEAT WEAKER_STRIP_TAC;
888     MATCH_MP_TAC HAS_REAL_DERIVATIVE_ATREAL_WITHIN;
889     INTRO_TAC derived_form_xrr_wrt_y1 [`x`;`y2`;`y6`];
890     REWRITE_TAC[Calc_derivative.derived_form;WITHINREAL_UNIV];
891     DISCH_THEN MATCH_MP_TAC;
892     BY(ASM_TAC THEN REAL_ARITH_TAC);
893   REPEAT WEAKER_STRIP_TAC;
894   ONCE_REWRITE_TAC [arith `x < y <=> &0 < y - x`];
895   RULE_ASSUM_TAC(ONCE_REWRITE_RULE[arith `x' - x = (-- &4 * u/v) * z <=> x - x' = &4 * u/ v * z`]);
896   ASM_REWRITE_TAC[];
897   GMATCH_SIMP_TAC REAL_LT_MUL;
898   GMATCH_SIMP_TAC REAL_LT_MUL;
899   GMATCH_SIMP_TAC REAL_LT_DIV;
900   GMATCH_SIMP_TAC REAL_LT_MUL;
901   REWRITE_TAC[GSYM Trigonometry2.NOT_ZERO_EQ_POW2_LT];
902   ENOUGH_TO_SHOW_TAC ` &0 < x * x + y6 * y6 - y2 * y2`;
903     BY(ASM_TAC THEN REAL_ARITH_TAC);
904   MATCH_MP_TAC REAL_LT_TRANS;
905   TYPIFY `&2 * &2 + &2 * &2 - (&2 * h0) * (&2 * h0)` EXISTS_TAC;
906   CONJ_TAC;
907     BY(REWRITE_TAC[Sphere.h0] THEN REAL_ARITH_TAC);
908   MATCH_MP_TAC (arith `x < x' /\ y <= y' /\ z' <= z ==> x + y - z < x' + y' - z'`);
909   GMATCH_SIMP_TAC Misc_defs_and_lemmas.ABS_SQUARE_LE;
910   GMATCH_SIMP_TAC Misc_defs_and_lemmas.ABS_SQUARE_LE;
911   GMATCH_SIMP_TAC Misc_defs_and_lemmas.ABS_SQUARE;
912   BY(ASM_TAC THEN REAL_ARITH_TAC)
913   ]);;
914   (* }}} *)
915
916
917
918
919
920 let exp_aff_gt_by_dot=prove_by_refinement(`!x:real^3 v:real^3 u:real^3.
921 ~collinear {x,v,u}
922 ==> aff_gt {x,v} {u}={w:real^3| (w-x) dot (e2_fan x v u)= &0 /\ &0 < (w-x) dot (e1_fan x v u)  }`,
923 let CROSS_LAGRANGE1 = prove
924  (`!x y z. (x cross y) cross z = (x dot z) % y - (z dot y) % x`,
925   VEC3_TAC) in
926 [REPEAT STRIP_TAC THEN MP_TAC(ISPECL[`x:real^3`;`v:real^3`;`u:real^3`]th3) THEN RES_TAC
927   THEN MP_TAC(ISPECL[`x:real^3`;`v:real^3`;`u:real^3`]AFF_GT_2_1) THEN RESA_TAC
928   THEN MP_TAC(ISPECL[`x:real^3`;`v:real^3`;`u:real^3`]properties_coordinate) THEN RESA_TAC
929   THEN REWRITE_TAC[EXTENSION;IN_ELIM_THM] THEN GEN_TAC THEN EQ_TAC;
930
931 STRIP_TAC THEN ASM_REWRITE_TAC[VECTOR_ARITH`(a % x + b +c) -x= (a- &1)% x + b + c `] THEN 
932 REMOVE_ASSUM_TAC THEN SYM_ASSUM_TAC THEN REWRITE_TAC[VECTOR_ARITH`((a-(a+b+c)) % x + b % v +c % u)=  b % (v-x) + c % (u-x)`] 
933 THEN ASM_REWRITE_TAC[DOT_LADD;DOT_LMUL]
934    THEN REDUCE_ARITH_TAC
935   THEN ASM_MESON_TAC[REAL_LT_MUL] ;
936 STRIP_TAC THEN POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC THEN DISCH_THEN(LABEL_TAC"a")
937   THEN DISCH_THEN(LABEL_TAC"b")
938 THEN MP_TAC(ISPECL[`e1_fan (x:real^3) (v:real^3) (u:real^3)`;`e2_fan (x:real^3)( v:real^3) (u:real^3)`;
939 `e3_fan (x:real^3) (v:real^3) (u:real^3)`;]ORTHONORMAL_IMP_SPANNING) THEN ASM_REWRITE_TAC[SPAN_3;EXTENSION] 
940   THEN DISCH_TAC THEN POP_ASSUM(fun th-> MP_TAC(ISPEC`(x':real^3)-(x:real^3)`th)) THEN REWRITE_TAC[SET_RULE`(a:real^3) IN (:real^3)`;IN_ELIM_THM] THEN RES_TAC THEN REMOVE_THEN "a" MP_TAC THEN ASM_REWRITE_TAC[DOT_LADD;DOT_LMUL]
941   THEN POP_ASSUM MP_TAC THEN DISCH_THEN(LABEL_TAC"c")
942   THEN FIND_ASSUM(MP_TAC)`orthonormal (e1_fan (x:real^3) (v:real^3) (u:real^3)) (e2_fan x v u) (e3_fan x v u)`
943   THEN REWRITE_TAC[orthonormal] THEN STRIP_TAC THEN ASM_REWRITE_TAC[]  THEN ASM_REWRITE_TAC[DOT_SYM]
944   THEN REDUCE_ARITH_TAC
945   THEN DISCH_TAC THEN REMOVE_THEN "c" MP_TAC THEN ASM_REWRITE_TAC[] THEN REDUCE_VECTOR_TAC THEN DISCH_THEN (LABEL_TAC"a")
946   THEN REMOVE_THEN "b" MP_TAC THEN ASM_REWRITE_TAC[DOT_LADD;DOT_LMUL;] THEN REWRITE_TAC[DOT_SYM] THEN ASM_REWRITE_TAC[]
947   THEN REDUCE_ARITH_TAC
948   THEN DISCH_TAC THEN REMOVE_THEN "a" MP_TAC
949   THEN ASM_REWRITE_TAC[e1_fan;e2_fan;CROSS_LMUL;VECTOR_ARITH`a% b% v=(a*b)%v`;CROSS_LAGRANGE1] 
950   THEN REDUCE_VECTOR_TAC THEN REWRITE_TAC[VECTOR_ARITH`a%(x- b % v)+ c % v=(c- a* b) % v+  a % x `;
951 e3_fan;VECTOR_ARITH`a% b% v=(a*b)%v`]
952   THEN STRIP_TAC THEN
953 EXISTS_TAC
954 `&1 - ((((w:real) -
955    ((u':real) * inv (norm (inv (norm ((v:real^3) - (x:real^3))) % (v - x) cross ((u:real^3) - x)))) *
956    (inv (norm (v - x)) % (v - x) dot (u - x))) *
957   inv (norm (v - x)))+
958 ((u':real) * inv (norm (e3_fan (x:real^3) (v:real^3) (u:real^3) cross (u - x)))))`
959   THEN EXISTS_TAC
960 `(((w:real) -
961    ((u':real) * inv (norm (inv (norm ((v:real^3) - (x:real^3))) % (v - x) cross ((u:real^3) - x)))) *
962    (inv (norm (v - x)) % (v - x) dot (u - x))) *
963   inv (norm (v - x)))`
964   THEN EXISTS_TAC
965 ` ((u':real) * inv (norm (e3_fan (x:real^3) (v:real^3) (u:real^3) cross (u - x))))`
966 THEN
967 STRIP_TAC;
968
969 SUBGOAL_THEN `~(collinear {vec 0, v-x, u-x})==> ~((e3_fan (x:real^3) (v:real^3) (u:real^3)) cross ((u:real^3)-(x:real^3))= vec 0)` ASSUME_TAC;
970
971  MATCH_MP_TAC MONO_NOT THEN REWRITE_TAC[e3_fan;CROSS_LMUL] 
972 THEN DISCH_TAC THEN MP_TAC(ISPECL [`v:real^3`; `x:real^3`] imp_inv_norm_not_zero_fan) 
973 THEN ASM_REWRITE_TAC[] THEN DISCH_TAC THEN 
974 MP_TAC(ISPECL [`inv(norm((v:real^3)-(x:real^3)))`; `((v:real^3) -(x:real^3)) cross ((u:real^3)-(x:real^3))`; `(vec 0):real^3`] VECTOR_MUL_LCANCEL_IMP) 
975 THEN ASM_REWRITE_TAC[VECTOR_MUL_RZERO;CROSS_EQ_0 ];
976
977 POP_ASSUM MP_TAC THEN REWRITE_TAC[GSYM COLLINEAR_3] 
978 THEN GEN_REWRITE_TAC(LAND_CONV o LAND_CONV o RAND_CONV o ONCE_DEPTH_CONV)[SET_RULE`{a,b,c}={b,a,c}`] THEN RED_TAC
979 THEN
980 MP_TAC(ISPECL [`(e3_fan (x:real^3) (v:real^3) (u:real^3)) cross ((u:real^3)-(x:real^3))`; `((vec 0):real^3)`] imp_norm_gl_zero_fan)
981   THEN REDUCE_VECTOR_TAC THEN RES_TAC THEN 
982 MP_TAC(ISPECL[`u':real`;`inv (norm ((e3_fan (x:real^3) (v:real^3) (u:real^3)) cross ((u:real^3)-(x:real^3))))`] 
983 REAL_LT_MUL) THEN RES_TAC THEN POP_ASSUM MATCH_MP_TAC THEN POP_ASSUM MP_TAC
984  THEN REAL_ARITH_TAC;
985
986 STRIP_TAC THENL[REAL_ARITH_TAC;
987 REWRITE_TAC[e3_fan] THEN POP_ASSUM MP_TAC THEN VECTOR_ARITH_TAC]
988 ]);;
989
990
991 let exp_aff_by_dot=prove_by_refinement(
992 `!x:real^3 v:real^3 u:real^3.
993 ~collinear {x,v,u}
994 ==> aff {x,v,u}={w:real^3| (w-x) dot (e2_fan x v u)= &0  }`,
995 let CROSS_LAGRANGE1 = prove
996  (`!x y z. (x cross y) cross z = (x dot z) % y - (z dot y) % x`,
997   VEC3_TAC) in
998 [
999 REPEAT STRIP_TAC THEN MP_TAC(ISPECL[`x:real^3`;`v:real^3`;`u:real^3`]th3) THEN RES_TAC
1000   THEN ASM_SIMP_TAC[aff;aff;Collect_geom2.AFFINE_HULL_3]
1001   THEN MP_TAC(ISPECL[`x:real^3`;`v:real^3`;`u:real^3`]properties_coordinate) THEN RESA_TAC
1002   THEN REWRITE_TAC[EXTENSION;IN_ELIM_THM] THEN GEN_TAC THEN EQ_TAC;
1003
1004 STRIP_TAC THEN ASM_REWRITE_TAC[VECTOR_ARITH`(a % x + b +c) -x= (a- &1)% x + b + c `] THEN 
1005 REMOVE_ASSUM_TAC THEN SYM_ASSUM_TAC THEN REWRITE_TAC[VECTOR_ARITH`((a-(a+b+c)) % x + b % v +c % u)=  b % (v-x) + c % (u-x)`] 
1006 THEN ASM_REWRITE_TAC[DOT_LADD;DOT_LMUL]
1007    THEN REDUCE_ARITH_TAC
1008   THEN ASM_MESON_TAC[REAL_LT_MUL] ;
1009
1010 STRIP_TAC THEN POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC THEN DISCH_THEN(LABEL_TAC"a")
1011   THEN DISCH_THEN(LABEL_TAC"b")
1012 THEN MP_TAC(ISPECL[`e1_fan (x:real^3) (v:real^3) (u:real^3)`;`e2_fan (x:real^3)( v:real^3) (u:real^3)`;
1013 `e3_fan (x:real^3) (v:real^3) (u:real^3)`;]ORTHONORMAL_IMP_SPANNING) THEN ASM_REWRITE_TAC[SPAN_3;EXTENSION] 
1014   THEN DISCH_TAC THEN POP_ASSUM(fun th-> MP_TAC(ISPEC`(x':real^3)-(x:real^3)`th)) THEN REWRITE_TAC[SET_RULE`(a:real^3) IN (:real^3)`;IN_ELIM_THM] THEN RES_TAC THEN REMOVE_THEN "a" MP_TAC THEN ASM_REWRITE_TAC[DOT_LADD;DOT_LMUL]
1015   THEN POP_ASSUM MP_TAC THEN DISCH_THEN(LABEL_TAC"c")
1016   THEN FIND_ASSUM(MP_TAC)`orthonormal (e1_fan (x:real^3) (v:real^3) (u:real^3)) (e2_fan x v u) (e3_fan x v u)`
1017   THEN REWRITE_TAC[orthonormal] THEN STRIP_TAC THEN ASM_REWRITE_TAC[]  THEN ASM_REWRITE_TAC[DOT_SYM]
1018   THEN REDUCE_ARITH_TAC
1019   THEN DISCH_TAC THEN REMOVE_THEN "c" MP_TAC THEN ASM_REWRITE_TAC[] THEN REDUCE_VECTOR_TAC 
1020 THEN DISCH_THEN (LABEL_TAC"a")
1021   THEN REMOVE_THEN "b" MP_TAC THEN ASM_REWRITE_TAC[DOT_LADD;DOT_LMUL;] THEN REWRITE_TAC[DOT_SYM] THEN ASM_REWRITE_TAC[]
1022   THEN REDUCE_ARITH_TAC
1023   THEN DISCH_TAC THEN REMOVE_THEN "a" MP_TAC
1024 THEN ASM_REWRITE_TAC[]
1025 THEN REDUCE_VECTOR_TAC 
1026   THEN ASM_REWRITE_TAC[e1_fan;e2_fan;CROSS_LMUL;VECTOR_ARITH`a% b% v=(a*b)%v`;CROSS_LAGRANGE1] 
1027   THEN REDUCE_VECTOR_TAC 
1028 THEN REWRITE_TAC[VECTOR_ARITH`a%(x- b % v)+ c % v=(c- a* b) % v+  a % x `;
1029 e3_fan;VECTOR_ARITH`a% b% v=(a*b)%v`]
1030   THEN STRIP_TAC 
1031 THEN
1032 EXISTS_TAC
1033 `&1 - ((((w:real) -
1034    ((u':real) * inv (norm (inv (norm ((v:real^3) - (x:real^3))) % (v - x) cross ((u:real^3) - x)))) *
1035    (inv (norm (v - x)) % (v - x) dot (u - x))) *
1036   inv (norm (v - x)))+
1037 ((u':real) * inv (norm (e3_fan (x:real^3) (v:real^3) (u:real^3) cross (u - x)))))`
1038   THEN EXISTS_TAC
1039 `(((w:real) -
1040    ((u':real) * inv (norm (inv (norm ((v:real^3) - (x:real^3))) % (v - x) cross ((u:real^3) - x)))) *
1041    (inv (norm (v - x)) % (v - x) dot (u - x))) *
1042   inv (norm (v - x)))`
1043   THEN EXISTS_TAC
1044 ` ((u':real) * inv (norm (e3_fan (x:real^3) (v:real^3) (u:real^3) cross (u - x))))`;
1045
1046
1047
1048 STRIP_TAC ;
1049 REAL_ARITH_TAC;
1050 REWRITE_TAC[e3_fan] 
1051 THEN  POP_ASSUM MP_TAC
1052 THEN VECTOR_ARITH_TAC;
1053 ]);;
1054
1055
1056
1057
1058
1059 let IN_AFF_EQ_DOT_E2_FAN=prove(` ~collinear {vec 0,x,y}
1060 ==>(
1061 e2_fan (vec 0) x y dot z = &0 <=> z IN aff {vec 0, x, y}) `,
1062 STRIP_TAC
1063 THEN ONCE_REWRITE_TAC[DOT_SYM]
1064 THEN ASM_SIMP_TAC[exp_aff_by_dot;IN_ELIM_THM]
1065 THEN REDUCE_VECTOR_TAC);;
1066
1067
1068
1069
1070 let OPEN_RELA_AFF_GT=prove_by_refinement(` ~collinear {vec 0,z,x}/\ ~collinear {vec 0,x,y} /\ z IN aff_gt {vec 0} {x,y:real^3} ==> ?e. &0< e/\ ball(z,e) INTER aff{vec 0, x,z} SUBSET  aff_gt {vec 0} {x,y}`,
1071 [
1072 STRIP_TAC
1073 THEN POP_ASSUM MP_TAC
1074 THEN ASM_SIMP_TAC[Planarity.aff_gt_inter_aff_gt;exp_aff_gt_by_dot;]
1075 THEN POP_ASSUM MP_TAC
1076 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
1077 THEN STRIP_TAC
1078 THEN ASM_SIMP_TAC[Planarity.aff_gt_inter_aff_gt;exp_aff_gt_by_dot;Conforming.aff_3_rep_cross_dot;INTER;IN_ELIM_THM;VECTOR_ARITH`a- vec 0=a`;exp_aff_by_dot]
1079 THEN ONCE_REWRITE_TAC[DOT_SYM]
1080 THEN REPEAT STRIP_TAC
1081 THEN MP_TAC(REAL_ARITH`&0< e1_fan (vec 0:real^3) y x dot z ==> &0<(e1_fan (vec 0) y x dot z)/ &2/\ &0< e1_fan (vec 0) y x dot z - (e1_fan (vec 0) y x dot z) / &2`)
1082 THEN RESA_TAC
1083 THEN MP_TAC(REAL_ARITH`&0< e1_fan (vec 0:real^3) x y dot z ==> &0<(e1_fan (vec 0) x y dot z)/ &2/\ &0< e1_fan (vec 0) x y dot z - (e1_fan (vec 0) x y dot z) / &2`)
1084 THEN RESA_TAC
1085 THEN MRESAL_TAC (GEN_ALL CONTINUOUS_AT_LIFT_DOT)[`e1_fan (vec 0:real^3) y x`;`z:real^3`][CONTINUOUS_AT_LIFT_RANGE;GSYM REAL_ABS_BETWEEN]
1086 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(e1_fan (vec 0) y x dot z) / &2`])
1087 THEN MRESAL_TAC (GEN_ALL CONTINUOUS_AT_LIFT_DOT)[`e1_fan (vec 0:real^3)  x y`;`z:real^3`][CONTINUOUS_AT_LIFT_RANGE;GSYM REAL_ABS_BETWEEN;SUBSET;IN_ELIM_THM;ball;]
1088 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(e1_fan (vec 0) x y dot z) / &2`])
1089 THEN EXISTS_TAC`min d d'`
1090 THEN MP_TAC(REAL_ARITH`&0< d/\ &0< d' ==> &0< min d d'`)
1091 THEN RESA_TAC
1092 THEN ONCE_REWRITE_TAC[DIST_SYM]
1093 THEN REWRITE_TAC[dist]
1094 THEN GEN_TAC
1095 THEN POP_ASSUM MP_TAC
1096 THEN POP_ASSUM(fun th->
1097 POP_ASSUM MP_TAC
1098 THEN POP_ASSUM(fun th1-> STRIP_TAC THEN STRIP_TAC THEN STRIP_TAC
1099 THEN STRIP_TAC
1100 THEN MP_TAC(REAL_ARITH`norm (x' - z) < min d d' /\ &0<d/\ &0< d' ==> norm(x'-z)< d/\ norm(x'-z:real^3)< d'`)
1101 THEN RESA_TAC
1102 THEN MRESA_TAC th1[`x':real^3`])
1103 THEN MRESA_TAC th[`x':real^3`])
1104 THEN MP_TAC(REAL_ARITH`e1_fan (vec 0) x y dot z - (e1_fan (vec 0) x y dot z) / &2 <
1105       e1_fan (vec 0) x y dot x'
1106 /\ &0 < e1_fan (vec 0) x y dot z - (e1_fan (vec 0) x y dot z) / &2
1107 ==> &0<  e1_fan (vec 0:real^3) x y dot x'
1108 `)
1109 THEN MP_TAC(REAL_ARITH`e1_fan (vec 0) y x dot z - (e1_fan (vec 0) y x dot z) / &2 <
1110       e1_fan (vec 0) y x dot x'
1111 /\ &0 < e1_fan (vec 0)  y x dot z - (e1_fan (vec 0) y x dot z) / &2
1112 ==> &0<  e1_fan (vec 0:real^3) y x dot x'
1113 `)
1114 THEN RESA_TAC
1115 THEN RESA_TAC
1116 THEN REPLICATE_TAC (22-14) (POP_ASSUM MP_TAC)
1117 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1118 THEN MP_TAC th)
1119 THEN REPLICATE_TAC (21-2) (POP_ASSUM MP_TAC)
1120 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1121 THEN MP_TAC th)
1122 THEN POP_ASSUM MP_TAC
1123 THEN REDUCE_VECTOR_TAC 
1124 THEN ASM_SIMP_TAC[IN_AFF_EQ_DOT_E2_FAN]
1125 THEN ASM_TAC
1126 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
1127 THEN REPEAT STRIP_TAC
1128 THEN REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
1129 THEN ASM_SIMP_TAC[IN_AFF_EQ_DOT_E2_FAN;aff;IN_ELIM_THM;Collect_geom2.AFFINE_HULL_3]
1130 THEN RESA_TAC
1131 THEN RESA_TAC
1132 THEN REDUCE_VECTOR_TAC 
1133 THEN EXISTS_TAC`&1 - v - w * v' - w* w'`
1134 THEN EXISTS_TAC`v +w*v':real`
1135 THEN EXISTS_TAC`w*w':real`
1136 THEN STRIP_TAC;
1137 REAL_ARITH_TAC ;
1138 VECTOR_ARITH_TAC;
1139 REAL_ARITH_TAC ;
1140 VECTOR_ARITH_TAC]);;
1141
1142
1143
1144
1145 let V3_DEFOR_IN_AFF_GT=prove(`&0< x1 /\ &0<x2   /\ &0< x6 /\
1146 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1 /\ ~collinear {vec 0,v1,w}/\v2 IN aff_gt {vec 0} {v1,w}
1147 ==> ?e. &0< e/\ (!t. &0< t/\ t< e ==> v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t) IN aff_gt {vec 0} {v1,w})`,
1148 STRIP_TAC
1149 THEN POP_ASSUM MP_TAC
1150 THEN MP_TAC UPS_X_POS_SEG
1151 THEN RESA_TAC
1152 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(-- e< &0<=> &0< e)/\ a- &0=a`]
1153 THEN ASSUME_TAC th)
1154 THEN STRIP_TAC
1155 THEN MRESA_TAC (GEN_ALL OPEN_RELA_AFF_GT)[`v2:real^3`;`v1:real^3`;`w:real^3`]
1156 THEN POP_ASSUM MP_TAC
1157 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
1158 THEN RESA_TAC
1159 THEN MRESAL_TAC (GEN_ALL EXISTS_SMALL_LT_CONST)[`a:real`;`v1:real^3`;`v2:real^3`;` x1:real`;`x6:real`;`x2:real`;`v2:real^3`;`e':real`][DIST_REFL]
1160 THEN ABBREV_TAC`e1=(min (min e e') e'')/ &2`
1161 THEN MP_TAC(REAL_ARITH`e1=(min (min e e') e'')/ &2/\ &0< e/\ &0< e' /\ &0< e''
1162 ==> &0< e1/\ e1< e /\ e1< e'/\ e1< e''`)
1163 THEN RESA_TAC
1164 THEN EXISTS_TAC`e1:real`
1165 THEN ASM_REWRITE_TAC[]
1166 THEN REPEAT STRIP_TAC
1167 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`A SUBSET B/\ a IN A==> a IN B`))
1168 THEN EXISTS_TAC`ball (v2,e') INTER aff {vec 0, v2, v1:real^3}`
1169 THEN ASM_REWRITE_TAC[INTER;ball;IN_ELIM_THM]
1170 THEN ONCE_REWRITE_TAC[DIST_SYM]
1171 THEN REPLICATE_TAC (23-16) (POP_ASSUM MP_TAC)
1172 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1173 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''==> t< e''`)
1174 THEN RESA_TAC
1175 THEN MRESA_TAC th[`t:real`])
1176 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
1177 THEN ASM_SIMP_TAC[exp_aff_by_dot;IN_ELIM_THM]
1178 THEN REDUCE_VECTOR_TAC 
1179 THEN REWRITE_TAC[e2_fan;e3_fan]
1180 THEN REDUCE_VECTOR_TAC 
1181 THEN REWRITE_TAC[DOT_RMUL;CROSS_LMUL]
1182 THEN ONCE_REWRITE_TAC[DOT_SYM]
1183 THEN ONCE_REWRITE_TAC[CROSS_TRIPLE]
1184 THEN ONCE_REWRITE_TAC[CROSS_TRIPLE]
1185 THEN REPLICATE_TAC (24-11) (POP_ASSUM MP_TAC)
1186 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1187 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e/\ &0<t==> t< e/\ -- e< t`)
1188 THEN RESA_TAC
1189 THEN MRESA_TAC th[`t:real`])
1190 THEN MRESAL_TAC (GEN_ALL EYYPQDW_SCALAR_POS)[`x2:real`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`x6:real`;`v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)`;`a:real`;`v1:real^3`;`v2:real^3`][SET_RULE`a IN {a,b}`;GSYM v3_defor_v1;DOT_CROSS_SELF;DOT_LMUL]
1191 THEN REAL_ARITH_TAC);;
1192
1193
1194 let V3_DEFOR_IN_AFF_GT_V1=prove(`&0< x1 /\ &0<x2   /\ &0< x6 /\
1195 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1 /\ ~collinear {vec 0,v1,w}/\v2 IN aff_gt {vec 0} {v1,w}
1196 ==> ?e. &0< e/\ (!t. --e< t/\ t< e ==> v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t) IN aff_gt {vec 0} {v1,w})`,
1197 STRIP_TAC
1198 THEN POP_ASSUM MP_TAC
1199 THEN MP_TAC UPS_X_POS_SEG
1200 THEN RESA_TAC
1201 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(-- e< &0<=> &0< e)/\ a- &0=a`]
1202 THEN ASSUME_TAC th)
1203 THEN STRIP_TAC
1204 THEN MRESA_TAC (GEN_ALL OPEN_RELA_AFF_GT)[`v2:real^3`;`v1:real^3`;`w:real^3`]
1205 THEN POP_ASSUM MP_TAC
1206 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
1207 THEN RESA_TAC
1208 THEN MRESAL_TAC (GEN_ALL EXISTS_SMALL_LT_CONST_V1)[`a:real`;`v1:real^3`;`v2:real^3`;` x1:real`;`x6:real`;`x2:real`;`v2:real^3`;`e':real`][DIST_REFL]
1209 THEN ABBREV_TAC`e1=(min (min e e') e'')/ &2`
1210 THEN MP_TAC(REAL_ARITH`e1=(min (min e e') e'')/ &2/\ &0< e/\ &0< e' /\ &0< e''
1211 ==> &0< e1/\ e1< e /\ e1< e'/\ e1< e''`)
1212 THEN RESA_TAC
1213 THEN EXISTS_TAC`e1:real`
1214 THEN ASM_REWRITE_TAC[]
1215 THEN REPEAT STRIP_TAC
1216 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`A SUBSET B/\ a IN A==> a IN B`))
1217 THEN EXISTS_TAC`ball (v2,e') INTER aff {vec 0, v2, v1:real^3}`
1218 THEN ASM_REWRITE_TAC[INTER;ball;IN_ELIM_THM]
1219 THEN ONCE_REWRITE_TAC[DIST_SYM]
1220 THEN REPLICATE_TAC (23-16) (POP_ASSUM MP_TAC)
1221 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1222 THEN MP_TAC(REAL_ARITH`-- e1<t /\ t< e1/\ e1< e''==> t< e''/\ --e'' <t`)
1223 THEN RESA_TAC
1224 THEN MRESA_TAC th[`t:real`])
1225 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
1226 THEN ASM_SIMP_TAC[exp_aff_by_dot;IN_ELIM_THM]
1227 THEN REDUCE_VECTOR_TAC 
1228 THEN REWRITE_TAC[e2_fan;e3_fan]
1229 THEN REDUCE_VECTOR_TAC 
1230 THEN REWRITE_TAC[DOT_RMUL;CROSS_LMUL]
1231 THEN ONCE_REWRITE_TAC[DOT_SYM]
1232 THEN ONCE_REWRITE_TAC[CROSS_TRIPLE]
1233 THEN ONCE_REWRITE_TAC[CROSS_TRIPLE]
1234 THEN REPLICATE_TAC (25-11) (POP_ASSUM MP_TAC)
1235 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1236 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e/\ --e1<t==> t< e/\ -- e< t`)
1237 THEN RESA_TAC
1238 THEN MRESA_TAC th[`t:real`])
1239 THEN MRESAL_TAC (GEN_ALL EYYPQDW_SCALAR_POS)[`x2:real`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`x6:real`;`v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)`;`a:real`;`v1:real^3`;`v2:real^3`][SET_RULE`a IN {a,b}`;GSYM v3_defor_v1;DOT_CROSS_SELF;DOT_LMUL]
1240 THEN REAL_ARITH_TAC);;
1241
1242
1243
1244
1245
1246
1247
1248
1249 let xrr_increasing_le = prove_by_refinement(
1250  `!y1 y2 y6 y6'. &0 < y1 /\ &0 < y2 /\ &0 <= y6 /\ y6 <= y6' ==> xrr y1 y2 y6 <= xrr y1 y2 y6'`,
1251   (* {{{ proof *)
1252   [
1253   REPEAT WEAKER_STRIP_TAC;
1254 TYPIFY `y6 = y6'` ASM_CASES_TAC;
1255     BY(ASM_REWRITE_TAC[arith `x <= x`]);
1256 MATCH_MP_TAC(REAL_ARITH`a<b==> a<=b`)
1257 THEN MATCH_MP_TAC xrr_increasing
1258 THEN ASM_TAC THEN REAL_ARITH_TAC;
1259   ]);;
1260   (* }}} *)
1261
1262
1263
1264
1265 let EDGE_DOT_LE_NORM=prove_by_refinement(`is_scs_v39 s /\
1266   MMs_v39 s w /\
1267   scs_k_v39 s =k/\
1268  3<k
1269 /\ l MOD k= SUC i MOD k 
1270 ==>
1271 (w i ) dot (w l)< norm (w l) pow 2 `,
1272 [
1273 REPEAT STRIP_TAC
1274 THEN REWRITE_TAC[dist;VECTOR_ARITH`(&1 - t) % w - w1  = --(t % w-(w-w1))`;NORM_NEG]
1275 THEN SUBGOAL_THEN`((w:num->real^3) l- w i) dot -- (w:num->real^3) l< &0` ASSUME_TAC;
1276
1277 MRESAL_TAC DOT_NORM[`(w:num->real^3) l- w i`;`-- (w:num->real^3) l`][VECTOR_ARITH`wl - wi + (-- wl)= --wi:real^3`;NORM_NEG]
1278 THEN ASM_TAC
1279 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;IMAGE;SUBSET;IN_ELIM_THM;ball_annulus;cball;DIFF;ball]
1280 THEN REPEAT RESA_TAC
1281 THEN SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) l = w x) `ASSUME_TAC;
1282
1283 EXISTS_TAC `l:num`
1284 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
1285
1286 SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) i = w x) `ASSUME_TAC;
1287
1288 EXISTS_TAC `i:num`
1289 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
1290
1291 REPLICATE_TAC (37-20) (POP_ASSUM MP_TAC)
1292 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1293 THEN MRESA_TAC th[`(w:num->real^3) i`]
1294 THEN MRESA_TAC th[`(w:num->real^3) l`])
1295 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
1296 THEN REWRITE_TAC[dist;VECTOR_ARITH`vec 0- A= --A`;NORM_NEG]
1297 THEN REPEAT STRIP_TAC
1298 THEN REPLICATE_TAC (40-21) (POP_ASSUM MP_TAC)
1299 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1300 THEN MRESAL_TAC th[`l:num`;`i:num`][dist])
1301 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1< k`)
1302 THEN RESA_TAC
1303 THEN MRESA_TAC DIVISION[`SUC i`;`k:num`]
1304 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
1305 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
1306 THEN RESA_TAC
1307 THEN POP_ASSUM(fun th-> MRESA1_TAC th`i:num`)
1308 THEN REPLICATE_TAC (48-14) (POP_ASSUM MP_TAC)
1309 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1310 THEN MRESAL_TAC th[`l:num MOD k`;`i MOD k:num`][dist])
1311 THEN POP_ASSUM MP_TAC
1312 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
1313 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
1314 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
1315 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
1316 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
1317 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
1318 THEN STRIP_TAC
1319 THEN MP_TAC(REAL_ARITH`&2 <= scs_a_v39 s i l
1320 /\ scs_a_v39 s i l <= norm (w l - (w:num->real^3)i)/\ ~(norm (w l) < &2)
1321 ==> &2<= norm (w l - (w:num->real^3)i) /\ &2<= norm (w l)`)
1322 THEN RESA_TAC
1323 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm ((w:num->real^3) l)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
1324 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (w l - (w:num->real^3)i)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
1325 THEN ASM_TAC
1326 THEN REWRITE_TAC[h0]
1327 THEN REPEAT RESA_TAC
1328 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`norm ((w:num->real^3) i)`;`&2* h0`;][ARITH_RULE`abs (&2 * #1.26)= &2 * #1.26`;REAL_ABS_NORM;h0]
1329 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
1330 THEN REAL_ARITH_TAC;
1331
1332 EXISTS_TAC `l:num`
1333 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
1334
1335 SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) i = w x) `ASSUME_TAC;
1336
1337 EXISTS_TAC `i:num`
1338 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
1339
1340 REPLICATE_TAC (37-20) (POP_ASSUM MP_TAC)
1341 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1342 THEN MRESA_TAC th[`(w:num->real^3) i`]
1343 THEN MRESA_TAC th[`(w:num->real^3) l`])
1344 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
1345 THEN REWRITE_TAC[dist;VECTOR_ARITH`vec 0- A= --A`;NORM_NEG]
1346 THEN REPEAT STRIP_TAC
1347 THEN REPLICATE_TAC (40-21) (POP_ASSUM MP_TAC)
1348 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1349 THEN MRESAL_TAC th[`l:num`;`i:num`][dist])
1350 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1< k`)
1351 THEN RESA_TAC
1352 THEN MRESA_TAC DIVISION[`SUC i`;`k:num`]
1353 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
1354 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
1355 THEN RESA_TAC
1356 THEN POP_ASSUM(fun th-> MRESA1_TAC th`i:num`)
1357 THEN REPLICATE_TAC (48-14) (POP_ASSUM MP_TAC)
1358 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1359 THEN MRESAL_TAC th[`l:num MOD k`;`i MOD k:num`][dist])
1360 THEN POP_ASSUM MP_TAC
1361 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
1362 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
1363 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
1364 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
1365 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
1366 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
1367 THEN STRIP_TAC
1368 THEN MP_TAC(REAL_ARITH`&2 <= scs_a_v39 s i l
1369 /\ scs_a_v39 s i l <= norm (w l - (w:num->real^3)i)/\ ~(norm (w l) < &2)
1370 ==> &2<= norm (w l - (w:num->real^3)i) /\ &2<= norm (w l)`)
1371 THEN RESA_TAC
1372 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm ((w:num->real^3) l)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
1373 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (w l - (w:num->real^3)i)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
1374 THEN ASM_TAC
1375 THEN REWRITE_TAC[h0]
1376 THEN REPEAT RESA_TAC
1377 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`norm ((w:num->real^3) i)`;`&2* h0`;][ARITH_RULE`abs (&2 * #1.26)= &2 * #1.26`;REAL_ABS_NORM;h0]
1378 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
1379 THEN REAL_ARITH_TAC;
1380
1381 POP_ASSUM MP_TAC
1382 THEN REWRITE_TAC[DOT_RNEG;REAL_ARITH`-- a< &0 <=> a> &0`;]
1383 THEN REWRITE_TAC[DOT_LSUB;DOT_SQUARE_NORM]
1384 THEN REAL_ARITH_TAC]);;
1385
1386
1387
1388
1389 let DEFORMATION_DIST_LE_2=prove(` 3<k /\
1390   scs_k_v39 s =k/\
1391 is_scs_v39 s /\
1392   MMs_v39 s w /\
1393   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
1394  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
1395  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
1396  w l=v2/\ w (SUC l) =v1/\ ~(norm v2 = &2)/\ scs_a_v39 s l i < dist (v2,w i)
1397 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
1398 /\ l MOD k= SUC i MOD k 
1399 ==>
1400 ?e. &0< e/\
1401 (!t. &0< t/\ t< e  ==>  &2<dist (v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i) ) `,
1402 STRIP_TAC
1403 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST
1404 THEN ASM_REWRITE_TAC[]
1405 THEN MP_TAC HYPER_MM_COLLINEAR
1406 THEN RESA_TAC
1407 THEN ASM_TAC
1408 THEN STRIP_TAC
1409 THEN STRIP_TAC
1410 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)/\ ~(k=0)/\ 1<k`)
1411 THEN RESA_TAC
1412 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
1413 THEN REPEAT RESA_TAC
1414 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
1415 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
1416 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
1417 THEN RESA_TAC
1418 THEN POP_ASSUM(fun th-> MRESA1_TAC th`i:num`)
1419 THEN REPLICATE_TAC (56-18) (POP_ASSUM MP_TAC)
1420 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1421 THEN MRESA_TAC th[`i:num MOD k`;`l MOD k` ])
1422 THEN POP_ASSUM MP_TAC
1423 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
1424 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
1425 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
1426 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
1427 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
1428 THEN REPLICATE_TAC (59-42) (POP_ASSUM MP_TAC)
1429 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1430 THEN MP_TAC th)
1431 THEN POP_ASSUM MP_TAC
1432 THEN ASM_REWRITE_TAC[]
1433 THEN REAL_ARITH_TAC);;
1434
1435
1436 let DEFORMATION_V3_DEFOR_EDGE=prove_by_refinement(` 3<k /\
1437   scs_k_v39 s =k/\
1438 is_scs_v39 s /\
1439   MMs_v39 s w /\
1440   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
1441  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
1442  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
1443  w l=v2/\ w (SUC l) =v1/\ ~(norm v2 = &2)/\ scs_a_v39 s l i < dist (v2,w i)
1444 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
1445 /\ l MOD k= SUC i MOD k 
1446 ==>
1447 ?e. &0< e/\
1448 (!t. &0< t/\ t< e  ==>  dist (v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)<dist (v2,w i) ) `,
1449 [
1450
1451
1452
1453 REPEAT STRIP_TAC
1454 THEN MP_TAC HYPER_MM_COLLINEAR
1455 THEN RESA_TAC
1456 THEN MP_TAC DEFORMATION_DIST_LE_2
1457 THEN RESA_TAC
1458 THEN ASM_TAC
1459 THEN STRIP_TAC 
1460 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
1461 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
1462 THEN REPEAT RESA_TAC
1463 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
1464 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
1465 THEN MP_TAC UPS_X_POS_SEG
1466 THEN RESA_TAC
1467 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
1468 THEN SUBGOAL_THEN`(w:num->real^3) l IN V` ASSUME_TAC;
1469
1470
1471 EXPAND_TAC"V"
1472 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
1473 THEN EXISTS_TAC`l:num`
1474 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
1475
1476
1477 SUBGOAL_THEN`(w:num->real^3) (SUC l) IN V` ASSUME_TAC;
1478
1479
1480 EXPAND_TAC"V"
1481 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
1482 THEN EXISTS_TAC`SUC l:num`
1483 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
1484
1485 SUBGOAL_THEN`(w:num->real^3) l IN ball_annulus` ASSUME_TAC;
1486
1487
1488  MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
1489 THEN EXISTS_TAC`V:real^3->bool`
1490 THEN ASM_REWRITE_TAC[];
1491
1492
1493
1494 SUBGOAL_THEN`(w:num->real^3) (SUC l) IN ball_annulus` ASSUME_TAC;
1495
1496
1497 MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
1498 THEN EXISTS_TAC`V:real^3->bool`
1499 THEN ASM_REWRITE_TAC[];
1500
1501 REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
1502 THEN REPEAT RESA_TAC
1503 THEN MP_TAC V3_DEFOR_IN_BALL_ANNULUS_DEFORMATION
1504 THEN RESA_TAC
1505 THEN REPLICATE_TAC (68-41) (POP_ASSUM MP_TAC)
1506 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1507 THEN MP_TAC th)
1508 THEN REPLICATE_TAC (67-41) (POP_ASSUM MP_TAC)
1509 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1510 THEN MP_TAC th)
1511 THEN POP_ASSUM MP_TAC
1512 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
1513 THEN POP_ASSUM (fun th->  MRESAL1_TAC th`l+k-1:num`[ARITH_RULE`4 MOD 4=0`]
1514 THEN MRESA_TAC th[`i:num`])
1515 THEN REPEAT STRIP_TAC 
1516 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
1517 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
1518 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) i`]
1519 THEN ABBREV_TAC`e1= (min (min (min e e') e'') e''')/ &2`
1520 THEN MP_TAC(REAL_ARITH`e1= (min (min (min e e') e'') e''')/ &2 /\ &0< e /\ &0< e'/\ &0< e''/\ &0< e''' ==> &0< e1/\ e1<= e/\ e1<=e'/\ e1< e''/\ e1< e'''`)
1521 THEN RESA_TAC
1522 THEN EXISTS_TAC`e1:real`
1523 THEN ASM_REWRITE_TAC[]
1524 THEN REPEAT STRIP_TAC
1525 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'') e''')/ &2 /\ &0< e /\ &0< e'/\ &0< e''/\ t<e1/\ &0<t/\ &0< e'''==> --e' < t/\ t< e'/\ t<e/\ t< e'''/\ t< e''`)
1526 THEN RESA_TAC
1527 THEN REPLICATE_TAC (87-59) (POP_ASSUM MP_TAC)
1528 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1529 THEN MRESA_TAC th[`t:real`])
1530 THEN REPLICATE_TAC (88-65) (POP_ASSUM MP_TAC)
1531 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1532 THEN MRESA_TAC th[`t:real`])
1533 THEN POP_ASSUM MP_TAC
1534 THEN REWRITE_TAC[v3_defor_v4]
1535 THEN REPLICATE_TAC (87-72) (POP_ASSUM MP_TAC)
1536 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1537 THEN POP_ASSUM MP_TAC
1538 THEN MRESA_TAC th[`t:real`])
1539 THEN ABBREV_TAC`v3=v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t) `
1540 THEN ASM_REWRITE_TAC[ball_annulus;IN_ELIM_THM;DIFF;ball;cball;dist;VECTOR_ARITH`vec 0-A= -- A`;NORM_NEG;REAL_ARITH`~(a<b)<=> b<=a`]
1541 THEN STRIP_TAC
1542 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORMV3)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`x2-t:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
1543 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`v1:real^3`;`x6:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
1544 THEN MRESA_TAC DOT_NORM_SUB[`v1:real^3`;`v3:real^3`]
1545 THEN POP_ASSUM MP_TAC
1546 THEN REWRITE_TAC[GSYM dist]
1547 THEN ONCE_REWRITE_TAC[DIST_SYM]
1548 THEN ASM_REWRITE_TAC[dist]
1549 THEN ABBREV_TAC`v4= (w:num->real^3) i`
1550 THEN MRESA_TAC DOT_NORM_SUB[`v4:real^3`;`v2:real^3`]
1551 THEN MRESA_TAC DOT_NORM_SUB[`v4:real^3`;`v3:real^3`]
1552 THEN MRESA_TAC DOT_NORM_SUB[`v1:real^3`;`v2:real^3`]
1553 THEN STRIP_TAC
1554 ;
1555
1556
1557
1558
1559 REPLICATE_TAC (97-63) (POP_ASSUM MP_TAC)
1560 THEN POP_ASSUM(fun th->
1561 POP_ASSUM(fun th1-> REPEAT STRIP_TAC
1562 THEN MP_TAC th1)
1563 THEN MP_TAC th)
1564 THEN ASM_REWRITE_TAC[ball_annulus;IN_ELIM_THM;DIFF;ball;cball;dist;VECTOR_ARITH`vec 0-A= -- A`;NORM_NEG;REAL_ARITH`~(a<b)<=> b<=a`]
1565 THEN REPEAT STRIP_TAC
1566 THEN SUBGOAL_THEN`&2 <= norm (v1 - v2:real^3) ` ASSUME_TAC
1567 ;
1568
1569 REPLICATE_TAC (99-30) (POP_ASSUM MP_TAC)
1570 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1571 THEN MRESA_TAC th[`SUC l:num`;`l:num`])
1572 THEN REMOVE_ASSUM_TAC
1573 THEN POP_ASSUM MP_TAC
1574 THEN REWRITE_TAC[dist]
1575 THEN MRESA_TAC DIVISION[`SUC l`;`k:num`]
1576 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
1577 THEN MRESA_TAC (GEN_ALL Qknvmlb.SUC_MOD_NOT_EQ)[`k:num`]
1578 THEN POP_ASSUM(fun th-> MRESA_TAC th[`l:num`])
1579 THEN REPLICATE_TAC (103-22) (POP_ASSUM MP_TAC)
1580 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1581 THEN MRESA_TAC th[`SUC l MOD k:num`;`l MOD k:num`])
1582 THEN POP_ASSUM MP_TAC
1583 THEN POP_ASSUM MP_TAC
1584 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
1585 THEN POP_ASSUM (fun th->  MRESAL1_TAC th`SUC l:num`[ARITH_RULE`4 MOD 4=0`])
1586 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (SUC l  MOD k)`][ARITH_RULE`~(4=0)`;periodic]
1587 THEN POP_ASSUM (fun th->  MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
1588 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
1589 THEN REAL_ARITH_TAC;
1590
1591
1592
1593
1594
1595 MRESAL_TAC xrr_decreasing_lt[`norm (v3:real^3)`;`norm (v2:real^3)`;`norm(v1:real^3)`;`norm (v1-v2:real^3)`][xrr;REAL_ARITH`a*a= a pow 2`]
1596 THEN POP_ASSUM MP_TAC
1597 THEN ONCE_REWRITE_TAC[Pack1.norm_abs]
1598 THEN ASM_REWRITE_TAC[REAL_LT_SQUARE_ABS]
1599 THEN ASM_REWRITE_TAC[REAL_ABS_NORM;REAL_ARITH`a-b<a<=> &0<b`]
1600 THEN REWRITE_TAC[REAL_ARITH`&8*(&1-A)< &8*(&1-B) <=> B<A`]
1601 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`v2:real^3`]
1602 THEN MRESAL_TAC COS_ANGLE[`v1:real^3`;`vec 0:real^3`;`v2:real^3`][VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c*d=a*b*d*c`]
1603 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
1604 THEN SUBGOAL_THEN`~(v3 = vec 0:real^3)` ASSUME_TAC
1605 ;
1606
1607 STRIP_TAC
1608 THEN POP_ASSUM(fun th-> ASM_TAC
1609 THEN REWRITE_TAC[th;NORM_0;REAL_ARITH`~(&2<= &0)`])
1610 ;
1611
1612
1613
1614 MRESAL_TAC COS_ANGLE[`v1:real^3`;`vec 0:real^3`;`v3:real^3`][VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c*d=a*b*d*c`]
1615 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
1616 THEN STRIP_TAC
1617 THEN MRESAL_TAC COS_MONO_LT_EQ[`angle (v1,vec 0,v3:real^3)`;`angle (v1,vec 0,v2:real^3)`][ANGLE_RANGE]
1618 THEN MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, v4}/\ v3 IN aff_gt {vec 0} {v1, v4} /\ aff_gt {vec 0} {v1,v4} SUBSET aff_ge {vec 0} {v1,v4}==> v2 IN aff_ge {vec 0} {v1, v4}/\ v3 IN aff_ge {vec 0} {v1, v4:real^3}`)
1619 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
1620 THEN RESA_TAC
1621 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`v4:real^3`]
1622 THEN MRESA_TAC Polar_fan.ANGLES_ADD_AFF_GE [`vec 0:real^3`;`v1:real^3`;`v4:real^3`;`v2:real^3`]
1623 THEN MRESA_TAC Polar_fan.ANGLES_ADD_AFF_GE [`vec 0:real^3`;`v1:real^3`;`v4:real^3`;`v3:real^3`]
1624 THEN MP_TAC(REAL_ARITH`angle (v1,vec 0,v2) < angle (v1,vec 0,v3)
1625 /\ angle (v1,vec 0,v2) + angle (v2,vec 0,v4) = angle (v1,vec 0,v4)
1626 /\ angle (v1,vec 0,v3) + angle (v3,vec 0,v4) = angle (v1,vec 0,v4)
1627 ==> angle (v3,vec 0,v4) <angle (v2,vec 0,v4:real^3)`)
1628 THEN RESA_TAC
1629 THEN MRESAL_TAC COS_MONO_LT_EQ[`angle (v2,vec 0,v4:real^3)`;`angle (v3,vec 0,v4:real^3)`][ANGLE_RANGE]
1630 THEN POP_ASSUM MP_TAC
1631 THEN ONCE_REWRITE_TAC[ANGLE_SYM]
1632 THEN MRESAL_TAC COS_ANGLE[`v4:real^3`;`vec 0:real^3`;`v3:real^3`][VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c*d=a*b*d*c`]
1633 THEN MRESAL_TAC COS_ANGLE[`v4:real^3`;`vec 0:real^3`;`v2:real^3`][VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c*d=a*b*d*c`]
1634 THEN REPLICATE_TAC (116-88) (POP_ASSUM MP_TAC)
1635 THEN POP_ASSUM(fun th->
1636 POP_ASSUM(fun th1-> REPEAT STRIP_TAC
1637 THEN POP_ASSUM MP_TAC
1638 THEN MP_TAC th1)
1639 THEN MP_TAC th)
1640 THEN REWRITE_TAC[REAL_ARITH`(norm v4 pow 2 + x2) - norm (v4 - v2) pow 2
1641 =x2+norm v4 pow 2  - norm (v4 - v2) pow 2`;real_div;REAL_ARITH`a*b*c*d=(a*b)*c*d`]
1642 THEN STRIP_TAC
1643 THEN STRIP_TAC
1644 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th]
1645 THEN POP_ASSUM(fun th1-> REWRITE_TAC[SYM th1] THEN ASSUME_TAC (SYM th)
1646  THEN ASSUME_TAC (SYM th)))
1647 THEN SUBGOAL_THEN`(w:num->real^3) (l+k-1) IN V` ASSUME_TAC;
1648
1649
1650 EXPAND_TAC"V"
1651 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
1652 THEN EXISTS_TAC`l+k-1:num`
1653 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
1654
1655 SUBGOAL_THEN`(w:num->real^3) (l+k-1) IN ball_annulus` ASSUME_TAC;
1656
1657
1658  MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
1659 THEN EXISTS_TAC`V:real^3->bool`
1660 THEN ASM_REWRITE_TAC[];
1661
1662
1663
1664
1665
1666 POP_ASSUM MP_TAC
1667 THEN ASM_REWRITE_TAC[ball_annulus;IN_ELIM_THM;DIFF;ball;cball;dist;VECTOR_ARITH`vec 0-A= -- A`;NORM_NEG;REAL_ARITH`~(a<b)<=> b<=a`;real_div]
1668 THEN STRIP_TAC
1669 THEN ABBREV_TAC`a1=(norm (v4:real^3) pow 2)`
1670 THEN ABBREV_TAC`a2=(norm (v4-v2:real^3) pow 2)`
1671 THEN ABBREV_TAC`a3= x2+a1- &2 *((v4:real^3) dot v3) * (inv (norm v3)) * (inv (norm v4)) * norm v4 * norm(v2:real^3)`
1672 THEN ABBREV_TAC`x= v4- v3_defor_v1 a (vec 0- v4) (v2- v4:real^3) a1 a2 x2 x2 (a3)`
1673 THEN STRIP_TAC
1674 THEN MP_TAC(REAL_ARITH`&2<=norm (v4:real^3)/\ &2<=norm (v2:real^3)==> &0< norm v4/\ &0< norm v2`)
1675 THEN RESA_TAC
1676 ;
1677
1678 MP_TAC(REAL_ARITH`norm (v4 - v2) pow 2 <= a3\/ a3< norm(v4-v2:real^3) pow 2`)
1679 THEN RESA_TAC
1680 ;
1681
1682
1683 MRESA_TAC REAL_LE_RSQRT[`norm(v4-v2:real^3)`;`a3:real`]
1684 THEN MP_TAC(REAL_ARITH`norm (v4 - v2) pow 2 <= a3/\ &0<= norm(v4-v2:real^3) pow 2
1685 ==> &0<= a3`)
1686 THEN ASM_REWRITE_TAC[NORM_POS_LE;REAL_LE_POW_2]
1687 THEN RESA_TAC
1688 THEN MRESA_TAC SQRT_POW_2[`a3:real`]
1689 THEN MRESAL_TAC xrr_increasing_le[`norm(v4:real^3)`;`norm(v2:real^3)`;`norm(v4-v2:real^3)`;`sqrt(a3)`][NORM_POS_LE;xrr;REAL_ARITH`(&8 *( &1-a)<= &8 *( &1-b)<=> b<=a)/\ a*a= a pow 2`;real_div]
1690 THEN POP_ASSUM MP_TAC
1691 THEN REMOVE_ASSUM_TAC
1692 THEN EXPAND_TAC"a3"
1693 THEN REWRITE_TAC[REAL_ARITH`x+y-(y+x-a)=a`;REAL_INV_MUL]
1694 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v4:real^3`;`vec 0:real^3`]
1695 THEN ASM_TAC
1696 THEN REDUCE_VECTOR_TAC
1697 THEN REPEAT STRIP_TAC
1698 THEN POP_ASSUM MP_TAC
1699 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v2:real^3`;`vec 0:real^3`]
1700 THEN ASM_TAC
1701 THEN REDUCE_VECTOR_TAC
1702 THEN REPEAT STRIP_TAC
1703 THEN POP_ASSUM MP_TAC
1704 THEN ASM_REWRITE_TAC[REAL_ARITH`  
1705  (&2 *a * inv (b) * inv (c) * c * d) *
1706  inv (&2) *
1707 inv (c) *
1708  inv (d)
1709 = (a  * inv (b) * inv (c)) *
1710   (inv (c) * c )*
1711  (inv (d) * d)`;REAL_ARITH`a * &1=a`]
1712 THEN ASM_REWRITE_TAC[REAL_ARITH`a*b*c*d=(a*b)*d*c`]
1713 THEN ONCE_REWRITE_TAC[REAL_ARITH` a1 + x2 - a2= x2+a1-a2`]
1714 THEN ASM_REWRITE_TAC[REAL_ARITH`a<=b<=> ~(b<a)`]
1715 ;
1716
1717
1718 MRESA_TAC DOT_NORM_SUB[`v4:real^3`;`v3:real^3`]
1719 THEN SUBGOAL_THEN`norm (v4 - v3:real^3) pow 2 < a3`ASSUME_TAC;
1720
1721 POP_ASSUM MP_TAC
1722 THEN REWRITE_TAC[REAL_ARITH`a=((a1+x2-t)-c)/ &2<=> c= a1+x2-t - &2 *a`]
1723 THEN RESA_TAC
1724 THEN EXPAND_TAC"a3"
1725 THEN REWRITE_TAC[REAL_ARITH`a1 + x2 - t - &2 * (v4 dot v3) <
1726  x2 +
1727  a1 - &2 * (v4 dot v3) * inv (norm v3) * inv (norm v4) * norm v4 * norm v2
1728 <=>  (v4 dot v3) * inv (norm v3) * (inv (norm v4) * norm v4) * norm v2
1729 <  (v4 dot v3)+ t/ &2 `]
1730 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v4:real^3`;`vec 0:real^3`]
1731 THEN ASM_TAC
1732 THEN REDUCE_VECTOR_TAC
1733 THEN REPEAT STRIP_TAC
1734 THEN ASM_REWRITE_TAC[]
1735 THEN ABBREV_TAC`g=(v4:real^3) dot v3`
1736 THEN MRESAL_TAC SQRT_UNIQUE[`x2:real`;`norm(v2:real^3)`][NORM_POS_LE]
1737 THEN MRESAL_TAC SQRT_UNIQUE[`x2-t:real`;`norm(v3:real^3)`][NORM_POS_LE]
1738 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
1739 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;REAL_ARITH`&1*a=a`])
1740 THEN MP_TAC(REAL_ARITH`&0< x2-t/\ &0< x2/\ &0<t==> &0<= x2-t/\ &0<= x2/\ x2-t<x2/\ ~(x2-t= &0)`)
1741 THEN RESA_TAC
1742 THEN MRESA_TAC SQRT_INV[`x2-t:real`]
1743 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;])
1744 THEN MRESA_TAC REAL_LE_INV[`x2-t:real`]
1745 THEN MRESA_TAC REAL_LT_INV[`x2-t:real`]
1746 THEN MRESA_TAC SQRT_MUL[`inv(x2-t):real`;`x2:real`]
1747 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;])
1748 THEN MRESA_TAC REAL_MUL_LINV[`x2-t:real`]
1749 THEN MRESA_TAC REAL_LT_LMUL[`inv(x2-t)`;`x2-t:real`;`x2:real`]
1750 THEN MRESAL_TAC SQRT_MONO_LT[`&1:real`;`inv(x2-t) *x2`][REAL_ARITH`&0<= &1`;SQRT_1]
1751 THEN MP_TAC(REAL_ARITH`(v4:real^3) dot v3 = &0\/ &0< --((v4:real^3) dot v3)\/ &0< (v4:real^3) dot v3 `)
1752 THEN RESA_TAC;
1753
1754 ASM_REWRITE_TAC[REAL_ARITH`&0 *a< &0 + t/ &2<=> &0< t`]
1755 ;
1756
1757
1758
1759 MRESA_TAC REAL_LT_LMUL[`-- g`;`&1:real`;`sqrt (inv (x2 - t) * x2):real`]
1760 THEN POP_ASSUM MP_TAC
1761 THEN MP_TAC(REAL_ARITH`&0< t==> &0< t/ &2`)
1762 THEN ASM_REWRITE_TAC[]
1763 THEN REAL_ARITH_TAC
1764 ;
1765
1766
1767 MP_TAC(REAL_ARITH`&0< g/\ &1 < inv (x2 - t) * x2 ==> ~(g= &0)/\ &0 <= inv (x2 - t) * x2`)
1768 THEN RESA_TAC
1769 THEN MRESA_TAC REAL_MUL_LINV[`g:real`]
1770 THEN MRESAL_TAC REAL_LT_LMUL[`g:real`;`sqrt (inv (x2 - t) * x2):real`;`(inv g)*(g+t/  &2)`][REAL_ARITH`a*b*c=(b*a)*c/\ &1*x=x`]
1771 THEN POP_ASSUM MATCH_MP_TAC
1772 THEN MATCH_MP_TAC REAL_LT_LSQRT
1773 THEN ASM_REWRITE_TAC[REAL_ARITH`a*(b+c)=a*b+a*c`]
1774 THEN STRIP_TAC
1775 ;
1776
1777
1778 MATCH_MP_TAC(REAL_ARITH`&0< a*b ==> &0<= &1+a *b/ &2`)
1779 THEN MATCH_MP_TAC REAL_LT_MUL
1780 THEN ASM_REWRITE_TAC[]
1781 THEN MATCH_MP_TAC REAL_LT_INV
1782 THEN ASM_REWRITE_TAC[]
1783 ;
1784
1785 REWRITE_TAC[REAL_ARITH`(&1+b) pow 2= &1+ &2*b+ b pow 2/\ &2 * inv g * t / &2=  inv g * t  `]
1786 THEN MATCH_MP_TAC(REAL_ARITH`&0<=d /\ a< b+c==> a< b+c+d`)
1787 THEN ASM_REWRITE_TAC[REAL_LE_POW_2]
1788 THEN MRESAL_TAC REAL_LT_LMUL[`inv(x2-t):real`;`x2:real`;`(x2-t)*(&1+ inv g *t)`][REAL_ARITH`a*b*c=(a*b)*c/\ &1*x=x`]
1789 THEN POP_ASSUM MATCH_MP_TAC
1790 THEN REWRITE_TAC[REAL_ARITH`x2 < (x2 - t) * (&1 + inv g * t)
1791 <=> t< t*(x2-t) * inv g`]
1792 THEN MRESAL_TAC REAL_LT_LMUL[`t:real`;`&1:real`;`(x2-t)*inv g `][REAL_ARITH`a*b*c=a*b*c/\ x* &1=x`]
1793 THEN POP_ASSUM MATCH_MP_TAC
1794 THEN MRESAL_TAC REAL_LT_LMUL[`inv g:real`;`g:real`;`(x2-t) `][REAL_ARITH`a*b*c=a*b*c/\ x* &1=x`]
1795 THEN ONCE_REWRITE_TAC[REAL_ARITH`a*b=b*a`]
1796 THEN POP_ASSUM MATCH_MP_TAC
1797 THEN STRIP_TAC
1798 ;
1799
1800 MATCH_MP_TAC REAL_LT_INV
1801 THEN ASM_REWRITE_TAC[]
1802 ;
1803
1804
1805
1806
1807 EXPAND_TAC"g"
1808 THEN REPLICATE_TAC (151-55) (POP_ASSUM MP_TAC)
1809 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1810 THEN MRESAL_TAC th[`t:real`][dist])
1811 THEN MP_TAC(REAL_ARITH`&2<norm(v3-v4)==> &2<=norm(v3-v4:real^3)`)
1812 THEN RESA_TAC
1813 THEN MRESAL_TAC DOT_NORM[`v3 - v4:real^3`;`-- v3:real^3`][VECTOR_ARITH`wl - wi + (-- wl)= --wi:real^3`;NORM_NEG]
1814 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (v3:real^3)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
1815 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (v3 - v4:real^3)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
1816 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`norm ((w:num->real^3) i)`;`&2* h0`;][ARITH_RULE`abs (&2 * #1.26)= &2 * #1.26`;REAL_ABS_NORM;h0]
1817 THEN POP_ASSUM MP_TAC
1818 THEN ASM_REWRITE_TAC[GSYM h0]
1819 THEN ASM_REWRITE_TAC[h0]
1820 THEN STRIP_TAC
1821 THEN MP_TAC(REAL_ARITH`(v3 - v4) dot --v3 = (a1 - norm (v3 - v4) pow 2 - (x2 - t)) / &2 /\ &2 pow 2 <= x2 - t
1822 /\ &2 pow 2 <= norm (v3 - v4) pow 2 /\ 
1823 a1 <= (&2 * #1.26) pow 2
1824 ==> (v3 - v4:real^3) dot --v3< &0`)
1825 THEN RESA_TAC
1826 THEN POP_ASSUM MP_TAC
1827 THEN REMOVE_ASSUM_TAC
1828 THEN REMOVE_ASSUM_TAC
1829 THEN REMOVE_ASSUM_TAC
1830 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th;DOT_RNEG;DOT_LSUB;DOT_SQUARE_NORM])
1831 THEN REAL_ARITH_TAC;
1832
1833
1834 POP_ASSUM MP_TAC
1835 THEN REMOVE_ASSUM_TAC
1836 THEN POP_ASSUM MP_TAC
1837 THEN REAL_ARITH_TAC;
1838
1839 ]);;
1840
1841
1842
1843
1844 let DEFORMATION_DIST_LE_BLL_V3_DEFOR_COM=prove_by_refinement(` 3<k /\
1845   scs_k_v39 s =k/\
1846 is_scs_v39 s /\
1847   MMs_v39 s w /\
1848   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
1849  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
1850  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
1851  w l=v2/\ w (SUC l) =v1/\ ~(norm v2 = &2)/\ scs_a_v39 s l (l + k - 1) < dist (v2,w (l + k - 1))
1852 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
1853 /\ (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
1854 ==>
1855 (!i. ~(i MOD k = l MOD k) ==>
1856 ?e. &0< e/\
1857 (!t. &0< t/\ t< e  ==>  dist (v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)<=scs_b_v39 s l i ))`,
1858 [
1859 REPEAT STRIP_TAC
1860 THEN MP_TAC(SET_RULE`l MOD k = SUC i MOD k \/ ~(SUC i MOD k= l MOD k)`)
1861 THEN RESA_TAC;
1862
1863 MP_TAC DEFORMATION_V3_DEFOR_EDGE
1864 THEN RESA_TAC
1865 THEN ASM_TAC
1866 THEN STRIP_TAC 
1867 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
1868 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
1869 THEN REPEAT RESA_TAC
1870 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
1871 THEN REPLICATE_TAC (55-46) (POP_ASSUM MP_TAC)
1872 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1873 THEN MP_TAC th)
1874 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
1875 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
1876 THEN POP_ASSUM (fun th->  MRESA_TAC th[`l+k-1:num`] THEN MRESA_TAC th[`i:num`])
1877 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
1878 THEN POP_ASSUM (fun th->  MRESA_TAC th[`l+k-1:num`] THEN MRESA_TAC th[`i:num`])
1879 THEN REPLICATE_TAC (59-53) (POP_ASSUM MP_TAC)
1880 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1881 THEN MP_TAC th)
1882 THEN RESA_TAC
1883 THEN EXISTS_TAC`e:real`
1884 THEN ASM_REWRITE_TAC[]
1885 THEN GEN_TAC
1886 THEN POP_ASSUM (fun th-> STRIP_TAC THEN MRESA_TAC th[`t:real`])
1887 THEN POP_ASSUM MP_TAC
1888 THEN REPLICATE_TAC (62-30) (POP_ASSUM MP_TAC)
1889 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1890 THEN MRESAL_TAC th[`l:num`;`i:num`][])
1891 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
1892 THEN REAL_ARITH_TAC;
1893
1894 MP_TAC(SET_RULE`i MOD k= SUC l MOD k  \/ ~(i MOD k= SUC l MOD k )`)
1895 THEN RESA_TAC;
1896
1897 MP_TAC HYPER_MM_COLLINEAR
1898 THEN RESA_TAC
1899 THEN MP_TAC UPS_X_POS_SEG
1900 THEN RESA_TAC
1901 THEN EXISTS_TAC`e:real`
1902 THEN ASM_REWRITE_TAC[]
1903 THEN ASM_REWRITE_TAC[]
1904 THEN GEN_TAC
1905 THEN POP_ASSUM (fun th-> STRIP_TAC
1906 THEN MP_TAC(REAL_ARITH`t<e/\ &0< t==> --e<t`)
1907 THEN RESA_TAC THEN MRESA_TAC th[`t:real`])
1908 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORMV3)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`x2-t:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
1909 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`v1:real^3`;`x6:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
1910 THEN ASM_TAC
1911 THEN STRIP_TAC 
1912 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
1913 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
1914 THEN REPEAT RESA_TAC
1915 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
1916 THEN POP_ASSUM (fun th->  MRESA_TAC th[`i:num`] THEN MRESA_TAC th[` SUC l:num`])
1917 THEN REWRITE_TAC[dist]
1918 THEN REPLICATE_TAC (68-30) (POP_ASSUM MP_TAC)
1919 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1920 THEN MRESAL_TAC th[`l:num`;`SUC l:num`][])
1921 THEN POP_ASSUM MP_TAC
1922 THEN MRESAL_TAC REAL_EQ_SQUARE_ABS[`norm (v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t) - v1:real^3)`;`norm(v1-v2:real^3)`][REAL_ABS_NORM;GSYM dist]
1923 THEN STRIP_TAC
1924 THEN ONCE_REWRITE_TAC[DIST_SYM]
1925 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
1926 THEN POP_ASSUM (fun th->  MRESA_TAC th[`i:num`] THEN MRESA_TAC th[`SUC l:num`]);
1927
1928 MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_B_SUC
1929 THEN RESA_TAC
1930 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`i:num`][scs_diag])
1931 THEN EXISTS_TAC`e:real`
1932 THEN ASM_REWRITE_TAC[]
1933 THEN GEN_TAC
1934 THEN POP_ASSUM (fun th-> STRIP_TAC
1935 THEN MP_TAC(REAL_ARITH`t<e/\ &0< t==> --e<t`)
1936 THEN RESA_TAC THEN MRESA_TAC th[`t:real`])
1937 THEN POP_ASSUM MP_TAC
1938 THEN REAL_ARITH_TAC]);;
1939
1940
1941
1942 let DEFORMATION_DIST_LE_BLL_V3_DEFOR_COM=prove_by_refinement(` 3<k /\
1943   scs_k_v39 s =k/\
1944 is_scs_v39 s /\
1945   MMs_v39 s w /\
1946   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
1947  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
1948  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
1949  w l=v2/\ w (SUC l) =v1/\ ~(norm v2 = &2)/\ scs_a_v39 s l (l + k - 1) < dist (v2,w (l + k - 1))
1950 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1/\(!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
1951 ==>
1952 ?e. &0< e/\
1953 (!t i. &0< t/\ t< e/\ ~(i MOD k = l MOD k)  ==>  dist (v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)<=scs_b_v39 s l i )`,
1954 [
1955
1956
1957 REPEAT STRIP_TAC
1958 THEN MP_TAC DEFORMATION_DIST_LE_BLL_V3_DEFOR_COM
1959 THEN RESA_TAC
1960 THEN POP_ASSUM MP_TAC
1961 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
1962 THEN REWRITE_TAC[SKOLEM_THM]
1963 THEN STRIP_TAC
1964 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k/\  ~(i= l MOD k)}`
1965 THEN EXISTS_TAC`e1:real`
1966 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
1967
1968
1969
1970 MATCH_MP_TAC FINITE_SUBSET
1971 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
1972 THEN STRIP_TAC;
1973
1974
1975 MATCH_MP_TAC FINITE_IMAGE
1976 THEN REWRITE_TAC[FINITE_NUMSEG];
1977
1978
1979 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
1980 THEN REPEAT RESA_TAC
1981 THEN EXISTS_TAC`i:num`
1982 THEN POP_ASSUM MP_TAC
1983 THEN POP_ASSUM MP_TAC
1984 THEN POP_ASSUM MP_TAC
1985 THEN ARITH_TAC;
1986
1987
1988 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
1989
1990
1991 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
1992 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(0=l MOD k )`)
1993 THEN RESA_TAC;
1994
1995
1996
1997 EXISTS_TAC`(e:num->real)1`
1998 THEN EXISTS_TAC`1`
1999 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
2000 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
2001 THEN RESA_TAC;
2002
2003
2004
2005 EXISTS_TAC`(e:num->real)0`
2006 THEN EXISTS_TAC`0`
2007 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
2008 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
2009 THEN RESA_TAC;
2010
2011
2012
2013 STRIP_TAC;
2014
2015
2016 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`&0`]
2017 THEN REWRITE_TAC[IN_ELIM_THM]
2018 THEN REPEAT RESA_TAC
2019 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
2020 THEN REPLICATE_TAC (13-5) (POP_ASSUM MP_TAC)
2021 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2022 THEN MRESA_TAC th[`i:num`]);
2023
2024
2025 REPEAT STRIP_TAC
2026 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`t:real`]
2027 THEN POP_ASSUM MP_TAC
2028 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
2029
2030
2031 REWRITE_TAC[IN_ELIM_THM]
2032 THEN EXISTS_TAC`i MOD k`
2033 THEN ASM_REWRITE_TAC[]
2034 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
2035 THEN RESA_TAC
2036 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
2037
2038
2039 STRIP_TAC
2040 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
2041 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
2042 THEN RESA_TAC
2043 THEN MRESA_TAC MOD_REFL[`i:num`;`k:num`]
2044 THEN REPLICATE_TAC (15-5) (POP_ASSUM MP_TAC)
2045 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2046 THEN MRESA_TAC th[`i:num MOD k`])
2047 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
2048 THEN ASM_TAC
2049 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2050 THEN REPEAT RESA_TAC
2051 THEN POP_ASSUM MP_TAC
2052 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
2053 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
2054 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2055 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]);
2056 ]);;
2057
2058
2059
2060 (**************************)
2061
2062 (***********BBs_V39********)
2063
2064 (**************************)
2065
2066
2067 let DEFORMATION_SMALL_INTERVAL=prove(`deformation ff V (a,b) /\ a<= c/\ c< &0 /\ &0<d /\ d<=b
2068 ==> deformation ff V (c,d)`,
2069 REWRITE_TAC[deformation;IN_REAL_INTERVAL]
2070 THEN RESA_TAC
2071 THEN REPEAT STRIP_TAC
2072 THEN MP_TAC(REAL_ARITH`c < r /\ r < d /\ a <= c/\d <= b
2073 ==> a < r /\ r < b`)
2074 THEN RESA_TAC
2075 THEN REPLICATE_TAC (12-2)(POP_ASSUM MP_TAC)
2076 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2077 THEN MATCH_MP_TAC th)
2078 THEN ASM_REWRITE_TAC[]);;
2079
2080
2081
2082
2083 let DEFORMATION_V3_DEFOR_NOT_IN_V=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2084   MMs_v39 s w /\
2085  w l=v2/\ w (SUC l) =v1
2086 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
2087 ==>  (!i. ?e. &0< e /\ (!t. &0<t /\ t<e ==> &0<dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)))`,
2088 [
2089 REPEAT STRIP_TAC
2090 THEN MP_TAC(SET_RULE`i MOD k= l MOD k\/ ~(i MOD k= l MOD k)`)
2091 THEN RESA_TAC;
2092
2093 MP_TAC HYPER_MM_COLLINEAR
2094 THEN RESA_TAC
2095 THEN MP_TAC UPS_X_POS_SEG
2096 THEN RESA_TAC
2097 THEN ASM_TAC
2098 THEN STRIP_TAC
2099 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2100 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2101 THEN REPEAT RESA_TAC
2102 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
2103 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
2104 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2105 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
2106 THEN MRESA_TAC th[`l:num`])
2107 THEN EXISTS_TAC`e:real`
2108 THEN ASM_REWRITE_TAC[]
2109 THEN ASM_REWRITE_TAC[]
2110 THEN GEN_TAC
2111 THEN REPLICATE_TAC (54-51) (POP_ASSUM MP_TAC)
2112 THEN POP_ASSUM (fun th-> REPEAT STRIP_TAC
2113 THEN MP_TAC(REAL_ARITH`t<e/\ &0< t==> --e<t`)
2114 THEN RESA_TAC
2115 THEN MRESA_TAC th[`t:real`])
2116 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORMV3)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`x2-t:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
2117 THEN POP_ASSUM MP_TAC
2118 THEN MP_TAC(SET_RULE`v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)= v2\/ ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=v2:real^3)`)
2119 THEN RESA_TAC;
2120
2121 REWRITE_TAC[REAL_ARITH`a=a-t<=> t= &0`]
2122 THEN STRIP_TAC
2123 THEN POP_ASSUM (fun th-> ASM_TAC
2124 THEN REWRITE_TAC[th;REAL_ARITH`~(&0< &0)`]);
2125
2126 STRIP_TAC
2127 THEN MATCH_MP_TAC(REAL_ARITH`&0<= a/\ ~(a= &0)==> &0 < a`)
2128 THEN ASM_REWRITE_TAC[dist;NORM_POS_LE]
2129 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t):real^3`;`v2:real^3`];
2130
2131 MATCH_MP_TAC EXISTS_SMALL_LE_CONST
2132 THEN ASM_REWRITE_TAC[]
2133 THEN MP_TAC HYPER_MM_COLLINEAR
2134 THEN RESA_TAC
2135 THEN MATCH_MP_TAC(REAL_ARITH`&0<= a/\ ~(a= &0)==> &0 < a`)
2136 THEN ASM_REWRITE_TAC[dist;NORM_POS_LE]
2137 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
2138 THEN ASM_TAC
2139 THEN STRIP_TAC
2140 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2141 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2142 THEN REPEAT RESA_TAC
2143 THEN POP_ASSUM MP_TAC
2144 THEN POP_ASSUM (fun th-> 
2145 MRESA_TAC DIVISION[`i:num`;`k:num`]
2146 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
2147 THEN MRESA_TAC th[`i MOD k`;`l MOD k`])
2148 THEN POP_ASSUM MP_TAC
2149 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2150 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
2151 THEN MRESA_TAC th[`l:num`])
2152 THEN STRIP_TAC
2153 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v2:real^3`;`(w:num->real^3) i`;]]);;
2154
2155
2156
2157 let DEFORMATION_V3_DEFOR_NOT_IN_V_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2158   MMs_v39 s w /\
2159  w l=v2/\ w (SUC l) =v1
2160 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
2161 ==>  (!i.  ~(i MOD k= l MOD k) ==> (?e. &0< e /\ (!t. --e<t /\ t<e ==> &0<dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))))`,
2162 [REPEAT STRIP_TAC
2163 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST_V1
2164 THEN ASM_REWRITE_TAC[]
2165 THEN MP_TAC HYPER_MM_COLLINEAR
2166 THEN RESA_TAC
2167 THEN MATCH_MP_TAC(REAL_ARITH`&0<= a/\ ~(a= &0)==> &0 < a`)
2168 THEN ASM_REWRITE_TAC[dist;NORM_POS_LE]
2169 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
2170 THEN ASM_TAC
2171 THEN STRIP_TAC
2172 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2173 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2174 THEN REPEAT RESA_TAC
2175 THEN POP_ASSUM MP_TAC
2176 THEN POP_ASSUM (fun th-> 
2177 MRESA_TAC DIVISION[`i:num`;`k:num`]
2178 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
2179 THEN MRESA_TAC th[`i MOD k`;`l MOD k`])
2180 THEN POP_ASSUM MP_TAC
2181 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2182 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
2183 THEN MRESA_TAC th[`l:num`])
2184 THEN STRIP_TAC
2185 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v2:real^3`;`(w:num->real^3) i`;]
2186 ]);;
2187
2188
2189
2190
2191
2192 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2193   MMs_v39 s w /\
2194  w l=v2/\ w (SUC l) =v1
2195 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
2196 ==>  ?e. &0< e /\ (!t i. &0<t /\ t<e ==> &0<dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))`,
2197 [
2198 REPEAT STRIP_TAC
2199 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V
2200 THEN RESA_TAC
2201 THEN POP_ASSUM MP_TAC
2202 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
2203 THEN REWRITE_TAC[SKOLEM_THM]
2204 THEN STRIP_TAC
2205 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k}`
2206 THEN EXISTS_TAC`e1:real`
2207 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k }`ASSUME_TAC;
2208
2209 MATCH_MP_TAC FINITE_SUBSET
2210 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
2211 THEN STRIP_TAC;
2212
2213 MATCH_MP_TAC FINITE_IMAGE
2214 THEN REWRITE_TAC[FINITE_NUMSEG];
2215
2216 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
2217 THEN REPEAT RESA_TAC
2218 THEN EXISTS_TAC`i:num`
2219 THEN POP_ASSUM MP_TAC
2220 THEN POP_ASSUM MP_TAC
2221 THEN POP_ASSUM MP_TAC
2222 THEN ARITH_TAC;
2223
2224 SUBGOAL_THEN`~({(e:num->real) i | i < k } = {})`ASSUME_TAC;
2225
2226
2227 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
2228 THEN EXISTS_TAC`(e:num->real)1`
2229 THEN EXISTS_TAC`1`
2230 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
2231 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
2232 THEN RESA_TAC;
2233
2234 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k}`;`&0`]
2235 THEN REWRITE_TAC[IN_ELIM_THM]
2236 THEN REPEAT RESA_TAC;
2237
2238 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k}`;`t:real`]
2239 THEN POP_ASSUM MP_TAC
2240 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k }`ASSUME_TAC;
2241
2242 REWRITE_TAC[IN_ELIM_THM]
2243 THEN EXISTS_TAC`i MOD k`
2244 THEN ASM_REWRITE_TAC[]
2245 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
2246 THEN RESA_TAC
2247 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
2248
2249 STRIP_TAC
2250 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
2251 THEN REPLICATE_TAC (18-10) (POP_ASSUM MP_TAC)
2252 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2253 THEN MRESA_TAC th[`i:num MOD k`])
2254 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
2255 THEN ASM_TAC
2256 THEN STRIP_TAC
2257 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2258 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2259 THEN REPEAT RESA_TAC
2260 THEN (POP_ASSUM MP_TAC)
2261 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2262 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]);]);;
2263
2264
2265
2266 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2267   MMs_v39 s w /\
2268  w l=v2/\ w (SUC l) =v1
2269 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
2270 ==>  ?e. &0< e /\ (!t i. --e<t /\ t<e/\ ~(i MOD k= l MOD k) ==> &0<dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))`,
2271 [
2272 REPEAT STRIP_TAC
2273 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_V1
2274 THEN RESA_TAC
2275 THEN POP_ASSUM MP_TAC
2276 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
2277 THEN REWRITE_TAC[SKOLEM_THM]
2278 THEN STRIP_TAC
2279 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k/\  ~(i= l MOD k)}`
2280 THEN EXISTS_TAC`e1:real`
2281 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
2282
2283 MATCH_MP_TAC FINITE_SUBSET
2284 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
2285 THEN STRIP_TAC;
2286
2287 MATCH_MP_TAC FINITE_IMAGE
2288 THEN REWRITE_TAC[FINITE_NUMSEG];
2289
2290 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
2291 THEN REPEAT RESA_TAC
2292 THEN EXISTS_TAC`i:num`
2293 THEN POP_ASSUM MP_TAC
2294 THEN POP_ASSUM MP_TAC
2295 THEN POP_ASSUM MP_TAC
2296 THEN ARITH_TAC;
2297
2298 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
2299
2300 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
2301 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(0=l MOD k )`)
2302 THEN RESA_TAC;
2303
2304 EXISTS_TAC`(e:num->real)1`
2305 THEN EXISTS_TAC`1`
2306 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
2307 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
2308 THEN RESA_TAC;
2309
2310 EXISTS_TAC`(e:num->real)0`
2311 THEN EXISTS_TAC`0`
2312 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
2313 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
2314 THEN RESA_TAC;
2315
2316 STRIP_TAC;
2317
2318 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`&0`]
2319 THEN REWRITE_TAC[IN_ELIM_THM]
2320 THEN REPEAT RESA_TAC
2321 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
2322 THEN REPLICATE_TAC (13-5) (POP_ASSUM MP_TAC)
2323 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2324 THEN MRESA_TAC th[`i:num`]);
2325
2326 REPEAT STRIP_TAC
2327 THEN MRESAL_TAC REAL_LE_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`e1:real`][REAL_ARITH`a<=a`]
2328 THEN POP_ASSUM MP_TAC
2329 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
2330
2331 REWRITE_TAC[IN_ELIM_THM]
2332 THEN EXISTS_TAC`i MOD k`
2333 THEN ASM_REWRITE_TAC[]
2334 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
2335 THEN RESA_TAC
2336 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
2337
2338 STRIP_TAC
2339 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
2340 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
2341 THEN RESA_TAC
2342 THEN MRESA_TAC MOD_REFL[`i:num`;`k:num`]
2343 THEN MP_TAC(REAL_ARITH`-- e1<t/\t<e1/\ e1<= e(i MOD k)==> -- e(i MOD k)< t/\ t< e(i MOD k)`)
2344 THEN RESA_TAC
2345 THEN REPLICATE_TAC (12) (POP_ASSUM MP_TAC)
2346 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2347 THEN MRESA_TAC th[`i:num MOD k`])
2348 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
2349 THEN ASM_TAC
2350 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2351 THEN REPEAT RESA_TAC
2352 THEN POP_ASSUM MP_TAC
2353 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
2354 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
2355 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2356 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]);]);;
2357
2358
2359
2360
2361 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2362   MMs_v39 s w /\
2363  w l=v2/\ w (SUC l) =v1
2364 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
2365 ==>  ?e. &0< e /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))`,
2366 STRIP_TAC
2367 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM
2368 THEN RESA_TAC
2369 THEN EXISTS_TAC`e:real`
2370 THEN ASM_REWRITE_TAC[]
2371 THEN REPEAT GEN_TAC
2372 THEN POP_ASSUM(fun th-> STRIP_TAC
2373 THEN MRESA_TAC th[`t:real`;`i:num`])
2374 THEN POP_ASSUM (fun th-> STRIP_TAC
2375 THEN MP_TAC th
2376 THEN RESA_TAC
2377 THEN POP_ASSUM MP_TAC
2378 THEN REWRITE_TAC[DIST_REFL])
2379 THEN REAL_ARITH_TAC);;
2380
2381
2382 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2383   MMs_v39 s w /\
2384  w l=v2/\ w (SUC l) =v1
2385 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
2386 ==>  ?e. &0< e /\ (!t i. -- e<t /\ t<e/\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))`,
2387 STRIP_TAC
2388 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_V1
2389 THEN RESA_TAC
2390 THEN EXISTS_TAC`e:real`
2391 THEN ASM_REWRITE_TAC[]
2392 THEN REPEAT GEN_TAC
2393 THEN POP_ASSUM(fun th-> STRIP_TAC
2394 THEN MRESA_TAC th[`t:real`;`i:num`])
2395 THEN POP_ASSUM (fun th-> STRIP_TAC
2396 THEN MP_TAC th
2397 THEN RESA_TAC
2398 THEN POP_ASSUM MP_TAC
2399 THEN REWRITE_TAC[DIST_REFL])
2400 THEN REAL_ARITH_TAC);;
2401
2402
2403
2404 let V3_DEFOR_EQ_IN_FF=prove_by_refinement(
2405 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2406   MMs_v39 s w /\
2407  w l=v2/\ w (SUC l) =v1 /\
2408 &0< x1 /\ &0<x2   /\ &0< x6 /\
2409 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2410 /\ &0< e/\ &0<t 
2411 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
2412 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2413 /\ IMAGE (w:num->real^3) (:num)=V
2414 ==> (!w. v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t),w IN
2415           IMAGE
2416           (\uv. (if FST uv = v2
2417                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2418                  else FST uv),
2419                 (if SND uv = v2
2420                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2421                  else SND uv))
2422           FF <=> v2,w IN FF)`,
2423 [STRIP_TAC
2424 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
2425 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2426 THEN MP_TAC th
2427 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2428 THEN ASSUME_TAC th
2429 THEN STRIP_TAC)
2430 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2431 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
2432 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
2433 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2434 THEN RESA_TAC
2435 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2436
2437
2438 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
2439 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2440 THEN MP_TAC th
2441 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2442 THEN REPEAT RESA_TAC);
2443
2444 MP_TAC Local_lemmas.CVLF_LF_F
2445 THEN RESA_TAC
2446 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
2447 THEN GEN_TAC
2448 THEN EQ_TAC
2449 THEN RESA_TAC;
2450
2451 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
2452 THEN RESA_TAC;
2453
2454 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
2455 THEN RESA_TAC
2456 THEN REMOVE_ASSUM_TAC
2457 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th]);
2458
2459 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
2460 THEN MP_TAC th)
2461 THEN REPEAT RESA_TAC
2462 THEN REPLICATE_TAC (47-44)(POP_ASSUM MP_TAC)
2463 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2464 THEN MP_TAC th)
2465 THEN EXPAND_TAC"FF"
2466 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
2467 THEN STRIP_TAC
2468 THEN REPLICATE_TAC (48-18)(POP_ASSUM MP_TAC)
2469 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2470 THEN MRESA_TAC th[`t:real`;`x':num`]);
2471
2472 EXISTS_TAC`v2:real^3,w':real^3`
2473 THEN ASM_REWRITE_TAC[]
2474 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,w'):real^3#real^3`]]);;
2475
2476
2477
2478 let V3_DEFOR_EQ_IN_FF_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2479   MMs_v39 s w /\
2480  w l=v2/\ w (SUC l) =v1 /\
2481 &0< x1 /\ &0<x2   /\ &0< x6 /\
2482 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2483 /\ &0< e/\ --e<t 
2484 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
2485 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2486 /\ IMAGE (w:num->real^3) (:num)=V
2487 ==> (!w. v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t),w IN
2488           IMAGE
2489           (\uv. (if FST uv = v2
2490                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2491                  else FST uv),
2492                 (if SND uv = v2
2493                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2494                  else SND uv))
2495           FF <=> v2,w IN FF)`,
2496 [
2497 STRIP_TAC
2498 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
2499 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2500 THEN MP_TAC th
2501 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2502 THEN ASSUME_TAC th
2503 THEN STRIP_TAC)
2504 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2505 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
2506 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
2507 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2508 THEN RESA_TAC
2509 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2510
2511 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
2512 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2513 THEN MP_TAC th
2514 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2515 THEN REPEAT RESA_TAC);
2516
2517 MP_TAC Local_lemmas.CVLF_LF_F
2518 THEN RESA_TAC
2519 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
2520 THEN GEN_TAC
2521 THEN EQ_TAC
2522 THEN RESA_TAC;
2523
2524 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
2525 THEN RESA_TAC;
2526
2527 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
2528 THEN RESA_TAC
2529 THEN REMOVE_ASSUM_TAC
2530 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th]);
2531
2532 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
2533 THEN MP_TAC th)
2534 THEN REPEAT RESA_TAC
2535 THEN REPLICATE_TAC (47-44)(POP_ASSUM MP_TAC)
2536 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2537 THEN MP_TAC th)
2538 THEN EXPAND_TAC"FF"
2539 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
2540 THEN STRIP_TAC
2541 THEN REPLICATE_TAC (48-18)(POP_ASSUM MP_TAC)
2542 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2543 THEN MRESA_TAC th[`t:real`;`x':num`])
2544 THEN ASM_TAC
2545 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2546 THEN REPEAT RESA_TAC
2547 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2548 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`x':num`[ARITH_RULE`4 MOD 4=0`]
2549 THEN MRESA_TAC th[`l:num`])
2550 THEN REPLICATE_TAC (68-61)(POP_ASSUM MP_TAC)
2551 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2552 THEN MP_TAC th)
2553 THEN ASM_REWRITE_TAC[];
2554
2555 EXISTS_TAC`v2:real^3,w':real^3`
2556 THEN ASM_REWRITE_TAC[]
2557 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,w'):real^3#real^3`]]);;
2558
2559
2560
2561
2562
2563
2564
2565
2566 let V3_DEFOR_RHO_NODE=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2567   MMs_v39 s w /\
2568  w l=v2/\ w (SUC l) =v1 /\
2569 &0< x1 /\ &0<x2   /\ &0< x6 /\
2570 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2571 /\ &0< e/\ &0<t 
2572 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
2573 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2574 /\ IMAGE (w:num->real^3) (:num)=V
2575 ==> (rho_node1
2576   (IMAGE
2577    (\uv. (if FST uv = v2
2578           then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2579           else FST uv),
2580          (if SND uv = v2
2581           then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2582           else SND uv))
2583   FF)
2584  (v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t))) = (rho_node1 FF v2)`,
2585 REWRITE_TAC[rho_node1]
2586 THEN STRIP_TAC
2587 THEN MP_TAC V3_DEFOR_EQ_IN_FF
2588 THEN RESA_TAC);;
2589
2590
2591 let V3_DEFOR_RHO_NODE_V1=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2592   MMs_v39 s w /\
2593  w l=v2/\ w (SUC l) =v1 /\
2594 &0< x1 /\ &0<x2   /\ &0< x6 /\
2595 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2596 /\ &0< e/\ --e<t 
2597 /\ (!t i. --e<t /\ t<e/\  ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
2598 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2599 /\ IMAGE (w:num->real^3) (:num)=V
2600 ==> (rho_node1
2601   (IMAGE
2602    (\uv. (if FST uv = v2
2603           then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2604           else FST uv),
2605          (if SND uv = v2
2606           then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2607           else SND uv))
2608   FF)
2609  (v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t))) = (rho_node1 FF v2)`,
2610 REWRITE_TAC[rho_node1]
2611 THEN STRIP_TAC
2612 THEN MP_TAC V3_DEFOR_EQ_IN_FF_V1
2613 THEN RESA_TAC);;
2614
2615
2616
2617
2618
2619 let V3_DEFOR_EQ_IN_FF_SYM=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2620   MMs_v39 s w /\
2621  w l=v2/\ w (SUC l) =v1 /\
2622 &0< x1 /\ &0<x2   /\ &0< x6 /\
2623 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2624 /\ &0< e/\ &0<t 
2625 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
2626 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2627 /\ IMAGE (w:num->real^3) (:num)=V
2628 ==> (!w. w,v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t) IN
2629           IMAGE
2630           (\uv. (if FST uv = v2
2631                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2632                  else FST uv),
2633                 (if SND uv = v2
2634                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2635                  else SND uv))
2636           FF <=> w,v2 IN FF)`,
2637 [
2638 STRIP_TAC
2639 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
2640 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2641 THEN MP_TAC th
2642 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2643 THEN ASSUME_TAC th
2644 THEN STRIP_TAC)
2645 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2646 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
2647 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
2648 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2649 THEN RESA_TAC
2650 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2651
2652
2653 REPLICATE_TAC (40-23)(POP_ASSUM MP_TAC)
2654 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2655 THEN MP_TAC th
2656 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2657 THEN REPEAT RESA_TAC);
2658
2659 MP_TAC Local_lemmas.CVLF_LF_F
2660 THEN RESA_TAC
2661 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
2662 THEN GEN_TAC
2663 THEN EQ_TAC
2664 THEN RESA_TAC;
2665
2666 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
2667 THEN RESA_TAC;
2668
2669 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
2670 THEN RESA_TAC
2671 THEN REMOVE_ASSUM_TAC
2672 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th]);
2673
2674 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
2675 THEN MP_TAC th)
2676 THEN REPEAT RESA_TAC
2677 THEN REPLICATE_TAC (47-44)(POP_ASSUM MP_TAC)
2678 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2679 THEN MP_TAC th)
2680 THEN EXPAND_TAC"FF"
2681 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
2682 THEN STRIP_TAC
2683 THEN REPLICATE_TAC (48-18)(POP_ASSUM MP_TAC)
2684 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2685 THEN MRESA_TAC th[`t:real`;`SUC x':num`]);
2686
2687 EXISTS_TAC`w':real^3,v2:real^3`
2688 THEN ASM_REWRITE_TAC[]
2689 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w',v2):real^3#real^3`]]);;
2690
2691
2692
2693
2694
2695 let V3_DEFOR_EQ_IN_FF_SYM_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2696   MMs_v39 s w /\
2697  w l=v2/\ w (SUC l) =v1 /\
2698 &0< x1 /\ &0<x2   /\ &0< x6 /\
2699 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2700 /\ &0< e/\ --e<t 
2701 /\ (!t i. --e<t /\ t<e /\  ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
2702 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2703 /\ IMAGE (w:num->real^3) (:num)=V
2704 ==> (!w. w,v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t) IN
2705           IMAGE
2706           (\uv. (if FST uv = v2
2707                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2708                  else FST uv),
2709                 (if SND uv = v2
2710                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2711                  else SND uv))
2712           FF <=> w,v2 IN FF)`,
2713 [STRIP_TAC
2714 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
2715 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2716 THEN MP_TAC th
2717 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2718 THEN ASSUME_TAC th
2719 THEN STRIP_TAC)
2720 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2721 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
2722 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
2723 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2724 THEN RESA_TAC
2725 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2726
2727 REPLICATE_TAC (40-23)(POP_ASSUM MP_TAC)
2728 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2729 THEN MP_TAC th
2730 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2731 THEN REPEAT RESA_TAC);
2732
2733 MP_TAC Local_lemmas.CVLF_LF_F
2734 THEN RESA_TAC
2735 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
2736 THEN GEN_TAC
2737 THEN EQ_TAC
2738 THEN RESA_TAC;
2739
2740 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
2741 THEN RESA_TAC;
2742
2743 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
2744 THEN RESA_TAC
2745 THEN REMOVE_ASSUM_TAC
2746 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th]);
2747
2748 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
2749 THEN MP_TAC th)
2750 THEN REPEAT RESA_TAC
2751 THEN REPLICATE_TAC (47-44)(POP_ASSUM MP_TAC)
2752 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2753 THEN MP_TAC th)
2754 THEN EXPAND_TAC"FF"
2755 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
2756 THEN STRIP_TAC
2757 THEN REPLICATE_TAC (48-18)(POP_ASSUM MP_TAC)
2758 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2759 THEN MRESA_TAC th[`t:real`;`SUC x':num`])
2760 THEN ASM_TAC
2761 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2762 THEN REPEAT RESA_TAC
2763 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2764 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`SUC x':num`[ARITH_RULE`4 MOD 4=0`]
2765 THEN MRESA_TAC th[`l:num`])
2766 THEN REPLICATE_TAC (68-61)(POP_ASSUM MP_TAC)
2767 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2768 THEN MP_TAC th)
2769 THEN ASM_REWRITE_TAC[];
2770
2771 EXISTS_TAC`w':real^3,v2:real^3`
2772 THEN ASM_REWRITE_TAC[]
2773 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w',v2):real^3#real^3`]]);;
2774
2775
2776
2777
2778
2779
2780
2781 let DEFORMATION_AZIM_V3_DEFOR_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2782   MMs_v39 s w /\
2783  w l=v2/\ w (SUC l) =v1 /\
2784 &0< x1 /\ &0<x2   /\ &0< x6 /\
2785   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
2786  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
2787  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
2788 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2789 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2790 /\ IMAGE (w:num->real^3) (:num)=V
2791 ==>
2792 (?e. &0< e/\ (!t. &0< t/\ t< e ==>
2793 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t)
2794  (rho_node1
2795   (IMAGE
2796    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
2797          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
2798   FF)
2799  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t))
2800  (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
2801       IMAGE
2802       (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
2803             v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
2804       FF) =
2805  azim (vec 0) v2 (rho_node1 FF v2) (@a. a,v2 IN FF)))`,
2806 [
2807 STRIP_TAC
2808 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ
2809 THEN RESA_TAC
2810 THEN ASM_TAC
2811 THEN REPEAT RESA_TAC
2812 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3)  (l + k - 1)`]
2813 THEN ABBREV_TAC`e1=(min e e')/ &2`
2814 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
2815 ==> &0< e1/\ e1< e/\ e1<e'`)
2816 THEN RESA_TAC
2817 THEN EXISTS_TAC`e1:real`
2818 THEN ASM_REWRITE_TAC[]
2819 THEN REPEAT STRIP_TAC
2820 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e
2821 ==> t< e`)
2822 THEN RESA_TAC
2823 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SYM
2824 THEN RESA_TAC
2825 THEN ASM_SIMP_TAC[v3_defor_v4;]
2826 THEN MP_TAC V3_DEFOR_RHO_NODE
2827 THEN RESA_TAC
2828 THEN ASM_REWRITE_TAC[GSYM ivs_rho_node1]
2829 THEN ASM_TAC
2830 THEN STRIP_TAC
2831 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2832 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2833 THEN REPEAT RESA_TAC
2834 THEN REPLICATE_TAC (67-31) (POP_ASSUM MP_TAC)
2835 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2836 THEN MP_TAC th)
2837 THEN RESA_TAC
2838 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2839 THEN MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2840 THEN MP_TAC Local_lemmas.CVLF_LF_F
2841 THEN RESA_TAC
2842 THEN SUBGOAL_THEN`(w:num->real^3) (l) IN V` ASSUME_TAC;
2843
2844 EXPAND_TAC"V"
2845 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
2846 THEN EXISTS_TAC`l:num`
2847 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
2848
2849 MRESA_TAC (GEN_ALL Local_lemmas.ITER_CARD_MINUS1_EQ_IVS_RN1)[`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`]
2850 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3) (l)`])
2851 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)[`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l)`;`w:num->real^3`;`l:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;is_scs_v39;periodic2]
2852 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`SUC 0`][ITER] THEN MRESA_TAC th[`k-1`])
2853 THEN ASM_REWRITE_TAC[ARITH_RULE`SUC 0+l= SUC(l)/\ k-1+l= l+k-1`]
2854 THEN REPLICATE_TAC (75-57) (POP_ASSUM MP_TAC)
2855 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2856 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e'
2857 ==> t< e'`)
2858 THEN RESA_TAC
2859 THEN MRESA_TAC th[`t:real`])
2860 THEN MATCH_MP_TAC Planarity.aff_gt2_subset_aff_ge
2861 THEN ASM_REWRITE_TAC[]
2862 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`(w:num->real^3)(l+k-1)`]
2863 THEN STRIP_TAC;
2864
2865 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
2866 THEN EXISTS_TAC`v1:real^3`
2867 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
2868 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
2869 THEN ASM_REWRITE_TAC[];
2870
2871 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
2872 THEN EXISTS_TAC`(w:num->real^3)(l+k-1)`
2873 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
2874 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
2875 THEN ASM_REWRITE_TAC[]]);;
2876
2877
2878
2879 let DEFORMATION_AZIM_V3_DEFOR_V1_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2880   MMs_v39 s w /\
2881  w l=v2/\ w (SUC l) =v1 /\
2882 &0< x1 /\ &0<x2   /\ &0< x6 /\
2883   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
2884  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
2885  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
2886 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2887 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2888 /\ IMAGE (w:num->real^3) (:num)=V
2889 ==>
2890 (?e. &0< e/\ (!t. --e< t/\ t< e ==>
2891 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t)
2892  (rho_node1
2893   (IMAGE
2894    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
2895          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
2896   FF)
2897  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t))
2898  (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
2899       IMAGE
2900       (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
2901             v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
2902       FF) =
2903  azim (vec 0) v2 (rho_node1 FF v2) (@a. a,v2 IN FF)))`,
2904 [
2905 STRIP_TAC
2906 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1
2907 THEN RESA_TAC
2908 THEN ASM_TAC
2909 THEN REPEAT RESA_TAC
2910 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3)  (l + k - 1)`]
2911 THEN ABBREV_TAC`e1=(min e e')/ &2`
2912 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
2913 ==> &0< e1/\ e1< e/\ e1<e'`)
2914 THEN RESA_TAC
2915 THEN EXISTS_TAC`e1:real`
2916 THEN ASM_REWRITE_TAC[]
2917 THEN REPEAT STRIP_TAC
2918 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
2919 ==> t< e/\ --e<t`)
2920 THEN RESA_TAC
2921 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SYM_V1
2922 THEN RESA_TAC
2923 THEN ASM_SIMP_TAC[v3_defor_v4;]
2924 THEN MP_TAC V3_DEFOR_RHO_NODE_V1
2925 THEN RESA_TAC
2926 THEN ASM_REWRITE_TAC[GSYM ivs_rho_node1]
2927 THEN ASM_TAC
2928 THEN STRIP_TAC
2929 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2930 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2931 THEN REPEAT RESA_TAC
2932 THEN REPLICATE_TAC (68-31) (POP_ASSUM MP_TAC)
2933 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2934 THEN MP_TAC th)
2935 THEN RESA_TAC
2936 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2937 THEN MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2938 THEN MP_TAC Local_lemmas.CVLF_LF_F
2939 THEN RESA_TAC
2940 THEN SUBGOAL_THEN`(w:num->real^3) (l) IN V` ASSUME_TAC;
2941
2942 EXPAND_TAC"V"
2943 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
2944 THEN EXISTS_TAC`l:num`
2945 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
2946
2947 MRESA_TAC (GEN_ALL Local_lemmas.ITER_CARD_MINUS1_EQ_IVS_RN1)[`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`]
2948 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3) (l)`])
2949 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)[`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l)`;`w:num->real^3`;`l:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;is_scs_v39;periodic2]
2950 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`SUC 0`][ITER] THEN MRESA_TAC th[`k-1`])
2951 THEN ASM_REWRITE_TAC[ARITH_RULE`SUC 0+l= SUC(l)/\ k-1+l= l+k-1`];
2952
2953 REPLICATE_TAC (76-57) (POP_ASSUM MP_TAC)
2954 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2955 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e' /\ --e1<t
2956 ==> t< e'/\ --e'<t`)
2957 THEN RESA_TAC
2958 THEN MRESA_TAC th[`t:real`])
2959 THEN MATCH_MP_TAC Planarity.aff_gt2_subset_aff_ge
2960 THEN ASM_REWRITE_TAC[]
2961 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`(w:num->real^3)(l+k-1)`]
2962 THEN STRIP_TAC;
2963
2964 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
2965 THEN EXISTS_TAC`v1:real^3`
2966 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
2967 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
2968 THEN ASM_REWRITE_TAC[];
2969
2970 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
2971 THEN EXISTS_TAC`(w:num->real^3)(l+k-1)`
2972 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
2973 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
2974 THEN ASM_REWRITE_TAC[]]);;
2975
2976
2977
2978
2979
2980
2981
2982 let V3_DEFOR_EQ_IN_FF_AT_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2983   MMs_v39 s w /\
2984  w l=v2/\ w (SUC l) =v1 /\
2985 &0< x1 /\ &0<x2   /\ &0< x6 /\
2986  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
2987 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2988 /\ &0< e/\ &0<t 
2989 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
2990 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2991 /\ IMAGE (w:num->real^3) (:num)=V
2992 ==> 
2993 (!w. v1,w IN
2994           IMAGE
2995           (\uv. (if FST uv = v2
2996                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2997                  else FST uv),
2998                 (if SND uv = v2
2999                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3000                  else SND uv))
3001           FF<=> 
3002 v1,w IN FF)`,
3003 [
3004 STRIP_TAC
3005 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
3006 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3007 THEN MP_TAC th
3008 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3009 THEN ASSUME_TAC th
3010 THEN STRIP_TAC)
3011 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3012 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
3013 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
3014 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3015 THEN RESA_TAC
3016 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
3017
3018
3019 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
3020 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3021 THEN MP_TAC th
3022 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3023 THEN REPEAT RESA_TAC);
3024
3025 MP_TAC Local_lemmas.CVLF_LF_F
3026 THEN RESA_TAC
3027 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
3028 THEN GEN_TAC
3029 THEN EQ_TAC
3030 THEN RESA_TAC;
3031
3032 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
3033 THEN RESA_TAC;
3034
3035
3036 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3037 THEN MP_TAC th)
3038 THEN REPEAT RESA_TAC
3039 THEN REPLICATE_TAC (44-15)(POP_ASSUM MP_TAC)
3040 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3041 THEN MRESA_TAC th[`t:real`;`SUC l:num`])
3042 THEN POP_ASSUM MP_TAC
3043 THEN REMOVE_ASSUM_TAC
3044 THEN POP_ASSUM MP_TAC
3045 THEN SET_TAC[];
3046
3047 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3048 THEN MP_TAC th)
3049 THEN REPEAT RESA_TAC
3050 THEN MP_TAC(SET_RULE`v2= SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
3051 THEN RESA_TAC;
3052
3053 SUBGOAL_THEN`v1,v2 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
3054
3055 ASM_REWRITE_TAC[];
3056
3057
3058 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3059
3060 EXPAND_TAC"FF"
3061 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3062 THEN EXISTS_TAC`l+k-1`
3063 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3064 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3065 THEN RESA_TAC
3066 THEN ASM_TAC 
3067 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3068 THEN REPEAT RESA_TAC;
3069
3070 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v1:real^3`;`(w:num->real^3) (l+k-1)`]
3071 THEN REPLICATE_TAC (49-8)(POP_ASSUM MP_TAC)
3072 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3073 THEN MP_TAC th)
3074 THEN RESA_TAC
3075 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`(w:num->real^3) (l+k-1)`]
3076 THEN POP_ASSUM MP_TAC
3077 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3078 THEN ASM_REWRITE_TAC[];
3079
3080 EXISTS_TAC`v1:real^3,w':real^3`
3081 THEN ASM_REWRITE_TAC[]
3082 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
3083 THEN POP_ASSUM MP_TAC
3084 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3085 THEN RESA_TAC
3086 THEN MP_TAC(SET_RULE`v2= w':real^3\/ ~(v2=w')`)
3087 THEN RESA_TAC;
3088
3089 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3090
3091 EXPAND_TAC"FF"
3092 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3093 THEN EXISTS_TAC`l+k-1`
3094 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3095 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3096 THEN RESA_TAC
3097 THEN ASM_TAC 
3098 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3099 THEN REPEAT RESA_TAC;
3100
3101 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v1:real^3`;`(w:num->real^3) (l+k-1)`]
3102 THEN REPLICATE_TAC (51-8)(POP_ASSUM MP_TAC)
3103 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3104 THEN MP_TAC th)
3105 THEN RESA_TAC
3106 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`(w:num->real^3) (l+k-1)`]
3107 THEN POP_ASSUM MP_TAC
3108 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3109 THEN ASM_REWRITE_TAC[]]);;
3110
3111
3112
3113
3114 let V3_DEFOR_EQ_IN_FF_AT_V1_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3115   MMs_v39 s w /\
3116  w l=v2/\ w (SUC l) =v1 /\
3117 &0< x1 /\ &0<x2   /\ &0< x6 /\
3118  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3119 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3120 /\ &0< e/\ --e<t 
3121 /\ (!t i. --e<t /\ t<e /\  ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
3122 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3123 /\ IMAGE (w:num->real^3) (:num)=V
3124 ==> 
3125 (!w. v1,w IN
3126           IMAGE
3127           (\uv. (if FST uv = v2
3128                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3129                  else FST uv),
3130                 (if SND uv = v2
3131                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3132                  else SND uv))
3133           FF<=> 
3134 v1,w IN FF)`,
3135 [
3136 STRIP_TAC
3137 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
3138 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3139 THEN MP_TAC th
3140 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3141 THEN ASSUME_TAC th
3142 THEN STRIP_TAC)
3143 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3144 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
3145 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
3146 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3147 THEN RESA_TAC
3148 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
3149
3150 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
3151 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3152 THEN MP_TAC th
3153 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3154 THEN REPEAT RESA_TAC);
3155
3156 MP_TAC Local_lemmas.CVLF_LF_F
3157 THEN RESA_TAC
3158 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
3159 THEN GEN_TAC
3160 THEN EQ_TAC
3161 THEN RESA_TAC;
3162
3163 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
3164 THEN RESA_TAC;
3165
3166 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3167 THEN MP_TAC th)
3168 THEN REPEAT RESA_TAC
3169 THEN REPLICATE_TAC (44-15)(POP_ASSUM MP_TAC)
3170 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3171 THEN MRESA_TAC th[`t:real`;`SUC l:num`])
3172 THEN POP_ASSUM MP_TAC
3173 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
3174 THEN RESA_TAC
3175 THEN POP_ASSUM(fun th-> MRESA_TAC th [`l:num`])
3176 THEN REMOVE_ASSUM_TAC
3177 THEN REMOVE_ASSUM_TAC
3178 THEN POP_ASSUM MP_TAC
3179 THEN SET_TAC[];
3180
3181 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3182 THEN MP_TAC th)
3183 THEN REPEAT RESA_TAC
3184 THEN MP_TAC(SET_RULE`v2= SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
3185 THEN RESA_TAC;
3186
3187 SUBGOAL_THEN`v1,v2 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
3188
3189 ASM_REWRITE_TAC[];
3190
3191 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3192
3193 EXPAND_TAC"FF"
3194 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3195 THEN EXISTS_TAC`l+k-1`
3196 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3197 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3198 THEN RESA_TAC
3199 THEN ASM_TAC 
3200 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3201 THEN REPEAT RESA_TAC;
3202
3203 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v1:real^3`;`(w:num->real^3) (l+k-1)`]
3204 THEN REPLICATE_TAC (49-8)(POP_ASSUM MP_TAC)
3205 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3206 THEN MP_TAC th)
3207 THEN RESA_TAC
3208 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`(w:num->real^3) (l+k-1)`]
3209 THEN POP_ASSUM MP_TAC
3210 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3211 THEN ASM_REWRITE_TAC[];
3212
3213 EXISTS_TAC`v1:real^3,w':real^3`
3214 THEN ASM_REWRITE_TAC[]
3215 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
3216 THEN POP_ASSUM MP_TAC
3217 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3218 THEN RESA_TAC
3219 THEN MP_TAC(SET_RULE`v2= w':real^3\/ ~(v2=w')`)
3220 THEN RESA_TAC;
3221
3222 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3223
3224 EXPAND_TAC"FF"
3225 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3226 THEN EXISTS_TAC`l+k-1`
3227 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3228 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3229 THEN RESA_TAC
3230 THEN ASM_TAC 
3231 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3232 THEN REPEAT RESA_TAC;
3233
3234 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v1:real^3`;`(w:num->real^3) (l+k-1)`]
3235 THEN REPLICATE_TAC (51-8)(POP_ASSUM MP_TAC)
3236 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3237 THEN MP_TAC th)
3238 THEN RESA_TAC
3239 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`(w:num->real^3) (l+k-1)`]
3240 THEN POP_ASSUM MP_TAC
3241 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3242 THEN ASM_REWRITE_TAC[]]);;
3243
3244
3245 let V3_DEFOR_RHO_NODE_AT_V1=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3246   MMs_v39 s w /\
3247  w l=v2/\ w (SUC l) =v1 /\
3248 &0< x1 /\ &0<x2   /\ &0< x6 /\
3249  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3250 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3251 /\ &0< e/\ &0<t 
3252 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
3253 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3254 /\ IMAGE (w:num->real^3) (:num)=V
3255 ==> 
3256 (rho_node1
3257   (IMAGE
3258    (\uv. (if FST uv = v2
3259           then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3260           else FST uv),
3261          (if SND uv = v2
3262           then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3263           else SND uv))
3264   FF)
3265  v1) 
3266 =(rho_node1 FF v1)`,
3267 REWRITE_TAC[rho_node1]
3268 THEN STRIP_TAC
3269 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V1
3270 THEN RESA_TAC);;
3271
3272
3273
3274 let V3_DEFOR_RHO_NODE_AT_V1_V1=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3275   MMs_v39 s w /\
3276  w l=v2/\ w (SUC l) =v1 /\
3277 &0< x1 /\ &0<x2   /\ &0< x6 /\
3278  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3279 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3280 /\ &0< e/\ --e<t 
3281 /\ (!t i. --e<t /\ t<e /\  ~(i MOD k= l MOD k)==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
3282 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3283 /\ IMAGE (w:num->real^3) (:num)=V
3284 ==> 
3285 (rho_node1
3286   (IMAGE
3287    (\uv. (if FST uv = v2
3288           then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3289           else FST uv),
3290          (if SND uv = v2
3291           then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3292           else SND uv))
3293   FF)
3294  v1) 
3295 =(rho_node1 FF v1)`,
3296 REWRITE_TAC[rho_node1]
3297 THEN STRIP_TAC
3298 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V1_V1
3299 THEN RESA_TAC);;
3300
3301
3302
3303
3304
3305
3306
3307 let V3_DEFOR_EQ_IN_FF_AT_V1_SYM=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3308   MMs_v39 s w /\
3309  w l=v2/\ w (SUC l) =v1 /\
3310 &0< x1 /\ &0<x2   /\ &0< x6 /\
3311  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3312 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3313 /\ &0< e/\ &0<t 
3314 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
3315 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3316 /\ IMAGE (w:num->real^3) (:num)=V
3317 ==> 
3318 (@w. w,v1 IN
3319           IMAGE
3320           (\uv. (if FST uv = v2
3321                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3322                  else FST uv),
3323                 (if SND uv = v2
3324                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3325                  else SND uv))
3326           FF)=
3327 v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)`,
3328 [
3329 STRIP_TAC
3330 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
3331 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3332 THEN MP_TAC th
3333 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3334 THEN ASSUME_TAC th
3335 THEN STRIP_TAC)
3336 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3337 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
3338 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
3339 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3340 THEN RESA_TAC
3341 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
3342
3343 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
3344 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3345 THEN MP_TAC th
3346 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3347 THEN REPEAT RESA_TAC);
3348
3349 MP_TAC Local_lemmas.CVLF_LF_F
3350 THEN RESA_TAC
3351 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
3352 THEN STRIP_TAC;
3353
3354 EXISTS_TAC`v3_defor_v1 (-- &1) (v1) (v2) x1 x2 x6 x6 (x2 - t)`
3355 THEN ASM_REWRITE_TAC[IMAGE;IN_ELIM_THM]
3356 THEN EXISTS_TAC`v2:real^3,v1:real^3`
3357 THEN ASM_REWRITE_TAC[]
3358 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
3359 THEN POP_ASSUM MP_TAC
3360 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3361 THEN RESA_TAC
3362 THEN EXPAND_TAC"FF"
3363 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3364 THEN EXISTS_TAC`l:num`
3365 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3366 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3367 THEN RESA_TAC
3368 THEN ASM_TAC 
3369 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3370 THEN REPEAT RESA_TAC;
3371
3372 REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
3373 THEN GEN_TAC
3374 THEN RESA_TAC;
3375
3376 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
3377 THEN RESA_TAC;
3378
3379 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3380 THEN MP_TAC th)
3381 THEN REPEAT RESA_TAC
3382 THEN REPLICATE_TAC (45-16)(POP_ASSUM MP_TAC)
3383 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3384 THEN MRESA_TAC th[`t:real`;`SUC l:num`])
3385 THEN POP_ASSUM MP_TAC
3386 THEN POP_ASSUM MP_TAC
3387 THEN SET_TAC[];
3388
3389 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3390 THEN MP_TAC th)
3391 THEN REPEAT RESA_TAC
3392 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
3393 THEN RESA_TAC;
3394
3395 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3396 THEN MP_TAC th)
3397 THEN REPEAT RESA_TAC;
3398
3399 SUBGOAL_THEN`w',v1 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
3400
3401 ASM_REWRITE_TAC[];
3402
3403 SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3404
3405 EXPAND_TAC"FF"
3406 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3407 THEN EXISTS_TAC`l:num`
3408 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3409 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3410 THEN RESA_TAC
3411 THEN ASM_TAC 
3412 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3413 THEN REPEAT RESA_TAC;
3414
3415 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v1:real^3`;`FF:real^3#real^3->bool`;`v2:real^3`;`(w':real^3) `]]);;
3416
3417
3418
3419 let V3_DEFOR_EQ_IN_FF_AT_V1_SYM_V1=prove_by_refinement(
3420 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3421   MMs_v39 s w /\
3422  w l=v2/\ w (SUC l) =v1 /\
3423 &0< x1 /\ &0<x2   /\ &0< x6 /\
3424  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3425 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3426 /\ &0< e/\ --e<t 
3427 /\ (!t i. --e<t /\ t<e  /\  ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
3428 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3429 /\ IMAGE (w:num->real^3) (:num)=V
3430 ==> 
3431 (@w. w,v1 IN
3432           IMAGE
3433           (\uv. (if FST uv = v2
3434                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3435                  else FST uv),
3436                 (if SND uv = v2
3437                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3438                  else SND uv))
3439           FF)=
3440 v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)`,
3441 [
3442 STRIP_TAC
3443 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
3444 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3445 THEN MP_TAC th
3446 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3447 THEN ASSUME_TAC th
3448 THEN STRIP_TAC)
3449 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3450 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
3451 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
3452 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3453 THEN RESA_TAC
3454 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
3455
3456 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
3457 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3458 THEN MP_TAC th
3459 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3460 THEN REPEAT RESA_TAC);
3461
3462 MP_TAC Local_lemmas.CVLF_LF_F
3463 THEN RESA_TAC
3464 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
3465 THEN STRIP_TAC;
3466
3467 EXISTS_TAC`v3_defor_v1 (-- &1) (v1) (v2) x1 x2 x6 x6 (x2 - t)`
3468 THEN ASM_REWRITE_TAC[IMAGE;IN_ELIM_THM]
3469 THEN EXISTS_TAC`v2:real^3,v1:real^3`
3470 THEN ASM_REWRITE_TAC[]
3471 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
3472 THEN POP_ASSUM MP_TAC
3473 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3474 THEN RESA_TAC
3475 THEN EXPAND_TAC"FF"
3476 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3477 THEN EXISTS_TAC`l:num`
3478 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3479 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3480 THEN RESA_TAC
3481 THEN ASM_TAC 
3482 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3483 THEN REPEAT RESA_TAC;
3484
3485 REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
3486 THEN GEN_TAC
3487 THEN RESA_TAC;
3488
3489 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
3490 THEN RESA_TAC;
3491
3492 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3493 THEN MP_TAC th)
3494 THEN REPEAT RESA_TAC
3495 THEN REPLICATE_TAC (45-16)(POP_ASSUM MP_TAC)
3496 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3497 THEN MRESA_TAC th[`t:real`;`SUC l:num`])
3498 THEN POP_ASSUM MP_TAC
3499 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
3500 THEN RESA_TAC
3501 THEN POP_ASSUM(fun th-> MRESA_TAC th [`l:num`])
3502 THEN POP_ASSUM MP_TAC
3503 THEN POP_ASSUM MP_TAC
3504 THEN SET_TAC[];
3505
3506 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3507 THEN MP_TAC th)
3508 THEN REPEAT RESA_TAC
3509 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
3510 THEN RESA_TAC;
3511
3512 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3513 THEN MP_TAC th)
3514 THEN REPEAT RESA_TAC;
3515
3516 SUBGOAL_THEN`w',v1 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
3517
3518 ASM_REWRITE_TAC[];
3519
3520 SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3521
3522 EXPAND_TAC"FF"
3523 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3524 THEN EXISTS_TAC`l:num`
3525 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3526 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3527 THEN RESA_TAC
3528 THEN ASM_TAC 
3529 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3530 THEN REPEAT RESA_TAC;
3531
3532 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v1:real^3`;`FF:real^3#real^3->bool`;`v2:real^3`;`(w':real^3) `]]);;
3533
3534
3535
3536
3537 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3538   MMs_v39 s w /\
3539  w l=v2/\ w (SUC l) =v1 /\
3540 &0< x1 /\ &0<x2   /\ &0< x6 /\
3541   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
3542  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3543  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
3544 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3545 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3546 /\ IMAGE (w:num->real^3) (:num)=V 
3547 ==>
3548 (?e. &0< e/\ (!t. &0< t/\ t< e ==>
3549 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v1 t)
3550  (rho_node1
3551   (IMAGE
3552    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
3553          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
3554   FF)
3555  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v1 t))
3556  (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v1 t IN
3557       IMAGE
3558       (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
3559             v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
3560       FF) =
3561  azim (vec 0) v1 (rho_node1 FF v1) (@a. a,v1 IN FF)))`,
3562 [
3563 STRIP_TAC
3564 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ
3565 THEN RESA_TAC
3566 THEN ASM_TAC
3567 THEN REPEAT RESA_TAC
3568 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3)  (l + k - 1)`]
3569 THEN ABBREV_TAC`e1=(min e e')/ &2`
3570 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
3571 ==> &0< e1/\ e1< e/\ e1<e'`)
3572 THEN RESA_TAC
3573 THEN EXISTS_TAC`e1:real`
3574 THEN ASM_REWRITE_TAC[]
3575 THEN REPEAT STRIP_TAC
3576 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e
3577 ==> t< e`)
3578 THEN RESA_TAC
3579 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
3580 THEN POP_ASSUM MP_TAC
3581 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3582 THEN RESA_TAC
3583 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V1_SYM
3584 THEN RESA_TAC
3585 THEN ASM_SIMP_TAC[v3_defor_v4;]
3586 THEN MP_TAC V3_DEFOR_RHO_NODE_AT_V1
3587 THEN RESA_TAC
3588 THEN ASM_REWRITE_TAC[GSYM ivs_rho_node1]
3589 THEN ASM_TAC
3590 THEN STRIP_TAC
3591 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3592 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3593 THEN REPEAT RESA_TAC
3594 THEN REPLICATE_TAC (73-31) (POP_ASSUM MP_TAC)
3595 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3596 THEN MP_TAC th)
3597 THEN RESA_TAC
3598 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3599 THEN MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3600 THEN MP_TAC Local_lemmas.CVLF_LF_F
3601 THEN RESA_TAC
3602 THEN SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3603
3604
3605 EXPAND_TAC"FF"
3606 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3607 THEN EXISTS_TAC`l:num`
3608 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3609 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3610 THEN RESA_TAC
3611 THEN ASM_TAC 
3612 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3613 THEN REPEAT RESA_TAC;
3614
3615 MRESA_TAC (GEN_ALL Local_lemmas.IVS_RHO_NODE1_DETE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v1:real^3`;`v2:real^3`]
3616 THEN MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w (l + k - 1)}/\
3617  aff_gt {vec 0} {v1, w (l + k - 1)} SUBSET aff_ge {vec 0} {v1, w (l + k - 1)}
3618 ==> v2 IN aff_ge {vec 0} {v1:real^3, w (l + k - 1)}`)
3619 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
3620 THEN RESA_TAC
3621 THEN MRESA_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT[`vec 0:real^3`;`v1:real^3`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;`(rho_node1 FF v1)`;]
3622 THEN  MATCH_MP_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT
3623 THEN STRIP_TAC;
3624
3625 MATCH_MP_TAC(GEN_ALL (SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
3626 THEN EXISTS_TAC`aff_gt{vec 0:real^3} {v1,w(l+k-1)}`
3627 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
3628 THEN REPLICATE_TAC (81-57) (POP_ASSUM MP_TAC)
3629 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3630 THEN MATCH_MP_TAC th)
3631 THEN ASM_REWRITE_TAC[]
3632 THEN MATCH_MP_TAC(REAL_ARITH`t<e1/\ e1<e'==> t< e'`)
3633 THEN ASM_REWRITE_TAC[];
3634
3635 ASM_REWRITE_TAC[]
3636 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
3637 THEN MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
3638 THEN EXISTS_TAC`(w:num->real^3) (l+k-1)`
3639 THEN ASM_REWRITE_TAC[]
3640 THEN REPLICATE_TAC (81-57) (POP_ASSUM MP_TAC)
3641 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3642 THEN MATCH_MP_TAC th)
3643 THEN ASM_REWRITE_TAC[]
3644 THEN MATCH_MP_TAC(REAL_ARITH`t<e1/\ e1<e'==> t< e'`)
3645 THEN ASM_REWRITE_TAC[]]);;
3646
3647
3648 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_V1_V1=prove_by_refinement(
3649 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3650   MMs_v39 s w /\
3651  w l=v2/\ w (SUC l) =v1 /\
3652 &0< x1 /\ &0<x2   /\ &0< x6 /\
3653   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
3654  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3655  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
3656 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3657 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3658 /\ IMAGE (w:num->real^3) (:num)=V 
3659 ==>
3660 (?e. &0< e/\ (!t. --e< t/\ t< e ==>
3661 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v1 t)
3662  (rho_node1
3663   (IMAGE
3664    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
3665          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
3666   FF)
3667  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v1 t))
3668  (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v1 t IN
3669       IMAGE
3670       (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
3671             v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
3672       FF) =
3673  azim (vec 0) v1 (rho_node1 FF v1) (@a. a,v1 IN FF)))`,
3674 [
3675 STRIP_TAC
3676 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1
3677 THEN RESA_TAC
3678 THEN ASM_TAC
3679 THEN REPEAT RESA_TAC
3680 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3)  (l + k - 1)`]
3681 THEN ABBREV_TAC`e1=(min e e')/ &2`
3682 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
3683 ==> &0< e1/\ e1< e/\ e1<e'`)
3684 THEN RESA_TAC
3685 THEN EXISTS_TAC`e1:real`
3686 THEN ASM_REWRITE_TAC[]
3687 THEN REPEAT STRIP_TAC
3688 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
3689 ==> t< e/\ --e<t`)
3690 THEN RESA_TAC
3691 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
3692 THEN POP_ASSUM MP_TAC
3693 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3694 THEN RESA_TAC
3695 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V1_SYM_V1
3696 THEN RESA_TAC
3697 THEN ASM_SIMP_TAC[v3_defor_v4;]
3698 THEN MP_TAC V3_DEFOR_RHO_NODE_AT_V1_V1
3699 THEN RESA_TAC
3700 THEN ASM_REWRITE_TAC[GSYM ivs_rho_node1]
3701 THEN ASM_TAC
3702 THEN STRIP_TAC
3703 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3704 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3705 THEN REPEAT RESA_TAC;
3706
3707 REPLICATE_TAC (74-31) (POP_ASSUM MP_TAC)
3708 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3709 THEN MP_TAC th)
3710 THEN RESA_TAC
3711 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3712 THEN MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3713 THEN MP_TAC Local_lemmas.CVLF_LF_F
3714 THEN RESA_TAC
3715 THEN SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3716
3717 EXPAND_TAC"FF"
3718 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3719 THEN EXISTS_TAC`l:num`
3720 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3721 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3722 THEN RESA_TAC
3723 THEN ASM_TAC 
3724 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3725 THEN REPEAT RESA_TAC;
3726
3727 MRESA_TAC (GEN_ALL Local_lemmas.IVS_RHO_NODE1_DETE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v1:real^3`;`v2:real^3`]
3728 THEN MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w (l + k - 1)}/\
3729  aff_gt {vec 0} {v1, w (l + k - 1)} SUBSET aff_ge {vec 0} {v1, w (l + k - 1)}
3730 ==> v2 IN aff_ge {vec 0} {v1:real^3, w (l + k - 1)}`)
3731 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
3732 THEN RESA_TAC
3733 THEN MRESA_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT[`vec 0:real^3`;`v1:real^3`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;`(rho_node1 FF v1)`;]
3734 THEN  MATCH_MP_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT
3735 THEN STRIP_TAC;
3736
3737 MATCH_MP_TAC(GEN_ALL (SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
3738 THEN EXISTS_TAC`aff_gt{vec 0:real^3} {v1,w(l+k-1)}`
3739 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE];
3740
3741 REPLICATE_TAC (82-57) (POP_ASSUM MP_TAC)
3742 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3743 THEN MATCH_MP_TAC th)
3744 THEN ASM_REWRITE_TAC[]
3745 THEN MP_TAC(REAL_ARITH`t<e1/\ e1<e'/\ --e1<t ==> t< e'/\ --e'<t`)
3746 THEN RESA_TAC
3747 THEN ASM_REWRITE_TAC[];
3748
3749 ASM_REWRITE_TAC[]
3750 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
3751 THEN MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
3752 THEN EXISTS_TAC`(w:num->real^3) (l+k-1)`
3753 THEN ASM_REWRITE_TAC[]
3754 THEN REPLICATE_TAC (82-57) (POP_ASSUM MP_TAC)
3755 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3756 THEN MATCH_MP_TAC th)
3757 THEN ASM_REWRITE_TAC[]
3758 THEN MP_TAC(REAL_ARITH`t<e1/\ e1<e'/\ --e1<t ==> t< e'/\ --e'<t`)
3759 THEN RESA_TAC
3760 THEN ASM_REWRITE_TAC[]]);;
3761
3762
3763
3764
3765 let V3_DEFOR_EQ_IN_FF_AT_W=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3766   MMs_v39 s w /\
3767  w l=v2/\ w (SUC l) =v1 /\
3768 &0< x1 /\ &0<x2   /\ &0< x6 /\
3769  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3770 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3771 /\ &0< e/\ &0<t 
3772 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
3773 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3774 /\ IMAGE (w:num->real^3) (:num)=V
3775 ==> 
3776 (!v. v,w (l + (scs_k_v39 s - 1)) IN
3777           IMAGE
3778           (\uv. (if FST uv = v2
3779                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3780                  else FST uv),
3781                 (if SND uv = v2
3782                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3783                  else SND uv))
3784           FF<=> 
3785 v,w (l + (scs_k_v39 s - 1)) IN FF)`,
3786 [
3787 STRIP_TAC
3788 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
3789 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3790 THEN MP_TAC th
3791 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3792 THEN ASSUME_TAC th
3793 THEN STRIP_TAC)
3794 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3795 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
3796 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
3797 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3798 THEN RESA_TAC
3799 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
3800
3801 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
3802 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3803 THEN MP_TAC th
3804 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3805 THEN REPEAT RESA_TAC);
3806
3807 MP_TAC Local_lemmas.CVLF_LF_F
3808 THEN RESA_TAC
3809 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
3810 THEN GEN_TAC
3811 THEN EQ_TAC
3812 THEN RESA_TAC;
3813
3814 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
3815 THEN RESA_TAC;
3816
3817 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3818 THEN MP_TAC th)
3819 THEN REPEAT RESA_TAC
3820 THEN REPLICATE_TAC (44-15)(POP_ASSUM MP_TAC)
3821 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3822 THEN MRESA_TAC th[`t:real`;`l+k-1:num`])
3823 THEN POP_ASSUM MP_TAC;
3824
3825 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3826 THEN MP_TAC th)
3827 THEN REPEAT RESA_TAC
3828 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
3829 THEN RESA_TAC;
3830
3831 SUBGOAL_THEN`v2, w(l+k-1) IN (FF:real^3#real^3->bool)`ASSUME_TAC;
3832
3833 ASM_REWRITE_TAC[];
3834
3835 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3836
3837 EXPAND_TAC"FF"
3838 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3839 THEN EXISTS_TAC`l+k-1`
3840 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3841 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3842 THEN RESA_TAC
3843 THEN ASM_TAC 
3844 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3845 THEN REPEAT RESA_TAC;
3846
3847 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
3848 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;]
3849 THEN POP_ASSUM MP_TAC
3850 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
3851 THEN STRIP_TAC
3852 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v2:real^3,(w:num->real^3)(l+k-1)`;`V:real^3->bool`;]
3853 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
3854 THEN RESA_TAC
3855 THEN POP_ASSUM(fun th-> MRESA_TAC th[`SND(x:real^3#real^3)`]);
3856
3857 EXISTS_TAC`v:real^3,(w:num->real^3) (l + k - 1)`
3858 THEN ASM_REWRITE_TAC[]
3859 THEN SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3860
3861 EXPAND_TAC"FF"
3862 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3863 THEN EXISTS_TAC`l+k-1`
3864 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3865 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3866 THEN RESA_TAC
3867 THEN ASM_TAC 
3868 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3869 THEN REPEAT RESA_TAC;
3870
3871 MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(l+k-1),v2:real^3`;];
3872
3873 MP_TAC(SET_RULE`v2=v:real^3\/ ~(v=v2)`)
3874 THEN RESA_TAC;
3875
3876 SUBGOAL_THEN`v2, w(l+k-1) IN (FF:real^3#real^3->bool)`ASSUME_TAC;
3877
3878 ASM_REWRITE_TAC[];
3879
3880 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
3881 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;]
3882 THEN POP_ASSUM MP_TAC
3883 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
3884 THEN STRIP_TAC
3885 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v2:real^3,(w:num->real^3)(l+k-1)`;`V:real^3->bool`;]
3886 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
3887 THEN RESA_TAC
3888 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3)(l+k-1)`]);]);;
3889
3890
3891
3892 let V3_DEFOR_EQ_IN_FF_AT_W_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3893   MMs_v39 s w /\
3894  w l=v2/\ w (SUC l) =v1 /\
3895 &0< x1 /\ &0<x2   /\ &0< x6 /\
3896  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3897 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3898 /\ &0< e/\ --e<t 
3899 /\ (!t i. --e<t /\ t<e /\  ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
3900 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3901 /\ IMAGE (w:num->real^3) (:num)=V
3902 ==> 
3903 (!v. v,w (l + (scs_k_v39 s - 1)) IN
3904           IMAGE
3905           (\uv. (if FST uv = v2
3906                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3907                  else FST uv),
3908                 (if SND uv = v2
3909                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3910                  else SND uv))
3911           FF<=> 
3912 v,w (l + (scs_k_v39 s - 1)) IN FF)`,
3913 [
3914 STRIP_TAC
3915 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
3916 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3917 THEN MP_TAC th
3918 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3919 THEN ASSUME_TAC th
3920 THEN STRIP_TAC)
3921 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3922 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
3923 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
3924 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3925 THEN RESA_TAC
3926 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
3927
3928
3929 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
3930 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3931 THEN MP_TAC th
3932 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3933 THEN REPEAT RESA_TAC);
3934
3935 MP_TAC Local_lemmas.CVLF_LF_F
3936 THEN RESA_TAC
3937 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
3938 THEN GEN_TAC
3939 THEN EQ_TAC
3940 THEN RESA_TAC;
3941
3942 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
3943 THEN RESA_TAC;
3944
3945 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3946 THEN MP_TAC th)
3947 THEN REPEAT RESA_TAC
3948 THEN REPLICATE_TAC (44-15)(POP_ASSUM MP_TAC)
3949 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3950 THEN MRESA_TAC th[`t:real`;`l+k-1:num`])
3951 THEN POP_ASSUM MP_TAC
3952 THEN MP_TAC MOD_ADD_SUB_1
3953 THEN RESA_TAC;
3954
3955 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3956 THEN MP_TAC th)
3957 THEN REPEAT RESA_TAC
3958 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
3959 THEN RESA_TAC;
3960
3961 SUBGOAL_THEN`v2, w(l+k-1) IN (FF:real^3#real^3->bool)`ASSUME_TAC;
3962
3963 ASM_REWRITE_TAC[];
3964
3965 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3966
3967 EXPAND_TAC"FF"
3968 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3969 THEN EXISTS_TAC`l+k-1`
3970 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3971 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3972 THEN RESA_TAC
3973 THEN ASM_TAC 
3974 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3975 THEN REPEAT RESA_TAC;
3976
3977 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
3978 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;]
3979 THEN POP_ASSUM MP_TAC
3980 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
3981 THEN STRIP_TAC
3982 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v2:real^3,(w:num->real^3)(l+k-1)`;`V:real^3->bool`;]
3983 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
3984 THEN RESA_TAC
3985 THEN POP_ASSUM(fun th-> MRESA_TAC th[`SND(x:real^3#real^3)`]);
3986
3987 EXISTS_TAC`v:real^3,(w:num->real^3) (l + k - 1)`
3988 THEN ASM_REWRITE_TAC[]
3989 THEN SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3990
3991 EXPAND_TAC"FF"
3992 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3993 THEN EXISTS_TAC`l+k-1`
3994 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3995 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3996 THEN RESA_TAC
3997 THEN ASM_TAC 
3998 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3999 THEN REPEAT RESA_TAC;
4000
4001 MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(l+k-1),v2:real^3`;];
4002
4003 MP_TAC(SET_RULE`v2=v:real^3\/ ~(v=v2)`)
4004 THEN RESA_TAC;
4005
4006 SUBGOAL_THEN`v2, w(l+k-1) IN (FF:real^3#real^3->bool)`ASSUME_TAC;
4007
4008 ASM_REWRITE_TAC[];
4009
4010 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
4011 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;]
4012 THEN POP_ASSUM MP_TAC
4013 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
4014 THEN STRIP_TAC
4015 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v2:real^3,(w:num->real^3)(l+k-1)`;`V:real^3->bool`;]
4016 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
4017 THEN RESA_TAC
4018 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3)(l+k-1)`])]);;
4019
4020
4021
4022
4023 let V3_DEFOR_EQ_IN_FF_AT_W_SYM=prove_by_refinement(
4024 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4025   MMs_v39 s w /\
4026  w l=v2/\ w (SUC l) =v1 /\
4027 &0< x1 /\ &0<x2   /\ &0< x6 /\
4028  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
4029 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
4030 /\ &0< e/\ &0<t 
4031 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
4032 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4033 /\ IMAGE (w:num->real^3) (:num)=V
4034 ==> 
4035 (@v. w(l+k-1),v IN
4036           IMAGE
4037           (\uv. (if FST uv = v2
4038                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4039                  else FST uv),
4040                 (if SND uv = v2
4041                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4042                  else SND uv))
4043           FF)=
4044 v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)`,
4045 [
4046 STRIP_TAC
4047 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
4048 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4049 THEN MP_TAC th
4050 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4051 THEN ASSUME_TAC th
4052 THEN STRIP_TAC)
4053 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4054 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
4055 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
4056 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4057 THEN RESA_TAC
4058 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4059
4060 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
4061 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4062 THEN MP_TAC th
4063 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4064 THEN REPEAT RESA_TAC);
4065
4066 MP_TAC Local_lemmas.CVLF_LF_F
4067 THEN RESA_TAC
4068 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
4069 THEN STRIP_TAC;
4070
4071 EXISTS_TAC`v3_defor_v1 (-- &1) (v1) (v2) x1 x2 x6 x6 (x2 - t)`
4072 THEN ASM_REWRITE_TAC[IMAGE;IN_ELIM_THM]
4073 THEN EXISTS_TAC`(w:num->real^3) (l + k - 1),v2:real^3`
4074 THEN ASM_REWRITE_TAC[]
4075 THEN SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4076
4077 EXPAND_TAC"FF"
4078 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4079 THEN EXISTS_TAC`l+k-1`
4080 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4081 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4082 THEN RESA_TAC
4083 THEN ASM_TAC 
4084 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4085 THEN REPEAT RESA_TAC;
4086
4087 MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(l+k-1),v2:real^3`;];
4088
4089 REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
4090 THEN GEN_TAC
4091 THEN RESA_TAC;
4092
4093 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
4094 THEN RESA_TAC;
4095
4096 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4097 THEN MP_TAC th)
4098 THEN REPEAT RESA_TAC
4099 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
4100 THEN RESA_TAC;
4101
4102 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4103 THEN MP_TAC th)
4104 THEN REPEAT RESA_TAC
4105 THEN REPLICATE_TAC (46-16)(POP_ASSUM MP_TAC)
4106 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4107 THEN MRESA_TAC th[`t:real`;`l+k-1:num`])
4108 THEN POP_ASSUM MP_TAC
4109 THEN POP_ASSUM MP_TAC;
4110
4111 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4112 THEN MP_TAC th)
4113 THEN REPEAT RESA_TAC;
4114
4115 SUBGOAL_THEN`(w:num->real^3)(l+k-1),v IN (FF:real^3#real^3->bool)`ASSUME_TAC;
4116
4117 ASM_REWRITE_TAC[];
4118
4119 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4120
4121 EXPAND_TAC"FF"
4122 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4123 THEN EXISTS_TAC`l+k-1`
4124 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4125 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4126 THEN RESA_TAC
4127 THEN ASM_TAC 
4128 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4129 THEN REPEAT RESA_TAC;
4130
4131 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
4132 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v:real^3`;]]);;
4133
4134
4135
4136
4137 let V3_DEFOR_EQ_IN_FF_AT_W_SYM_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4138   MMs_v39 s w /\
4139  w l=v2/\ w (SUC l) =v1 /\
4140 &0< x1 /\ &0<x2   /\ &0< x6 /\
4141  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
4142 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
4143 /\ &0< e/\ --e<t 
4144 /\ (!t i. --e<t /\ t<e /\  ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
4145 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4146 /\ IMAGE (w:num->real^3) (:num)=V
4147 ==> 
4148 (@v. w(l+k-1),v IN
4149           IMAGE
4150           (\uv. (if FST uv = v2
4151                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4152                  else FST uv),
4153                 (if SND uv = v2
4154                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4155                  else SND uv))
4156           FF)=
4157 v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)`,
4158 [
4159 STRIP_TAC
4160 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
4161 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4162 THEN MP_TAC th
4163 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4164 THEN ASSUME_TAC th
4165 THEN STRIP_TAC)
4166 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4167 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
4168 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
4169 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4170 THEN RESA_TAC
4171 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4172
4173 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
4174 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4175 THEN MP_TAC th
4176 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4177 THEN REPEAT RESA_TAC);
4178
4179 MP_TAC Local_lemmas.CVLF_LF_F
4180 THEN RESA_TAC
4181 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
4182 THEN STRIP_TAC;
4183
4184 EXISTS_TAC`v3_defor_v1 (-- &1) (v1) (v2) x1 x2 x6 x6 (x2 - t)`
4185 THEN ASM_REWRITE_TAC[IMAGE;IN_ELIM_THM]
4186 THEN EXISTS_TAC`(w:num->real^3) (l + k - 1),v2:real^3`
4187 THEN ASM_REWRITE_TAC[]
4188 THEN SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4189
4190 EXPAND_TAC"FF"
4191 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4192 THEN EXISTS_TAC`l+k-1`
4193 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4194 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4195 THEN RESA_TAC
4196 THEN ASM_TAC 
4197 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4198 THEN REPEAT RESA_TAC;
4199
4200 MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(l+k-1),v2:real^3`;];
4201
4202 REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
4203 THEN GEN_TAC
4204 THEN RESA_TAC;
4205
4206 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
4207 THEN RESA_TAC;
4208
4209 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4210 THEN MP_TAC th)
4211 THEN REPEAT RESA_TAC
4212 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
4213 THEN RESA_TAC;
4214
4215 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4216 THEN MP_TAC th)
4217 THEN REPEAT RESA_TAC
4218 THEN REPLICATE_TAC (46-16)(POP_ASSUM MP_TAC)
4219 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4220 THEN MRESA_TAC th[`t:real`;`l+k-1:num`])
4221 THEN POP_ASSUM MP_TAC
4222 THEN POP_ASSUM MP_TAC
4223 THEN MP_TAC MOD_ADD_SUB_1
4224 THEN RESA_TAC;
4225
4226 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4227 THEN MP_TAC th)
4228 THEN REPEAT RESA_TAC;
4229
4230 SUBGOAL_THEN`(w:num->real^3)(l+k-1),v IN (FF:real^3#real^3->bool)`ASSUME_TAC;
4231
4232 ASM_REWRITE_TAC[];
4233
4234 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4235
4236 EXPAND_TAC"FF"
4237 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4238 THEN EXISTS_TAC`l+k-1`
4239 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4240 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4241 THEN RESA_TAC
4242 THEN ASM_TAC 
4243 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4244 THEN REPEAT RESA_TAC;
4245
4246 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
4247 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v:real^3`;]
4248 ]);;
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_W=prove_by_refinement(
4261 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4262   MMs_v39 s w /\
4263  w l=v2/\ w (SUC l) =v1 /\
4264 &0< x1 /\ &0<x2   /\ &0< x6 /\
4265   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
4266  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
4267  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
4268 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
4269 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4270 /\ IMAGE (w:num->real^3) (:num)=V 
4271 ==>
4272 (?e. &0< e/\ (!t. &0< t/\ t< e ==>
4273 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t)
4274  (rho_node1
4275   (IMAGE
4276    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
4277          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
4278   FF)
4279  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t))
4280  (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t IN
4281       IMAGE
4282       (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
4283             v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
4284       FF) =
4285  azim (vec 0) (w (l + k - 1)) (rho_node1 FF (w (l + k - 1)))
4286  (@a. a,w (l + k - 1) IN FF)))`,
4287 [
4288 STRIP_TAC
4289 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ
4290 THEN RESA_TAC
4291 THEN ASM_TAC
4292 THEN REPEAT RESA_TAC
4293 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3)  (l + k - 1)`]
4294 THEN ABBREV_TAC`e1=(min e e')/ &2`
4295 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
4296 ==> &0< e1/\ e1< e/\ e1<e'`)
4297 THEN RESA_TAC
4298 THEN EXISTS_TAC`e1:real`
4299 THEN ASM_REWRITE_TAC[]
4300 THEN REPEAT STRIP_TAC
4301 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e
4302 ==> t< e`)
4303 THEN RESA_TAC
4304 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
4305 THEN POP_ASSUM MP_TAC
4306 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
4307 THEN RESA_TAC
4308 THEN SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4309
4310
4311 EXPAND_TAC"FF"
4312 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4313 THEN EXISTS_TAC`l+k-1`
4314 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4315 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4316 THEN RESA_TAC
4317 THEN ASM_TAC 
4318 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
4319 THEN REPEAT RESA_TAC;
4320
4321 ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4322 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4323
4324 REPLICATE_TAC (37-3)(POP_ASSUM MP_TAC)
4325 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4326 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4327 THEN RESA_TAC
4328 THEN MP_TAC th
4329 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
4330 THEN REPEAT RESA_TAC);
4331
4332 MP_TAC Local_lemmas.CVLF_LF_F
4333 THEN RESA_TAC
4334 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(l+k-1),v2:real^3`;]
4335 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_W_SYM
4336 THEN RESA_TAC
4337 THEN ASM_SIMP_TAC[v3_defor_v4;]
4338 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_W
4339 THEN RESA_TAC
4340 THEN ASM_REWRITE_TAC[rho_node1]
4341 THEN ASM_REWRITE_TAC[GSYM rho_node1;GSYM ivs_rho_node1]
4342 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
4343 THEN ONCE_REWRITE_TAC[Rogers.AZIM_EQ_SYM];
4344
4345 MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w (l + k - 1)}/\
4346  aff_gt {vec 0} {v1, w (l + k - 1)} SUBSET aff_ge {vec 0} {v1, w (l + k - 1)}
4347 ==> v2 IN aff_ge {vec 0} {v1:real^3, w (l + k - 1)}`)
4348 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
4349 THEN POP_ASSUM MP_TAC
4350 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
4351 THEN ASM_REWRITE_TAC[]
4352 THEN MRESA_TAC(GEN_ALL Planarity.properties_of_collinear4_points_fan)
4353 [`vec 0:real^3`;`(w:num->real^3)(l+k-1)`;`v1:real^3`;`v2:real^3`]
4354 THEN POP_ASSUM MP_TAC
4355 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4356 THEN ASM_REWRITE_TAC[]
4357 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
4358 THEN ASM_REWRITE_TAC[]
4359 THEN RESA_TAC
4360 THEN RESA_TAC
4361 THEN RESA_TAC
4362 THEN MRESA_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT[`vec 0:real^3`;`(w:num->real^3)(l+k-1)`;`v2:real^3`;`v1:real^3`;`(ivs_rho_node1 FF (w(l+k-1)))`;]
4363 THEN POP_ASSUM MP_TAC
4364 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
4365 THEN ASM_REWRITE_TAC[]
4366 THEN RESA_TAC
4367 THEN  MATCH_MP_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT
4368 THEN STRIP_TAC;
4369
4370 ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
4371 THEN MATCH_MP_TAC(GEN_ALL (SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
4372 THEN EXISTS_TAC`aff_gt{vec 0:real^3} {v1,w(l+k-1)}`
4373 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
4374 THEN REPLICATE_TAC (47-22) (POP_ASSUM MP_TAC)
4375 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
4376 THEN MATCH_MP_TAC th)
4377 THEN ASM_REWRITE_TAC[]
4378 THEN MATCH_MP_TAC(REAL_ARITH`t<e1/\ e1<e'==> t< e'`)
4379 THEN ASM_REWRITE_TAC[];
4380
4381 ASM_REWRITE_TAC[]
4382 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4383 THEN ASM_REWRITE_TAC[]
4384 THEN MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
4385 THEN EXISTS_TAC`v1:real^3`
4386 THEN ASM_REWRITE_TAC[]
4387 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4388 THEN ASM_REWRITE_TAC[]
4389 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
4390 THEN ASM_REWRITE_TAC[]
4391 THEN REPLICATE_TAC (47-22) (POP_ASSUM MP_TAC)
4392 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
4393 THEN MATCH_MP_TAC th)
4394 THEN ASM_REWRITE_TAC[]
4395 THEN MATCH_MP_TAC(REAL_ARITH`t<e1/\ e1<e'==> t< e'`)
4396 THEN ASM_REWRITE_TAC[]]);;
4397
4398
4399
4400 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_W_V1=prove_by_refinement(
4401 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4402   MMs_v39 s w /\
4403  w l=v2/\ w (SUC l) =v1 /\
4404 &0< x1 /\ &0<x2   /\ &0< x6 /\
4405   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
4406  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
4407  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
4408 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
4409 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4410 /\ IMAGE (w:num->real^3) (:num)=V 
4411 ==>
4412 (?e. &0< e/\ (!t. --e< t/\ t< e ==>
4413 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t)
4414  (rho_node1
4415   (IMAGE
4416    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
4417          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
4418   FF)
4419  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t))
4420  (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t IN
4421       IMAGE
4422       (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
4423             v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
4424       FF) =
4425  azim (vec 0) (w (l + k - 1)) (rho_node1 FF (w (l + k - 1)))
4426  (@a. a,w (l + k - 1) IN FF)))`,
4427 [
4428 STRIP_TAC
4429 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1
4430 THEN RESA_TAC
4431 THEN ASM_TAC
4432 THEN REPEAT RESA_TAC
4433 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3)  (l + k - 1)`]
4434 THEN ABBREV_TAC`e1=(min e e')/ &2`
4435 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
4436 ==> &0< e1/\ e1< e/\ e1<e'`)
4437 THEN RESA_TAC
4438 THEN EXISTS_TAC`e1:real`
4439 THEN ASM_REWRITE_TAC[]
4440 THEN REPEAT STRIP_TAC
4441 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
4442 ==> t< e/\ --e<t`)
4443 THEN RESA_TAC
4444 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
4445 THEN POP_ASSUM MP_TAC
4446 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
4447 THEN RESA_TAC
4448 THEN SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4449
4450 EXPAND_TAC"FF"
4451 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4452 THEN EXISTS_TAC`l+k-1`
4453 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4454 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4455 THEN RESA_TAC
4456 THEN ASM_TAC 
4457 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
4458 THEN REPEAT RESA_TAC;
4459
4460 ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4461 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4462
4463 REPLICATE_TAC (38-3)(POP_ASSUM MP_TAC)
4464 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4465 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4466 THEN RESA_TAC
4467 THEN MP_TAC th
4468 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
4469 THEN REPEAT RESA_TAC);
4470
4471 MP_TAC Local_lemmas.CVLF_LF_F
4472 THEN RESA_TAC
4473 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(l+k-1),v2:real^3`;]
4474 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_W_SYM_V1
4475 THEN RESA_TAC
4476 THEN ASM_SIMP_TAC[v3_defor_v4;]
4477 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_W_V1
4478 THEN RESA_TAC
4479 THEN ASM_REWRITE_TAC[rho_node1]
4480 THEN ASM_REWRITE_TAC[GSYM rho_node1;GSYM ivs_rho_node1]
4481 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
4482 THEN ONCE_REWRITE_TAC[Rogers.AZIM_EQ_SYM];
4483
4484 MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w (l + k - 1)}/\
4485  aff_gt {vec 0} {v1, w (l + k - 1)} SUBSET aff_ge {vec 0} {v1, w (l + k - 1)}
4486 ==> v2 IN aff_ge {vec 0} {v1:real^3, w (l + k - 1)}`)
4487 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
4488 THEN POP_ASSUM MP_TAC
4489 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
4490 THEN ASM_REWRITE_TAC[]
4491 THEN MRESA_TAC(GEN_ALL Planarity.properties_of_collinear4_points_fan)
4492 [`vec 0:real^3`;`(w:num->real^3)(l+k-1)`;`v1:real^3`;`v2:real^3`]
4493 THEN POP_ASSUM MP_TAC
4494 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4495 THEN ASM_REWRITE_TAC[]
4496 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
4497 THEN ASM_REWRITE_TAC[]
4498 THEN RESA_TAC
4499 THEN RESA_TAC
4500 THEN RESA_TAC
4501 THEN MRESA_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT[`vec 0:real^3`;`(w:num->real^3)(l+k-1)`;`v2:real^3`;`v1:real^3`;`(ivs_rho_node1 FF (w(l+k-1)))`;]
4502 THEN POP_ASSUM MP_TAC
4503 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
4504 THEN ASM_REWRITE_TAC[]
4505 THEN RESA_TAC
4506 THEN  MATCH_MP_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT
4507 THEN STRIP_TAC;
4508
4509 ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
4510 THEN MATCH_MP_TAC(GEN_ALL (SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
4511 THEN EXISTS_TAC`aff_gt{vec 0:real^3} {v1,w(l+k-1)}`
4512 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
4513 THEN REPLICATE_TAC (48-22) (POP_ASSUM MP_TAC)
4514 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
4515 THEN MATCH_MP_TAC th)
4516 THEN ASM_REWRITE_TAC[]
4517 THEN MP_TAC(REAL_ARITH`t<e1/\ e1<e'/\ --e1<t ==> t< e'/\ --e'<t`)
4518 THEN RESA_TAC
4519 THEN ASM_REWRITE_TAC[];
4520
4521 ASM_REWRITE_TAC[]
4522 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4523 THEN ASM_REWRITE_TAC[]
4524 THEN MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
4525 THEN EXISTS_TAC`v1:real^3`
4526 THEN ASM_REWRITE_TAC[]
4527 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4528 THEN ASM_REWRITE_TAC[]
4529 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
4530 THEN ASM_REWRITE_TAC[]
4531 THEN REPLICATE_TAC (48-22) (POP_ASSUM MP_TAC)
4532 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
4533 THEN MATCH_MP_TAC th)
4534 THEN ASM_REWRITE_TAC[]
4535 THEN MP_TAC(REAL_ARITH`t<e1/\ e1<e'/\ --e1<t==> t< e'/\ --e'<t`)
4536 THEN RESA_TAC
4537 THEN ASM_REWRITE_TAC[]]);;
4538
4539
4540
4541
4542 let V3_DEFOR_EQ_IN_FF_AT_V_ANY=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4543   MMs_v39 s w /\
4544  w l=v2/\ w (SUC l) =v1 /\
4545 &0< x1 /\ &0<x2   /\ &0< x6 /\
4546  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
4547 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
4548 /\ &0< e/\ &0<t 
4549 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
4550 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4551 /\ IMAGE (w:num->real^3) (:num)=V
4552 /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(l+k-1))
4553 /\ v IN V
4554 ==> 
4555 (!w. v,w IN
4556           IMAGE
4557           (\uv. (if FST uv = v2
4558                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4559                  else FST uv),
4560                 (if SND uv = v2
4561                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4562                  else SND uv))
4563           FF<=> 
4564 v,w IN FF)`,
4565 [
4566 STRIP_TAC
4567 THEN REPLICATE_TAC (24-3)(POP_ASSUM MP_TAC)
4568 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4569 THEN MP_TAC th
4570 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4571 THEN ASSUME_TAC th
4572 THEN STRIP_TAC)
4573 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4574 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
4575 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
4576 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4577 THEN RESA_TAC
4578 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4579
4580 REPLICATE_TAC (42-25)(POP_ASSUM MP_TAC)
4581 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4582 THEN MP_TAC th
4583 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4584 THEN REPEAT RESA_TAC);
4585
4586 MP_TAC Local_lemmas.CVLF_LF_F
4587 THEN RESA_TAC
4588 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
4589 THEN GEN_TAC
4590 THEN EQ_TAC
4591 THEN RESA_TAC;
4592
4593 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
4594 THEN RESA_TAC;
4595
4596 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4597 THEN MP_TAC th)
4598 THEN REPEAT RESA_TAC
4599 THEN REPLICATE_TAC (49-23)(POP_ASSUM MP_TAC)
4600 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4601 THEN MP_TAC th)
4602 THEN EXPAND_TAC"V"
4603 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4604 THEN STRIP_TAC
4605 THEN REPLICATE_TAC (50-16)(POP_ASSUM MP_TAC)
4606 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4607 THEN MRESA_TAC th[`t:real`;`x':num`])
4608 THEN REPLICATE_TAC (50-46)(POP_ASSUM MP_TAC)
4609 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4610 THEN MP_TAC th)
4611 THEN POP_ASSUM MP_TAC
4612 THEN RESA_TAC;
4613
4614 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4615 THEN MP_TAC th)
4616 THEN REPEAT RESA_TAC
4617 THEN MP_TAC(SET_RULE`v2= SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
4618 THEN RESA_TAC;
4619
4620 SUBGOAL_THEN`v,v2 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
4621
4622 ASM_REWRITE_TAC[];
4623
4624 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4625
4626 EXPAND_TAC"FF"
4627 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4628 THEN EXISTS_TAC`l+k-1`
4629 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4630 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4631 THEN RESA_TAC
4632 THEN ASM_TAC 
4633 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4634 THEN REPEAT RESA_TAC;
4635
4636 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v:real^3`;`(w:num->real^3) (l+k-1)`];
4637
4638 EXISTS_TAC`v:real^3,w':real^3`
4639 THEN ASM_REWRITE_TAC[]
4640 THEN MP_TAC(SET_RULE`v2= w':real^3\/ ~(v2=w')`)
4641 THEN RESA_TAC;
4642
4643 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4644
4645 EXPAND_TAC"FF"
4646 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4647 THEN EXISTS_TAC`l+k-1`
4648 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4649 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4650 THEN RESA_TAC
4651 THEN ASM_TAC 
4652 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4653 THEN REPEAT RESA_TAC;
4654
4655 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v:real^3`;`(w:num->real^3) (l+k-1)`]]);;
4656
4657
4658
4659 let V3_DEFOR_EQ_IN_FF_AT_V_ANY_V1=prove_by_refinement(
4660 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4661   MMs_v39 s w /\
4662  w l=v2/\ w (SUC l) =v1 /\
4663 &0< x1 /\ &0<x2   /\ &0< x6 /\
4664  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
4665 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
4666 /\ &0< e/\ --e<t 
4667 /\ (!t i. --e<t /\ t<e /\  ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
4668 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4669 /\ IMAGE (w:num->real^3) (:num)=V
4670 /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(l+k-1))
4671 /\ v IN V
4672 ==> 
4673 (!w. v,w IN
4674           IMAGE
4675           (\uv. (if FST uv = v2
4676                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4677                  else FST uv),
4678                 (if SND uv = v2
4679                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4680                  else SND uv))
4681           FF<=> 
4682 v,w IN FF)`,
4683 [
4684 STRIP_TAC
4685 THEN REPLICATE_TAC (24-3)(POP_ASSUM MP_TAC)
4686 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4687 THEN MP_TAC th
4688 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4689 THEN ASSUME_TAC th
4690 THEN STRIP_TAC)
4691 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4692 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
4693 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
4694 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4695 THEN RESA_TAC
4696 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4697
4698
4699 REPLICATE_TAC (42-25)(POP_ASSUM MP_TAC)
4700 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4701 THEN MP_TAC th
4702 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4703 THEN REPEAT RESA_TAC);
4704
4705
4706 MP_TAC Local_lemmas.CVLF_LF_F
4707 THEN RESA_TAC
4708 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
4709 THEN GEN_TAC
4710 THEN EQ_TAC
4711 THEN RESA_TAC;
4712
4713 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
4714 THEN RESA_TAC;
4715
4716 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4717 THEN MP_TAC th)
4718 THEN REPEAT RESA_TAC
4719 THEN REPLICATE_TAC (49-23)(POP_ASSUM MP_TAC)
4720 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4721 THEN MP_TAC th)
4722 THEN EXPAND_TAC"V"
4723 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4724 THEN STRIP_TAC
4725 THEN REPLICATE_TAC (50-16)(POP_ASSUM MP_TAC)
4726 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4727 THEN MRESA_TAC th[`t:real`;`x':num`])
4728 THEN REPLICATE_TAC (50-46)(POP_ASSUM MP_TAC)
4729 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4730 THEN MP_TAC th)
4731 THEN POP_ASSUM MP_TAC
4732 THEN MRESA_TAC DIVISION[`x':num`;`k:num`]
4733 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
4734 THEN MP_TAC(SET_RULE`x' MOD k = l MOD k \/ ~(x' MOD k = l MOD k)`)
4735 THEN RESA_TAC;
4736
4737
4738 ASM_TAC
4739 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
4740 THEN REPEAT RESA_TAC
4741 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
4742 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`x':num`[ARITH_RULE`4 MOD 4=0`]
4743 THEN MRESA_TAC th[`l:num`])
4744 THEN REPLICATE_TAC (77-39)(POP_ASSUM MP_TAC)
4745 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4746 THEN MP_TAC th)
4747 THEN ASM_REWRITE_TAC[];
4748
4749
4750 RESA_TAC;
4751
4752
4753 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4754 THEN MP_TAC th)
4755 THEN REPEAT RESA_TAC
4756 THEN MP_TAC(SET_RULE`v2= SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
4757 THEN RESA_TAC;
4758
4759 SUBGOAL_THEN`v,v2 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
4760
4761 ASM_REWRITE_TAC[];
4762
4763 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4764
4765 EXPAND_TAC"FF"
4766 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4767 THEN EXISTS_TAC`l+k-1`
4768 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4769 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4770 THEN RESA_TAC
4771 THEN ASM_TAC 
4772 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4773 THEN REPEAT RESA_TAC;
4774
4775
4776 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v:real^3`;`(w:num->real^3) (l+k-1)`];
4777
4778 EXISTS_TAC`v:real^3,w':real^3`
4779 THEN ASM_REWRITE_TAC[]
4780 THEN MP_TAC(SET_RULE`v2= w':real^3\/ ~(v2=w')`)
4781 THEN RESA_TAC;
4782
4783 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4784
4785 EXPAND_TAC"FF"
4786 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4787 THEN EXISTS_TAC`l+k-1`
4788 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4789 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4790 THEN RESA_TAC
4791 THEN ASM_TAC 
4792 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4793 THEN REPEAT RESA_TAC;
4794
4795 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v:real^3`;`(w:num->real^3) (l+k-1)`]]);;
4796
4797
4798
4799
4800
4801
4802
4803 let V3_DEFOR_EQ_IN_FF_AT_V_ANY_SYM=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4804   MMs_v39 s w /\
4805  w l=v2/\ w (SUC l) =v1 /\
4806 &0< x1 /\ &0<x2   /\ &0< x6 /\
4807  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
4808 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
4809 /\ &0< e/\ &0<t 
4810 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
4811 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4812 /\ IMAGE (w:num->real^3) (:num)=V
4813 /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(l+k-1))
4814 /\ v IN V
4815 ==> 
4816 (!w. w,v IN
4817           IMAGE
4818           (\uv. (if FST uv = v2
4819                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4820                  else FST uv),
4821                 (if SND uv = v2
4822                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4823                  else SND uv))
4824           FF<=> 
4825 w,v IN FF)`,
4826 [
4827 STRIP_TAC
4828 THEN REPLICATE_TAC (24-3)(POP_ASSUM MP_TAC)
4829 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4830 THEN MP_TAC th
4831 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4832 THEN ASSUME_TAC th
4833 THEN STRIP_TAC)
4834 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4835 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
4836 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
4837 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4838 THEN RESA_TAC
4839 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4840
4841 REPLICATE_TAC (42-25)(POP_ASSUM MP_TAC)
4842 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4843 THEN MP_TAC th
4844 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4845 THEN REPEAT RESA_TAC);
4846
4847 MP_TAC Local_lemmas.CVLF_LF_F
4848 THEN RESA_TAC
4849 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
4850 THEN GEN_TAC
4851 THEN EQ_TAC
4852 THEN RESA_TAC;
4853
4854 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
4855 THEN RESA_TAC;
4856
4857
4858 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4859 THEN MP_TAC th)
4860 THEN REPEAT RESA_TAC
4861 THEN REPLICATE_TAC (49-23)(POP_ASSUM MP_TAC)
4862 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4863 THEN MP_TAC th)
4864 THEN EXPAND_TAC"V"
4865 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4866 THEN STRIP_TAC
4867 THEN REPLICATE_TAC (50-16)(POP_ASSUM MP_TAC)
4868 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4869 THEN MRESA_TAC th[`t:real`;`x':num`])
4870 THEN REPLICATE_TAC (50-47)(POP_ASSUM MP_TAC)
4871 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4872 THEN MP_TAC th)
4873 THEN POP_ASSUM MP_TAC
4874 THEN RESA_TAC;
4875
4876 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4877 THEN MP_TAC th)
4878 THEN REPEAT RESA_TAC
4879 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
4880 THEN RESA_TAC;
4881
4882 SUBGOAL_THEN`v2,v IN (FF:real^3#real^3->bool)`ASSUME_TAC;
4883
4884 ASM_REWRITE_TAC[];
4885
4886 SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4887
4888 EXPAND_TAC"FF"
4889 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4890 THEN EXISTS_TAC`l:num`
4891 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4892 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4893 THEN RESA_TAC
4894 THEN ASM_TAC 
4895 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4896 THEN REPEAT RESA_TAC;
4897
4898 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`v:real^3`]
4899 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`v1:real^3`;]
4900 THEN REPLICATE_TAC (54-20)(POP_ASSUM MP_TAC)
4901 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4902 THEN MP_TAC th)
4903 THEN ASM_REWRITE_TAC[];
4904
4905 EXISTS_TAC`w':real^3,v:real^3`
4906 THEN ASM_REWRITE_TAC[]
4907 THEN MP_TAC(SET_RULE`v2= w':real^3\/ ~(v2=w')`)
4908 THEN RESA_TAC;
4909
4910 SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4911
4912 EXPAND_TAC"FF"
4913 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4914 THEN EXISTS_TAC`l:num`
4915 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4916 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4917 THEN RESA_TAC
4918 THEN ASM_TAC 
4919 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4920 THEN REPEAT RESA_TAC;
4921
4922 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`v:real^3`]
4923 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`v1:real^3`;]
4924 THEN REPLICATE_TAC (54-20)(POP_ASSUM MP_TAC)
4925 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4926 THEN MP_TAC th)
4927 THEN ASM_REWRITE_TAC[]]);;
4928
4929
4930 let V3_DEFOR_EQ_IN_FF_AT_V_ANY_SYM_V1=prove_by_refinement(
4931 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4932   MMs_v39 s w /\
4933  w l=v2/\ w (SUC l) =v1 /\
4934 &0< x1 /\ &0<x2   /\ &0< x6 /\
4935  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
4936 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
4937 /\ &0< e/\ --e<t 
4938 /\ (!t i. --e<t /\ t<e /\  ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
4939 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4940 /\ IMAGE (w:num->real^3) (:num)=V
4941 /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(l+k-1))
4942 /\ v IN V
4943 ==> 
4944 (!w. w,v IN
4945           IMAGE
4946           (\uv. (if FST uv = v2
4947                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4948                  else FST uv),
4949                 (if SND uv = v2
4950                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4951                  else SND uv))
4952           FF<=> 
4953 w,v IN FF)`,
4954 [
4955 STRIP_TAC
4956 THEN REPLICATE_TAC (24-3)(POP_ASSUM MP_TAC)
4957 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4958 THEN MP_TAC th
4959 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4960 THEN ASSUME_TAC th
4961 THEN STRIP_TAC)
4962 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4963 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
4964 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
4965 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4966 THEN RESA_TAC
4967 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4968
4969
4970 REPLICATE_TAC (42-25)(POP_ASSUM MP_TAC)
4971 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4972 THEN MP_TAC th
4973 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4974 THEN REPEAT RESA_TAC);
4975
4976 MP_TAC Local_lemmas.CVLF_LF_F
4977 THEN RESA_TAC
4978 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
4979 THEN GEN_TAC
4980 THEN EQ_TAC
4981 THEN RESA_TAC;
4982
4983 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
4984 THEN RESA_TAC;
4985
4986 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4987 THEN MP_TAC th)
4988 THEN REPEAT RESA_TAC
4989 THEN REPLICATE_TAC (49-23)(POP_ASSUM MP_TAC)
4990 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4991 THEN MP_TAC th)
4992 THEN EXPAND_TAC"V"
4993 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4994 THEN STRIP_TAC
4995 THEN REPLICATE_TAC (50-16)(POP_ASSUM MP_TAC)
4996 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4997 THEN MRESA_TAC th[`t:real`;`x':num`])
4998 THEN REPLICATE_TAC (50-47)(POP_ASSUM MP_TAC)
4999 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5000 THEN MP_TAC th)
5001 THEN POP_ASSUM MP_TAC
5002 THEN MRESA_TAC DIVISION[`x':num`;`k:num`]
5003 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
5004 THEN MP_TAC(SET_RULE`x' MOD k = l MOD k \/ ~(x' MOD k = l MOD k)`)
5005 THEN RESA_TAC;
5006
5007 ASM_TAC
5008 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
5009 THEN REPEAT RESA_TAC
5010 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
5011 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`x':num`[ARITH_RULE`4 MOD 4=0`]
5012 THEN MRESA_TAC th[`l:num`])
5013 THEN REPLICATE_TAC (77-39)(POP_ASSUM MP_TAC)
5014 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5015 THEN MP_TAC th)
5016 THEN ASM_REWRITE_TAC[];
5017
5018 RESA_TAC;
5019
5020 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
5021 THEN MP_TAC th)
5022 THEN REPEAT RESA_TAC
5023 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
5024 THEN RESA_TAC;
5025
5026 SUBGOAL_THEN`v2,v IN (FF:real^3#real^3->bool)`ASSUME_TAC;
5027
5028 ASM_REWRITE_TAC[];
5029
5030 SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
5031
5032 EXPAND_TAC"FF"
5033 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5034 THEN EXISTS_TAC`l:num`
5035 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
5036 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
5037 THEN RESA_TAC
5038 THEN ASM_TAC 
5039 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
5040 THEN REPEAT RESA_TAC;
5041
5042 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`v:real^3`]
5043 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`v1:real^3`;]
5044 THEN REPLICATE_TAC (54-20)(POP_ASSUM MP_TAC)
5045 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5046 THEN MP_TAC th)
5047 THEN ASM_REWRITE_TAC[];
5048
5049 EXISTS_TAC`w':real^3,v:real^3`
5050 THEN ASM_REWRITE_TAC[]
5051 THEN MP_TAC(SET_RULE`v2= w':real^3\/ ~(v2=w')`)
5052 THEN RESA_TAC;
5053
5054 SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
5055
5056 EXPAND_TAC"FF"
5057 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5058 THEN EXISTS_TAC`l:num`
5059 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
5060 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
5061 THEN RESA_TAC
5062 THEN ASM_TAC 
5063 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
5064 THEN REPEAT RESA_TAC;
5065
5066 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`v:real^3`]
5067 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`v1:real^3`;]
5068 THEN REPLICATE_TAC (54-20)(POP_ASSUM MP_TAC)
5069 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5070 THEN MP_TAC th)
5071 THEN ASM_REWRITE_TAC[]]);;
5072
5073
5074
5075 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_V_ANY=prove(
5076 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
5077   MMs_v39 s w /\
5078  w l=v2/\ w (SUC l) =v1 /\
5079 &0< x1 /\ &0<x2   /\ &0< x6 /\
5080   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
5081  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5082  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5083 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
5084 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5085 /\ IMAGE (w:num->real^3) (:num)=V 
5086 ==>
5087 (?e. &0< e/\ (!t v. &0< t/\ t< e /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(l+k-1))
5088 /\ v IN V
5089  ==>
5090 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t)
5091  (rho_node1
5092   (IMAGE
5093    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5094          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5095   FF)
5096  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t))
5097  (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t IN
5098       IMAGE
5099       (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5100             v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5101       FF) =
5102  azim (vec 0) v (rho_node1 FF v) (@a. a,v IN FF)))`,
5103 STRIP_TAC
5104 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ
5105 THEN RESA_TAC
5106 THEN ASM_TAC
5107 THEN REPEAT RESA_TAC
5108 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3)  (l + k - 1)`]
5109 THEN ABBREV_TAC`e1=(min e e')/ &2`
5110 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
5111 ==> &0< e1/\ e1< e/\ e1<e'`)
5112 THEN RESA_TAC
5113 THEN EXISTS_TAC`e1:real`
5114 THEN ASM_REWRITE_TAC[]
5115 THEN REPEAT STRIP_TAC
5116 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e
5117 ==> t< e`)
5118 THEN RESA_TAC
5119 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
5120 THEN POP_ASSUM MP_TAC
5121 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
5122 THEN RESA_TAC
5123 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V_ANY_SYM
5124 THEN RESA_TAC
5125 THEN ASM_SIMP_TAC[v3_defor_v4;]
5126 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V_ANY
5127 THEN RESA_TAC
5128 THEN ASM_SIMP_TAC[rho_node1;]);;
5129
5130
5131
5132
5133 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_V_ANY_V1=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
5134   MMs_v39 s w /\
5135  w l=v2/\ w (SUC l) =v1 /\
5136 &0< x1 /\ &0<x2   /\ &0< x6 /\
5137   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
5138  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5139  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5140 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
5141 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5142 /\ IMAGE (w:num->real^3) (:num)=V 
5143 ==>
5144 (?e. &0< e/\ (!t v. --e< t/\ t< e /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(l+k-1))
5145 /\ v IN V
5146  ==>
5147 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t)
5148  (rho_node1
5149   (IMAGE
5150    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5151          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5152   FF)
5153  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t))
5154  (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t IN
5155       IMAGE
5156       (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5157             v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5158       FF) =
5159  azim (vec 0) v (rho_node1 FF v) (@a. a,v IN FF)))`,
5160 STRIP_TAC
5161 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1
5162 THEN RESA_TAC
5163 THEN ASM_TAC
5164 THEN REPEAT RESA_TAC
5165 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3)  (l + k - 1)`]
5166 THEN ABBREV_TAC`e1=(min e e')/ &2`
5167 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
5168 ==> &0< e1/\ e1< e/\ e1<e'`)
5169 THEN RESA_TAC
5170 THEN EXISTS_TAC`e1:real`
5171 THEN ASM_REWRITE_TAC[]
5172 THEN REPEAT STRIP_TAC
5173 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
5174 ==> t< e/\ --e<t`)
5175 THEN RESA_TAC
5176 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
5177 THEN POP_ASSUM MP_TAC
5178 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
5179 THEN RESA_TAC
5180 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V_ANY_SYM_V1
5181 THEN RESA_TAC
5182 THEN ASM_SIMP_TAC[v3_defor_v4;]
5183 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V_ANY_V1
5184 THEN RESA_TAC
5185 THEN ASM_SIMP_TAC[rho_node1;]);;
5186
5187
5188
5189
5190
5191
5192
5193 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL=prove_by_refinement(
5194 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
5195   MMs_v39 s w /\
5196  w l=v2/\ w (SUC l) =v1 /\
5197 &0< x1 /\ &0<x2   /\ &0< x6 /\
5198   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
5199  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5200  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5201 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
5202 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5203 /\ IMAGE (w:num->real^3) (:num)=V 
5204 ==>
5205 (?e. &0< e/\ (!t v. &0< t/\ t< e /\ v IN V ==>
5206 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t)
5207  (rho_node1
5208   (IMAGE
5209    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5210          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5211   FF)
5212  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t))
5213  (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t IN
5214       IMAGE
5215       (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5216             v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5217       FF) =
5218  azim (vec 0) (v) (rho_node1 FF (v))
5219  (@a. a,v IN FF)))`,
5220 [
5221 STRIP_TAC
5222 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_W
5223 THEN RESA_TAC
5224 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_V1
5225 THEN RESA_TAC
5226 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1
5227 THEN RESA_TAC
5228 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_V_ANY
5229 THEN RESA_TAC
5230 THEN ABBREV_TAC`e1=(min (min (min e e') e'')e''')/ &2`
5231 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'')e''')/ &2/\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''==> &0< e1/\ e1<e/\ e1<e'/\ e1< e''/\ e1< e'''`)
5232 THEN RESA_TAC
5233 THEN EXISTS_TAC`e1:real`
5234 THEN ASM_REWRITE_TAC[]
5235 THEN REPEAT RESA_TAC
5236 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'')e''')/ &2/\ &0< e/\ &0< e'/\ &0< e''/\ t<e1/\ &0<t/\ &0< e'''==> t<e/\ t<e'/\ t< e''/\ t < e'''`)
5237 THEN RESA_TAC
5238 THEN MP_TAC(SET_RULE`(v=(w:num->real^3)(l+k-1))\/ ~(v=(w:num->real^3)(l+k-1))`)
5239 THEN RESA_TAC;
5240
5241 REPLICATE_TAC (40-20) (POP_ASSUM MP_TAC)
5242 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5243 THEN MATCH_MP_TAC th)
5244 THEN ASM_REWRITE_TAC[];
5245
5246 MP_TAC(SET_RULE`(v=(v1:real^3))\/ ~(v=v1)`)
5247 THEN RESA_TAC;
5248
5249 REPLICATE_TAC (41-22) (POP_ASSUM MP_TAC)
5250 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5251 THEN MATCH_MP_TAC th)
5252 THEN ASM_REWRITE_TAC[];
5253
5254 MP_TAC(SET_RULE`(v=(v2:real^3))\/ ~(v=v2)`)
5255 THEN RESA_TAC;
5256
5257 REPLICATE_TAC (42-24) (POP_ASSUM MP_TAC)
5258 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5259 THEN MATCH_MP_TAC th)
5260 THEN ASM_REWRITE_TAC[];
5261
5262 REPLICATE_TAC (42-26) (POP_ASSUM MP_TAC)
5263 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5264 THEN MATCH_MP_TAC th)
5265 THEN ASM_REWRITE_TAC[]]);;
5266
5267
5268 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
5269   MMs_v39 s w /\
5270  w l=v2/\ w (SUC l) =v1 /\
5271 &0< x1 /\ &0<x2   /\ &0< x6 /\
5272   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
5273  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5274  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5275 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
5276 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5277 /\ IMAGE (w:num->real^3) (:num)=V 
5278 ==>
5279 (?e. &0< e/\ (!t v. --e< t/\ t< e /\ v IN V ==>
5280 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t)
5281  (rho_node1
5282   (IMAGE
5283    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5284          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5285   FF)
5286  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t))
5287  (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t IN
5288       IMAGE
5289       (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5290             v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5291       FF) =
5292  azim (vec 0) (v) (rho_node1 FF (v))
5293  (@a. a,v IN FF)))`,
5294 [
5295 STRIP_TAC
5296 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_W_V1
5297 THEN RESA_TAC
5298 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_V1_V1
5299 THEN RESA_TAC
5300 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_V1
5301 THEN RESA_TAC
5302 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_V_ANY_V1
5303 THEN RESA_TAC
5304 THEN ABBREV_TAC`e1=(min (min (min e e') e'')e''')/ &2`
5305 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'')e''')/ &2/\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''==> &0< e1/\ e1<e/\ e1<e'/\ e1< e''/\ e1< e'''`)
5306 THEN RESA_TAC
5307 THEN EXISTS_TAC`e1:real`
5308 THEN ASM_REWRITE_TAC[]
5309 THEN REPEAT RESA_TAC
5310 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'')e''')/ &2/\ &0< e/\ &0< e'/\ &0< e''/\ t<e1/\ --e1<t/\ &0< e'''==> t<e/\ t<e'/\ t< e''/\ t < e'''
5311 /\  --e< t/\ --e'<t /\ --e''<t/\ --e'''<t`)
5312 THEN RESA_TAC
5313 THEN MP_TAC(SET_RULE`(v=(w:num->real^3)(l+k-1))\/ ~(v=(w:num->real^3)(l+k-1))`)
5314 THEN RESA_TAC;
5315
5316 REPLICATE_TAC (44-20) (POP_ASSUM MP_TAC)
5317 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5318 THEN MATCH_MP_TAC th)
5319 THEN ASM_REWRITE_TAC[];
5320
5321 MP_TAC(SET_RULE`(v=(v1:real^3))\/ ~(v=v1)`)
5322 THEN RESA_TAC;
5323
5324 REPLICATE_TAC (45-22) (POP_ASSUM MP_TAC)
5325 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5326 THEN MATCH_MP_TAC th)
5327 THEN ASM_REWRITE_TAC[];
5328
5329 MP_TAC(SET_RULE`(v=(v2:real^3))\/ ~(v=v2)`)
5330 THEN RESA_TAC;
5331
5332 REPLICATE_TAC (46-24) (POP_ASSUM MP_TAC)
5333 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5334 THEN MATCH_MP_TAC th)
5335 THEN ASM_REWRITE_TAC[];
5336
5337 REPLICATE_TAC (46-26) (POP_ASSUM MP_TAC)
5338 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5339 THEN MATCH_MP_TAC th)
5340 THEN ASM_REWRITE_TAC[]]);;
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352 let DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
5353   MMs_v39 s w /\
5354  w l=v2/\ w (SUC l) =v1 /\
5355 &0< x1 /\ &0<x2   /\ &0< x6 /\
5356   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
5357  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5358  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5359 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
5360 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5361 /\ IMAGE (w:num->real^3) (:num)=V 
5362 ==>
5363 (?e. &0< e/\ (!v t.
5364            v IN V /\
5365            &0< t /\ t< e  /\
5366            interior_angle1 (vec 0) FF v = pi
5367            ==> interior_angle1 (vec 0)
5368                (IMAGE
5369                 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5370                       v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5371                FF)
5372                (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) <=
5373                pi))`,
5374 REPEAT STRIP_TAC
5375 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL
5376 THEN RESA_TAC
5377 THEN EXISTS_TAC`e:real`
5378 THEN ASM_REWRITE_TAC[interior_angle1]
5379 THEN REPEAT RESA_TAC
5380 THEN REPLICATE_TAC (24-20) (POP_ASSUM MP_TAC)
5381 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5382 THEN MRESA_TAC th[`t:real`;`v:real^3`])
5383 THEN REAL_ARITH_TAC);;
5384
5385
5386
5387 let DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
5388   MMs_v39 s w /\
5389  w l=v2/\ w (SUC l) =v1 /\
5390 &0< x1 /\ &0<x2   /\ &0< x6 /\
5391   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
5392  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5393  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5394 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
5395 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5396 /\ IMAGE (w:num->real^3) (:num)=V 
5397 ==>
5398 (?e. &0< e/\ (!v t.
5399            v IN V /\
5400            --e< t /\ t< e  /\
5401            interior_angle1 (vec 0) FF v = pi
5402            ==> interior_angle1 (vec 0)
5403                (IMAGE
5404                 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5405                       v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5406                FF)
5407                (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) <=
5408                pi))`,
5409 REPEAT STRIP_TAC
5410 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_V1
5411 THEN RESA_TAC
5412 THEN EXISTS_TAC`e:real`
5413 THEN ASM_REWRITE_TAC[interior_angle1]
5414 THEN REPEAT RESA_TAC
5415 THEN REPLICATE_TAC (24-20) (POP_ASSUM MP_TAC)
5416 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5417 THEN MRESA_TAC th[`t:real`;`v:real^3`])
5418 THEN REAL_ARITH_TAC);;
5419
5420
5421 let V_DEFORMATION_V3_DEFOR=prove(`
5422 IMAGE (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w i) t) (:num) =IMAGE (\v. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) (IMAGE w (:num))`,
5423 REWRITE_TAC[IMAGE;IN_ELIM_THM;EXTENSION]
5424 THEN SET_TAC[]);;
5425
5426
5427 let E_DEFORMATION_V3_DEFOR=prove_by_refinement(`IMAGE
5428           (\i. {v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w i) t, v3_defor_v4
5429                                                             (-- &1)
5430                                                             x1
5431                                                             x2
5432                                                             x6
5433                                                             v1
5434                                                             v2
5435                                                             (w (SUC i))
5436                                                             t})
5437           (:num) = IMAGE (IMAGE (\v. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t)) (IMAGE (\i. {w i, w (SUC i)}) (:num))`,
5438 [REWRITE_TAC[EXTENSION]
5439 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5440 THEN GEN_TAC
5441 THEN EQ_TAC;
5442 RESA_TAC
5443 THEN EXISTS_TAC`{(w:num->real^3) x', w (SUC x')}`
5444 THEN STRIP_TAC;
5445 EXISTS_TAC`x':num`
5446 THEN ASM_REWRITE_TAC[];
5447 SET_TAC[];
5448 RESA_TAC
5449 THEN EXISTS_TAC`x'':num`
5450 THEN ASM_REWRITE_TAC[]
5451 THEN SET_TAC[]]);;
5452
5453
5454
5455
5456
5457 let F_DEFORMATION_V3_DEFOR=prove(`IMAGE
5458           (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w i) t,
5459                v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC i)) t)
5460           (:num)
5461 = IMAGE
5462                (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5463                      v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t) (IMAGE (\i. w i,w (SUC i)) (:num))`,
5464 REWRITE_TAC[EXTENSION;IMAGE;IN_ELIM_THM]
5465 THEN GEN_TAC
5466 THEN EQ_TAC
5467 THENL[
5468 RESA_TAC
5469 THEN EXISTS_TAC`(w:num->real^3) x',w (SUC x')`
5470 THEN ASM_REWRITE_TAC[]
5471 THEN EXISTS_TAC`x':num`
5472 THEN ASM_REWRITE_TAC[];
5473 RESA_TAC
5474 THEN EXISTS_TAC`x'':num`
5475 THEN ASM_REWRITE_TAC[]]);;
5476
5477
5478
5479 let DEFORMATION_LUNAR_AFFINE_HULL=prove_by_refinement(
5480 `3<k /\
5481   scs_k_v39 s =k/\
5482 is_scs_v39 s /\
5483   MMs_v39 s w /\
5484   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
5485  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5486  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5487  w l=v2/\ w (SUC l) =v1/\ ~(norm v2 = &2)
5488 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
5489 /\ ~(v=v2)/\ ~(w1=v2) /\   IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5490 /\ IMAGE (w:num->real^3) (:num)=V 
5491 /\ IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)=E
5492 /\ lunar (v,w1) V E
5493 ==> 
5494 ?e. &0<e /\ (!t. &0 < t /\ t < e
5495      ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
5496          affine hull {vec 0, v, w1, v2})`,
5497 [
5498 STRIP_TAC
5499 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ
5500 THEN RESA_TAC
5501 THEN MP_TAC HYPER_MM_COLLINEAR
5502 THEN RESA_TAC
5503 THEN REPLICATE_TAC (25-6)(POP_ASSUM MP_TAC)
5504 THEN POP_ASSUM(fun th-> 
5505 POP_ASSUM(fun th1->
5506 REPEAT DISCH_TAC
5507 THEN MP_TAC th THEN MP_TAC th1))
5508 THEN REPEAT RESA_TAC
5509 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3)  (l + k - 1)`]
5510 THEN REPLICATE_TAC (27-3)(POP_ASSUM MP_TAC)
5511 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5512 THEN MP_TAC th
5513 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;]
5514 THEN MP_TAC th
5515 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
5516 THEN REPEAT RESA_TAC)
5517 THEN MP_TAC BBS_IMP_CONVEX_LOCAL_FAN
5518 THEN RESA_TAC
5519 THEN SUBGOAL_THEN`(v2:real^3) IN V` ASSUME_TAC;
5520
5521 EXPAND_TAC"V"
5522 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5523 THEN EXISTS_TAC`l:num`
5524 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
5525
5526 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
5527
5528 EXPAND_TAC"FF"
5529 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5530 THEN EXISTS_TAC`l+k-1`
5531 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
5532 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
5533 THEN RESA_TAC
5534 THEN ASM_TAC 
5535 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
5536 THEN REPEAT RESA_TAC;
5537
5538 SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
5539
5540 EXPAND_TAC"FF"
5541 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5542 THEN EXISTS_TAC`l:num`
5543 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
5544 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
5545 THEN RESA_TAC
5546 THEN ASM_TAC 
5547 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
5548 THEN REPEAT RESA_TAC;
5549
5550 MP_TAC Local_lemmas.CVLF_LF_F
5551 THEN RESA_TAC
5552 THEN MRESA_TAC (GEN_ALL Local_lemmas.IVS_RHO_NODE1_DETE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`]
5553 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`v1:real^3`;]
5554 THEN MRESAL_TAC (GEN_ALL LUNAR_IMP_INTERIOR_ANGLE1_EQ_PI)
5555 [`E:(real^3->bool)->bool`;`V:real^3->bool`;`FF:real^3#real^3->bool`;`v:real^3`;`w1:real^3`;][DIFF;IN_ELIM_THM;SET_RULE`~(a IN {b,c}) <=> (~(a=b)/\ ~(a=c))`]
5556 THEN POP_ASSUM(fun th-> MRESA_TAC th[`v2:real^3`])
5557 THEN MRESA_TAC (GEN_ALL Collect_geom2.THREE_GEN_POINTS_IN_AFF3)[`v2:real^3`;`v:real^3`;`w1:real^3`]
5558 THEN MRESA_TAC (GEN_ALL Local_lemmas.CONV02_SUBSET_AFF2)[`v:real^3`;`w1:real^3`] 
5559 THEN MP_TAC(SET_RULE`v IN aff {v2, v, w1}/\ w1 IN aff {v2, v, w1}
5560 ==> {v, w1} SUBSET  aff {v2, v, w1:real^3}`)
5561 THEN RESA_TAC
5562 THEN MRESA_TAC(GEN_ALL Local_lemmas.S_SUBSET_IMP_AFF_S_TOO)[`{v, w1:real^3}`;` {v2, v, w1:real^3}`]
5563 THEN MP_TAC(SET_RULE`v1 IN aff {v2, v, w1}/\ w (l + k - 1) IN aff {v2, v, w1}
5564 /\ vec 0 IN conv0 {v, w1} /\ conv0 {v, w1} SUBSET aff {v, w1}
5565 /\ aff {v, w1} SUBSET aff {v2, v, w1}
5566 ==> {vec 0, v1, w (l + k - 1)} SUBSET aff {v2, v, w1:real^3}`)
5567 THEN RESA_TAC
5568 THEN MRESA_TAC(GEN_ALL Local_lemmas.S_SUBSET_IMP_AFF_S_TOO)[`{vec 0, v1, w (l + k - 1):real^3}`;` {v2, v, w1:real^3}`]
5569 THEN MRESAL_TAC (GEN_ALL Local_lemmas.AFF_GT_SUB_AFF_UNION)[`{vec 0:real^3}`;`{ v1, w (l + k - 1):real^3}`][SET_RULE`{A}UNION {B,C}={A,B,C}`]
5570 THEN EXISTS_TAC`e':real`
5571 THEN ASM_REWRITE_TAC[]
5572 THEN REPEAT RESA_TAC
5573 THEN REPLICATE_TAC (66-27)(POP_ASSUM MP_TAC)
5574 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5575 THEN MRESA_TAC th[`t:real`])
5576 THEN REWRITE_TAC[GSYM aff]
5577 THEN MRESAL_TAC Marchal_cells_2_new.AFFINE_SUBSET_KY_LEMMA[`{v2, v, w1:real^3}`;`{vec 0,v, w1,v2:real^3}`][SET_RULE`{A,B,C} SUBSET {D,B,C,A}`;GSYM aff]
5578 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
5579 THEN EXISTS_TAC`aff {v2, v, w1:real^3}`
5580 THEN ASM_REWRITE_TAC[]
5581 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
5582 THEN EXISTS_TAC`aff {vec 0, v1, w (l + k - 1):real^3}`
5583 THEN ASM_REWRITE_TAC[]
5584 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
5585 THEN EXISTS_TAC`aff_gt {vec 0} {v1, w (l + k - 1):real^3}`
5586 THEN ASM_REWRITE_TAC[v3_defor_v4]]);;
5587
5588
5589 let DEFORMATION_LUNAR_AFFINE_HULL_V1=prove_by_refinement(`3<k /\
5590   scs_k_v39 s =k/\
5591 is_scs_v39 s /\
5592   MMs_v39 s w /\
5593   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
5594  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5595  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5596  w l=v2/\ w (SUC l) =v1/\ ~(norm v2 = &2)
5597 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
5598 /\ ~(v=v2)/\ ~(w1=v2) /\   IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5599 /\ IMAGE (w:num->real^3) (:num)=V 
5600 /\ IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)=E
5601 /\ lunar (v,w1) V E
5602 ==> 
5603 ?e. &0<e /\ (!t. t IN real_interval (--e,e)
5604      ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
5605          affine hull {vec 0, v, w1, v2})`,
5606 [
5607 STRIP_TAC
5608 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1
5609 THEN RESA_TAC
5610 THEN MP_TAC HYPER_MM_COLLINEAR
5611 THEN RESA_TAC
5612 THEN REPLICATE_TAC (25-6)(POP_ASSUM MP_TAC)
5613 THEN POP_ASSUM(fun th-> 
5614 POP_ASSUM(fun th1->
5615 REPEAT DISCH_TAC
5616 THEN MP_TAC th THEN MP_TAC th1))
5617 THEN REPEAT RESA_TAC
5618 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3)  (l + k - 1)`]
5619 THEN REPLICATE_TAC (27-3)(POP_ASSUM MP_TAC)
5620 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5621 THEN MP_TAC th
5622 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;IN_REAL_INTERVAL]
5623 THEN MP_TAC th
5624 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
5625 THEN REPEAT RESA_TAC)
5626 THEN MP_TAC BBS_IMP_CONVEX_LOCAL_FAN
5627 THEN RESA_TAC
5628 THEN SUBGOAL_THEN`(v2:real^3) IN V` ASSUME_TAC;
5629
5630 EXPAND_TAC"V"
5631 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5632 THEN EXISTS_TAC`l:num`
5633 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
5634
5635 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
5636
5637 EXPAND_TAC"FF"
5638 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5639 THEN EXISTS_TAC`l+k-1`
5640 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
5641 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
5642 THEN RESA_TAC
5643 THEN ASM_TAC 
5644 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
5645 THEN REPEAT RESA_TAC;
5646
5647 SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
5648
5649 EXPAND_TAC"FF"
5650 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5651 THEN EXISTS_TAC`l:num`
5652 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
5653 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
5654 THEN RESA_TAC
5655 THEN ASM_TAC 
5656 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
5657 THEN REPEAT RESA_TAC;
5658
5659 MP_TAC Local_lemmas.CVLF_LF_F
5660 THEN RESA_TAC
5661 THEN MRESA_TAC (GEN_ALL Local_lemmas.IVS_RHO_NODE1_DETE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`]
5662 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`v1:real^3`;]
5663 THEN MRESAL_TAC (GEN_ALL LUNAR_IMP_INTERIOR_ANGLE1_EQ_PI)
5664 [`E:(real^3->bool)->bool`;`V:real^3->bool`;`FF:real^3#real^3->bool`;`v:real^3`;`w1:real^3`;][DIFF;IN_ELIM_THM;SET_RULE`~(a IN {b,c}) <=> (~(a=b)/\ ~(a=c))`]
5665 THEN POP_ASSUM(fun th-> MRESA_TAC th[`v2:real^3`])
5666 THEN MRESA_TAC (GEN_ALL Collect_geom2.THREE_GEN_POINTS_IN_AFF3)[`v2:real^3`;`v:real^3`;`w1:real^3`]
5667 THEN MRESA_TAC (GEN_ALL Local_lemmas.CONV02_SUBSET_AFF2)[`v:real^3`;`w1:real^3`] 
5668 THEN MP_TAC(SET_RULE`v IN aff {v2, v, w1}/\ w1 IN aff {v2, v, w1}
5669 ==> {v, w1} SUBSET  aff {v2, v, w1:real^3}`)
5670 THEN RESA_TAC
5671 THEN MRESA_TAC(GEN_ALL Local_lemmas.S_SUBSET_IMP_AFF_S_TOO)[`{v, w1:real^3}`;` {v2, v, w1:real^3}`]
5672 THEN MP_TAC(SET_RULE`v1 IN aff {v2, v, w1}/\ w (l + k - 1) IN aff {v2, v, w1}
5673 /\ vec 0 IN conv0 {v, w1} /\ conv0 {v, w1} SUBSET aff {v, w1}
5674 /\ aff {v, w1} SUBSET aff {v2, v, w1}
5675 ==> {vec 0, v1, w (l + k - 1)} SUBSET aff {v2, v, w1:real^3}`)
5676 THEN RESA_TAC
5677 THEN MRESA_TAC(GEN_ALL Local_lemmas.S_SUBSET_IMP_AFF_S_TOO)[`{vec 0, v1, w (l + k - 1):real^3}`;` {v2, v, w1:real^3}`]
5678 THEN MRESAL_TAC (GEN_ALL Local_lemmas.AFF_GT_SUB_AFF_UNION)[`{vec 0:real^3}`;`{ v1, w (l + k - 1):real^3}`][SET_RULE`{A}UNION {B,C}={A,B,C}`]
5679 THEN EXISTS_TAC`e':real`
5680 THEN ASM_REWRITE_TAC[]
5681 THEN REPEAT RESA_TAC
5682 THEN REPLICATE_TAC (66-27)(POP_ASSUM MP_TAC)
5683 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5684 THEN MRESA_TAC th[`t:real`])
5685 THEN REWRITE_TAC[GSYM aff]
5686 THEN MRESAL_TAC Marchal_cells_2_new.AFFINE_SUBSET_KY_LEMMA[`{v2, v, w1:real^3}`;`{vec 0,v, w1,v2:real^3}`][SET_RULE`{A,B,C} SUBSET {D,B,C,A}`;GSYM aff]
5687 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
5688 THEN EXISTS_TAC`aff {v2, v, w1:real^3}`
5689 THEN ASM_REWRITE_TAC[]
5690 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
5691 THEN EXISTS_TAC`aff {vec 0, v1, w (l + k - 1):real^3}`
5692 THEN ASM_REWRITE_TAC[]
5693 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
5694 THEN EXISTS_TAC`aff_gt {vec 0} {v1, w (l + k - 1):real^3}`
5695 THEN ASM_REWRITE_TAC[v3_defor_v4];]);;
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706 (******************************)
5707
5708
5709
5710 let MHAEYJNv1_concl = 
5711 `!a b V E FF f v w u.
5712      convex_local_fan (V,E,FF) /\
5713      lunar (v,w) V E /\
5714      deformation f V (a,b) /\
5715      interior_angle1 (vec 0) FF v < pi /\
5716      u IN V /\
5717      ~(u = v) /\
5718      ~(u = w) /\
5719      (!u' t. u' IN V /\ ~(u = u') /\ t IN real_interval (a,b) ==> f u' t = u') /\
5720      (!t. &0< t/\ t<b ==> f u t IN affine hull {vec 0, v, w, u})
5721      ==> (?e. &0 < e /\
5722               (!t. --e < t /\ t < e
5723                    ==> convex_local_fan
5724                        (IMAGE (\v. f v t) V,
5725                         IMAGE (IMAGE (\v. f v t)) E,
5726                         IMAGE (\uv. f (FST uv) t,f (SND uv) t) FF) /\
5727                        lunar (v,w) (IMAGE (\v. f v t) V)
5728                        (IMAGE (IMAGE (\v. f v t)) E)))`;;
5729 let ZLZTHICv1_concl = 
5730 `!a b V E FF f.
5731      convex_local_fan (V,E,FF) /\
5732      generic V E /\
5733      deformation f V (a,b) /\
5734      (!v t. v IN V /\ &0<t/\ t<b /\ interior_angle1 (vec 0) FF v = pi ==> interior_angle1 (vec 0) ( IMAGE (\uv. f (FST uv) t,f (SND uv) t) FF) (f v t) <= pi)
5735      ==> (?e. &0 < e /\
5736               (!t. --e < t /\ t < e
5737                    ==> convex_local_fan
5738                        (IMAGE (\v. f v t) V,
5739                         IMAGE (IMAGE (\v. f v t)) E,
5740                         IMAGE (\uv. f (FST uv) t,f (SND uv) t) FF) /\
5741                        generic (IMAGE (\v. f v t) V)
5742                        (IMAGE (IMAGE (\v. f v t)) E)))`;;
5743
5744
5745
5746 let V3_DEFOR_CONVEX_LOCAL_FAN_concl =`!s k w l.
5747   scs_k_v39 s=k /\
5748   is_scs_v39 s /\
5749   MMs_v39 s w /\
5750   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
5751   3 < k /\
5752  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5753  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5754   (&10= &10) /\
5755   ~(&2 = norm (v2)) /\
5756   (&1= &1) /\
5757   (!i. ~(scs_J_v39 s l i)) /\
5758  w l=v2/\ w (SUC l) =v1/\
5759  norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1/\
5760   (!V E v.
5761      V = IMAGE w (:num) /\
5762       E = IMAGE (\i. {w i, w (SUC i)}) (:num) ==>
5763       ~(lunar (v,(w l)) V E ))
5764 ==> 
5765 (?e. &0 < e /\
5766               (!t. --e < t /\ t < e
5767                    ==>
5768 convex_local_fan
5769  (IMAGE (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t) (:num),
5770   IMAGE
5771   (\i. {v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t, v3_defor_v4 a x1 x2 x6 v1 v2
5772                                               (w (SUC i))
5773                                               t})
5774   (:num),
5775   IMAGE
5776   (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t,
5777        v3_defor_v4 a x1 x2 x6 v1 v2 (w (SUC i)) t)
5778   (:num))))`;;
5779
5780
5781
5782 let V3_DEFOR_DEFORMATION_CONVEX_LOCAL_FAN=prove_by_refinement((mk_imp(ZLZTHICv1_concl, mk_imp (MHAEYJNv1_concl, V3_DEFOR_CONVEX_LOCAL_FAN_concl))),
5783 [
5784 REPEAT STRIP_TAC
5785 ;
5786
5787 REPLICATE_TAC (19-4)(POP_ASSUM MP_TAC)
5788 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5789 THEN POP_ASSUM MP_TAC
5790 THEN MP_TAC th
5791 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
5792 THEN ASSUME_TAC th
5793 THEN STRIP_TAC)
5794 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
5795 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
5796 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
5797 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
5798 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
5799 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
5800 THEN RESA_TAC
5801 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
5802
5803
5804 REPLICATE_TAC (38-19)(POP_ASSUM MP_TAC)
5805 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5806 THEN MP_TAC th
5807 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
5808 THEN REPEAT RESA_TAC)
5809 ;
5810
5811 SUBGOAL_THEN`(v2:real^3) IN V` ASSUME_TAC;
5812
5813
5814 EXPAND_TAC"V"
5815 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5816 THEN EXISTS_TAC`l:num`
5817 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
5818
5819
5820 SUBGOAL_THEN`(v1:real^3) IN V` ASSUME_TAC;
5821
5822
5823 EXPAND_TAC"V"
5824 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5825 THEN EXISTS_TAC`SUC l:num`
5826 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
5827
5828 SUBGOAL_THEN`(v2:real^3) IN ball_annulus` ASSUME_TAC;
5829
5830
5831 REPLICATE_TAC (41-19)(POP_ASSUM MP_TAC)
5832 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5833 THEN MP_TAC th
5834 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
5835 THEN REPEAT RESA_TAC)
5836 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
5837 THEN EXISTS_TAC`V:real^3->bool`
5838 THEN ASM_REWRITE_TAC[];
5839
5840
5841
5842 SUBGOAL_THEN`(v1:real^3) IN ball_annulus` ASSUME_TAC;
5843
5844
5845 REPLICATE_TAC (42-19)(POP_ASSUM MP_TAC)
5846 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5847 THEN MP_TAC th
5848 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
5849 THEN REPEAT RESA_TAC)
5850 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
5851 THEN EXISTS_TAC`V:real^3->bool`
5852 THEN ASM_REWRITE_TAC[];
5853
5854
5855
5856 SUBGOAL_THEN`((v2,v1):real^3#real^3) IN FF`ASSUME_TAC
5857 ;
5858
5859
5860 EXPAND_TAC"FF"
5861 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5862 THEN EXISTS_TAC`l:num`
5863 THEN ASM_REWRITE_TAC[SET_RULE`(a:num) IN (:num)`];
5864
5865 MP_TAC Local_lemmas.CVLF_LF_F
5866 THEN RESA_TAC
5867 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,v1):real^3#real^3`]
5868 THEN POP_ASSUM MP_TAC
5869 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
5870 THEN STRIP_TAC
5871 THEN MP_TAC NORM_POS_COLLINEAR
5872 THEN RESA_TAC
5873 THEN MP_TAC V3_DEFOR_IN_BALL_ANNULUS_DEFORMATION
5874 THEN RESA_TAC
5875 THEN MP_TAC UPS_X_POS_SEG
5876 THEN RESA_TAC
5877 ;
5878
5879
5880
5881 MRESA_TAC Deformation.XRECQNS[`-- &1`;`&1`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`ww_defor ((w:num->real^3) l)`]
5882 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_DEFORMATION)[`x2:real`;`x6:real`;`a:real`;`x1:real`;`x2:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`V:real^3->bool`][REAL_ARITH`&0< &1`]
5883 THEN MP_TAC Wrgcvdr_cizmrrh.CIZMRRH
5884 THEN RESA_TAC;
5885
5886
5887 MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR
5888 THEN RESA_TAC
5889 ;
5890
5891
5892 ABBREV_TAC`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2`
5893 THEN MP_TAC(REAL_ARITH`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''/\ &0< e'''' ==> &0< e1/\ e1< &1/\ e1< e /\ e1< e' /\ e1< e'' /\ e1<= e'''/\  -- e'''<= --e1/\ --e1< &0/\ e1< e''''`)
5894 THEN RESA_TAC
5895 ;
5896
5897
5898 MRESA_TAC (GEN_ALL DEFORMATION_SMALL_INTERVAL)[`-- e''':real`;`e''':real`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`V:real^3->bool`;`--e1:real`;`e1:real`]
5899 THEN REPLICATE_TAC (73-0) (POP_ASSUM MP_TAC)
5900 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5901 THEN POP_ASSUM MP_TAC
5902 THEN MRESA_TAC th[`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`])
5903 THEN POP_ASSUM MP_TAC
5904 THEN SUBGOAL_THEN`(!v t.
5905            v IN V /\
5906            &0< t /\ t< e1 /\
5907            interior_angle1 (vec 0) FF v = pi
5908            ==> interior_angle1 (vec 0)
5909                (IMAGE
5910                 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5911                       v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5912                FF)
5913                (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) <=
5914                pi)`ASSUME_TAC;
5915
5916
5917 REPEAT RESA_TAC
5918 THEN REPLICATE_TAC (76-61)(POP_ASSUM MP_TAC)
5919 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5920 THEN MATCH_MP_TAC th)
5921 THEN ASM_REWRITE_TAC[]
5922 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''''==> t<e''''`)
5923 THEN RESA_TAC;
5924
5925 RESA_TAC
5926 THEN STRIP_TAC
5927 THEN REMOVE_ASSUM_TAC
5928 THEN EXISTS_TAC`e''''':real`
5929 THEN ASM_REWRITE_TAC[V_DEFORMATION_V3_DEFOR;E_DEFORMATION_V3_DEFOR;F_DEFORMATION_V3_DEFOR]
5930 THEN GEN_TAC
5931 THEN POP_ASSUM(fun th-> STRIP_TAC
5932 THEN MRESA_TAC th[`t:real`]);
5933
5934
5935
5936 (***********lunar**********)
5937
5938
5939 MRESAL_TAC JKQEWGV3[`s:scs_v39`;`w:num->real^3`;`v:real^3`;`w':real^3`][LET_DEF;LET_END_DEF;]
5940 THEN MP_TAC(REAL_ARITH`interior_angle1 (vec 0) FF v < pi / &2/\ &0< pi
5941 ==> interior_angle1 (vec 0) FF v < pi`)
5942 THEN ASM_REWRITE_TAC[PI_WORKS]
5943 THEN RESA_TAC
5944 THEN STRIP_TAC
5945 THEN SUBGOAL_THEN`~(v2=v:real^3)`ASSUME_TAC;
5946
5947
5948 POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`w':real^3`])
5949 THEN STRIP_TAC
5950 THEN POP_ASSUM(fun th->
5951 ASM_TAC
5952 THEN REWRITE_TAC[th]
5953 THEN REPEAT RESA_TAC)
5954 THEN ASM_REWRITE_TAC[Local_lemmas.LUNAR_COMM];
5955
5956
5957 SUBGOAL_THEN`~(v2=w':real^3)`ASSUME_TAC;
5958
5959
5960 REMOVE_ASSUM_TAC
5961 THEN POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v:real^3`])
5962 THEN STRIP_TAC
5963 THEN POP_ASSUM(fun th->
5964 ASM_TAC
5965 THEN REWRITE_TAC[th]
5966 THEN REPEAT RESA_TAC);
5967
5968
5969 POP_ASSUM MP_TAC
5970 THEN POP_ASSUM MP_TAC
5971 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5972 THEN MP_TAC th)
5973 THEN ABBREV_TAC`w1=w':real^3`
5974 THEN MP_TAC DEFORMATION_LUNAR_AFFINE_HULL
5975 THEN RESA_TAC
5976 THEN ABBREV_TAC`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2`
5977 THEN MP_TAC(REAL_ARITH`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''/\ &0< e'''' ==> &0< e1/\ e1< &1/\ e1< e /\ e1< e' /\ e1< e'' /\ e1<= e'''/\  -- e'''<= --e1/\ --e1< &0/\ e1< e''''`)
5978 THEN RESA_TAC
5979 THEN SUBGOAL_THEN`(!u' t.
5980            u' IN V /\ ~(v2 = u':real^3) /\ t IN real_interval (--e1,e1)
5981            ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 u' t = u')`ASSUME_TAC;
5982
5983
5984 REPEAT STRIP_TAC
5985 THEN REWRITE_TAC[v3_defor_v4]
5986 THEN REMOVE_ASSUM_TAC
5987 THEN POP_ASSUM(fun th-> REWRITE_TAC[th]);
5988
5989
5990
5991 SUBGOAL_THEN`(!t. &0< t/\ t< e1
5992        ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
5993            affine hull {vec 0, v, w1, v2})`ASSUME_TAC
5994 ;
5995
5996
5997 REPEAT RESA_TAC
5998 THEN REPLICATE_TAC (80-67)(POP_ASSUM MP_TAC)
5999 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6000 THEN MATCH_MP_TAC th)
6001 THEN ASM_REWRITE_TAC[]
6002 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''''==> t<e''''`)
6003 THEN RESA_TAC;
6004
6005 MRESA_TAC (GEN_ALL DEFORMATION_SMALL_INTERVAL)[`-- e''':real`;`e''':real`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`V:real^3->bool`;`--e1:real`;`e1:real`]
6006 THEN REPLICATE_TAC (80-1) (POP_ASSUM MP_TAC)
6007 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6008 THEN POP_ASSUM MP_TAC
6009 THEN MRESA_TAC th[`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`v:real^3`;`w':real^3`;`v2:real^3`])
6010 THEN POP_ASSUM MP_TAC
6011 ;
6012
6013
6014 RESA_TAC
6015 THEN STRIP_TAC
6016 THEN REMOVE_ASSUM_TAC
6017 THEN EXISTS_TAC`e''''':real`
6018 THEN ASM_REWRITE_TAC[V_DEFORMATION_V3_DEFOR;E_DEFORMATION_V3_DEFOR;F_DEFORMATION_V3_DEFOR]
6019 THEN GEN_TAC
6020 THEN POP_ASSUM(fun th-> STRIP_TAC
6021 THEN MRESA_TAC th[`t:real`]);
6022
6023
6024
6025
6026
6027
6028 ]);;
6029
6030
6031
6032
6033 let V3_DEFOR_DEFORMATION_CONVEX_LOCAL_FAN_V1=prove_by_refinement((mk_imp(ZLZTHIC_concl, mk_imp (MHAEYJN_concl, V3_DEFOR_CONVEX_LOCAL_FAN_concl))),
6034 [
6035
6036 REPEAT STRIP_TAC;
6037
6038
6039 REPLICATE_TAC (19-4)(POP_ASSUM MP_TAC)
6040 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6041 THEN POP_ASSUM MP_TAC
6042 THEN MP_TAC th
6043 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6044 THEN ASSUME_TAC th
6045 THEN STRIP_TAC)
6046 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
6047 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
6048 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
6049 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
6050 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
6051 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
6052 THEN RESA_TAC
6053 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
6054
6055
6056
6057 REPLICATE_TAC (38-19)(POP_ASSUM MP_TAC)
6058 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6059 THEN MP_TAC th
6060 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6061 THEN REPEAT RESA_TAC);
6062
6063
6064 SUBGOAL_THEN`(v2:real^3) IN V` ASSUME_TAC;
6065
6066
6067
6068 EXPAND_TAC"V"
6069 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
6070 THEN EXISTS_TAC`l:num`
6071 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
6072
6073
6074
6075 SUBGOAL_THEN`(v1:real^3) IN V` ASSUME_TAC;
6076
6077
6078
6079 EXPAND_TAC"V"
6080 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
6081 THEN EXISTS_TAC`SUC l:num`
6082 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
6083
6084
6085 SUBGOAL_THEN`(v2:real^3) IN ball_annulus` ASSUME_TAC;
6086
6087
6088
6089 REPLICATE_TAC (41-19)(POP_ASSUM MP_TAC)
6090 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6091 THEN MP_TAC th
6092 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6093 THEN REPEAT RESA_TAC)
6094 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
6095 THEN EXISTS_TAC`V:real^3->bool`
6096 THEN ASM_REWRITE_TAC[];
6097
6098
6099
6100
6101 SUBGOAL_THEN`(v1:real^3) IN ball_annulus` ASSUME_TAC;
6102
6103
6104
6105 REPLICATE_TAC (42-19)(POP_ASSUM MP_TAC)
6106 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6107 THEN MP_TAC th
6108 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6109 THEN REPEAT RESA_TAC)
6110 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
6111 THEN EXISTS_TAC`V:real^3->bool`
6112 THEN ASM_REWRITE_TAC[];
6113
6114
6115
6116
6117 SUBGOAL_THEN`((v2,v1):real^3#real^3) IN FF`ASSUME_TAC;
6118
6119
6120
6121 EXPAND_TAC"FF"
6122 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
6123 THEN EXISTS_TAC`l:num`
6124 THEN ASM_REWRITE_TAC[SET_RULE`(a:num) IN (:num)`];
6125
6126
6127 MP_TAC Local_lemmas.CVLF_LF_F
6128 THEN RESA_TAC
6129 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,v1):real^3#real^3`]
6130 THEN POP_ASSUM MP_TAC
6131 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
6132 THEN STRIP_TAC
6133 THEN MP_TAC NORM_POS_COLLINEAR
6134 THEN RESA_TAC
6135 THEN MP_TAC V3_DEFOR_IN_BALL_ANNULUS_DEFORMATION
6136 THEN RESA_TAC
6137 THEN MP_TAC UPS_X_POS_SEG
6138 THEN RESA_TAC;
6139
6140
6141
6142
6143 MRESA_TAC Deformation.XRECQNS[`-- &1`;`&1`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`ww_defor ((w:num->real^3) l)`]
6144 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_DEFORMATION)[`x2:real`;`x6:real`;`a:real`;`x1:real`;`x2:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`V:real^3->bool`][REAL_ARITH`&0< &1`]
6145 THEN MP_TAC Wrgcvdr_cizmrrh.CIZMRRH
6146 THEN RESA_TAC;
6147
6148
6149
6150 MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1
6151 THEN RESA_TAC;
6152
6153
6154
6155 ABBREV_TAC`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2`
6156 THEN MP_TAC(REAL_ARITH`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''/\ &0< e'''' ==> &0< e1/\ e1< &1/\ e1< e /\ e1< e' /\ e1< e'' /\ e1<= e'''/\  -- e'''<= --e1/\ --e1< &0/\ e1< e''''`)
6157 THEN RESA_TAC;
6158
6159
6160
6161 MRESA_TAC (GEN_ALL DEFORMATION_SMALL_INTERVAL)[`-- e''':real`;`e''':real`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`V:real^3->bool`;`--e1:real`;`e1:real`]
6162 THEN REPLICATE_TAC (73-0) (POP_ASSUM MP_TAC)
6163 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6164 THEN POP_ASSUM MP_TAC
6165 THEN MRESA_TAC th[`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`])
6166 THEN POP_ASSUM MP_TAC
6167 THEN SUBGOAL_THEN`(!v t.
6168            v IN V /\
6169            t IN real_interval (--e1,e1) /\
6170            interior_angle1 (vec 0) FF v = pi
6171            ==> interior_angle1 (vec 0)
6172                (IMAGE
6173                 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
6174                       v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
6175                FF)
6176                (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) <=
6177                pi)`ASSUME_TAC;
6178
6179
6180 ASM_REWRITE_TAC[IN_REAL_INTERVAL]
6181 THEN REPEAT RESA_TAC
6182 THEN REPLICATE_TAC (76-61)(POP_ASSUM MP_TAC)
6183 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6184 THEN MATCH_MP_TAC th)
6185 THEN ASM_REWRITE_TAC[IN_REAL_INTERVAL]
6186 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''''/\ --e1 <t ==> t<e''''/\ --e''''<t`)
6187 THEN RESA_TAC;
6188
6189
6190 RESA_TAC
6191 THEN STRIP_TAC
6192 THEN REMOVE_ASSUM_TAC
6193 THEN EXISTS_TAC`e''''':real`
6194 THEN ASM_REWRITE_TAC[V_DEFORMATION_V3_DEFOR;E_DEFORMATION_V3_DEFOR;F_DEFORMATION_V3_DEFOR]
6195 THEN GEN_TAC
6196 THEN POP_ASSUM(fun th-> STRIP_TAC
6197 THEN MRESA_TAC th[`t:real`]);
6198
6199
6200
6201
6202 (***********lunar**********)
6203
6204
6205 MRESAL_TAC JKQEWGV3[`s:scs_v39`;`w:num->real^3`;`v:real^3`;`w':real^3`][LET_DEF;LET_END_DEF;]
6206 THEN MP_TAC(REAL_ARITH`interior_angle1 (vec 0) FF v < pi / &2/\ &0< pi
6207 ==> interior_angle1 (vec 0) FF v < pi`)
6208 THEN ASM_REWRITE_TAC[PI_WORKS]
6209 THEN RESA_TAC
6210 THEN STRIP_TAC
6211 THEN SUBGOAL_THEN`~(v2=v:real^3)`ASSUME_TAC;
6212
6213
6214
6215 POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`w':real^3`])
6216 THEN STRIP_TAC
6217 THEN POP_ASSUM(fun th->
6218 ASM_TAC
6219 THEN REWRITE_TAC[th]
6220 THEN REPEAT RESA_TAC)
6221 THEN ASM_REWRITE_TAC[Local_lemmas.LUNAR_COMM];
6222
6223
6224
6225 SUBGOAL_THEN`~(v2=w':real^3)`ASSUME_TAC;
6226
6227
6228
6229 REMOVE_ASSUM_TAC
6230 THEN POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v:real^3`])
6231 THEN STRIP_TAC
6232 THEN POP_ASSUM(fun th->
6233 ASM_TAC
6234 THEN REWRITE_TAC[th]
6235 THEN REPEAT RESA_TAC);
6236
6237
6238
6239 POP_ASSUM MP_TAC
6240 THEN POP_ASSUM MP_TAC
6241 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6242 THEN MP_TAC th)
6243 THEN ABBREV_TAC`w1=w':real^3`
6244 THEN MP_TAC DEFORMATION_LUNAR_AFFINE_HULL_V1
6245 THEN RESA_TAC
6246 THEN ABBREV_TAC`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2`
6247 THEN MP_TAC(REAL_ARITH`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''/\ &0< e'''' ==> &0< e1/\ e1< &1/\ e1< e /\ e1< e' /\ e1< e'' /\ e1<= e'''/\  -- e'''<= --e1/\ --e1< &0/\ e1< e''''`)
6248 THEN RESA_TAC
6249 THEN SUBGOAL_THEN`(!u' t.
6250            u' IN V /\ ~(v2 = u':real^3) /\ t IN real_interval (--e1,e1)
6251            ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 u' t = u')`ASSUME_TAC;
6252
6253
6254
6255 REPEAT STRIP_TAC
6256 THEN REWRITE_TAC[v3_defor_v4]
6257 THEN REMOVE_ASSUM_TAC
6258 THEN POP_ASSUM(fun th-> REWRITE_TAC[th]);
6259
6260
6261
6262
6263 SUBGOAL_THEN`(!t. t IN real_interval (--e1,e1)
6264        ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
6265            affine hull {vec 0, v, w1, v2})`ASSUME_TAC;
6266
6267 ASM_REWRITE_TAC[IN_REAL_INTERVAL]
6268 THEN REPEAT RESA_TAC
6269 THEN REPLICATE_TAC (80-67)(POP_ASSUM MP_TAC)
6270 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6271 THEN MATCH_MP_TAC th)
6272 THEN ASM_REWRITE_TAC[IN_REAL_INTERVAL]
6273 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''''/\ --e1<t==> t<e''''/\ --e''''<t`)
6274 THEN RESA_TAC;
6275
6276
6277 MRESA_TAC (GEN_ALL DEFORMATION_SMALL_INTERVAL)[`-- e''':real`;`e''':real`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`V:real^3->bool`;`--e1:real`;`e1:real`]
6278 THEN REPLICATE_TAC (80-1) (POP_ASSUM MP_TAC)
6279 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6280 THEN POP_ASSUM MP_TAC
6281 THEN MRESA_TAC th[`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`v:real^3`;`w':real^3`;`v2:real^3`])
6282 THEN POP_ASSUM MP_TAC
6283 ;
6284
6285
6286 RESA_TAC
6287 THEN STRIP_TAC
6288 THEN REMOVE_ASSUM_TAC
6289 THEN EXISTS_TAC`e''''':real`
6290 THEN ASM_REWRITE_TAC[V_DEFORMATION_V3_DEFOR;E_DEFORMATION_V3_DEFOR;F_DEFORMATION_V3_DEFOR]
6291 THEN GEN_TAC
6292 THEN POP_ASSUM(fun th-> STRIP_TAC
6293 THEN MRESA_TAC th[`t:real`]);
6294
6295
6296
6297
6298
6299 ]);;
6300
6301
6302
6303
6304
6305
6306 let CARD_FF_EQ_V3_DEFOR_DEFORMATION=prove(`scs_k_v39 s =k /\
6307  IMAGE (w:num->real^3) (:num)=V/\
6308         is_scs_v39 s /\
6309 3< k/\
6310         BBs_v39 s w /\(!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t))
6311 ==> (!t. &0< t/\ t< e1==>
6312 CARD               (IMAGE
6313                       (\i.  v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t,
6314                            v3_defor_v4 a x1 x2 x6 v1 v2 (w (SUC  i)) t)
6315                      (:num))
6316 =CARD(IMAGE (\i. w i,w (SUC i)) (:num)))`,
6317 STRIP_TAC
6318 THEN GEN_TAC
6319 THEN POP_ASSUM(fun th-> STRIP_TAC
6320 THEN MRESA_TAC th[`t:real`])
6321 THEN MRESA_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`]
6322 THEN MRESA_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`(\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t)`;`IMAGE ((\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t)) (:num)`;`k:num`]
6323 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<= 3)`)
6324 THEN RESA_TAC
6325 THEN POP_ASSUM(fun th-> ASM_TAC
6326 THEN ASSUME_TAC(th)
6327 THEN REPEAT RESA_TAC)
6328 THEN ASM_TAC
6329 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;convex_local_fan]
6330 THEN REPEAT RESA_TAC
6331 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOFA_IMP_CARD_FF_V_EQ)
6332 [`IMAGE (\i. { v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t,  v3_defor_v4 a x1 x2 x6 v1 v2 (w (SUC i)) t})
6333        (:num)`;`IMAGE (\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t,v3_defor_v4 a x1 x2 x6 v1 v2 (w (SUC i)) t) (:num)`;`IMAGE (\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (:num)`]
6334 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOFA_IMP_CARD_FF_V_EQ)
6335 [`IMAGE (\i. {w i, (w:num->real^3) (SUC i)}) (:num)`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`V:real^3->bool`]);;
6336
6337
6338
6339
6340 let DSV_V3_DEFOR_EQ=prove_by_refinement(
6341 `scs_k_v39 s=k/\
6342   is_scs_v39 s /\
6343   BBs_v39 s w /\
6344 (!i. ~(scs_J_v39 s l i))
6345 ==>
6346 dsv_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 (w l) (w i) t) = dsv_v39 s w`,
6347 [
6348 REWRITE_TAC[dsv_v39]
6349 THEN STRIP_TAC
6350 THEN MATCH_MP_TAC(REAL_ARITH`a=b==> c+a=c+b`)
6351 THEN MP_TAC(SET_RULE`is_ear_v39 s\/ ~(is_ear_v39 s)`)
6352 THEN RESA_TAC
6353 THEN MATCH_MP_TAC(REAL_ARITH`a=b==> #0.1*a= #0.1*b`);
6354
6355 REWRITE_TAC[REAL_ARITH`&1 *a=a`]
6356 THEN MATCH_MP_TAC SUM_EQ
6357 THEN REWRITE_TAC[IN_ELIM_THM]
6358 THEN REPEAT STRIP_TAC
6359 THEN MP_TAC(SET_RULE`(w:num->real^3) l= w x\/ ~(w l =w x)`)
6360 THEN RESA_TAC;
6361
6362 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
6363 THEN ASM_TAC
6364 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
6365 THEN REPEAT RESA_TAC
6366 THEN MP_TAC(ARITH_RULE`3<=k ==> ~(k=0)`)
6367 THEN RESA_TAC
6368 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6369 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6370 THEN MRESA_TAC DIVISION[`l:num`;`scs_k_v39 s`]
6371 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
6372 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6373 THEN MRESA_TAC th[`l MOD k:num`;`x:num`])
6374 THEN REPLICATE_TAC (34-25) (POP_ASSUM MP_TAC)
6375 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6376 THEN MRESA_TAC th[`SUC x:num`;])
6377 THEN POP_ASSUM MP_TAC
6378 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_J_v39 s (SUC x)`][ARITH_RULE`~(4=0)`;periodic]
6379 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]);
6380
6381 MP_TAC(SET_RULE`(w:num->real^3) l= w (SUC x)\/ ~(w l =w (SUC x))`)
6382 THEN RESA_TAC;
6383
6384 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
6385 THEN ASM_TAC
6386 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
6387 THEN REPEAT RESA_TAC
6388 THEN MP_TAC(ARITH_RULE`3<=k ==> ~(k=0)`)
6389 THEN RESA_TAC
6390 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6391 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
6392 THEN POP_ASSUM MP_TAC
6393 THEN MRESAL1_TAC th`SUC x:num`[ARITH_RULE`4 MOD 4=0`])
6394 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
6395 THEN STRIP_TAC
6396 THEN MRESA_TAC DIVISION[`l:num`;`scs_k_v39 s`]
6397 THEN MRESA_TAC DIVISION[`SUC x:num`;`scs_k_v39 s`]
6398 THEN REPLICATE_TAC (6) (POP_ASSUM MP_TAC)
6399 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6400 THEN MRESA_TAC th[`l MOD k:num`;`SUC x MOD k:num`])
6401 THEN REPLICATE_TAC (37-25) (POP_ASSUM MP_TAC)
6402 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6403 THEN MRESA_TAC th[`x:num`;])
6404 THEN POP_ASSUM MP_TAC
6405 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_J_v39 s (x)`][ARITH_RULE`~(4=0)`;periodic]
6406 THEN POP_ASSUM (fun th-> 
6407 MRESAL1_TAC th`SUC x:num`[ARITH_RULE`4 MOD 4=0`]
6408 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6409 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th]);
6410
6411 ASM_REWRITE_TAC[v3_defor_v4];
6412
6413 REWRITE_TAC[REAL_ARITH`-- &1 *a= -- &1 * b<=> a=b`]
6414 THEN MATCH_MP_TAC SUM_EQ
6415 THEN REWRITE_TAC[IN_ELIM_THM]
6416 THEN REPEAT STRIP_TAC
6417 THEN MP_TAC(SET_RULE`(w:num->real^3) l= w x\/ ~(w l =w x)`)
6418 THEN RESA_TAC;
6419
6420 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
6421 THEN ASM_TAC
6422 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
6423 THEN REPEAT RESA_TAC
6424 THEN MP_TAC(ARITH_RULE`3<=k ==> ~(k=0)`)
6425 THEN RESA_TAC
6426 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6427 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6428 THEN MRESA_TAC DIVISION[`l:num`;`scs_k_v39 s`]
6429 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
6430 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6431 THEN MRESA_TAC th[`l MOD k:num`;`x:num`])
6432 THEN REPLICATE_TAC (34-25) (POP_ASSUM MP_TAC)
6433 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6434 THEN MRESA_TAC th[`SUC x:num`;])
6435 THEN POP_ASSUM MP_TAC
6436 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_J_v39 s (SUC x)`][ARITH_RULE`~(4=0)`;periodic]
6437 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]);
6438
6439 MP_TAC(SET_RULE`(w:num->real^3) l= w (SUC x)\/ ~(w l =w (SUC x))`)
6440 THEN RESA_TAC;
6441
6442 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
6443 THEN ASM_TAC
6444 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
6445 THEN REPEAT RESA_TAC
6446 THEN MP_TAC(ARITH_RULE`3<=k ==> ~(k=0)`)
6447 THEN RESA_TAC
6448 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6449 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
6450 THEN POP_ASSUM MP_TAC
6451 THEN MRESAL1_TAC th`SUC x:num`[ARITH_RULE`4 MOD 4=0`])
6452 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
6453 THEN STRIP_TAC
6454 THEN MRESA_TAC DIVISION[`l:num`;`scs_k_v39 s`]
6455 THEN MRESA_TAC DIVISION[`SUC x:num`;`scs_k_v39 s`]
6456 THEN REPLICATE_TAC (6) (POP_ASSUM MP_TAC)
6457 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6458 THEN MRESA_TAC th[`l MOD k:num`;`SUC x MOD k:num`])
6459 THEN REPLICATE_TAC (37-25) (POP_ASSUM MP_TAC)
6460 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6461 THEN MRESA_TAC th[`x:num`;])
6462 THEN POP_ASSUM MP_TAC
6463 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_J_v39 s (x)`][ARITH_RULE`~(4=0)`;periodic]
6464 THEN POP_ASSUM (fun th-> 
6465 MRESAL1_TAC th`SUC x:num`[ARITH_RULE`4 MOD 4=0`]
6466 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6467 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th]);
6468
6469 ASM_REWRITE_TAC[v3_defor_v4]]);;
6470
6471
6472
6473 let DEFORMATION_INTERIOR_ANGLE1_EQ_V3_DEFOR_V1=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
6474   MMs_v39 s w /\
6475  w l=v2/\ w (SUC l) =v1 /\
6476 &0< x1 /\ &0<x2   /\ &0< x6 /\
6477   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
6478  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
6479  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
6480 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
6481 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
6482 /\ IMAGE (w:num->real^3) (:num)=V 
6483 ==>
6484 (?e. &0< e/\ (!v t.
6485            v IN V /\
6486            --e< t /\ t< e  
6487            ==> interior_angle1 (vec 0)
6488                (IMAGE
6489                 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
6490                       v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
6491                FF)
6492                (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) =
6493                interior_angle1 (vec 0) FF v))`,
6494 REPEAT STRIP_TAC
6495 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_V1
6496 THEN RESA_TAC
6497 THEN EXISTS_TAC`e:real`
6498 THEN ASM_REWRITE_TAC[interior_angle1]
6499 THEN REPEAT RESA_TAC
6500 THEN REPLICATE_TAC (23-20) (POP_ASSUM MP_TAC)
6501 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6502 THEN MRESA_TAC th[`t:real`;`v:real^3`])
6503 THEN REAL_ARITH_TAC);;
6504
6505
6506
6507 let RHO_FUN_DEFORMATION_V3_DEFOR=prove_by_refinement(` &0< x1 /\ &0<x2   /\ &0< x6 /\
6508 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a = -- &1
6509 ==> ?e. &0< e /\ (!t. &0<t /\ t<e ==> rho_fun (norm(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)))
6510 <  rho_fun (norm (v2)))`,
6511 [
6512 STRIP_TAC
6513 THEN MP_TAC UPS_X_POS_SEG
6514 THEN RESA_TAC
6515 THEN EXISTS_TAC`e:real`
6516 THEN ASM_REWRITE_TAC[]
6517 THEN GEN_TAC
6518 THEN POP_ASSUM(fun th-> STRIP_TAC THEN 
6519 MP_TAC(REAL_ARITH`&0<t/\ t<e==> --e<t`)
6520 THEN RESA_TAC
6521 THEN MRESA_TAC th[`t:real`])
6522 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORMV3)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`x2-t:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
6523 THEN REWRITE_TAC[rho_fun;h0;]
6524 THEN MATCH_MP_TAC(REAL_ARITH`a<b==> c+a<c+ b`)
6525 THEN MATCH_MP_TAC REAL_LT_LMUL
6526 THEN STRIP_TAC;
6527
6528 MATCH_MP_TAC REAL_LT_INV
6529 THEN REAL_ARITH_TAC;
6530
6531 MATCH_MP_TAC REAL_LT_LMUL
6532 THEN STRIP_TAC;
6533
6534 MATCH_MP_TAC REAL_LT_INV
6535 THEN REWRITE_TAC[PI_WORKS];
6536
6537 MATCH_MP_TAC REAL_LT_LMUL
6538 THEN REWRITE_TAC[Gbycpxs.SOL0_POS]
6539 THEN MATCH_MP_TAC(REAL_ARITH`a<b==> a-c<b-c`)
6540 THEN REWRITE_TAC[ww_defor;NORM_MUL]
6541 THEN MP_TAC(REAL_ARITH`t< &1==> &0<= &1- t`)
6542 THEN RESA_TAC
6543 THEN MRESA_TAC REAL_ABS_REFL[`&1-t`]
6544 THEN ASM_REWRITE_TAC[NORM_LT;DOT_SQUARE_NORM;REAL_ARITH`a-b<a<=> &0<b`]]);;
6545
6546
6547
6548
6549 let INTERIOR_ANGLE_SAME_V3_DEFOR1=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
6550   MMs_v39 s w /\
6551  w l=v2/\ w (SUC l) =v1 /\
6552 &0< x1 /\ &0<x2   /\ &0< x6 /\
6553   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
6554  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
6555  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
6556 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
6557 /\(!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t))/\
6558 &0< e1
6559 /\
6560   IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
6561 /\ IMAGE (w:num->real^3) (:num)=V 
6562 ==>
6563 (?e. &0< e/\ (!t i.
6564                       &0< t /\ t< e  
6565 ==> 
6566 interior_angle1 (vec 0)
6567  (IMAGE
6568   (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
6569         v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
6570  FF)
6571  (ITER i
6572   (rho_node1
6573   (IMAGE
6574    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
6575          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
6576   FF))
6577  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l MOD k)) t))
6578  =
6579 interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) (w (l MOD k)))))`,
6580 STRIP_TAC
6581 THEN MP_TAC DEFORMATION_INTERIOR_ANGLE1_EQ_V3_DEFOR_V1
6582 THEN RESA_TAC
6583 THEN ABBREV_TAC`e2=(min e e1)/ &2`
6584 THEN MP_TAC(REAL_ARITH`e2=(min e e1)/ &2 /\ &0< e/\ &0<e1==> &0<e2/\ e2<e/\ e2<e1`)
6585 THEN RESA_TAC
6586 THEN EXISTS_TAC`e2:real`
6587 THEN ASM_REWRITE_TAC[]
6588 THEN REPEAT RESA_TAC
6589 THEN ASM_TAC
6590 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;]
6591 THEN REPEAT STRIP_TAC
6592 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
6593 THEN RESA_TAC
6594 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)[`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l MOD k)`;`w:num->real^3`;`l MOD k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;]
6595 THEN REPLICATE_TAC (43-25)(POP_ASSUM MP_TAC)
6596 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6597 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e1==> t<e1`)
6598 THEN RESA_TAC
6599 THEN MRESA_TAC th[`t:real`])
6600 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)
6601 [`IMAGE (\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (:num)`;`IMAGE (\i. { v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t, v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) (SUC i)) t}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t, v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) (SUC i)) t) (:num)`;`(\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (l MOD k)`;`(\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t)`;`l MOD k`]
6602 [MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;F_DEFORMATION_V3_DEFOR]
6603 THEN REPLICATE_TAC (45-29)(POP_ASSUM MP_TAC)
6604 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6605 THEN MATCH_MP_TAC th)
6606 THEN ASM_REWRITE_TAC[]
6607 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e/\ &0<t==> t<e/\ --e<t`)
6608 THEN RESA_TAC
6609 THEN EXPAND_TAC"V"
6610 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
6611 THEN EXISTS_TAC`i + l MOD k`
6612 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`]);;
6613
6614
6615
6616
6617 let TAUSTAR_V3_DEFOR_concl = `!s k w l.
6618    3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
6619   MMs_v39 s w /\
6620  w l=v2/\ w (SUC l) =v1 /\
6621 &0< x1 /\ &0<x2   /\ &0< x6 /\
6622   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
6623  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
6624  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
6625 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1/\
6626   ~(&2 = norm (w l)) /\
6627   (!i. ~(scs_J_v39 s l i)) /\
6628 (!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t))/\
6629 &0< e1
6630  ==> 
6631 (?e. &0 < e /\
6632               (!t. &0 < t /\ t < e
6633                    ==> taustar_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t)< taustar_v39 s w 
6634 ))`;;
6635
6636
6637
6638 let TAUSTAR_V3_DEFOR=prove_by_refinement( TAUSTAR_V3_DEFOR_concl,
6639 [
6640 REPEAT STRIP_TAC;
6641
6642 REPLICATE_TAC (22-5)(POP_ASSUM MP_TAC)
6643 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6644 THEN POP_ASSUM MP_TAC
6645 THEN MP_TAC th
6646 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6647 THEN ASSUME_TAC th
6648 THEN STRIP_TAC)
6649 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
6650 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
6651 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
6652 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
6653 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
6654 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
6655 THEN RESA_TAC
6656 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
6657
6658 REPLICATE_TAC (41-22)(POP_ASSUM MP_TAC)
6659 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6660 THEN MP_TAC th
6661 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6662 THEN REPEAT RESA_TAC);
6663
6664 ASM_REWRITE_TAC[taustar_v39;LET_DEF;LET_END_DEF;tau_fun]
6665 THEN STRIP_TAC
6666 THEN MP_TAC INTERIOR_ANGLE_SAME_V3_DEFOR1
6667 THEN RESA_TAC
6668 THEN MP_TAC RHO_FUN_DEFORMATION_V3_DEFOR
6669 THEN RESA_TAC
6670 THEN ABBREV_TAC`e2=(min (min e1 e) e')/ &2`
6671 THEN MP_TAC(REAL_ARITH`e2=(min(min e1 e) e')/ &2/\ &0< e1/\ &0< e/\ &0<e'
6672 ==> &0< e2/\ e2< e1/\ e2<e/\ e2< e'`)
6673 THEN RESA_TAC
6674 THEN EXISTS_TAC`e2:real`
6675 THEN ASM_REWRITE_TAC[]
6676 THEN REPEAT STRIP_TAC
6677 THEN MP_TAC(REAL_ARITH`e2=(min(min e1 e) e')/ &2/\ &0< e1/\ &0< e/\ &0<e'
6678 /\ t<e2/\ &0<t
6679 ==> t< e1/\ t<e/\ t< e'`)
6680 THEN RESA_TAC
6681 THEN MP_TAC CARD_FF_EQ_V3_DEFOR_DEFORMATION
6682 THEN RESA_TAC
6683 THEN POP_ASSUM(fun th->MRESA1_TAC th`t:real`)
6684 THEN MP_TAC DSV_V3_DEFOR_EQ
6685 THEN RESA_TAC
6686 THEN MATCH_MP_TAC(REAL_ARITH`a<b==> a-c< b-c`)
6687 THEN MATCH_MP_TAC(REAL_ARITH`a<b==> a-c< b-c`)
6688 THEN MRESA_TAC(GEN_ALL Qknvmlb.SUM_AZIM_EQ_ANGLE_LE4)[`V:real^3->bool`;`w:num->real^3`;`l:num`;`s:scs_v39`;`(w:num->real^3) (l MOD scs_k_v39 s)`;`FF:real^3#real^3->bool`;`E:(real^3->bool)->bool`]
6689 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
6690 THEN REPLICATE_TAC (59-20)(POP_ASSUM MP_TAC)
6691 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6692 THEN MRESA_TAC th[`t:real`])
6693 THEN MRESA_TAC(GEN_ALL Qknvmlb.SUM_AZIM_EQ_ANGLE_LE4)[`IMAGE  (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (:num)`;` (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) i) t)`;`l:num`;`s:scs_v39`;` (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (l MOD scs_k_v39 s)`;`IMAGE (\i.  v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) i) t, v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC i)) t) (:num)`;`IMAGE (\i. {  v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w i) t,  v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) (SUC i)) t}) (:num)`]
6694 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
6695 THEN SUBGOAL_THEN`{i|i<k:num}= 0..(k-1)`ASSUME_TAC;
6696
6697 REWRITE_TAC[IN_ELIM_THM;IN_NUMSEG;EXTENSION]
6698 THEN REPLICATE_TAC (59-2)(POP_ASSUM MP_TAC)
6699 THEN POP_ASSUM (fun th-> REPEAT STRIP_TAC
6700 THEN MP_TAC th)
6701 THEN ARITH_TAC;
6702
6703 ASM_REWRITE_TAC[]
6704 THEN MRESAL_TAC SUM_ADD_SPLIT[`(\i. rho_fun (norm (w (i + l MOD k))) *
6705       interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) (w (l MOD k))))`;`0`;`0`;`k-1`][ARITH_RULE`0<=0+1/\ 0+A=A`]
6706 THEN MRESAL_TAC SUM_ADD_SPLIT[`(\i. rho_fun (norm (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (i + l MOD k)) t)) *
6707       interior_angle1 (vec 0)
6708       (IMAGE (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w i) t,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC i)) t)
6709       (:num))
6710       (ITER i
6711        (rho_node1
6712        (IMAGE (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (i)) t,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC i )) t)
6713        (:num)))
6714       (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w ( l MOD k)) t)))`;`0`;`0`;`k-1`][ARITH_RULE`0<=0+1/\ 0+A=A`]
6715 THEN MATCH_MP_TAC(REAL_ARITH`a<b/\ c=d==> a+c<b+d`)
6716 THEN REWRITE_TAC[SUM_SING_NUMSEG;ITER]
6717 THEN STRIP_TAC;
6718
6719 REWRITE_TAC[ARITH_RULE`0+A=A`]
6720 THEN REPLICATE_TAC (62-40)(POP_ASSUM MP_TAC)
6721 THEN POP_ASSUM (fun th-> ASM_TAC
6722 THEN MP_TAC th)
6723 THEN REPEAT RESA_TAC
6724 THEN ASM_TAC
6725 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39;convex_local_fan]
6726 THEN REPEAT RESA_TAC
6727 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6728 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6729 THEN SUBGOAL_THEN`(v2:real^3) IN V`ASSUME_TAC;
6730
6731 EXPAND_TAC"V"
6732 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
6733 THEN EXISTS_TAC`l:num`
6734 THEN ASM_REWRITE_TAC[SET_RULE`(l:num)IN(:num)`];
6735
6736 REPLICATE_TAC (91-67)(POP_ASSUM MP_TAC)
6737 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6738 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e/\ &0<t ==> --e<t`)
6739 THEN RESA_TAC
6740 THEN MRESAL_TAC th[`t:real`;`0`][F_DEFORMATION_V3_DEFOR;ITER])
6741 THEN MP_TAC Local_lemmas.LOFA_IMP_V_DIFF
6742 THEN RESA_TAC
6743 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3) l`])
6744 THEN MATCH_MP_TAC REAL_LT_RMUL
6745 THEN STRIP_TAC;
6746
6747 REPLICATE_TAC (93-68)(POP_ASSUM MP_TAC)
6748 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6749 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e'/\ &0<t ==> --e'<t`)
6750 THEN RESA_TAC
6751 THEN MRESAL_TAC th[`t:real`][v3_defor_v4]);
6752
6753 MRESA_TAC (GEN_ALL Local_lemmas.INTERIOR_ANGLE1_POS)[`E:(real^3->bool)->bool`;`V:real^3->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3) (l MOD scs_k_v39 s)`];
6754
6755 MATCH_MP_TAC SUM_EQ
6756 THEN REWRITE_TAC[IN_NUMSEG;F_DEFORMATION_V3_DEFOR]
6757 THEN REPEAT STRIP_TAC
6758 THEN MP_TAC(ARITH_RULE`x<=k-1/\ 3< k==> x< k`)
6759 THEN RESA_TAC
6760 THEN REPLICATE_TAC (65-44)(POP_ASSUM MP_TAC)
6761 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6762 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e/\ &0<t ==> --e<t`)
6763 THEN RESA_TAC
6764 THEN MRESAL_TAC th[`t:real`;`x:num`][F_DEFORMATION_V3_DEFOR;ITER])
6765 THEN REWRITE_TAC[REAL_EQ_MUL_RCANCEL]
6766 THEN MATCH_MP_TAC (SET_RULE`A==> A\/ B`)
6767 THEN ASM_TAC
6768 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39;convex_local_fan]
6769 THEN REPEAT RESA_TAC
6770 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6771 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6772 THEN SUBGOAL_THEN`(v2:real^3) IN V`ASSUME_TAC;
6773
6774 EXPAND_TAC"V"
6775 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
6776 THEN EXISTS_TAC`l:num`
6777 THEN ASM_REWRITE_TAC[SET_RULE`(l:num)IN(:num)`];
6778
6779 MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;convex_local_fan;is_scs_v39;periodic2]
6780 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)[`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l MOD k)`;`w:num->real^3`;`l MOD k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;convex_local_fan;is_scs_v39;periodic2]
6781 THEN POP_ASSUM(fun th-> MRESA_TAC th[`x:num`] )
6782 THEN MP_TAC(ARITH_RULE`1<=x==> 0<x`)
6783 THEN RESA_TAC
6784 THEN 
6785 MRESA_TAC (GEN_ALL Local_lemmas.LOFA_IMP_DIS_ELMS23)
6786 [`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l MOD k)`]
6787 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`0:num`;`x:num`][ITER;v3_defor_v4] )]);;
6788
6789
6790
6791
6792
6793
6794 (**********TWO ***************)
6795
6796
6797 let EQ_W_L_IN_BBS=prove(`3<k/\ scs_k_v39 s=k/\ BBs_v39 s w ==> w (SUC(l+k-1))= w l`,
6798 REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF]
6799 THEN REPEAT STRIP_TAC
6800 THEN ASM_TAC
6801 THEN STRIP_TAC
6802 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)/\ SUC(l+k-1)=1*k+l`)
6803 THEN RESA_TAC
6804 THEN REPEAT RESA_TAC
6805 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
6806 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6807 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
6808 THEN MRESAL1_TAC th`1*k+l:num`[ARITH_RULE`4 MOD 4=0`]));;
6809
6810
6811
6812
6813
6814 let HYPER_MM_COLLINEAR_TWO_CASES=prove_by_refinement(`scs_k_v39 s =k/\is_scs_v39 s /\
6815   MMs_v39 s w /\
6816  3<k/\ w l=v2/\ w (l+k-1) =v1
6817 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6
6818 ==>
6819 &0< x1 /\ &0<x2   /\ &0< x6 /\
6820 ~(collinear{vec 0,v1,v2:real^3}) `,
6821 [
6822 REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;]
6823 THEN STRIP_TAC
6824 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
6825 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
6826 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
6827 THEN ASM_TAC
6828 THEN RESA_TAC
6829 THEN REPEAT DISCH_TAC;
6830
6831 ASM_TAC
6832 THEN ARITH_TAC;
6833
6834 SUBGOAL_THEN`((v1,v2):real^3#real^3) IN FF`ASSUME_TAC;
6835
6836 EXPAND_TAC"FF"
6837 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
6838 THEN EXISTS_TAC`l+k-1:num`
6839 THEN ASM_REWRITE_TAC[SET_RULE`(a:num) IN (:num)`]
6840 THEN MP_TAC EQ_W_L_IN_BBS
6841 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF]
6842 THEN RESA_TAC;
6843
6844 MP_TAC Local_lemmas.CVLF_LF_F
6845 THEN RESA_TAC
6846 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v1,v2):real^3#real^3`]
6847 THEN MP_TAC NORM_POS_COLLINEAR
6848 THEN RESA_TAC]);;
6849
6850
6851
6852 let DEFORMATION_DIST_LE_V3_DEFOR_A_TWO_CASES=prove(`is_scs_v39 s /\
6853   MMs_v39 s w /\
6854   scs_k_v39 s =k/\
6855  3<k /\ w l=v2/\ w (l+k-1) =v1
6856 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
6857 /\ 
6858   (!i. ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)          ==> scs_a_v39 s l i < dist (v2,w i))
6859 ==> (!i. ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k) ==> ?e. &0< e/\
6860 (!t. &0< t/\ t< e  ==> scs_a_v39 s l i < dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)))`,
6861 STRIP_TAC 
6862 THEN MP_TAC HYPER_MM_COLLINEAR_TWO_CASES
6863 THEN RESA_TAC
6864 THEN REPEAT STRIP_TAC
6865 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST
6866 THEN ASM_REWRITE_TAC[]
6867 THEN REPLICATE_TAC (16-10)(POP_ASSUM MP_TAC)
6868 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6869 THEN MRESA_TAC th[`i:num`]));;
6870
6871
6872
6873
6874 let DEFORMATION_DIST_LE_V3_DEFOR_A_COM_TWO_CASES=prove_by_refinement(
6875 `is_scs_v39 s /\
6876   MMs_v39 s w /\
6877   scs_k_v39 s =k/\
6878  3<k /\ w l=v2/\ w (l+k-1) =v1
6879 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
6880 /\ 
6881   (!i. ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)          ==> scs_a_v39 s l i < dist (v2,w i))
6882 ==>   ?e. &0< e/\
6883 (!t i. &0< t/\ t< e /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k) ==> scs_a_v39 s l i < dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))`,
6884 [
6885 REPEAT STRIP_TAC
6886 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_TWO_CASES
6887 THEN RESA_TAC
6888 THEN POP_ASSUM MP_TAC
6889 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
6890 THEN REWRITE_TAC[SKOLEM_THM]
6891 THEN STRIP_TAC
6892 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k =  i MOD k)}`
6893 THEN EXISTS_TAC`e1:real`
6894 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k =  i MOD k)}`ASSUME_TAC;
6895
6896 MATCH_MP_TAC FINITE_SUBSET
6897 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
6898 THEN STRIP_TAC;
6899
6900 MATCH_MP_TAC FINITE_IMAGE
6901 THEN REWRITE_TAC[FINITE_NUMSEG];
6902
6903 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_ELIM_THM]
6904 THEN GEN_TAC
6905 THEN RESA_TAC
6906 THEN EXISTS_TAC`i:num`
6907 THEN ASM_REWRITE_TAC[IN_NUMSEG]
6908 THEN REPLICATE_TAC (16-12)(POP_ASSUM MP_TAC)
6909 THEN ARITH_TAC;
6910
6911 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k =  i MOD k)} = {})`ASSUME_TAC;
6912
6913 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
6914 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(l MOD k =0)`)
6915 THEN RESA_TAC;
6916
6917 EXISTS_TAC`(e:num->real)2`
6918 THEN EXISTS_TAC`2`
6919 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
6920 THEN MP_TAC(ARITH_RULE`3<k==> 0<k /\ 1<k/\ 2<k /\ ~(k=0)/\ SUC 1=2/\ ~(0=1)/\ ~(0=2)/\ SUC 0=1/\ ~(1=2)`)
6921 THEN RESA_TAC
6922 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
6923 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
6924 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
6925 THEN MRESA_TAC MOD_LT[`3`;`k:num`]
6926 THEN MRESA_TAC(GEN_ALL Zithlqn.IMP_SUC_MOD_EQ)[`l:num`;`0:num`;`k:num`];
6927
6928
6929 MP_TAC(SET_RULE`l MOD k=1\/ ~(l MOD k= 1 )`)
6930 THEN RESA_TAC;
6931
6932 EXISTS_TAC`(e:num->real)3`
6933 THEN EXISTS_TAC`3`
6934 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
6935 THEN MP_TAC(ARITH_RULE`3<k==> 0<k /\ 1<k/\ 2<k /\ ~(k=0)/\ SUC 1=2/\ ~(0=1)/\ ~(0=2)/\ SUC 0=1/\ ~(1=2)/\ ~(1=3)/\ ~(2=3)`)
6936 THEN RESA_TAC
6937 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
6938 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
6939 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
6940 THEN MRESA_TAC MOD_LT[`3`;`k:num`]
6941 THEN MRESA_TAC(GEN_ALL Zithlqn.IMP_SUC_MOD_EQ)[`l:num`;`1:num`;`k:num`];
6942
6943 EXISTS_TAC`(e:num->real)1`
6944 THEN EXISTS_TAC`1`
6945 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
6946 THEN MP_TAC(ARITH_RULE`3<k==> 0<k /\ 1<k/\ 2<k /\ ~(k=0)/\ SUC 1=2/\ ~(0=1)/\ ~(0=2)/\ SUC 0=1/\ ~(1=2)/\ ~(1=3)/\ ~(2=3)`)
6947 THEN RESA_TAC
6948 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
6949 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
6950 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
6951 THEN MRESA_TAC MOD_LT[`3`;`k:num`]
6952 THEN MRESAL_TAC(Hdplygy.MOD_EQ_MOD1)[`l:num`;`0`;`1:num`;`k:num`][ARITH_RULE`0<=a/\ 1+a= SUC a`];
6953
6954 STRIP_TAC;
6955
6956 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`;`&0`]
6957 THEN REWRITE_TAC[IN_ELIM_THM]
6958 THEN REPEAT RESA_TAC
6959 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
6960 THEN REPLICATE_TAC (20-11) (POP_ASSUM MP_TAC)
6961 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6962 THEN MRESA_TAC th[`i:num`]);
6963
6964 REPEAT STRIP_TAC
6965 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`;`t:real`]
6966 THEN POP_ASSUM MP_TAC
6967 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`ASSUME_TAC;
6968
6969 REWRITE_TAC[IN_ELIM_THM]
6970 THEN EXISTS_TAC`i MOD k`
6971 THEN ASM_REWRITE_TAC[]
6972 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
6973 THEN RESA_TAC
6974 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
6975 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
6976 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
6977 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1];
6978
6979 STRIP_TAC
6980 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
6981 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
6982 THEN RESA_TAC
6983 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
6984 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
6985 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
6986 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1]
6987 THEN REPLICATE_TAC (27-11) (POP_ASSUM MP_TAC)
6988 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6989 THEN MRESA_TAC th[`i:num MOD k`])
6990 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
6991 THEN ASM_TAC
6992 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
6993 THEN REPEAT RESA_TAC
6994 THEN POP_ASSUM MP_TAC
6995 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
6996 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
6997 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6998 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])]);;
6999
7000
7001
7002
7003 let DEFORMATION_DIST_LE_V3_DEFOR_A_SUC_TWO_CASES=prove(`is_scs_v39 s /\
7004   MMs_v39 s w /\
7005   scs_k_v39 s =k/\
7006  3<k /\ w l=v2/\ w (l+k-1) =v1
7007 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
7008 /\ 
7009   (!i. ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)          ==> scs_a_v39 s l i < dist (v2,w i))
7010 ==> (!i. ~(l MOD k = i MOD k) /\ ~(l MOD k =SUC i MOD k) ==> ?e. &0< e/\
7011 (!t. &0< t/\ t< e  ==> scs_a_v39 s l i < dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)))`,
7012 STRIP_TAC 
7013 THEN MP_TAC HYPER_MM_COLLINEAR_TWO_CASES
7014 THEN RESA_TAC
7015 THEN REPEAT STRIP_TAC
7016 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST
7017 THEN ASM_REWRITE_TAC[]
7018 THEN REPLICATE_TAC (16-10)(POP_ASSUM MP_TAC)
7019 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7020 THEN MRESA_TAC th[`i:num`]));;
7021
7022
7023 let DEFORMATION_DIST_LE_V3_DEFOR_A_COM_SUC_TWO_CASES=prove_by_refinement(`is_scs_v39 s /\
7024   MMs_v39 s w /\
7025   scs_k_v39 s =k/\
7026  3<k /\ w l=v2/\ w (l+k-1) =v1
7027 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
7028 /\ 
7029   (!i. ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)          ==> scs_a_v39 s l i < dist (v2,w i))
7030 ==>   ?e. &0< e/\
7031 (!t i. &0< t/\ t< e /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k) ==> scs_a_v39 s l i < dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))`,
7032 [
7033 REPEAT STRIP_TAC
7034 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_SUC_TWO_CASES
7035 THEN RESA_TAC
7036 THEN POP_ASSUM MP_TAC
7037 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
7038 THEN REWRITE_TAC[SKOLEM_THM]
7039 THEN STRIP_TAC
7040 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`
7041 THEN EXISTS_TAC`e1:real`
7042 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`ASSUME_TAC;
7043
7044
7045 MATCH_MP_TAC FINITE_SUBSET
7046 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
7047 THEN STRIP_TAC;
7048
7049 MATCH_MP_TAC FINITE_IMAGE
7050 THEN REWRITE_TAC[FINITE_NUMSEG];
7051
7052 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_ELIM_THM]
7053 THEN GEN_TAC
7054 THEN RESA_TAC
7055 THEN EXISTS_TAC`i:num`
7056 THEN ASM_REWRITE_TAC[IN_NUMSEG]
7057 THEN REPLICATE_TAC (16-12)(POP_ASSUM MP_TAC)
7058 THEN ARITH_TAC;
7059
7060 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)} = {})`ASSUME_TAC;
7061
7062 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
7063 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(l MOD k =0)`)
7064 THEN RESA_TAC;
7065
7066 EXISTS_TAC`(e:num->real)1`
7067 THEN EXISTS_TAC`1`
7068 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
7069 THEN MP_TAC(ARITH_RULE`3<k==> 1<k/\ 2<k /\ ~(k=0)/\ SUC 1=2/\ ~(0=1)/\ ~(0=2)`)
7070 THEN RESA_TAC
7071 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
7072 THEN MRESA_TAC MOD_LT[`2`;`k:num`];
7073
7074 MP_TAC(SET_RULE`l MOD k=1\/ ~(l MOD k= 1 )`)
7075 THEN RESA_TAC;
7076
7077 EXISTS_TAC`(e:num->real)2`
7078 THEN EXISTS_TAC`2`
7079 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
7080 THEN MP_TAC(ARITH_RULE`3<k==> 1<k/\ 2<k /\ ~(k=0)/\ SUC 1=2/\ ~(1=2)/\ ~(1=3)/\ SUC 2=3`)
7081 THEN RESA_TAC
7082 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
7083 THEN MRESA_TAC MOD_LT[`3`;`k:num`];
7084
7085 EXISTS_TAC`(e:num->real)0`
7086 THEN EXISTS_TAC`0`
7087 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
7088 THEN MP_TAC(ARITH_RULE`3<k==> 0<k/\ 1<k /\ ~(k=0)/\ SUC 1=2/\ ~(1=2)/\ ~(1=3)/\ SUC 0=1`)
7089 THEN RESA_TAC
7090 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
7091 THEN MRESA_TAC MOD_LT[`1`;`k:num`];
7092
7093 STRIP_TAC;
7094
7095 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`;`&0`]
7096 THEN REWRITE_TAC[IN_ELIM_THM]
7097 THEN REPEAT RESA_TAC
7098 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
7099 THEN REPLICATE_TAC (20-11) (POP_ASSUM MP_TAC)
7100 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7101 THEN MRESA_TAC th[`i:num`]);
7102
7103 REPEAT STRIP_TAC
7104 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`;`t:real`]
7105 THEN POP_ASSUM MP_TAC
7106 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`ASSUME_TAC;
7107
7108 REWRITE_TAC[IN_ELIM_THM]
7109 THEN EXISTS_TAC`i MOD k`
7110 THEN ASM_REWRITE_TAC[]
7111 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
7112 THEN RESA_TAC
7113 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
7114 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
7115 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
7116 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1];
7117
7118 STRIP_TAC
7119 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
7120 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
7121 THEN RESA_TAC
7122 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
7123 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
7124 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
7125 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1]
7126 THEN REPLICATE_TAC (27-11) (POP_ASSUM MP_TAC)
7127 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7128 THEN MRESA_TAC th[`i:num MOD k`])
7129 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
7130 THEN ASM_TAC
7131 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7132 THEN REPEAT RESA_TAC
7133 THEN POP_ASSUM MP_TAC
7134 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
7135 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
7136 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7137 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])]);;
7138
7139
7140
7141 let DEFORMATION_DIST_LE_V3_DEFOR_B_SUC_TWO_CASES=prove_by_refinement(`  scs_k_v39 s =k/\
7142  3<k /\ is_scs_v39 s /\
7143   MMs_v39 s w /\
7144  w l=v2/\ w (l+k-1) =v1
7145 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
7146 /\     (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
7147 ==> (!i. scs_diag k l i ==> ?e. &0< e/\
7148 (!t. &0< t/\ t< e  ==>  dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)<scs_b_v39 s l i)) `,
7149 [STRIP_TAC 
7150 THEN MP_TAC HYPER_MM_COLLINEAR_TWO_CASES
7151 THEN RESA_TAC
7152 THEN REPEAT STRIP_TAC
7153 THEN MATCH_MP_TAC EXISTS_SMALL_LT_CONST
7154 THEN ASM_REWRITE_TAC[]
7155 THEN ASM_TAC
7156 THEN STRIP_TAC
7157 THEN STRIP_TAC
7158 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)`)
7159 THEN RESA_TAC
7160 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7161 THEN REPEAT RESA_TAC
7162 THEN SUBGOAL_THEN`v2 IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
7163
7164  REWRITE_TAC[IN_ELIM_THM;IMAGE]
7165 THEN EXISTS_TAC`l:num`
7166 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
7167
7168 SUBGOAL_THEN`w i IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
7169
7170  REWRITE_TAC[IN_ELIM_THM;IMAGE]
7171 THEN EXISTS_TAC`i:num`
7172 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
7173
7174 MP_TAC(SET_RULE`v2 IN IMAGE w (:num)/\ w i IN IMAGE w (:num)/\ IMAGE w (:num) SUBSET ball_annulus ==> v2 IN  ball_annulus/\ w i IN ball_annulus`)
7175 THEN ASM_REWRITE_TAC[]
7176 THEN REWRITE_TAC[IN_ELIM_THM;DIFF;ball_annulus;cball;]
7177 THEN REPEAT STRIP_TAC
7178 THEN MRESA_TAC DIST_TRIANGLE[`v2:real^3`;`vec 0:real^3`;`(w:num->real^3) i`]
7179 THEN MP_TAC(REAL_ARITH`dist (v2,vec 0) <= &2 * h0/\ dist (vec 0,w i) <= &2 * h0/\ dist (v2,w i) <= dist (v2,vec 0) + dist (vec 0,w i)
7180 ==> dist (v2,(w:num->real^3) i)<= &4 *h0`)
7181 THEN ASM_REWRITE_TAC[]
7182 THEN ONCE_REWRITE_TAC[DIST_SYM]
7183 THEN ASM_REWRITE_TAC[]
7184 THEN ONCE_REWRITE_TAC[DIST_SYM]
7185 THEN REPLICATE_TAC (53-41)(POP_ASSUM MP_TAC)
7186 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7187 THEN MRESA_TAC th[`i:num`])
7188 THEN REPLICATE_TAC (2)(POP_ASSUM MP_TAC)
7189 THEN REAL_ARITH_TAC]);;
7190
7191
7192 let DEFORMATION_DIST_LE_2_TWO_CASES=prove(` 3<k /\
7193   scs_k_v39 s =k/\
7194 is_scs_v39 s /\
7195   MMs_v39 s w /\
7196   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
7197  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
7198  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
7199  w l=v2/\ w (l+k-1) =v1/\ ~(norm v2 = &2)/\ scs_a_v39 s l i < dist (v2,w i)
7200 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
7201 /\ SUC l MOD k= i MOD k 
7202 ==>
7203 ?e. &0< e/\
7204 (!t. &0< t/\ t< e  ==>  &2<dist (v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i) ) `,
7205 STRIP_TAC
7206 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST
7207 THEN ASM_REWRITE_TAC[]
7208 THEN MP_TAC HYPER_MM_COLLINEAR_TWO_CASES
7209 THEN RESA_TAC
7210 THEN ASM_TAC
7211 THEN STRIP_TAC
7212 THEN STRIP_TAC
7213 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)/\ ~(k=0)/\ 1<k`)
7214 THEN RESA_TAC
7215 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7216 THEN REPEAT RESA_TAC
7217 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
7218 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
7219 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
7220 THEN RESA_TAC
7221 THEN POP_ASSUM(fun th-> MRESA1_TAC th`l:num`)
7222 THEN REPLICATE_TAC (56-18) (POP_ASSUM MP_TAC)
7223 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7224 THEN MRESA_TAC th[`i:num MOD k`;`l MOD k` ])
7225 THEN POP_ASSUM MP_TAC
7226 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
7227 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
7228 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
7229 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
7230 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
7231 THEN REPLICATE_TAC (59-42) (POP_ASSUM MP_TAC)
7232 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7233 THEN MP_TAC th)
7234 THEN POP_ASSUM MP_TAC
7235 THEN ASM_REWRITE_TAC[]
7236 THEN REAL_ARITH_TAC);;
7237
7238
7239
7240
7241
7242 let DEFORMATION_V3_DEFOR_EDGE_TWO_CASES=prove_by_refinement(` 3<k /\
7243   scs_k_v39 s =k/\
7244 is_scs_v39 s /\
7245   MMs_v39 s w /\
7246   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
7247  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
7248  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
7249  w l=v2/\ w (l+k-1) =v1/\ ~(norm v2 = &2)/\ scs_a_v39 s l i < dist (v2,w i)
7250 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
7251 /\ SUC l MOD k= i MOD k 
7252 ==>
7253 ?e. &0< e/\
7254 (!t. &0< t/\ t< e  ==>  dist (v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)<dist (v2,w i) ) `,
7255 [
7256
7257 REPEAT STRIP_TAC
7258 THEN MP_TAC HYPER_MM_COLLINEAR_TWO_CASES
7259 THEN RESA_TAC
7260 THEN MP_TAC DEFORMATION_DIST_LE_2_TWO_CASES
7261 THEN RESA_TAC
7262 THEN ASM_TAC
7263 THEN STRIP_TAC 
7264 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
7265 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7266 THEN REPEAT RESA_TAC
7267 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
7268 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
7269 THEN MP_TAC UPS_X_POS_SEG
7270 THEN RESA_TAC
7271 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
7272 THEN SUBGOAL_THEN`(w:num->real^3) l IN V` ASSUME_TAC;
7273
7274
7275
7276 EXPAND_TAC"V"
7277 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
7278 THEN EXISTS_TAC`l:num`
7279 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
7280
7281
7282
7283 SUBGOAL_THEN`(w:num->real^3) (l+k-1) IN V` ASSUME_TAC;
7284
7285
7286
7287 EXPAND_TAC"V"
7288 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
7289 THEN EXISTS_TAC`l+k-1:num`
7290 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
7291
7292
7293 SUBGOAL_THEN`(w:num->real^3) l IN ball_annulus` ASSUME_TAC;
7294
7295
7296
7297  MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
7298 THEN EXISTS_TAC`V:real^3->bool`
7299 THEN ASM_REWRITE_TAC[];
7300
7301
7302
7303
7304 SUBGOAL_THEN`(w:num->real^3) (l+k-1) IN ball_annulus` ASSUME_TAC;
7305
7306
7307
7308 MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
7309 THEN EXISTS_TAC`V:real^3->bool`
7310 THEN ASM_REWRITE_TAC[];
7311
7312
7313 REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
7314 THEN REPEAT RESA_TAC
7315 THEN MP_TAC V3_DEFOR_IN_BALL_ANNULUS_DEFORMATION
7316 THEN RESA_TAC
7317 THEN REPLICATE_TAC (68-41) (POP_ASSUM MP_TAC)
7318 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7319 THEN MP_TAC th)
7320 THEN REPLICATE_TAC (67-41) (POP_ASSUM MP_TAC)
7321 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7322 THEN MP_TAC th)
7323 THEN POP_ASSUM MP_TAC
7324 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7325 THEN POP_ASSUM (fun th->  MRESAL1_TAC th`SUC l:num`[ARITH_RULE`4 MOD 4=0`]
7326 THEN MRESA_TAC th[`i:num`])
7327 THEN REPEAT STRIP_TAC 
7328 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
7329 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
7330 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) i`]
7331 THEN POP_ASSUM MP_TAC
7332 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
7333 THEN ASM_REWRITE_TAC[]
7334 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
7335 THEN RESA_TAC
7336 THEN ABBREV_TAC`e1= (min (min (min e e') e'') e''')/ &2`
7337 THEN MP_TAC(REAL_ARITH`e1= (min (min (min e e') e'') e''')/ &2 /\ &0< e /\ &0< e'/\ &0< e''/\ &0< e''' ==> &0< e1/\ e1<= e/\ e1<=e'/\ e1< e''/\ e1< e'''`)
7338 THEN RESA_TAC
7339 THEN EXISTS_TAC`e1:real`
7340 THEN ASM_REWRITE_TAC[]
7341 THEN REPEAT STRIP_TAC
7342 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'') e''')/ &2 /\ &0< e /\ &0< e'/\ &0< e''/\ t<e1/\ &0<t/\ &0< e'''==> --e' < t/\ t< e'/\ t<e/\ t< e'''/\ t< e''`)
7343 THEN RESA_TAC
7344 THEN REPLICATE_TAC (87-59) (POP_ASSUM MP_TAC)
7345 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7346 THEN MRESA_TAC th[`t:real`])
7347 THEN REPLICATE_TAC (88-65) (POP_ASSUM MP_TAC)
7348 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7349 THEN MRESA_TAC th[`t:real`])
7350 THEN POP_ASSUM MP_TAC
7351 THEN REWRITE_TAC[v3_defor_v4]
7352 THEN REPLICATE_TAC (87-72) (POP_ASSUM MP_TAC)
7353 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7354 THEN POP_ASSUM MP_TAC
7355 THEN MRESA_TAC th[`t:real`])
7356 THEN ABBREV_TAC`v3=v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t) `
7357 THEN ASM_REWRITE_TAC[ball_annulus;IN_ELIM_THM;DIFF;ball;cball;dist;VECTOR_ARITH`vec 0-A= -- A`;NORM_NEG;REAL_ARITH`~(a<b)<=> b<=a`]
7358 THEN STRIP_TAC
7359 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORMV3)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`x2-t:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
7360 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`v1:real^3`;`x6:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
7361 THEN MRESA_TAC DOT_NORM_SUB[`v1:real^3`;`v3:real^3`]
7362 THEN POP_ASSUM MP_TAC
7363 THEN REWRITE_TAC[GSYM dist]
7364 THEN ONCE_REWRITE_TAC[DIST_SYM]
7365 THEN ASM_REWRITE_TAC[dist]
7366 THEN ABBREV_TAC`v4= (w:num->real^3) i`
7367 THEN MRESA_TAC DOT_NORM_SUB[`v4:real^3`;`v2:real^3`]
7368 THEN MRESA_TAC DOT_NORM_SUB[`v4:real^3`;`v3:real^3`]
7369 THEN MRESA_TAC DOT_NORM_SUB[`v1:real^3`;`v2:real^3`]
7370 THEN STRIP_TAC;
7371
7372
7373
7374
7375
7376 REPLICATE_TAC (97-63) (POP_ASSUM MP_TAC)
7377 THEN POP_ASSUM(fun th->
7378 POP_ASSUM(fun th1-> REPEAT STRIP_TAC
7379 THEN MP_TAC th1)
7380 THEN MP_TAC th)
7381 THEN ASM_REWRITE_TAC[ball_annulus;IN_ELIM_THM;DIFF;ball;cball;dist;VECTOR_ARITH`vec 0-A= -- A`;NORM_NEG;REAL_ARITH`~(a<b)<=> b<=a`]
7382 THEN REPEAT STRIP_TAC
7383 THEN SUBGOAL_THEN`&2 <= norm (v1 - v2:real^3) ` ASSUME_TAC;
7384
7385 REPLICATE_TAC (99-30) (POP_ASSUM MP_TAC)
7386 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7387 THEN MRESA_TAC th[`l+k-1:num`;`l:num`])
7388 THEN REMOVE_ASSUM_TAC
7389 THEN POP_ASSUM MP_TAC
7390 THEN REWRITE_TAC[dist]
7391 THEN MRESA_TAC DIVISION[`l+k-1`;`k:num`]
7392 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
7393 THEN MRESA_TAC (GEN_ALL Qknvmlb.SUC_MOD_NOT_EQ)[`k:num`]
7394 THEN POP_ASSUM(fun th-> MRESA_TAC th[`i:num`])
7395 THEN REPLICATE_TAC (103-22) (POP_ASSUM MP_TAC)
7396 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7397 THEN MRESA_TAC th[`(l+k-1) MOD k:num`;`l MOD k:num`])
7398 THEN POP_ASSUM MP_TAC
7399 THEN POP_ASSUM MP_TAC
7400 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
7401 THEN POP_ASSUM (fun th->  MRESAL1_TAC th`(l+k-1):num`[ARITH_RULE`4 MOD 4=0`])
7402 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s ((l+k-1)  MOD k)`][ARITH_RULE`~(4=0)`;periodic]
7403 THEN POP_ASSUM (fun th->  MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
7404 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
7405 THEN MP_TAC MOD_ADD_SUB_1
7406 THEN RESA_TAC
7407 THEN REAL_ARITH_TAC;
7408
7409
7410
7411
7412 MRESAL_TAC xrr_decreasing_lt[`norm (v3:real^3)`;`norm (v2:real^3)`;`norm(v1:real^3)`;`norm (v1-v2:real^3)`][xrr;REAL_ARITH`a*a= a pow 2`]
7413 THEN POP_ASSUM MP_TAC
7414 THEN ONCE_REWRITE_TAC[Pack1.norm_abs]
7415 THEN ASM_REWRITE_TAC[REAL_LT_SQUARE_ABS]
7416 THEN ASM_REWRITE_TAC[REAL_ABS_NORM;REAL_ARITH`a-b<a<=> &0<b`]
7417 THEN REWRITE_TAC[REAL_ARITH`&8*(&1-A)< &8*(&1-B) <=> B<A`]
7418 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`v2:real^3`]
7419 THEN MRESAL_TAC COS_ANGLE[`v1:real^3`;`vec 0:real^3`;`v2:real^3`][VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c*d=a*b*d*c`]
7420 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
7421 THEN SUBGOAL_THEN`~(v3 = vec 0:real^3)` ASSUME_TAC;
7422
7423
7424 STRIP_TAC
7425 THEN POP_ASSUM(fun th-> ASM_TAC
7426 THEN REWRITE_TAC[th;NORM_0;REAL_ARITH`~(&2<= &0)`]);
7427
7428
7429
7430 MRESAL_TAC COS_ANGLE[`v1:real^3`;`vec 0:real^3`;`v3:real^3`][VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c*d=a*b*d*c`]
7431 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
7432 THEN STRIP_TAC
7433 THEN MRESAL_TAC COS_MONO_LT_EQ[`angle (v1,vec 0,v3:real^3)`;`angle (v1,vec 0,v2:real^3)`][ANGLE_RANGE]
7434 THEN MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, v4}/\ v3 IN aff_gt {vec 0} {v1, v4} /\ aff_gt {vec 0} {v1,v4} SUBSET aff_ge {vec 0} {v1,v4}==> v2 IN aff_ge {vec 0} {v1, v4}/\ v3 IN aff_ge {vec 0} {v1, v4:real^3}`)
7435 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
7436 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
7437 THEN RESA_TAC
7438 THEN MRESA_TAC th3[`vec 0:real^3`;`v4:real^3`;`v1:real^3`]
7439 THEN MRESA_TAC Polar_fan.ANGLES_ADD_AFF_GE [`vec 0:real^3`;`v1:real^3`;`v4:real^3`;`v2:real^3`]
7440 THEN POP_ASSUM MP_TAC
7441 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
7442 THEN RESA_TAC
7443 THEN MRESA_TAC Polar_fan.ANGLES_ADD_AFF_GE [`vec 0:real^3`;`v1:real^3`;`v4:real^3`;`v3:real^3`]
7444 THEN POP_ASSUM MP_TAC
7445 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
7446 THEN RESA_TAC
7447 THEN MP_TAC(REAL_ARITH`angle (v1,vec 0,v2) < angle (v1,vec 0,v3)
7448 /\ angle (v1,vec 0,v2) + angle (v2,vec 0,v4) = angle (v1,vec 0,v4)
7449 /\ angle (v1,vec 0,v3) + angle (v3,vec 0,v4) = angle (v1,vec 0,v4)
7450 ==> angle (v3,vec 0,v4) <angle (v2,vec 0,v4:real^3)`)
7451 THEN RESA_TAC
7452 THEN MRESAL_TAC COS_MONO_LT_EQ[`angle (v2,vec 0,v4:real^3)`;`angle (v3,vec 0,v4:real^3)`][ANGLE_RANGE]
7453 THEN POP_ASSUM MP_TAC
7454 THEN ONCE_REWRITE_TAC[ANGLE_SYM]
7455 THEN MRESAL_TAC COS_ANGLE[`v4:real^3`;`vec 0:real^3`;`v3:real^3`][VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c*d=a*b*d*c`]
7456 THEN MRESAL_TAC COS_ANGLE[`v4:real^3`;`vec 0:real^3`;`v2:real^3`][VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c*d=a*b*d*c`]
7457 THEN REPLICATE_TAC (116-88) (POP_ASSUM MP_TAC)
7458 THEN POP_ASSUM(fun th->
7459 POP_ASSUM(fun th1-> REPEAT STRIP_TAC
7460 THEN POP_ASSUM MP_TAC
7461 THEN MP_TAC th1)
7462 THEN MP_TAC th)
7463 THEN REWRITE_TAC[REAL_ARITH`(norm v4 pow 2 + x2) - norm (v4 - v2) pow 2
7464 =x2+norm v4 pow 2  - norm (v4 - v2) pow 2`;real_div;REAL_ARITH`a*b*c*d=(a*b)*c*d`]
7465 THEN STRIP_TAC
7466 THEN STRIP_TAC
7467 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th]
7468 THEN POP_ASSUM(fun th1-> REWRITE_TAC[SYM th1] THEN ASSUME_TAC (SYM th)
7469  THEN ASSUME_TAC (SYM th)))
7470 THEN SUBGOAL_THEN`(w:num->real^3) (SUC l) IN V` ASSUME_TAC;
7471
7472
7473
7474 EXPAND_TAC"V"
7475 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
7476 THEN EXISTS_TAC`SUC l:num`
7477 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
7478
7479
7480 SUBGOAL_THEN`(w:num->real^3) (SUC l) IN ball_annulus` ASSUME_TAC;
7481
7482
7483
7484  MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
7485 THEN EXISTS_TAC`V:real^3->bool`
7486 THEN ASM_REWRITE_TAC[];
7487
7488
7489
7490
7491
7492
7493 POP_ASSUM MP_TAC
7494 THEN ASM_REWRITE_TAC[ball_annulus;IN_ELIM_THM;DIFF;ball;cball;dist;VECTOR_ARITH`vec 0-A= -- A`;NORM_NEG;REAL_ARITH`~(a<b)<=> b<=a`;real_div]
7495 THEN STRIP_TAC
7496 THEN ABBREV_TAC`a1=(norm (v4:real^3) pow 2)`
7497 THEN ABBREV_TAC`a2=(norm (v4-v2:real^3) pow 2)`
7498 THEN ABBREV_TAC`a3= x2+a1- &2 *((v4:real^3) dot v3) * (inv (norm v3)) * (inv (norm v4)) * norm v4 * norm(v2:real^3)`
7499 THEN ABBREV_TAC`x= v4- v3_defor_v1 a (vec 0- v4) (v2- v4:real^3) a1 a2 x2 x2 (a3)`
7500 THEN STRIP_TAC
7501 THEN MP_TAC(REAL_ARITH`&2<=norm (v4:real^3)/\ &2<=norm (v2:real^3)==> &0< norm v4/\ &0< norm v2`)
7502 THEN RESA_TAC
7503 ;
7504
7505 MP_TAC(REAL_ARITH`norm (v4 - v2) pow 2 <= a3\/ a3< norm(v4-v2:real^3) pow 2`)
7506 THEN RESA_TAC
7507 ;
7508
7509
7510 MRESA_TAC REAL_LE_RSQRT[`norm(v4-v2:real^3)`;`a3:real`]
7511 THEN MP_TAC(REAL_ARITH`norm (v4 - v2) pow 2 <= a3/\ &0<= norm(v4-v2:real^3) pow 2
7512 ==> &0<= a3`)
7513 THEN ASM_REWRITE_TAC[NORM_POS_LE;REAL_LE_POW_2]
7514 THEN RESA_TAC
7515 THEN MRESA_TAC SQRT_POW_2[`a3:real`]
7516 THEN MRESAL_TAC xrr_increasing_le[`norm(v4:real^3)`;`norm(v2:real^3)`;`norm(v4-v2:real^3)`;`sqrt(a3)`][NORM_POS_LE;xrr;REAL_ARITH`(&8 *( &1-a)<= &8 *( &1-b)<=> b<=a)/\ a*a= a pow 2`;real_div]
7517 THEN POP_ASSUM MP_TAC
7518 THEN REMOVE_ASSUM_TAC
7519 THEN EXPAND_TAC"a3"
7520 THEN REWRITE_TAC[REAL_ARITH`x+y-(y+x-a)=a`;REAL_INV_MUL]
7521 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v4:real^3`;`vec 0:real^3`]
7522 THEN ASM_TAC
7523 THEN REDUCE_VECTOR_TAC
7524 THEN REPEAT STRIP_TAC
7525 THEN POP_ASSUM MP_TAC
7526 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v2:real^3`;`vec 0:real^3`]
7527 THEN ASM_TAC
7528 THEN REDUCE_VECTOR_TAC
7529 THEN REPEAT STRIP_TAC
7530 THEN POP_ASSUM MP_TAC
7531 THEN ASM_REWRITE_TAC[REAL_ARITH`  
7532  (&2 *a * inv (b) * inv (c) * c * d) *
7533  inv (&2) *
7534 inv (c) *
7535  inv (d)
7536 = (a  * inv (b) * inv (c)) *
7537   (inv (c) * c )*
7538  (inv (d) * d)`;REAL_ARITH`a * &1=a`]
7539 THEN ASM_REWRITE_TAC[REAL_ARITH`a*b*c*d=(a*b)*d*c`]
7540 THEN ONCE_REWRITE_TAC[REAL_ARITH` a1 + x2 - a2= x2+a1-a2`]
7541 THEN ASM_REWRITE_TAC[REAL_ARITH`a<=b<=> ~(b<a)`];
7542
7543
7544 MRESA_TAC DOT_NORM_SUB[`v4:real^3`;`v3:real^3`]
7545 THEN SUBGOAL_THEN`norm (v4 - v3:real^3) pow 2 < a3`ASSUME_TAC;
7546
7547
7548 POP_ASSUM MP_TAC
7549 THEN REWRITE_TAC[REAL_ARITH`a=((a1+x2-t)-c)/ &2<=> c= a1+x2-t - &2 *a`]
7550 THEN RESA_TAC
7551 THEN EXPAND_TAC"a3"
7552 THEN REWRITE_TAC[REAL_ARITH`a1 + x2 - t - &2 * (v4 dot v3) <
7553  x2 +
7554  a1 - &2 * (v4 dot v3) * inv (norm v3) * inv (norm v4) * norm v4 * norm v2
7555 <=>  (v4 dot v3) * inv (norm v3) * (inv (norm v4) * norm v4) * norm v2
7556 <  (v4 dot v3)+ t/ &2 `]
7557 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v4:real^3`;`vec 0:real^3`]
7558 THEN ASM_TAC
7559 THEN REDUCE_VECTOR_TAC
7560 THEN REPEAT STRIP_TAC
7561 THEN ASM_REWRITE_TAC[]
7562 THEN ABBREV_TAC`g=(v4:real^3) dot v3`
7563 THEN MRESAL_TAC SQRT_UNIQUE[`x2:real`;`norm(v2:real^3)`][NORM_POS_LE]
7564 THEN MRESAL_TAC SQRT_UNIQUE[`x2-t:real`;`norm(v3:real^3)`][NORM_POS_LE]
7565 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
7566 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;REAL_ARITH`&1*a=a`])
7567 THEN MP_TAC(REAL_ARITH`&0< x2-t/\ &0< x2/\ &0<t==> &0<= x2-t/\ &0<= x2/\ x2-t<x2/\ ~(x2-t= &0)`)
7568 THEN RESA_TAC
7569 THEN MRESA_TAC SQRT_INV[`x2-t:real`]
7570 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;])
7571 THEN MRESA_TAC REAL_LE_INV[`x2-t:real`]
7572 THEN MRESA_TAC REAL_LT_INV[`x2-t:real`]
7573 THEN MRESA_TAC SQRT_MUL[`inv(x2-t):real`;`x2:real`]
7574 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;])
7575 THEN MRESA_TAC REAL_MUL_LINV[`x2-t:real`]
7576 THEN MRESA_TAC REAL_LT_LMUL[`inv(x2-t)`;`x2-t:real`;`x2:real`]
7577 THEN MRESAL_TAC SQRT_MONO_LT[`&1:real`;`inv(x2-t) *x2`][REAL_ARITH`&0<= &1`;SQRT_1]
7578 THEN MP_TAC(REAL_ARITH`(v4:real^3) dot v3 = &0\/ &0< --((v4:real^3) dot v3)\/ &0< (v4:real^3) dot v3 `)
7579 THEN RESA_TAC;
7580
7581
7582 ASM_REWRITE_TAC[REAL_ARITH`&0 *a< &0 + t/ &2<=> &0< t`];
7583
7584
7585
7586
7587 MRESA_TAC REAL_LT_LMUL[`-- g`;`&1:real`;`sqrt (inv (x2 - t) * x2):real`]
7588 THEN POP_ASSUM MP_TAC
7589 THEN MP_TAC(REAL_ARITH`&0< t==> &0< t/ &2`)
7590 THEN ASM_REWRITE_TAC[]
7591 THEN REAL_ARITH_TAC;
7592
7593
7594
7595 MP_TAC(REAL_ARITH`&0< g/\ &1 < inv (x2 - t) * x2 ==> ~(g= &0)/\ &0 <= inv (x2 - t) * x2`)
7596 THEN RESA_TAC
7597 THEN MRESA_TAC REAL_MUL_LINV[`g:real`]
7598 THEN MRESAL_TAC REAL_LT_LMUL[`g:real`;`sqrt (inv (x2 - t) * x2):real`;`(inv g)*(g+t/  &2)`][REAL_ARITH`a*b*c=(b*a)*c/\ &1*x=x`]
7599 THEN POP_ASSUM MATCH_MP_TAC
7600 THEN MATCH_MP_TAC REAL_LT_LSQRT
7601 THEN ASM_REWRITE_TAC[REAL_ARITH`a*(b+c)=a*b+a*c`]
7602 THEN STRIP_TAC;
7603
7604
7605
7606 MATCH_MP_TAC(REAL_ARITH`&0< a*b ==> &0<= &1+a *b/ &2`)
7607 THEN MATCH_MP_TAC REAL_LT_MUL
7608 THEN ASM_REWRITE_TAC[]
7609 THEN MATCH_MP_TAC REAL_LT_INV
7610 THEN ASM_REWRITE_TAC[];
7611
7612
7613 REWRITE_TAC[REAL_ARITH`(&1+b) pow 2= &1+ &2*b+ b pow 2/\ &2 * inv g * t / &2=  inv g * t  `]
7614 THEN MATCH_MP_TAC(REAL_ARITH`&0<=d /\ a< b+c==> a< b+c+d`)
7615 THEN ASM_REWRITE_TAC[REAL_LE_POW_2]
7616 THEN MRESAL_TAC REAL_LT_LMUL[`inv(x2-t):real`;`x2:real`;`(x2-t)*(&1+ inv g *t)`][REAL_ARITH`a*b*c=(a*b)*c/\ &1*x=x`]
7617 THEN POP_ASSUM MATCH_MP_TAC
7618 THEN REWRITE_TAC[REAL_ARITH`x2 < (x2 - t) * (&1 + inv g * t)
7619 <=> t< t*(x2-t) * inv g`]
7620 THEN MRESAL_TAC REAL_LT_LMUL[`t:real`;`&1:real`;`(x2-t)*inv g `][REAL_ARITH`a*b*c=a*b*c/\ x* &1=x`]
7621 THEN POP_ASSUM MATCH_MP_TAC
7622 THEN MRESAL_TAC REAL_LT_LMUL[`inv g:real`;`g:real`;`(x2-t) `][REAL_ARITH`a*b*c=a*b*c/\ x* &1=x`]
7623 THEN ONCE_REWRITE_TAC[REAL_ARITH`a*b=b*a`]
7624 THEN POP_ASSUM MATCH_MP_TAC
7625 THEN STRIP_TAC;
7626
7627
7628 MATCH_MP_TAC REAL_LT_INV
7629 THEN ASM_REWRITE_TAC[];
7630
7631
7632
7633
7634
7635 EXPAND_TAC"g"
7636 THEN REPLICATE_TAC (151-55) (POP_ASSUM MP_TAC)
7637 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7638 THEN MRESAL_TAC th[`t:real`][dist])
7639 THEN MP_TAC(REAL_ARITH`&2<norm(v3-v4)==> &2<=norm(v3-v4:real^3)`)
7640 THEN RESA_TAC
7641 THEN MRESAL_TAC DOT_NORM[`v3 - v4:real^3`;`-- v3:real^3`][VECTOR_ARITH`wl - wi + (-- wl)= --wi:real^3`;NORM_NEG]
7642 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (v3:real^3)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
7643 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (v3 - v4:real^3)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
7644 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`norm ((w:num->real^3) i)`;`&2* h0`;][ARITH_RULE`abs (&2 * #1.26)= &2 * #1.26`;REAL_ABS_NORM;h0]
7645 THEN POP_ASSUM MP_TAC
7646 THEN ASM_REWRITE_TAC[GSYM h0]
7647 THEN ASM_REWRITE_TAC[h0]
7648 THEN STRIP_TAC
7649 THEN MP_TAC(REAL_ARITH`(v3 - v4) dot --v3 = (a1 - norm (v3 - v4) pow 2 - (x2 - t)) / &2 /\ &2 pow 2 <= x2 - t
7650 /\ &2 pow 2 <= norm (v3 - v4) pow 2 /\ 
7651 a1 <= (&2 * #1.26) pow 2
7652 ==> (v3 - v4:real^3) dot --v3< &0`)
7653 THEN RESA_TAC
7654 THEN POP_ASSUM MP_TAC
7655 THEN REMOVE_ASSUM_TAC
7656 THEN REMOVE_ASSUM_TAC
7657 THEN REMOVE_ASSUM_TAC
7658 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th;DOT_RNEG;DOT_LSUB;DOT_SQUARE_NORM])
7659 THEN REAL_ARITH_TAC;
7660
7661
7662
7663 POP_ASSUM MP_TAC
7664 THEN REMOVE_ASSUM_TAC
7665 THEN POP_ASSUM MP_TAC
7666 THEN REAL_ARITH_TAC;
7667 ]);;
7668
7669
7670
7671 let DEFORMATION_DIST_LE_BLL_V3_DEFOR_COM_TWO_CASES=prove_by_refinement(
7672 ` 3<k /\
7673   scs_k_v39 s =k/\
7674 is_scs_v39 s /\
7675   MMs_v39 s w /\
7676   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
7677  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
7678  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
7679  w l=v2/\ w (l+k-1) =v1/\ ~(norm v2 = &2)/\ scs_a_v39 s l (SUC l ) < dist (v2,w (SUC l))
7680 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
7681 /\ (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
7682 ==>
7683 (!i. ~(i MOD k = l MOD k) ==>
7684 ?e. &0< e/\
7685 (!t. &0< t/\ t< e  ==>  dist (v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)<=scs_b_v39 s l i ))`,
7686 [
7687 REPEAT STRIP_TAC
7688 THEN MP_TAC(SET_RULE`SUC l MOD k = i MOD k \/ ~(i MOD k= SUC l MOD k)`)
7689 THEN RESA_TAC;
7690
7691 MP_TAC DEFORMATION_V3_DEFOR_EDGE_TWO_CASES
7692 THEN RESA_TAC
7693 THEN ASM_TAC
7694 THEN STRIP_TAC 
7695 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
7696 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7697 THEN REPEAT RESA_TAC
7698 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
7699 THEN REPLICATE_TAC (55-46) (POP_ASSUM MP_TAC)
7700 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7701 THEN MP_TAC th)
7702 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
7703 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7704 THEN POP_ASSUM (fun th->  MRESA_TAC th[`SUC l:num`] THEN MRESA_TAC th[`i:num`])
7705 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
7706 THEN POP_ASSUM (fun th->  MRESA_TAC th[`SUC l:num`] THEN MRESA_TAC th[`i:num`])
7707 THEN REPLICATE_TAC (59-53) (POP_ASSUM MP_TAC)
7708 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7709 THEN MP_TAC th)
7710 THEN RESA_TAC
7711 THEN EXISTS_TAC`e:real`
7712 THEN ASM_REWRITE_TAC[]
7713 THEN GEN_TAC
7714 THEN POP_ASSUM (fun th-> STRIP_TAC THEN MRESA_TAC th[`t:real`])
7715 THEN POP_ASSUM MP_TAC
7716 THEN REPLICATE_TAC (62-30) (POP_ASSUM MP_TAC)
7717 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7718 THEN MRESAL_TAC th[`l:num`;`i:num`][])
7719 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
7720 THEN REAL_ARITH_TAC;
7721
7722 MP_TAC(SET_RULE`SUC i MOD k= l MOD k  \/ ~(SUC i MOD k= l MOD k )`)
7723 THEN RESA_TAC;
7724
7725 MP_TAC HYPER_MM_COLLINEAR_TWO_CASES
7726 THEN RESA_TAC
7727 THEN MP_TAC UPS_X_POS_SEG
7728 THEN RESA_TAC
7729 THEN EXISTS_TAC`e:real`
7730 THEN ASM_REWRITE_TAC[]
7731 THEN ASM_REWRITE_TAC[]
7732 THEN GEN_TAC
7733 THEN POP_ASSUM (fun th-> STRIP_TAC
7734 THEN MP_TAC(REAL_ARITH`t<e/\ &0< t==> --e<t`)
7735 THEN RESA_TAC THEN MRESA_TAC th[`t:real`])
7736 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORMV3)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`x2-t:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
7737 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`v1:real^3`;`x6:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
7738 THEN ASM_TAC
7739 THEN STRIP_TAC 
7740 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
7741 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7742 THEN REPEAT RESA_TAC
7743 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7744 THEN POP_ASSUM (fun th->  MRESA_TAC th[`i:num`] THEN MRESA_TAC th[` l+k-1:num`])
7745 THEN REWRITE_TAC[dist]
7746 THEN REPLICATE_TAC (68-30) (POP_ASSUM MP_TAC)
7747 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7748 THEN MRESAL_TAC th[`l:num`;`l+k-1:num`][])
7749 THEN POP_ASSUM MP_TAC
7750 THEN MRESAL_TAC REAL_EQ_SQUARE_ABS[`norm (v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t) - v1:real^3)`;`norm(v1-v2:real^3)`][REAL_ABS_NORM;GSYM dist]
7751 THEN ONCE_REWRITE_TAC[DIST_SYM]
7752 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
7753 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
7754 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
7755 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
7756 THEN REPEAT RESA_TAC
7757 THEN ONCE_REWRITE_TAC[DIST_SYM]
7758 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
7759 THEN POP_ASSUM (fun th->  MRESA_TAC th[`i:num`] THEN MRESA_TAC th[`l+k-1:num`]);
7760
7761 MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_B_SUC_TWO_CASES
7762 THEN RESA_TAC
7763 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`i:num`][scs_diag])
7764 THEN EXISTS_TAC`e:real`
7765 THEN ASM_REWRITE_TAC[]
7766 THEN GEN_TAC
7767 THEN POP_ASSUM (fun th-> STRIP_TAC
7768 THEN MP_TAC(REAL_ARITH`t<e/\ &0< t==> --e<t`)
7769 THEN RESA_TAC THEN MRESA_TAC th[`t:real`])
7770 THEN POP_ASSUM MP_TAC
7771 THEN REAL_ARITH_TAC]);;
7772
7773
7774
7775 let DEFORMATION_DIST_LE_BLL_V3_DEFOR_COM_TWO_CASES=prove_by_refinement(` 3<k /\
7776   scs_k_v39 s =k/\
7777 is_scs_v39 s /\
7778   MMs_v39 s w /\
7779   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
7780  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
7781  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
7782  w l=v2/\ w (l+k-1) =v1/\ ~(norm v2 = &2)/\ scs_a_v39 s l (SUC l) < dist (v2,w (SUC l ))
7783 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1/\(!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
7784 ==>
7785 ?e. &0< e/\
7786 (!t i. &0< t/\ t< e/\ ~(i MOD k = l MOD k)  ==>  dist (v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)<=scs_b_v39 s l i )`,
7787 [
7788
7789
7790 REPEAT STRIP_TAC
7791 THEN MP_TAC DEFORMATION_DIST_LE_BLL_V3_DEFOR_COM_TWO_CASES
7792 THEN RESA_TAC
7793 THEN POP_ASSUM MP_TAC
7794 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
7795 THEN REWRITE_TAC[SKOLEM_THM]
7796 THEN STRIP_TAC
7797 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k/\  ~(i= l MOD k)}`
7798 THEN EXISTS_TAC`e1:real`
7799 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
7800
7801
7802
7803 MATCH_MP_TAC FINITE_SUBSET
7804 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
7805 THEN STRIP_TAC;
7806
7807
7808 MATCH_MP_TAC FINITE_IMAGE
7809 THEN REWRITE_TAC[FINITE_NUMSEG];
7810
7811
7812 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
7813 THEN REPEAT RESA_TAC
7814 THEN EXISTS_TAC`i:num`
7815 THEN POP_ASSUM MP_TAC
7816 THEN POP_ASSUM MP_TAC
7817 THEN POP_ASSUM MP_TAC
7818 THEN ARITH_TAC;
7819
7820
7821 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
7822
7823
7824 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
7825 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(0=l MOD k )`)
7826 THEN RESA_TAC;
7827
7828
7829
7830 EXISTS_TAC`(e:num->real)1`
7831 THEN EXISTS_TAC`1`
7832 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
7833 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
7834 THEN RESA_TAC;
7835
7836
7837
7838 EXISTS_TAC`(e:num->real)0`
7839 THEN EXISTS_TAC`0`
7840 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
7841 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
7842 THEN RESA_TAC;
7843
7844
7845
7846 STRIP_TAC;
7847
7848
7849 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`&0`]
7850 THEN REWRITE_TAC[IN_ELIM_THM]
7851 THEN REPEAT RESA_TAC
7852 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
7853 THEN REPLICATE_TAC (13-5) (POP_ASSUM MP_TAC)
7854 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7855 THEN MRESA_TAC th[`i:num`]);
7856
7857
7858 REPEAT STRIP_TAC
7859 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`t:real`]
7860 THEN POP_ASSUM MP_TAC
7861 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
7862
7863
7864 REWRITE_TAC[IN_ELIM_THM]
7865 THEN EXISTS_TAC`i MOD k`
7866 THEN ASM_REWRITE_TAC[]
7867 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
7868 THEN RESA_TAC
7869 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
7870
7871
7872 STRIP_TAC
7873 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
7874 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
7875 THEN RESA_TAC
7876 THEN MRESA_TAC MOD_REFL[`i:num`;`k:num`]
7877 THEN REPLICATE_TAC (15-5) (POP_ASSUM MP_TAC)
7878 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7879 THEN MRESA_TAC th[`i:num MOD k`])
7880 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
7881 THEN ASM_TAC
7882 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7883 THEN REPEAT RESA_TAC
7884 THEN POP_ASSUM MP_TAC
7885 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
7886 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
7887 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7888 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]);
7889 ]);;
7890
7891
7892
7893
7894 let DEFORMATION_V3_DEFOR_NOT_IN_V_V1_TWO_CASES=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
7895   MMs_v39 s w /\
7896  w l=v2/\ w (l+k-1) =v1
7897 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
7898 ==>  (!i.  ~(i MOD k= l MOD k) ==> (?e. &0< e /\ (!t. --e<t /\ t<e ==> &0<dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))))`,
7899 [
7900 REPEAT STRIP_TAC
7901 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST_V1
7902 THEN ASM_REWRITE_TAC[]
7903 THEN MP_TAC HYPER_MM_COLLINEAR_TWO_CASES
7904 THEN RESA_TAC
7905 THEN MATCH_MP_TAC(REAL_ARITH`&0<= a/\ ~(a= &0)==> &0 < a`)
7906 THEN ASM_REWRITE_TAC[dist;NORM_POS_LE]
7907 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
7908 THEN ASM_TAC
7909 THEN STRIP_TAC
7910 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
7911 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7912 THEN REPEAT RESA_TAC
7913 THEN POP_ASSUM MP_TAC
7914 THEN POP_ASSUM (fun th-> 
7915 MRESA_TAC DIVISION[`i:num`;`k:num`]
7916 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
7917 THEN MRESA_TAC th[`i MOD k`;`l MOD k`])
7918 THEN POP_ASSUM MP_TAC
7919 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7920 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
7921 THEN MRESA_TAC th[`l:num`])
7922 THEN STRIP_TAC
7923 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v2:real^3`;`(w:num->real^3) i`;]]);;
7924
7925
7926
7927
7928 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM_V1_TWO_CASES=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
7929   MMs_v39 s w /\
7930  w l=v2/\ w (l+k-1) =v1
7931 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
7932 ==>  ?e. &0< e /\ (!t i. --e<t /\ t<e/\ ~(i MOD k= l MOD k) ==> &0<dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))`,
7933 [
7934 REPEAT STRIP_TAC
7935 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_V1_TWO_CASES
7936 THEN RESA_TAC
7937 THEN POP_ASSUM MP_TAC
7938 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
7939 THEN REWRITE_TAC[SKOLEM_THM]
7940 THEN STRIP_TAC
7941 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k/\  ~(i= l MOD k)}`
7942 THEN EXISTS_TAC`e1:real`
7943 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
7944
7945 MATCH_MP_TAC FINITE_SUBSET
7946 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
7947 THEN STRIP_TAC;
7948
7949 MATCH_MP_TAC FINITE_IMAGE
7950 THEN REWRITE_TAC[FINITE_NUMSEG];
7951
7952 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
7953 THEN REPEAT RESA_TAC
7954 THEN EXISTS_TAC`i:num`
7955 THEN POP_ASSUM MP_TAC
7956 THEN POP_ASSUM MP_TAC
7957 THEN POP_ASSUM MP_TAC
7958 THEN ARITH_TAC;
7959
7960 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
7961
7962 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
7963 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(0=l MOD k )`)
7964 THEN RESA_TAC;
7965
7966 EXISTS_TAC`(e:num->real)1`
7967 THEN EXISTS_TAC`1`
7968 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
7969 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
7970 THEN RESA_TAC;
7971
7972 EXISTS_TAC`(e:num->real)0`
7973 THEN EXISTS_TAC`0`
7974 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
7975 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
7976 THEN RESA_TAC;
7977
7978 STRIP_TAC;
7979
7980 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`&0`]
7981 THEN REWRITE_TAC[IN_ELIM_THM]
7982 THEN REPEAT RESA_TAC
7983 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
7984 THEN REPLICATE_TAC (13-5) (POP_ASSUM MP_TAC)
7985 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7986 THEN MRESA_TAC th[`i:num`]);
7987
7988 REPEAT STRIP_TAC
7989 THEN MRESAL_TAC REAL_LE_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`e1:real`][REAL_ARITH`a<=a`]
7990 THEN POP_ASSUM MP_TAC
7991 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
7992
7993 REWRITE_TAC[IN_ELIM_THM]
7994 THEN EXISTS_TAC`i MOD k`
7995 THEN ASM_REWRITE_TAC[]
7996 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
7997 THEN RESA_TAC
7998 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
7999
8000 STRIP_TAC
8001 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
8002 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
8003 THEN RESA_TAC
8004 THEN MRESA_TAC MOD_REFL[`i:num`;`k:num`]
8005 THEN MP_TAC(REAL_ARITH`-- e1<t/\t<e1/\ e1<= e(i MOD k)==> -- e(i MOD k)< t/\ t< e(i MOD k)`)
8006 THEN RESA_TAC
8007 THEN REPLICATE_TAC (12) (POP_ASSUM MP_TAC)
8008 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
8009 THEN MRESA_TAC th[`i:num MOD k`])
8010 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
8011 THEN ASM_TAC
8012 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
8013 THEN REPEAT RESA_TAC
8014 THEN POP_ASSUM MP_TAC
8015 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
8016 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
8017 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
8018 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]);]);;
8019
8020
8021
8022
8023 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1_TWO_CASES=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8024   MMs_v39 s w /\
8025  w l=v2/\ w (l+k-1) =v1
8026 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
8027 ==>  ?e. &0< e /\ (!t i. -- e<t /\ t<e/\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))`,
8028 STRIP_TAC
8029 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_V1_TWO_CASES
8030 THEN RESA_TAC
8031 THEN EXISTS_TAC`e:real`
8032 THEN ASM_REWRITE_TAC[]
8033 THEN REPEAT GEN_TAC
8034 THEN POP_ASSUM(fun th-> STRIP_TAC
8035 THEN MRESA_TAC th[`t:real`;`i:num`])
8036 THEN POP_ASSUM (fun th-> STRIP_TAC
8037 THEN MP_TAC th
8038 THEN RESA_TAC
8039 THEN POP_ASSUM MP_TAC
8040 THEN REWRITE_TAC[DIST_REFL])
8041 THEN REAL_ARITH_TAC);;
8042
8043
8044
8045
8046 let V3_DEFOR_EQ_IN_FF_V1_TWO_CASES=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8047   MMs_v39 s w /\
8048  w l=v2/\ w (l+k-1) =v1 /\
8049 &0< x1 /\ &0<x2   /\ &0< x6 /\
8050 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8051 /\ &0< e/\ --e<t 
8052 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
8053 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8054 /\ IMAGE (w:num->real^3) (:num)=V
8055 ==> (!w. v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t),w IN
8056           IMAGE
8057           (\uv. (if FST uv = v2
8058                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8059                  else FST uv),
8060                 (if SND uv = v2
8061                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8062                  else SND uv))
8063           FF <=> v2,w IN FF)`,
8064 [
8065 STRIP_TAC
8066 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
8067 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8068 THEN MP_TAC th
8069 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8070 THEN ASSUME_TAC th
8071 THEN STRIP_TAC)
8072 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
8073 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
8074 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
8075 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
8076 THEN RESA_TAC
8077 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
8078
8079 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
8080 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8081 THEN MP_TAC th
8082 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8083 THEN REPEAT RESA_TAC);
8084
8085 MP_TAC Local_lemmas.CVLF_LF_F
8086 THEN RESA_TAC
8087 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
8088 THEN GEN_TAC
8089 THEN EQ_TAC
8090 THEN RESA_TAC;
8091
8092 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
8093 THEN RESA_TAC;
8094
8095 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
8096 THEN RESA_TAC
8097 THEN REMOVE_ASSUM_TAC
8098 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th]);
8099
8100 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8101 THEN MP_TAC th)
8102 THEN REPEAT RESA_TAC
8103 THEN REPLICATE_TAC (47-44)(POP_ASSUM MP_TAC)
8104 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8105 THEN MP_TAC th)
8106 THEN EXPAND_TAC"FF"
8107 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8108 THEN STRIP_TAC
8109 THEN REPLICATE_TAC (48-18)(POP_ASSUM MP_TAC)
8110 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8111 THEN MRESA_TAC th[`t:real`;`x':num`])
8112 THEN ASM_TAC
8113 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
8114 THEN REPEAT RESA_TAC
8115 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
8116 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`x':num`[ARITH_RULE`4 MOD 4=0`]
8117 THEN MRESA_TAC th[`l:num`])
8118 THEN REPLICATE_TAC (68-61)(POP_ASSUM MP_TAC)
8119 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8120 THEN MP_TAC th)
8121 THEN ASM_REWRITE_TAC[];
8122
8123 EXISTS_TAC`v2:real^3,w':real^3`
8124 THEN ASM_REWRITE_TAC[]
8125 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,w'):real^3#real^3`];]);;
8126
8127
8128 let V3_DEFOR_RHO_NODE_V1_TWO_CASES=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8129   MMs_v39 s w /\
8130  w l=v2/\ w ( l+k-1) =v1 /\
8131 &0< x1 /\ &0<x2   /\ &0< x6 /\
8132 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8133 /\ &0< e/\ --e<t 
8134 /\ (!t i. --e<t /\ t<e/\  ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
8135 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8136 /\ IMAGE (w:num->real^3) (:num)=V
8137 ==> (rho_node1
8138   (IMAGE
8139    (\uv. (if FST uv = v2
8140           then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8141           else FST uv),
8142          (if SND uv = v2
8143           then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8144           else SND uv))
8145   FF)
8146  (v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t))) = (rho_node1 FF v2)`,
8147 REWRITE_TAC[rho_node1]
8148 THEN STRIP_TAC
8149 THEN MP_TAC V3_DEFOR_EQ_IN_FF_V1_TWO_CASES
8150 THEN RESA_TAC);;
8151
8152
8153
8154
8155 let V3_DEFOR_EQ_IN_FF_SYM_V1_TWO_CASES=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8156   MMs_v39 s w /\
8157  w l=v2/\ w (l+k-1) =v1 /\
8158 &0< x1 /\ &0<x2   /\ &0< x6 /\
8159 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8160 /\ &0< e/\ --e<t 
8161 /\ (!t i. --e<t /\ t<e /\  ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
8162 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8163 /\ IMAGE (w:num->real^3) (:num)=V
8164 ==> (!w. w,v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t) IN
8165           IMAGE
8166           (\uv. (if FST uv = v2
8167                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8168                  else FST uv),
8169                 (if SND uv = v2
8170                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8171                  else SND uv))
8172           FF <=> w,v2 IN FF)`,
8173 [STRIP_TAC
8174 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
8175 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8176 THEN MP_TAC th
8177 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8178 THEN ASSUME_TAC th
8179 THEN STRIP_TAC)
8180 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
8181 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
8182 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
8183 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
8184 THEN RESA_TAC
8185 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
8186
8187 REPLICATE_TAC (40-23)(POP_ASSUM MP_TAC)
8188 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8189 THEN MP_TAC th
8190 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8191 THEN REPEAT RESA_TAC);
8192
8193 MP_TAC Local_lemmas.CVLF_LF_F
8194 THEN RESA_TAC
8195 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
8196 THEN GEN_TAC
8197 THEN EQ_TAC
8198 THEN RESA_TAC;
8199
8200 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
8201 THEN RESA_TAC;
8202
8203 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
8204 THEN RESA_TAC
8205 THEN REMOVE_ASSUM_TAC
8206 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th]);
8207
8208 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8209 THEN MP_TAC th)
8210 THEN REPEAT RESA_TAC
8211 THEN REPLICATE_TAC (47-44)(POP_ASSUM MP_TAC)
8212 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8213 THEN MP_TAC th)
8214 THEN EXPAND_TAC"FF"
8215 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8216 THEN STRIP_TAC
8217 THEN REPLICATE_TAC (48-18)(POP_ASSUM MP_TAC)
8218 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8219 THEN MRESA_TAC th[`t:real`;`SUC x':num`])
8220 THEN ASM_TAC
8221 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
8222 THEN REPEAT RESA_TAC
8223 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
8224 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`SUC x':num`[ARITH_RULE`4 MOD 4=0`]
8225 THEN MRESA_TAC th[`l:num`])
8226 THEN REPLICATE_TAC (68-61)(POP_ASSUM MP_TAC)
8227 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8228 THEN MP_TAC th)
8229 THEN ASM_REWRITE_TAC[];
8230
8231 EXISTS_TAC`w':real^3,v2:real^3`
8232 THEN ASM_REWRITE_TAC[]
8233 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w',v2):real^3#real^3`]]);;
8234
8235
8236
8237
8238 let DEFORMATION_AZIM_V3_DEFOR_V1_V1_TWO_CASES=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8239   MMs_v39 s w /\
8240  w l=v2/\ w (l+k-1) =v1 /\
8241 &0< x1 /\ &0<x2   /\ &0< x6 /\
8242   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
8243  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
8244  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
8245 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8246 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8247 /\ IMAGE (w:num->real^3) (:num)=V
8248 ==>
8249 (?e. &0< e/\ (!t. --e< t/\ t< e ==>
8250 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t)
8251  (rho_node1
8252   (IMAGE
8253    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
8254          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
8255   FF)
8256  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t))
8257  (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
8258       IMAGE
8259       (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
8260             v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
8261       FF) =
8262  azim (vec 0) v2 (rho_node1 FF v2) (@a. a,v2 IN FF)))`,
8263 [
8264 STRIP_TAC
8265 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1_TWO_CASES
8266 THEN RESA_TAC
8267 THEN ASM_TAC
8268 THEN REPEAT RESA_TAC
8269 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3)  (SUC l)`]
8270 THEN POP_ASSUM MP_TAC
8271 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
8272 THEN ASM_REWRITE_TAC[]
8273 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
8274 THEN RESA_TAC
8275 THEN ABBREV_TAC`e1=(min e e')/ &2`
8276 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
8277 ==> &0< e1/\ e1< e/\ e1<e'`)
8278 THEN RESA_TAC
8279 THEN EXISTS_TAC`e1:real`
8280 THEN ASM_REWRITE_TAC[]
8281 THEN REPEAT STRIP_TAC
8282 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
8283 ==> t< e/\ --e<t`)
8284 THEN RESA_TAC
8285 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SYM_V1_TWO_CASES
8286 THEN RESA_TAC
8287 THEN ASM_SIMP_TAC[v3_defor_v4;]
8288 THEN MP_TAC V3_DEFOR_RHO_NODE_V1_TWO_CASES
8289 THEN RESA_TAC
8290 THEN ASM_REWRITE_TAC[GSYM ivs_rho_node1]
8291 THEN ASM_TAC
8292 THEN STRIP_TAC
8293 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
8294 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
8295 THEN REPEAT RESA_TAC
8296 THEN REPLICATE_TAC (68-31) (POP_ASSUM MP_TAC)
8297 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
8298 THEN MP_TAC th)
8299 THEN RESA_TAC
8300 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
8301 THEN MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
8302 THEN MP_TAC Local_lemmas.CVLF_LF_F
8303 THEN RESA_TAC
8304 THEN SUBGOAL_THEN`(w:num->real^3) (l) IN V` ASSUME_TAC;
8305
8306 EXPAND_TAC"V"
8307 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8308 THEN EXISTS_TAC`l:num`
8309 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
8310
8311 MRESA_TAC (GEN_ALL Local_lemmas.ITER_CARD_MINUS1_EQ_IVS_RN1)[`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`]
8312 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3) (l)`])
8313 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)[`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l)`;`w:num->real^3`;`l:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;is_scs_v39;periodic2]
8314 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`SUC 0`][ITER] THEN MRESA_TAC th[`k-1`])
8315 THEN ASM_REWRITE_TAC[ARITH_RULE`SUC 0+l= SUC(l)/\ k-1+l= l+k-1`];
8316
8317 REPLICATE_TAC (76-57) (POP_ASSUM MP_TAC)
8318 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
8319 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e' /\ --e1<t
8320 ==> t< e'/\ --e'<t`)
8321 THEN RESA_TAC
8322 THEN MRESA_TAC th[`t:real`])
8323 THEN MATCH_MP_TAC Planarity.aff_gt2_subset_aff_ge
8324 THEN ASM_REWRITE_TAC[]
8325 THEN MRESA_TAC th3[`vec 0:real^3`;`(w:num->real^3)(SUC l)`;`v1:real^3`]
8326 THEN STRIP_TAC;
8327
8328 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
8329 THEN EXISTS_TAC`(w:num->real^3) (SUC l)`
8330 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
8331 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
8332 THEN ASM_REWRITE_TAC[];
8333
8334 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
8335 THEN EXISTS_TAC`(w:num->real^3)(l+k-1)`
8336 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
8337 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
8338 THEN ASM_REWRITE_TAC[]]);;
8339
8340
8341
8342 let V3_DEFOR_EQ_IN_FF_AT_V1_V1_TWO_CASES=prove_by_refinement(
8343 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8344   MMs_v39 s w /\
8345  w l=v2/\ w (l+k-1) =v1 /\
8346 &0< x1 /\ &0<x2   /\ &0< x6 /\
8347  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
8348 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8349 /\ &0< e/\ --e<t 
8350 /\ (!t i. --e<t /\ t<e /\  ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
8351 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8352 /\ IMAGE (w:num->real^3) (:num)=V
8353 ==> 
8354 (!a. w(SUC l),a IN
8355           IMAGE
8356           (\uv. (if FST uv = v2
8357                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8358                  else FST uv),
8359                 (if SND uv = v2
8360                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8361                  else SND uv))
8362           FF<=> 
8363 w(SUC l),a IN FF)`,
8364 [
8365 STRIP_TAC
8366 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
8367 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8368 THEN MP_TAC th
8369 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8370 THEN ASSUME_TAC th
8371 THEN STRIP_TAC)
8372 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
8373 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
8374 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
8375 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
8376 THEN RESA_TAC
8377 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
8378
8379 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
8380 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8381 THEN MP_TAC th
8382 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8383 THEN REPEAT RESA_TAC);
8384
8385 MP_TAC Local_lemmas.CVLF_LF_F
8386 THEN RESA_TAC
8387 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
8388 THEN GEN_TAC
8389 THEN EQ_TAC
8390 THEN RESA_TAC;
8391
8392 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
8393 THEN RESA_TAC;
8394
8395 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8396 THEN MP_TAC th)
8397 THEN REPEAT RESA_TAC
8398 THEN REPLICATE_TAC (44-15)(POP_ASSUM MP_TAC)
8399 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8400 THEN MRESA_TAC th[`t:real`;`SUC l:num`])
8401 THEN POP_ASSUM MP_TAC
8402 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
8403 THEN RESA_TAC
8404 THEN POP_ASSUM(fun th-> MRESA_TAC th [`l:num`])
8405 THEN REMOVE_ASSUM_TAC
8406 THEN REMOVE_ASSUM_TAC
8407 THEN POP_ASSUM MP_TAC
8408 THEN SET_TAC[];
8409
8410 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8411 THEN MP_TAC th)
8412 THEN REPEAT RESA_TAC
8413 THEN MP_TAC(SET_RULE`v2= SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
8414 THEN RESA_TAC;
8415
8416 SUBGOAL_THEN`(w:num->real^3) (SUC l),v2 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
8417
8418 ASM_REWRITE_TAC[];
8419
8420 SUBGOAL_THEN`v1,v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8421
8422 EXPAND_TAC"FF"
8423 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8424 THEN EXISTS_TAC`l+k-1`
8425 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8426 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8427 THEN RESA_TAC
8428 THEN ASM_TAC 
8429 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8430 THEN REPEAT RESA_TAC;
8431
8432 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v1:real^3`;`(w:num->real^3) (SUC l)`]
8433 THEN REPLICATE_TAC (49-8)(POP_ASSUM MP_TAC)
8434 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8435 THEN MP_TAC th)
8436 THEN RESA_TAC
8437 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`(w:num->real^3) (l+k-1)`]
8438 THEN POP_ASSUM MP_TAC
8439 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
8440 THEN ASM_REWRITE_TAC[];
8441
8442 EXISTS_TAC`(w:num->real^3)(SUC l),a':real^3`
8443 THEN ASM_REWRITE_TAC[]
8444 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
8445 THEN POP_ASSUM MP_TAC
8446 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
8447 THEN RESA_TAC
8448 THEN MP_TAC(SET_RULE`v2= a':real^3\/ ~(v2=a')`)
8449 THEN RESA_TAC;
8450
8451 SUBGOAL_THEN`v1,v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8452
8453 EXPAND_TAC"FF"
8454 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8455 THEN EXISTS_TAC`l+k-1`
8456 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8457 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8458 THEN RESA_TAC
8459 THEN ASM_TAC 
8460 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8461 THEN REPEAT RESA_TAC;
8462
8463 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v1:real^3`;`(w:num->real^3) (SUC l)`]
8464 THEN REPLICATE_TAC (51-8)(POP_ASSUM MP_TAC)
8465 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8466 THEN MP_TAC th)
8467 THEN RESA_TAC
8468 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`(w:num->real^3) (l+k-1)`]
8469 THEN POP_ASSUM MP_TAC
8470 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
8471 THEN ASM_REWRITE_TAC[];
8472
8473 SUBGOAL_THEN`v2,(w:num->real^3) (SUC l) IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8474
8475
8476 EXPAND_TAC"FF"
8477 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8478 THEN EXISTS_TAC`l:num`
8479 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8480 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8481 THEN RESA_TAC
8482 THEN ASM_TAC 
8483 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8484 THEN REPEAT RESA_TAC;
8485
8486 MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,w (SUC l)):real^3#real^3`]
8487 THEN MRESA_TAC th3[`v2:real^3`;`vec 0:real^3`;`(w:num->real^3) (SUC l)`]
8488 THEN POP_ASSUM MP_TAC
8489 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
8490 THEN RESA_TAC]);;
8491
8492
8493
8494 let V3_DEFOR_RHO_NODE_AT_V1_V1_TWO_CASES=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8495   MMs_v39 s w /\
8496  w l=v2/\ w (l+k-1) =v1 /\
8497 &0< x1 /\ &0<x2   /\ &0< x6 /\
8498  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
8499 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8500 /\ &0< e/\ --e<t 
8501 /\ (!t i. --e<t /\ t<e /\  ~(i MOD k= l MOD k)==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
8502 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8503 /\ IMAGE (w:num->real^3) (:num)=V
8504 ==> 
8505 (rho_node1
8506   (IMAGE
8507    (\uv. (if FST uv = v2
8508           then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8509           else FST uv),
8510          (if SND uv = v2
8511           then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8512           else SND uv))
8513   FF)
8514  (w (SUC l))) 
8515 =(rho_node1 FF (w (SUC l)))`,
8516 REWRITE_TAC[rho_node1]
8517 THEN STRIP_TAC
8518 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V1_V1_TWO_CASES
8519 THEN RESA_TAC);;
8520
8521
8522
8523
8524 let V3_DEFOR_EQ_IN_FF_AT_V1_SYM_V1_TWO_CASES=prove_by_refinement(
8525 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8526   MMs_v39 s w /\
8527  w l=v2/\ w (l+k-1) =v1 /\
8528 &0< x1 /\ &0<x2   /\ &0< x6 /\
8529  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
8530 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8531 /\ &0< e/\ --e<t 
8532 /\ (!t i. --e<t /\ t<e  /\  ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
8533 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8534 /\ IMAGE (w:num->real^3) (:num)=V
8535 ==> 
8536 (@a. a,w(SUC l) IN
8537           IMAGE
8538           (\uv. (if FST uv = v2
8539                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8540                  else FST uv),
8541                 (if SND uv = v2
8542                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8543                  else SND uv))
8544           FF)=
8545 v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)`,
8546 [
8547 STRIP_TAC
8548 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
8549 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8550 THEN MP_TAC th
8551 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8552 THEN ASSUME_TAC th
8553 THEN STRIP_TAC)
8554 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
8555 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
8556 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
8557 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
8558 THEN RESA_TAC
8559 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
8560
8561 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
8562 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8563 THEN MP_TAC th
8564 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8565 THEN REPEAT RESA_TAC);
8566
8567 MP_TAC Local_lemmas.CVLF_LF_F
8568 THEN RESA_TAC
8569 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
8570 THEN STRIP_TAC;
8571
8572 EXISTS_TAC`v3_defor_v1 (-- &1) (v1) (v2) x1 x2 x6 x6 (x2 - t)`
8573 THEN ASM_REWRITE_TAC[IMAGE;IN_ELIM_THM]
8574 THEN EXISTS_TAC`v2:real^3,(w:num->real^3)(SUC l)`
8575 THEN ASM_REWRITE_TAC[]
8576 THEN SUBGOAL_THEN`v2,(w:num->real^3) (SUC l) IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8577
8578
8579 EXPAND_TAC"FF"
8580 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8581 THEN EXISTS_TAC`l:num`
8582 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8583 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8584 THEN RESA_TAC
8585 THEN ASM_TAC 
8586 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8587 THEN REPEAT RESA_TAC;
8588
8589 MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,w (SUC l)):real^3#real^3`]
8590 THEN MRESA_TAC th3[`v2:real^3`;`vec 0:real^3`;`(w:num->real^3) (SUC l)`]
8591 THEN POP_ASSUM MP_TAC
8592 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
8593 THEN RESA_TAC;
8594
8595 REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
8596 THEN GEN_TAC
8597 THEN RESA_TAC;
8598
8599 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
8600 THEN RESA_TAC;
8601
8602 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8603 THEN MP_TAC th)
8604 THEN REPEAT RESA_TAC
8605 THEN REPLICATE_TAC (45-16)(POP_ASSUM MP_TAC)
8606 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8607 THEN MRESA_TAC th[`t:real`;`SUC l:num`])
8608 THEN POP_ASSUM MP_TAC
8609 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
8610 THEN RESA_TAC
8611 THEN POP_ASSUM(fun th-> MRESA_TAC th [`l:num`])
8612 THEN POP_ASSUM MP_TAC
8613 THEN POP_ASSUM MP_TAC;
8614
8615 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8616 THEN MP_TAC th)
8617 THEN REPEAT RESA_TAC
8618 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
8619 THEN RESA_TAC;
8620
8621 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8622 THEN MP_TAC th)
8623 THEN REPEAT RESA_TAC;
8624
8625 SUBGOAL_THEN`a',w(SUC l) IN (FF:real^3#real^3->bool)`ASSUME_TAC;
8626
8627 ASM_REWRITE_TAC[];
8628
8629 SUBGOAL_THEN`v2,w(SUC l) IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8630
8631 EXPAND_TAC"FF"
8632 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8633 THEN EXISTS_TAC`l:num`
8634 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8635 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8636 THEN RESA_TAC
8637 THEN ASM_TAC 
8638 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8639 THEN REPEAT RESA_TAC;
8640
8641 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(w:num->real^3)(SUC l)`;`FF:real^3#real^3->bool`;`v2:real^3`;`(a':real^3) `]]);;
8642
8643
8644
8645
8646 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_V1_V1_TWO_CASES=prove_by_refinement(
8647 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8648   MMs_v39 s w /\
8649  w l=v2/\ w (l+k-1) =v1 /\
8650 &0< x1 /\ &0<x2   /\ &0< x6 /\
8651   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
8652  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
8653  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
8654 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8655 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8656 /\ IMAGE (w:num->real^3) (:num)=V 
8657 ==>
8658 (?e. &0< e/\ (!t. --e< t/\ t< e ==>
8659 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC l)) t)
8660  (rho_node1
8661   (IMAGE
8662    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
8663          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
8664   FF)
8665  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC l)) t))
8666  (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC l)) t IN
8667       IMAGE
8668       (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
8669             v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
8670       FF) =
8671  azim (vec 0) (w (SUC l)) (rho_node1 FF (w (SUC l))) (@a. a,(w (SUC l)) IN FF)))`,
8672 [
8673 STRIP_TAC
8674 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1_TWO_CASES
8675 THEN RESA_TAC
8676 THEN ASM_TAC
8677 THEN REPEAT RESA_TAC
8678 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3)  (SUC l )`]
8679 THEN POP_ASSUM MP_TAC
8680 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
8681 THEN ASM_REWRITE_TAC[]
8682 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
8683 THEN RESA_TAC
8684 THEN ABBREV_TAC`e1=(min e e')/ &2`
8685 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
8686 ==> &0< e1/\ e1< e/\ e1<e'`)
8687 THEN RESA_TAC
8688 THEN EXISTS_TAC`e1:real`
8689 THEN ASM_REWRITE_TAC[]
8690 THEN REPEAT STRIP_TAC
8691 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
8692 ==> t< e/\ --e<t`)
8693 THEN RESA_TAC
8694 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
8695 THEN POP_ASSUM MP_TAC
8696 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
8697 THEN RESA_TAC
8698 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V1_SYM_V1_TWO_CASES
8699 THEN RESA_TAC
8700 THEN ASM_SIMP_TAC[v3_defor_v4;]
8701 THEN MP_TAC V3_DEFOR_RHO_NODE_AT_V1_V1_TWO_CASES
8702 THEN RESA_TAC
8703 THEN ASM_TAC
8704 THEN STRIP_TAC
8705 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
8706 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
8707 THEN REPEAT RESA_TAC;
8708
8709 REPLICATE_TAC (74-31) (POP_ASSUM MP_TAC)
8710 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
8711 THEN MP_TAC th)
8712 THEN RESA_TAC
8713 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
8714 THEN MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
8715 THEN MP_TAC Local_lemmas.CVLF_LF_F
8716 THEN RESA_TAC
8717 THEN SUBGOAL_THEN`v2,(w:num->real^3) (SUC l) IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8718
8719 EXPAND_TAC"FF"
8720 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8721 THEN EXISTS_TAC`l:num`
8722 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8723 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8724 THEN RESA_TAC
8725 THEN ASM_TAC 
8726 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8727 THEN REPEAT RESA_TAC;
8728
8729 MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,w (SUC l)):real^3#real^3`]
8730 THEN MRESA_TAC th3[`v2:real^3`;`vec 0:real^3`;`(w:num->real^3) (SUC l)`]
8731 THEN POP_ASSUM MP_TAC
8732 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
8733 THEN RESA_TAC
8734 THEN ASM_REWRITE_TAC[GSYM ivs_rho_node1];
8735
8736 MRESA_TAC (GEN_ALL Local_lemmas.IVS_RHO_NODE1_DETE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(SUC l)`;`v2:real^3`]
8737 THEN MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w (SUC l)}/\
8738  aff_gt {vec 0} {v1, w (SUC l)} SUBSET aff_ge {vec 0} {v1, w (SUC l)}
8739 ==> v2 IN aff_ge {vec 0} {v1:real^3, w (SUC l)}`)
8740 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
8741 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
8742 THEN RESA_TAC
8743 THEN MRESA_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT[`vec 0:real^3`;`(w:num->real^3)(SUC l)`;`v2:real^3`;`v1:real^3`;`(rho_node1 FF (w (SUC l)))`;]
8744 THEN POP_ASSUM MP_TAC
8745 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
8746 THEN ASM_REWRITE_TAC[]
8747 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
8748 THEN RESA_TAC
8749 THEN  MATCH_MP_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT
8750 THEN STRIP_TAC;
8751
8752 MATCH_MP_TAC(GEN_ALL (SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
8753 THEN EXISTS_TAC`aff_gt{vec 0:real^3} {w(SUC l),v1}`
8754 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE];
8755
8756 REPLICATE_TAC (89-57) (POP_ASSUM MP_TAC)
8757 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
8758 THEN MATCH_MP_TAC th)
8759 THEN ASM_REWRITE_TAC[]
8760 THEN MP_TAC(REAL_ARITH`t<e1/\ e1<e'/\ --e1<t ==> t< e'/\ --e'<t`)
8761 THEN RESA_TAC
8762 THEN ASM_REWRITE_TAC[];
8763
8764 ASM_REWRITE_TAC[]
8765 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
8766 THEN MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
8767 THEN EXISTS_TAC`(w:num->real^3) (l+k-1)`
8768 THEN ASM_REWRITE_TAC[]
8769 THEN REPLICATE_TAC (89-57) (POP_ASSUM MP_TAC)
8770 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
8771 THEN MATCH_MP_TAC th)
8772 THEN ASM_REWRITE_TAC[]
8773 THEN MP_TAC(REAL_ARITH`t<e1/\ e1<e'/\ --e1<t ==> t< e'/\ --e'<t`)
8774 THEN RESA_TAC
8775 THEN ASM_REWRITE_TAC[]]);;
8776
8777
8778
8779
8780
8781 let V3_DEFOR_EQ_IN_FF_AT_W_V1_TWO_CASES=prove_by_refinement(
8782 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8783   MMs_v39 s w /\
8784  w l=v2/\ w (l+k-1) =v1 /\
8785 &0< x1 /\ &0<x2   /\ &0< x6 /\
8786  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
8787 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8788 /\ &0< e/\ --e<t 
8789 /\ (!t i. --e<t /\ t<e /\  ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
8790 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8791 /\ IMAGE (w:num->real^3) (:num)=V
8792 ==> 
8793 (!v. v,w (l + (scs_k_v39 s - 1)) IN
8794           IMAGE
8795           (\uv. (if FST uv = v2
8796                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8797                  else FST uv),
8798                 (if SND uv = v2
8799                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8800                  else SND uv))
8801           FF<=> 
8802 v,w (l + (scs_k_v39 s - 1)) IN FF)`,
8803 [
8804 STRIP_TAC
8805 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
8806 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8807 THEN MP_TAC th
8808 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8809 THEN ASSUME_TAC th
8810 THEN STRIP_TAC)
8811 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
8812 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
8813 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
8814 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
8815 THEN RESA_TAC
8816 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
8817
8818 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
8819 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8820 THEN MP_TAC th
8821 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8822 THEN REPEAT RESA_TAC);
8823
8824 MP_TAC Local_lemmas.CVLF_LF_F
8825 THEN RESA_TAC
8826 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
8827 THEN GEN_TAC
8828 THEN EQ_TAC
8829 THEN RESA_TAC;
8830
8831 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
8832 THEN RESA_TAC;
8833
8834 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8835 THEN MP_TAC th)
8836 THEN REPEAT RESA_TAC
8837 THEN REPLICATE_TAC (44-15)(POP_ASSUM MP_TAC)
8838 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8839 THEN MRESA_TAC th[`t:real`;`l+k-1:num`])
8840 THEN POP_ASSUM MP_TAC
8841 THEN MP_TAC MOD_ADD_SUB_1
8842 THEN RESA_TAC
8843 THEN REMOVE_ASSUM_TAC
8844 THEN POP_ASSUM MP_TAC
8845 THEN SET_TAC[];
8846
8847 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8848 THEN MP_TAC th)
8849 THEN REPEAT RESA_TAC
8850 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
8851 THEN RESA_TAC;
8852
8853 SUBGOAL_THEN`v2, w(l+k-1) IN (FF:real^3#real^3->bool)`ASSUME_TAC;
8854
8855 ASM_REWRITE_TAC[];
8856
8857 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8858
8859 EXPAND_TAC"FF"
8860 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8861 THEN EXISTS_TAC`l+k-1`
8862 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8863 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8864 THEN RESA_TAC
8865 THEN ASM_TAC 
8866 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8867 THEN REPEAT RESA_TAC;
8868
8869 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
8870 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;]
8871 THEN POP_ASSUM MP_TAC
8872 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
8873 THEN STRIP_TAC
8874 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v2:real^3,(w:num->real^3)(l+k-1)`;`V:real^3->bool`;]
8875 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
8876 THEN RESA_TAC
8877 THEN POP_ASSUM(fun th-> MRESA_TAC th[`SND(x:real^3#real^3)`]);
8878
8879 EXISTS_TAC`v:real^3,(w:num->real^3) (l + k - 1)`
8880 THEN ASM_REWRITE_TAC[]
8881 THEN SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8882
8883 EXPAND_TAC"FF"
8884 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8885 THEN EXISTS_TAC`l+k-1`
8886 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8887 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8888 THEN RESA_TAC
8889 THEN ASM_TAC 
8890 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8891 THEN REPEAT RESA_TAC;
8892
8893 MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(l+k-1),v2:real^3`;];
8894
8895 MP_TAC(SET_RULE`v2=v:real^3\/ ~(v=v2)`)
8896 THEN RESA_TAC;
8897
8898 SUBGOAL_THEN`v2, w(l+k-1) IN (FF:real^3#real^3->bool)`ASSUME_TAC;
8899
8900 ASM_REWRITE_TAC[];
8901
8902 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
8903 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;]
8904 THEN POP_ASSUM MP_TAC
8905 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
8906 THEN STRIP_TAC
8907 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v2:real^3,(w:num->real^3)(l+k-1)`;`V:real^3->bool`;]
8908 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
8909 THEN RESA_TAC
8910 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3)(l+k-1)`])]);;
8911
8912
8913
8914
8915 let V3_DEFOR_EQ_IN_FF_AT_W_SYM_V1_TWO_CASES=prove_by_refinement(
8916 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8917   MMs_v39 s w /\
8918  w l=v2/\ w (l+k-1) =v1 /\
8919 &0< x1 /\ &0<x2   /\ &0< x6 /\
8920  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
8921 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8922 /\ &0< e/\ --e<t 
8923 /\ (!t i. --e<t /\ t<e /\  ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
8924 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8925 /\ IMAGE (w:num->real^3) (:num)=V
8926 ==> 
8927 (@v. w(l+k-1),v IN
8928           IMAGE
8929           (\uv. (if FST uv = v2
8930                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8931                  else FST uv),
8932                 (if SND uv = v2
8933                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8934                  else SND uv))
8935           FF)=
8936 v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)`,
8937 [
8938 STRIP_TAC
8939 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
8940 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8941 THEN MP_TAC th
8942 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8943 THEN ASSUME_TAC th
8944 THEN STRIP_TAC)
8945 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
8946 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
8947 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
8948 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
8949 THEN RESA_TAC
8950 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
8951
8952 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
8953 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8954 THEN MP_TAC th
8955 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8956 THEN REPEAT RESA_TAC);
8957
8958 MP_TAC Local_lemmas.CVLF_LF_F
8959 THEN RESA_TAC
8960 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
8961 THEN STRIP_TAC;
8962
8963 EXISTS_TAC`v3_defor_v1 (-- &1) (v1) (v2) x1 x2 x6 x6 (x2 - t)`
8964 THEN ASM_REWRITE_TAC[IMAGE;IN_ELIM_THM]
8965 THEN EXISTS_TAC`(w:num->real^3) (l + k - 1),v2:real^3`
8966 THEN ASM_REWRITE_TAC[]
8967 THEN SUBGOAL_THEN`v1,v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8968
8969 EXPAND_TAC"FF"
8970 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8971 THEN EXISTS_TAC`l+k-1`
8972 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8973 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8974 THEN RESA_TAC
8975 THEN ASM_TAC 
8976 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8977 THEN REPEAT RESA_TAC;
8978
8979 MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(l+k-1),v2:real^3`;];
8980
8981 REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
8982 THEN GEN_TAC
8983 THEN RESA_TAC;
8984
8985
8986 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
8987 THEN RESA_TAC;
8988
8989 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8990 THEN MP_TAC th)
8991 THEN REPEAT RESA_TAC
8992 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
8993 THEN RESA_TAC;
8994
8995 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8996 THEN MP_TAC th)
8997 THEN REPEAT RESA_TAC
8998 THEN REPLICATE_TAC (46-16)(POP_ASSUM MP_TAC)
8999 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9000 THEN MRESA_TAC th[`t:real`;`l+k-1:num`])
9001 THEN POP_ASSUM MP_TAC
9002 THEN POP_ASSUM MP_TAC
9003 THEN MP_TAC MOD_ADD_SUB_1
9004 THEN RESA_TAC
9005 THEN REMOVE_ASSUM_TAC
9006 THEN POP_ASSUM MP_TAC
9007 THEN SET_TAC[];
9008
9009 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
9010 THEN MP_TAC th)
9011 THEN REPEAT RESA_TAC;
9012
9013 SUBGOAL_THEN`v1,v IN (FF:real^3#real^3->bool)`ASSUME_TAC;
9014
9015 ASM_REWRITE_TAC[];
9016
9017 SUBGOAL_THEN`v1,v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
9018
9019 EXPAND_TAC"FF"
9020 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9021 THEN EXISTS_TAC`l+k-1`
9022 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
9023 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
9024 THEN RESA_TAC
9025 THEN ASM_TAC 
9026 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
9027 THEN REPEAT RESA_TAC;
9028
9029 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v1:real^3`;`v2:real^3`]
9030 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v:real^3`;]]);;
9031
9032
9033
9034
9035 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_W_V1_TWO_CASES=prove_by_refinement(
9036 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
9037   MMs_v39 s w /\
9038  w l=v2/\ w (l+k-1) =v1 /\
9039 &0< x1 /\ &0<x2   /\ &0< x6 /\
9040   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
9041  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
9042  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
9043 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
9044 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
9045 /\ IMAGE (w:num->real^3) (:num)=V 
9046 ==>
9047 (?e. &0< e/\ (!t. --e< t/\ t< e ==>
9048 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t)
9049  (rho_node1
9050   (IMAGE
9051    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
9052          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
9053   FF)
9054  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t))
9055  (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t IN
9056       IMAGE
9057       (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
9058             v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
9059       FF) =
9060  azim (vec 0) (w (l + k - 1)) (rho_node1 FF (w (l + k - 1)))
9061  (@a. a,w (l + k - 1) IN FF)))`,
9062 [
9063 STRIP_TAC
9064 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1_TWO_CASES
9065 THEN RESA_TAC
9066 THEN ASM_TAC
9067 THEN REPEAT RESA_TAC
9068 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3)  (SUC l)`]
9069 THEN POP_ASSUM MP_TAC
9070 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
9071 THEN ASM_REWRITE_TAC[]
9072 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
9073 THEN RESA_TAC
9074 THEN ABBREV_TAC`e1=(min e e')/ &2`
9075 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
9076 ==> &0< e1/\ e1< e/\ e1<e'`)
9077 THEN RESA_TAC
9078 THEN EXISTS_TAC`e1:real`
9079 THEN ASM_REWRITE_TAC[]
9080 THEN REPEAT STRIP_TAC
9081 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
9082 ==> t< e/\ --e<t`)
9083 THEN RESA_TAC
9084 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
9085 THEN POP_ASSUM MP_TAC
9086 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
9087 THEN RESA_TAC
9088 THEN SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
9089
9090 EXPAND_TAC"FF"
9091 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9092 THEN EXISTS_TAC`l+k-1`
9093 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
9094 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
9095 THEN RESA_TAC
9096 THEN ASM_TAC 
9097 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
9098 THEN REPEAT RESA_TAC;
9099
9100 ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
9101 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
9102
9103 REPLICATE_TAC (38-3)(POP_ASSUM MP_TAC)
9104 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9105 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
9106 THEN RESA_TAC
9107 THEN MP_TAC th
9108 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
9109 THEN REPEAT RESA_TAC);
9110
9111 MP_TAC Local_lemmas.CVLF_LF_F
9112 THEN RESA_TAC
9113 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_W_SYM_V1_TWO_CASES
9114 THEN RESA_TAC
9115 THEN ASM_SIMP_TAC[v3_defor_v4;]
9116 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_W_V1_TWO_CASES
9117 THEN RESA_TAC
9118 THEN ASM_REWRITE_TAC[rho_node1]
9119 THEN ASM_REWRITE_TAC[GSYM rho_node1;GSYM ivs_rho_node1]
9120 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
9121 THEN ONCE_REWRITE_TAC[Rogers.AZIM_EQ_SYM];
9122
9123 MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w (SUC l)}/\
9124  aff_gt {vec 0} {v1, w (SUC l)} SUBSET aff_ge {vec 0} {v1, w (SUC l)}
9125 ==> v2 IN aff_ge {vec 0} {v1:real^3, w (SUC l )}`)
9126 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
9127 THEN POP_ASSUM MP_TAC
9128 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
9129 THEN ASM_REWRITE_TAC[]
9130 THEN MRESA_TAC(GEN_ALL Planarity.properties_of_collinear4_points_fan)
9131 [`vec 0:real^3`;`(w:num->real^3)(SUC l)`;`v1:real^3`;`v2:real^3`]
9132 THEN POP_ASSUM MP_TAC
9133 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
9134 THEN ASM_REWRITE_TAC[]
9135 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
9136 THEN ASM_REWRITE_TAC[]
9137 THEN RESA_TAC
9138 THEN RESA_TAC
9139 THEN RESA_TAC
9140 THEN MRESA_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT[`vec 0:real^3`;`(w:num->real^3)(l+k-1)`;`v2:real^3`;`(w:num->real^3)(SUC l)`;`(ivs_rho_node1 FF (w(l+k-1)))`;]
9141 THEN POP_ASSUM MP_TAC
9142 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
9143 THEN ASM_REWRITE_TAC[]
9144 THEN RESA_TAC
9145 THEN  MATCH_MP_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT
9146 THEN STRIP_TAC;
9147
9148 ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
9149 THEN MATCH_MP_TAC(GEN_ALL (SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
9150 THEN EXISTS_TAC`aff_gt{vec 0:real^3} {w(SUC l),v1}`
9151 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
9152 THEN REPLICATE_TAC (47-22) (POP_ASSUM MP_TAC)
9153 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9154 THEN MATCH_MP_TAC th)
9155 THEN ASM_REWRITE_TAC[]
9156 THEN MP_TAC(REAL_ARITH`t<e1/\ e1<e'/\ --e1<t ==> t< e'/\ --e'<t`)
9157 THEN RESA_TAC
9158 THEN ASM_REWRITE_TAC[];
9159
9160 ASM_REWRITE_TAC[]
9161 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
9162 THEN ASM_REWRITE_TAC[]
9163 THEN MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
9164 THEN EXISTS_TAC`(w:num->real^3)(SUC l)`
9165 THEN ASM_REWRITE_TAC[]
9166 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
9167 THEN ASM_REWRITE_TAC[]
9168 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
9169 THEN ASM_REWRITE_TAC[]
9170 THEN REPLICATE_TAC (47-22) (POP_ASSUM MP_TAC)
9171 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9172 THEN MATCH_MP_TAC th)
9173 THEN ASM_REWRITE_TAC[]
9174 THEN MP_TAC(REAL_ARITH`t<e1/\ e1<e'/\ --e1<t==> t< e'/\ --e'<t`)
9175 THEN RESA_TAC
9176 THEN ASM_REWRITE_TAC[]]);;
9177
9178
9179
9180 let V3_DEFOR_EQ_IN_FF_AT_V_ANY_V1_TWO_CASES=prove_by_refinement(
9181 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
9182   MMs_v39 s w /\
9183  w l=v2/\ w (l+k-1) =v1 /\
9184 &0< x1 /\ &0<x2   /\ &0< x6 /\
9185  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
9186 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
9187 /\ &0< e/\ --e<t 
9188 /\ (!t i. --e<t /\ t<e /\  ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
9189 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
9190 /\ IMAGE (w:num->real^3) (:num)=V
9191 /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(SUC l))
9192 /\ v IN V
9193 ==> 
9194 (!w. v,w IN
9195           IMAGE
9196           (\uv. (if FST uv = v2
9197                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
9198                  else FST uv),
9199                 (if SND uv = v2
9200                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
9201                  else SND uv))
9202           FF<=> 
9203 v,w IN FF)`,
9204 [
9205 STRIP_TAC
9206 THEN REPLICATE_TAC (24-3)(POP_ASSUM MP_TAC)
9207 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9208 THEN MP_TAC th
9209 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
9210 THEN ASSUME_TAC th
9211 THEN STRIP_TAC)
9212 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
9213 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
9214 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
9215 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
9216 THEN RESA_TAC
9217 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
9218
9219
9220 REPLICATE_TAC (42-25)(POP_ASSUM MP_TAC)
9221 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9222 THEN MP_TAC th
9223 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
9224 THEN REPEAT RESA_TAC);
9225
9226
9227 MP_TAC Local_lemmas.CVLF_LF_F
9228 THEN RESA_TAC
9229 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
9230 THEN GEN_TAC
9231 THEN EQ_TAC
9232 THEN RESA_TAC;
9233
9234
9235 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
9236 THEN RESA_TAC;
9237
9238 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
9239 THEN MP_TAC th)
9240 THEN REPEAT RESA_TAC
9241 THEN REPLICATE_TAC (49-23)(POP_ASSUM MP_TAC)
9242 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9243 THEN MP_TAC th)
9244 THEN EXPAND_TAC"V"
9245 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9246 THEN STRIP_TAC
9247 THEN REPLICATE_TAC (50-16)(POP_ASSUM MP_TAC)
9248 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9249 THEN MRESA_TAC th[`t:real`;`x':num`])
9250 THEN REPLICATE_TAC (50-46)(POP_ASSUM MP_TAC)
9251 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9252 THEN MP_TAC th)
9253 THEN POP_ASSUM MP_TAC
9254 THEN MRESA_TAC DIVISION[`x':num`;`k:num`]
9255 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
9256 THEN MP_TAC(SET_RULE`x' MOD k = l MOD k \/ ~(x' MOD k = l MOD k)`)
9257 THEN RESA_TAC;
9258
9259 ASM_TAC
9260 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
9261 THEN REPEAT RESA_TAC
9262 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
9263 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`x':num`[ARITH_RULE`4 MOD 4=0`]
9264 THEN MRESA_TAC th[`l:num`])
9265 THEN REPLICATE_TAC (77-39)(POP_ASSUM MP_TAC)
9266 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9267 THEN MP_TAC th)
9268 THEN ASM_REWRITE_TAC[];
9269
9270
9271 RESA_TAC;
9272
9273
9274 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
9275 THEN MP_TAC th)
9276 THEN REPEAT RESA_TAC
9277 THEN MP_TAC(SET_RULE`v2= SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
9278 THEN RESA_TAC;
9279
9280 SUBGOAL_THEN`v,v2 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
9281
9282 ASM_REWRITE_TAC[];
9283
9284 SUBGOAL_THEN`v1,v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
9285
9286 EXPAND_TAC"FF"
9287 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9288 THEN EXISTS_TAC`l+k-1`
9289 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
9290 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
9291 THEN RESA_TAC
9292 THEN ASM_TAC 
9293 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
9294 THEN REPEAT RESA_TAC;
9295
9296 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v:real^3`;`v1:real^3`];
9297
9298 EXISTS_TAC`v:real^3,w':real^3`
9299 THEN ASM_REWRITE_TAC[]
9300 THEN MP_TAC(SET_RULE`v2= w':real^3\/ ~(v2=w')`)
9301 THEN RESA_TAC;
9302
9303 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
9304
9305 EXPAND_TAC"FF"
9306 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9307 THEN EXISTS_TAC`l+k-1`
9308 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
9309 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
9310 THEN RESA_TAC
9311 THEN ASM_TAC 
9312 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
9313 THEN REPEAT RESA_TAC;
9314
9315 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v:real^3`;`(w:num->real^3) (l+k-1)`]]);;
9316
9317
9318
9319
9320
9321
9322
9323
9324 let V3_DEFOR_EQ_IN_FF_AT_V_ANY_SYM_V1_TWO_CASES=prove_by_refinement(
9325 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
9326   MMs_v39 s w /\
9327  w l=v2/\ w (l+k-1) =v1 /\
9328 &0< x1 /\ &0<x2   /\ &0< x6 /\
9329  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
9330 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
9331 /\ &0< e/\ --e<t 
9332 /\ (!t i. --e<t /\ t<e /\  ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
9333 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
9334 /\ IMAGE (w:num->real^3) (:num)=V
9335 /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(SUC l))
9336 /\ v IN V
9337 ==> 
9338 (!w. w,v IN
9339           IMAGE
9340           (\uv. (if FST uv = v2
9341                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
9342                  else FST uv),
9343                 (if SND uv = v2
9344                  then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
9345                  else SND uv))
9346           FF<=> 
9347 w,v IN FF)`,
9348 [
9349 STRIP_TAC
9350 THEN REPLICATE_TAC (24-3)(POP_ASSUM MP_TAC)
9351 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9352 THEN MP_TAC th
9353 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
9354 THEN ASSUME_TAC th
9355 THEN STRIP_TAC)
9356 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
9357 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
9358 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
9359 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
9360 THEN RESA_TAC
9361 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
9362
9363 REPLICATE_TAC (42-25)(POP_ASSUM MP_TAC)
9364 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9365 THEN MP_TAC th
9366 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
9367 THEN REPEAT RESA_TAC);
9368
9369 MP_TAC Local_lemmas.CVLF_LF_F
9370 THEN RESA_TAC
9371 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
9372 THEN GEN_TAC
9373 THEN EQ_TAC
9374 THEN RESA_TAC;
9375
9376 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
9377 THEN RESA_TAC;
9378
9379
9380 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
9381 THEN MP_TAC th)
9382 THEN REPEAT RESA_TAC
9383 THEN REPLICATE_TAC (49-23)(POP_ASSUM MP_TAC)
9384 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9385 THEN MP_TAC th)
9386 THEN EXPAND_TAC"V"
9387 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9388 THEN STRIP_TAC
9389 THEN REPLICATE_TAC (50-16)(POP_ASSUM MP_TAC)
9390 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9391 THEN MRESA_TAC th[`t:real`;`x':num`])
9392 THEN REPLICATE_TAC (50-47)(POP_ASSUM MP_TAC)
9393 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9394 THEN MP_TAC th)
9395 THEN POP_ASSUM MP_TAC
9396 THEN MRESA_TAC DIVISION[`x':num`;`k:num`]
9397 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
9398 THEN MP_TAC(SET_RULE`x' MOD k = l MOD k \/ ~(x' MOD k = l MOD k)`)
9399 THEN RESA_TAC;
9400
9401 ASM_TAC
9402 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
9403 THEN REPEAT RESA_TAC
9404 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
9405 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`x':num`[ARITH_RULE`4 MOD 4=0`]
9406 THEN MRESA_TAC th[`l:num`])
9407 THEN REPLICATE_TAC (77-39)(POP_ASSUM MP_TAC)
9408 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9409 THEN MP_TAC th)
9410 THEN ASM_REWRITE_TAC[];
9411
9412 RESA_TAC;
9413
9414 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
9415 THEN MP_TAC th)
9416 THEN REPEAT RESA_TAC
9417 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
9418 THEN RESA_TAC;
9419
9420 SUBGOAL_THEN`v2,v IN (FF:real^3#real^3->bool)`ASSUME_TAC;
9421
9422 ASM_REWRITE_TAC[];
9423
9424 SUBGOAL_THEN`v2,w(SUC l) IN (FF:real^3#real^3->bool)` ASSUME_TAC;
9425
9426 EXPAND_TAC"FF"
9427 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9428 THEN EXISTS_TAC`l:num`
9429 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
9430 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
9431 THEN RESA_TAC
9432 THEN ASM_TAC 
9433 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
9434 THEN REPEAT RESA_TAC;
9435
9436 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`v:real^3`]
9437 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`(w:num->real^3)(SUC l)`;]
9438 THEN REPLICATE_TAC (54-22)(POP_ASSUM MP_TAC)
9439 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9440 THEN MP_TAC th)
9441 THEN ASM_REWRITE_TAC[];
9442
9443 EXISTS_TAC`w':real^3,v:real^3`
9444 THEN ASM_REWRITE_TAC[]
9445 THEN MP_TAC(SET_RULE`v2= w':real^3\/ ~(v2=w')`)
9446 THEN RESA_TAC;
9447
9448 SUBGOAL_THEN`v2,w(SUC l) IN (FF:real^3#real^3->bool)` ASSUME_TAC;
9449
9450 EXPAND_TAC"FF"
9451 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9452 THEN EXISTS_TAC`l:num`
9453 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
9454 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
9455 THEN RESA_TAC
9456 THEN ASM_TAC 
9457 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
9458 THEN REPEAT RESA_TAC;
9459
9460 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`v:real^3`]
9461 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`(w:num->real^3)(SUC l)`;]
9462 THEN REPLICATE_TAC (54-20)(POP_ASSUM MP_TAC)
9463 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9464 THEN MP_TAC th)
9465 THEN ASM_REWRITE_TAC[]]);;
9466
9467 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_V_ANY_V1_TWO_CASES=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
9468   MMs_v39 s w /\
9469  w l=v2/\ w (l+k-1) =v1 /\
9470 &0< x1 /\ &0<x2   /\ &0< x6 /\
9471   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
9472  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
9473  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
9474 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
9475 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
9476 /\ IMAGE (w:num->real^3) (:num)=V 
9477 ==>
9478 (?e. &0< e/\ (!t v. --e< t/\ t< e /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(SUC l))
9479 /\ v IN V
9480  ==>
9481 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t)
9482  (rho_node1
9483   (IMAGE
9484    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
9485          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
9486   FF)
9487  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t))
9488  (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t IN
9489       IMAGE
9490       (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
9491             v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
9492       FF) =
9493  azim (vec 0) v (rho_node1 FF v) (@a. a,v IN FF)))`,
9494 STRIP_TAC
9495 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1_TWO_CASES
9496 THEN RESA_TAC
9497 THEN ASM_TAC
9498 THEN REPEAT RESA_TAC
9499 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3)  (SUC l)`]
9500 THEN POP_ASSUM MP_TAC
9501 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
9502 THEN ASM_REWRITE_TAC[]
9503 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
9504 THEN RESA_TAC
9505 THEN ABBREV_TAC`e1=(min e e')/ &2`
9506 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
9507 ==> &0< e1/\ e1< e/\ e1<e'`)
9508 THEN RESA_TAC
9509 THEN EXISTS_TAC`e1:real`
9510 THEN ASM_REWRITE_TAC[]
9511 THEN REPEAT STRIP_TAC
9512 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
9513 ==> t< e/\ --e<t`)
9514 THEN RESA_TAC
9515 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
9516 THEN POP_ASSUM MP_TAC
9517 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
9518 THEN RESA_TAC
9519 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V_ANY_SYM_V1_TWO_CASES
9520 THEN RESA_TAC
9521 THEN ASM_SIMP_TAC[v3_defor_v4;]
9522 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V_ANY_V1_TWO_CASES
9523 THEN RESA_TAC
9524 THEN ASM_SIMP_TAC[rho_node1;]);;
9525
9526
9527
9528
9529 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_V1_TWO_CASES=prove_by_refinement(
9530 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
9531   MMs_v39 s w /\
9532  w l=v2/\ w (l+k-1) =v1 /\
9533 &0< x1 /\ &0<x2   /\ &0< x6 /\
9534   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
9535  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
9536  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
9537 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
9538 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
9539 /\ IMAGE (w:num->real^3) (:num)=V 
9540 ==>
9541 (?e. &0< e/\ (!t v. --e< t/\ t< e /\ v IN V ==>
9542 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t)
9543  (rho_node1
9544   (IMAGE
9545    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
9546          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
9547   FF)
9548  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t))
9549  (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t IN
9550       IMAGE
9551       (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
9552             v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
9553       FF) =
9554  azim (vec 0) (v) (rho_node1 FF (v))
9555  (@a. a,v IN FF)))`,
9556 [STRIP_TAC
9557 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_W_V1_TWO_CASES
9558 THEN RESA_TAC
9559 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_V1_V1_TWO_CASES
9560 THEN RESA_TAC
9561 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_V1_TWO_CASES
9562 THEN RESA_TAC
9563 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_V_ANY_V1_TWO_CASES
9564 THEN RESA_TAC
9565 THEN ABBREV_TAC`e1=(min (min (min e e') e'')e''')/ &2`
9566 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'')e''')/ &2/\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''==> &0< e1/\ e1<e/\ e1<e'/\ e1< e''/\ e1< e'''`)
9567 THEN RESA_TAC
9568 THEN EXISTS_TAC`e1:real`
9569 THEN ASM_REWRITE_TAC[]
9570 THEN REPEAT RESA_TAC
9571 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'')e''')/ &2/\ &0< e/\ &0< e'/\ &0< e''/\ t<e1/\ --e1<t/\ &0< e'''==> t<e/\ t<e'/\ t< e''/\ t < e'''
9572 /\  --e< t/\ --e'<t /\ --e''<t/\ --e'''<t`)
9573 THEN RESA_TAC
9574 THEN MP_TAC(SET_RULE`(v=(w:num->real^3)(l+k-1))\/ ~(v=(w:num->real^3)(l+k-1))`)
9575 THEN RESA_TAC;
9576
9577 REPLICATE_TAC (44-20) (POP_ASSUM MP_TAC)
9578 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9579 THEN MATCH_MP_TAC th)
9580 THEN ASM_REWRITE_TAC[];
9581
9582 MP_TAC(SET_RULE`(v=(w:num->real^3) (SUC l))\/ ~(v=(w:num->real^3) (SUC l))`)
9583 THEN RESA_TAC;
9584
9585 REPLICATE_TAC (45-22) (POP_ASSUM MP_TAC)
9586 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9587 THEN MATCH_MP_TAC th)
9588 THEN ASM_REWRITE_TAC[];
9589
9590
9591 MP_TAC(SET_RULE`(v=(v2:real^3))\/ ~(v=v2)`)
9592 THEN RESA_TAC;
9593
9594 REPLICATE_TAC (46-24) (POP_ASSUM MP_TAC)
9595 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9596 THEN MATCH_MP_TAC th)
9597 THEN ASM_REWRITE_TAC[];
9598
9599 REPLICATE_TAC (46-26) (POP_ASSUM MP_TAC)
9600 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9601 THEN MATCH_MP_TAC th)
9602 THEN ASM_REWRITE_TAC[]]);;
9603
9604
9605
9606 let DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_TWO_CASES=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
9607   MMs_v39 s w /\
9608  w l=v2/\ w (l+k-1) =v1 /\
9609 &0< x1 /\ &0<x2   /\ &0< x6 /\
9610   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
9611  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
9612  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
9613 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
9614 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
9615 /\ IMAGE (w:num->real^3) (:num)=V 
9616 ==>
9617 (?e. &0< e/\ (!v t.
9618            v IN V /\
9619            --e< t /\ t< e  /\
9620            interior_angle1 (vec 0) FF v = pi
9621            ==> interior_angle1 (vec 0)
9622                (IMAGE
9623                 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
9624                       v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
9625                FF)
9626                (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) <=
9627                pi))`,
9628 REPEAT STRIP_TAC
9629 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_V1_TWO_CASES
9630 THEN RESA_TAC
9631 THEN EXISTS_TAC`e:real`
9632 THEN ASM_REWRITE_TAC[interior_angle1]
9633 THEN REPEAT RESA_TAC
9634 THEN REPLICATE_TAC (24-20) (POP_ASSUM MP_TAC)
9635 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9636 THEN MRESA_TAC th[`t:real`;`v:real^3`])
9637 THEN REAL_ARITH_TAC);;
9638
9639
9640
9641
9642 let DEFORMATION_LUNAR_AFFINE_HULL_V1_TWO_CASES=prove_by_refinement(
9643 `3<k /\
9644   scs_k_v39 s =k/\
9645 is_scs_v39 s /\
9646   MMs_v39 s w /\
9647   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
9648  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
9649  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
9650  w l=v2/\ w (l+k-1) =v1/\ ~(norm v2 = &2)
9651 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
9652 /\ ~(v=v2)/\ ~(w1=v2) /\   IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
9653 /\ IMAGE (w:num->real^3) (:num)=V 
9654 /\ IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)=E
9655 /\ lunar (v,w1) V E
9656 ==> 
9657 ?e. &0<e /\ (!t. t IN real_interval (--e,e)
9658      ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
9659          affine hull {vec 0, v, w1, v2})`,
9660 [
9661 STRIP_TAC
9662 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1_TWO_CASES
9663 THEN RESA_TAC
9664 THEN MP_TAC HYPER_MM_COLLINEAR_TWO_CASES
9665 THEN RESA_TAC
9666 THEN REPLICATE_TAC (25-6)(POP_ASSUM MP_TAC)
9667 THEN POP_ASSUM(fun th-> 
9668 POP_ASSUM(fun th1->
9669 REPEAT DISCH_TAC
9670 THEN MP_TAC th THEN MP_TAC th1))
9671 THEN REPEAT RESA_TAC
9672 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3)  (SUC l)`]
9673 THEN POP_ASSUM MP_TAC
9674 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
9675 THEN ASM_REWRITE_TAC[]
9676 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
9677 THEN RESA_TAC
9678 THEN REPLICATE_TAC (27-3)(POP_ASSUM MP_TAC)
9679 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9680 THEN MP_TAC th
9681 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;IN_REAL_INTERVAL]
9682 THEN MP_TAC th
9683 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
9684 THEN REPEAT RESA_TAC)
9685 THEN MP_TAC BBS_IMP_CONVEX_LOCAL_FAN
9686 THEN RESA_TAC
9687 THEN SUBGOAL_THEN`(v2:real^3) IN V` ASSUME_TAC;
9688
9689 EXPAND_TAC"V"
9690 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9691 THEN EXISTS_TAC`l:num`
9692 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
9693
9694 SUBGOAL_THEN`v1,v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
9695
9696
9697 EXPAND_TAC"FF"
9698 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9699 THEN EXISTS_TAC`l+k-1`
9700 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
9701 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
9702 THEN RESA_TAC
9703 THEN ASM_TAC 
9704 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
9705 THEN REPEAT RESA_TAC;
9706
9707 SUBGOAL_THEN`v2,w (SUC l) IN (FF:real^3#real^3->bool)` ASSUME_TAC;
9708
9709 EXPAND_TAC"FF"
9710 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9711 THEN EXISTS_TAC`l:num`
9712 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
9713 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
9714 THEN RESA_TAC
9715 THEN ASM_TAC 
9716 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
9717 THEN REPEAT RESA_TAC;
9718
9719 MP_TAC Local_lemmas.CVLF_LF_F
9720 THEN RESA_TAC
9721 THEN MRESA_TAC (GEN_ALL Local_lemmas.IVS_RHO_NODE1_DETE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`v1:real^3`;]
9722 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`(w:num->real^3)(SUC l)`]
9723 THEN MRESAL_TAC (GEN_ALL LUNAR_IMP_INTERIOR_ANGLE1_EQ_PI)
9724 [`E:(real^3->bool)->bool`;`V:real^3->bool`;`FF:real^3#real^3->bool`;`v:real^3`;`w1:real^3`;][DIFF;IN_ELIM_THM;SET_RULE`~(a IN {b,c}) <=> (~(a=b)/\ ~(a=c))`]
9725 THEN POP_ASSUM(fun th-> MRESA_TAC th[`v2:real^3`])
9726 THEN MRESA_TAC (GEN_ALL Collect_geom2.THREE_GEN_POINTS_IN_AFF3)[`v2:real^3`;`v:real^3`;`w1:real^3`]
9727 THEN MRESA_TAC (GEN_ALL Local_lemmas.CONV02_SUBSET_AFF2)[`v:real^3`;`w1:real^3`] 
9728 THEN MP_TAC(SET_RULE`v IN aff {v2, v, w1}/\ w1 IN aff {v2, v, w1}
9729 ==> {v, w1} SUBSET  aff {v2, v, w1:real^3}`)
9730 THEN RESA_TAC
9731 THEN MRESA_TAC(GEN_ALL Local_lemmas.S_SUBSET_IMP_AFF_S_TOO)[`{v, w1:real^3}`;` {v2, v, w1:real^3}`]
9732 THEN MP_TAC(SET_RULE`v1 IN aff {v2, v, w1}/\ w (SUC l) IN aff {v2, v, w1}
9733 /\ vec 0 IN conv0 {v, w1} /\ conv0 {v, w1} SUBSET aff {v, w1}
9734 /\ aff {v, w1} SUBSET aff {v2, v, w1}
9735 ==> {vec 0, v1, w (SUC l)} SUBSET aff {v2, v, w1:real^3}`)
9736 THEN RESA_TAC
9737 THEN MRESA_TAC(GEN_ALL Local_lemmas.S_SUBSET_IMP_AFF_S_TOO)[`{vec 0, v1, w (SUC l):real^3}`;` {v2, v, w1:real^3}`]
9738 THEN MRESAL_TAC (GEN_ALL Local_lemmas.AFF_GT_SUB_AFF_UNION)[`{vec 0:real^3}`;`{ v1, w (SUC l):real^3}`][SET_RULE`{A}UNION {B,C}={A,B,C}`]
9739 THEN EXISTS_TAC`e':real`
9740 THEN ASM_REWRITE_TAC[]
9741 THEN REPEAT RESA_TAC
9742 THEN REPLICATE_TAC (66-27)(POP_ASSUM MP_TAC)
9743 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9744 THEN MRESA_TAC th[`t:real`])
9745 THEN REWRITE_TAC[GSYM aff]
9746 THEN MRESAL_TAC Marchal_cells_2_new.AFFINE_SUBSET_KY_LEMMA[`{v2, v, w1:real^3}`;`{vec 0,v, w1,v2:real^3}`][SET_RULE`{A,B,C} SUBSET {D,B,C,A}`;GSYM aff]
9747 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
9748 THEN EXISTS_TAC`aff {v2, v, w1:real^3}`
9749 THEN ASM_REWRITE_TAC[]
9750 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
9751 THEN EXISTS_TAC`aff {vec 0, v1,  w (SUC l):real^3}`
9752 THEN ASM_REWRITE_TAC[]
9753 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
9754 THEN EXISTS_TAC`aff_gt {vec 0} {v1, w (SUC l):real^3}`
9755 THEN ASM_REWRITE_TAC[v3_defor_v4]
9756 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
9757 THEN ASM_REWRITE_TAC[];]);;
9758
9759
9760
9761
9762
9763
9764 let V3_DEFOR_CONVEX_LOCAL_FAN_TWO_CASES_concl =`!s k w l.
9765   scs_k_v39 s=k /\
9766   is_scs_v39 s /\
9767   MMs_v39 s w /\
9768   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
9769   3 < k /\
9770  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
9771  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
9772   (&10= &10) /\
9773   ~(&2 = norm (v2)) /\
9774   (&1= &1) /\
9775   (!i. ~(scs_J_v39 s l i)) /\
9776  w l=v2/\ w (l+k-1) =v1/\
9777  norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1/\
9778   (!V E v.
9779      V = IMAGE w (:num) /\
9780       E = IMAGE (\i. {w i, w (SUC i)}) (:num) ==>
9781       ~(lunar (v,(w l)) V E ))
9782 ==> 
9783 (?e. &0 < e /\
9784               (!t. --e < t /\ t < e
9785                    ==>
9786 convex_local_fan
9787  (IMAGE (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t) (:num),
9788   IMAGE
9789   (\i. {v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t, v3_defor_v4 a x1 x2 x6 v1 v2
9790                                               (w (SUC i))
9791                                               t})
9792   (:num),
9793   IMAGE
9794   (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t,
9795        v3_defor_v4 a x1 x2 x6 v1 v2 (w (SUC i)) t)
9796   (:num))))`;;
9797
9798
9799
9800 let V3_DEFOR_DEFORMATION_CONVEX_LOCAL_FAN_V1_TWO_CASES=prove_by_refinement(
9801 (mk_imp(ZLZTHIC_concl, mk_imp (MHAEYJN_concl, V3_DEFOR_CONVEX_LOCAL_FAN_TWO_CASES_concl))),
9802 [
9803
9804 REPEAT STRIP_TAC;
9805
9806 REPLICATE_TAC (19-4)(POP_ASSUM MP_TAC)
9807 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9808 THEN POP_ASSUM MP_TAC
9809 THEN MP_TAC th
9810 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
9811 THEN ASSUME_TAC th
9812 THEN STRIP_TAC)
9813 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
9814 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
9815 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
9816 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
9817 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
9818 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
9819 THEN RESA_TAC
9820 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
9821
9822
9823 REPLICATE_TAC (38-19)(POP_ASSUM MP_TAC)
9824 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9825 THEN MP_TAC th
9826 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
9827 THEN REPEAT RESA_TAC);
9828
9829 SUBGOAL_THEN`(v2:real^3) IN V` ASSUME_TAC;
9830
9831
9832 EXPAND_TAC"V"
9833 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9834 THEN EXISTS_TAC`l:num`
9835 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
9836
9837
9838 SUBGOAL_THEN`(v1:real^3) IN V` ASSUME_TAC;
9839
9840
9841 EXPAND_TAC"V"
9842 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9843 THEN EXISTS_TAC`l+k-1:num`
9844 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
9845
9846 SUBGOAL_THEN`(v2:real^3) IN ball_annulus` ASSUME_TAC;
9847
9848 REPLICATE_TAC (41-19)(POP_ASSUM MP_TAC)
9849 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9850 THEN MP_TAC th
9851 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
9852 THEN REPEAT RESA_TAC)
9853 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
9854 THEN EXISTS_TAC`V:real^3->bool`
9855 THEN ASM_REWRITE_TAC[];
9856
9857
9858
9859 SUBGOAL_THEN`(v1:real^3) IN ball_annulus` ASSUME_TAC;
9860
9861 REPLICATE_TAC (42-19)(POP_ASSUM MP_TAC)
9862 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9863 THEN MP_TAC th
9864 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
9865 THEN REPEAT RESA_TAC)
9866 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
9867 THEN EXISTS_TAC`V:real^3->bool`
9868 THEN ASM_REWRITE_TAC[];
9869
9870
9871
9872 SUBGOAL_THEN`((v1,v2):real^3#real^3) IN FF`ASSUME_TAC;
9873
9874 EXPAND_TAC"FF"
9875 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9876 THEN EXISTS_TAC`l+k-1:num`
9877 THEN ASM_REWRITE_TAC[SET_RULE`(a:num) IN (:num)`]
9878 THEN MP_TAC EQ_W_L_IN_BBS
9879 THEN RESA_TAC;
9880
9881 MP_TAC Local_lemmas.CVLF_LF_F
9882 THEN RESA_TAC
9883 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v1,v2):real^3#real^3`]
9884 THEN MP_TAC NORM_POS_COLLINEAR
9885 THEN RESA_TAC
9886 THEN MP_TAC V3_DEFOR_IN_BALL_ANNULUS_DEFORMATION
9887 THEN RESA_TAC
9888 THEN MP_TAC UPS_X_POS_SEG
9889 THEN RESA_TAC;
9890
9891
9892 MRESA_TAC Deformation.XRECQNS[`-- &1`;`&1`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`ww_defor ((w:num->real^3) l)`]
9893 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_DEFORMATION)[`x2:real`;`x6:real`;`a:real`;`x1:real`;`x2:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`V:real^3->bool`][REAL_ARITH`&0< &1`]
9894 THEN MP_TAC Wrgcvdr_cizmrrh.CIZMRRH
9895 THEN RESA_TAC;
9896
9897 MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_TWO_CASES
9898 THEN RESA_TAC;
9899
9900 ABBREV_TAC`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2`
9901 THEN MP_TAC(REAL_ARITH`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''/\ &0< e'''' ==> &0< e1/\ e1< &1/\ e1< e /\ e1< e' /\ e1< e'' /\ e1<= e'''/\  -- e'''<= --e1/\ --e1< &0/\ e1< e''''`)
9902 THEN RESA_TAC;
9903
9904
9905 MRESA_TAC (GEN_ALL DEFORMATION_SMALL_INTERVAL)[`-- e''':real`;`e''':real`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`V:real^3->bool`;`--e1:real`;`e1:real`]
9906 THEN REPLICATE_TAC (73-0) (POP_ASSUM MP_TAC)
9907 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9908 THEN POP_ASSUM MP_TAC
9909 THEN MRESA_TAC th[`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`])
9910 THEN POP_ASSUM MP_TAC
9911 THEN SUBGOAL_THEN`(!v t.
9912            v IN V /\
9913            t IN real_interval (--e1,e1) /\
9914            interior_angle1 (vec 0) FF v = pi
9915            ==> interior_angle1 (vec 0)
9916                (IMAGE
9917                 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
9918                       v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
9919                FF)
9920                (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) <=
9921                pi)`ASSUME_TAC;
9922
9923 ASM_REWRITE_TAC[IN_REAL_INTERVAL]
9924 THEN REPEAT RESA_TAC
9925 THEN REPLICATE_TAC (76-61)(POP_ASSUM MP_TAC)
9926 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9927 THEN MATCH_MP_TAC th)
9928 THEN ASM_REWRITE_TAC[IN_REAL_INTERVAL]
9929 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''''/\ --e1 <t ==> t<e''''/\ --e''''<t`)
9930 THEN RESA_TAC;
9931
9932
9933 RESA_TAC
9934 THEN STRIP_TAC
9935 THEN REMOVE_ASSUM_TAC
9936 THEN EXISTS_TAC`e''''':real`
9937 THEN ASM_REWRITE_TAC[V_DEFORMATION_V3_DEFOR;E_DEFORMATION_V3_DEFOR;F_DEFORMATION_V3_DEFOR]
9938 THEN GEN_TAC
9939 THEN POP_ASSUM(fun th-> STRIP_TAC
9940 THEN MRESA_TAC th[`t:real`]);
9941
9942
9943
9944 (***********lunar**********)
9945
9946
9947 MRESAL_TAC JKQEWGV3[`s:scs_v39`;`w:num->real^3`;`v:real^3`;`w':real^3`][LET_DEF;LET_END_DEF;]
9948 THEN MP_TAC(REAL_ARITH`interior_angle1 (vec 0) FF v < pi / &2/\ &0< pi
9949 ==> interior_angle1 (vec 0) FF v < pi`)
9950 THEN ASM_REWRITE_TAC[PI_WORKS]
9951 THEN RESA_TAC
9952 THEN STRIP_TAC
9953 THEN SUBGOAL_THEN`~(v2=v:real^3)`ASSUME_TAC;
9954
9955 POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`w':real^3`])
9956 THEN STRIP_TAC
9957 THEN POP_ASSUM(fun th->
9958 ASM_TAC
9959 THEN REWRITE_TAC[th]
9960 THEN REPEAT RESA_TAC)
9961 THEN ASM_REWRITE_TAC[Local_lemmas.LUNAR_COMM];
9962
9963
9964 SUBGOAL_THEN`~(v2=w':real^3)`ASSUME_TAC;
9965
9966 REMOVE_ASSUM_TAC
9967 THEN POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v:real^3`])
9968 THEN STRIP_TAC
9969 THEN POP_ASSUM(fun th->
9970 ASM_TAC
9971 THEN REWRITE_TAC[th]
9972 THEN REPEAT RESA_TAC);
9973
9974 POP_ASSUM MP_TAC
9975 THEN POP_ASSUM MP_TAC
9976 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9977 THEN MP_TAC th)
9978 THEN ABBREV_TAC`w1=w':real^3`
9979 THEN MP_TAC DEFORMATION_LUNAR_AFFINE_HULL_V1_TWO_CASES
9980 THEN RESA_TAC
9981 THEN ABBREV_TAC`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2`
9982 THEN MP_TAC(REAL_ARITH`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''/\ &0< e'''' ==> &0< e1/\ e1< &1/\ e1< e /\ e1< e' /\ e1< e'' /\ e1<= e'''/\  -- e'''<= --e1/\ --e1< &0/\ e1< e''''`)
9983 THEN RESA_TAC
9984 THEN SUBGOAL_THEN`(!u' t.
9985            u' IN V /\ ~(v2 = u':real^3) /\ t IN real_interval (--e1,e1)
9986            ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 u' t = u')`ASSUME_TAC;
9987
9988 REPEAT STRIP_TAC
9989 THEN REWRITE_TAC[v3_defor_v4]
9990 THEN REMOVE_ASSUM_TAC
9991 THEN POP_ASSUM(fun th-> REWRITE_TAC[th]);
9992
9993 SUBGOAL_THEN`(!t. t IN real_interval (--e1,e1)
9994        ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
9995            affine hull {vec 0, v, w1, v2})`ASSUME_TAC;
9996
9997 ASM_REWRITE_TAC[IN_REAL_INTERVAL]
9998 THEN REPEAT RESA_TAC
9999 THEN REPLICATE_TAC (80-67)(POP_ASSUM MP_TAC)
10000 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10001 THEN MATCH_MP_TAC th)
10002 THEN ASM_REWRITE_TAC[IN_REAL_INTERVAL]
10003 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''''/\ --e1<t==> t<e''''/\ --e''''<t`)
10004 THEN RESA_TAC;
10005
10006 MRESA_TAC (GEN_ALL DEFORMATION_SMALL_INTERVAL)[`-- e''':real`;`e''':real`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`V:real^3->bool`;`--e1:real`;`e1:real`]
10007 THEN REPLICATE_TAC (80-1) (POP_ASSUM MP_TAC)
10008 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10009 THEN POP_ASSUM MP_TAC
10010 THEN MRESA_TAC th[`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`v:real^3`;`w':real^3`;`v2:real^3`])
10011 THEN POP_ASSUM MP_TAC;
10012
10013 RESA_TAC
10014 THEN STRIP_TAC
10015 THEN REMOVE_ASSUM_TAC
10016 THEN EXISTS_TAC`e''''':real`
10017 THEN ASM_REWRITE_TAC[V_DEFORMATION_V3_DEFOR;E_DEFORMATION_V3_DEFOR;F_DEFORMATION_V3_DEFOR]
10018 THEN GEN_TAC
10019 THEN POP_ASSUM(fun th-> STRIP_TAC
10020 THEN MRESA_TAC th[`t:real`]);]);;
10021
10022
10023
10024
10025
10026 let DEFORMATION_INTERIOR_ANGLE1_EQ_V3_DEFOR_V1_TWO_CASES=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
10027   MMs_v39 s w /\
10028  w l=v2/\ w (l+k-1) =v1 /\
10029 &0< x1 /\ &0<x2   /\ &0< x6 /\
10030   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
10031  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
10032  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
10033 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
10034 /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
10035 /\ IMAGE (w:num->real^3) (:num)=V 
10036 ==>
10037 (?e. &0< e/\ (!v t.
10038            v IN V /\
10039            --e< t /\ t< e  
10040            ==> interior_angle1 (vec 0)
10041                (IMAGE
10042                 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
10043                       v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
10044                FF)
10045                (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) =
10046                interior_angle1 (vec 0) FF v))`,
10047 REPEAT STRIP_TAC
10048 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_V1_TWO_CASES
10049 THEN RESA_TAC
10050 THEN EXISTS_TAC`e:real`
10051 THEN ASM_REWRITE_TAC[interior_angle1]
10052 THEN REPEAT RESA_TAC
10053 THEN REPLICATE_TAC (23-20) (POP_ASSUM MP_TAC)
10054 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10055 THEN MRESA_TAC th[`t:real`;`v:real^3`])
10056 THEN REAL_ARITH_TAC);;
10057
10058
10059
10060 let INTERIOR_ANGLE_SAME_V3_DEFOR1_TWO_CASES=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
10061   MMs_v39 s w /\
10062  w l=v2/\ w (l+k-1) =v1 /\
10063 &0< x1 /\ &0<x2   /\ &0< x6 /\
10064   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
10065  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
10066  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
10067 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
10068 /\(!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t))/\
10069 &0< e1
10070 /\
10071   IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
10072 /\ IMAGE (w:num->real^3) (:num)=V 
10073 ==>
10074 (?e. &0< e/\ (!t i.
10075                       &0< t /\ t< e  
10076 ==> 
10077 interior_angle1 (vec 0)
10078  (IMAGE
10079   (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
10080         v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
10081  FF)
10082  (ITER i
10083   (rho_node1
10084   (IMAGE
10085    (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
10086          v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
10087   FF))
10088  (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l MOD k)) t))
10089  =
10090 interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) (w (l MOD k)))))`,
10091 STRIP_TAC
10092 THEN MP_TAC DEFORMATION_INTERIOR_ANGLE1_EQ_V3_DEFOR_V1_TWO_CASES
10093 THEN RESA_TAC
10094 THEN ABBREV_TAC`e2=(min e e1)/ &2`
10095 THEN MP_TAC(REAL_ARITH`e2=(min e e1)/ &2 /\ &0< e/\ &0<e1==> &0<e2/\ e2<e/\ e2<e1`)
10096 THEN RESA_TAC
10097 THEN EXISTS_TAC`e2:real`
10098 THEN ASM_REWRITE_TAC[]
10099 THEN REPEAT RESA_TAC
10100 THEN ASM_TAC
10101 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;]
10102 THEN REPEAT STRIP_TAC
10103 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
10104 THEN RESA_TAC
10105 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)[`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l MOD k)`;`w:num->real^3`;`l MOD k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;]
10106 THEN REPLICATE_TAC (43-25)(POP_ASSUM MP_TAC)
10107 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10108 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e1==> t<e1`)
10109 THEN RESA_TAC
10110 THEN MRESA_TAC th[`t:real`])
10111 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)
10112 [`IMAGE (\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (:num)`;`IMAGE (\i. { v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t, v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) (SUC i)) t}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t, v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) (SUC i)) t) (:num)`;`(\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (l MOD k)`;`(\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t)`;`l MOD k`]
10113 [MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;F_DEFORMATION_V3_DEFOR]
10114 THEN REPLICATE_TAC (45-29)(POP_ASSUM MP_TAC)
10115 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10116 THEN MATCH_MP_TAC th)
10117 THEN ASM_REWRITE_TAC[]
10118 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e/\ &0<t==> t<e/\ --e<t`)
10119 THEN RESA_TAC
10120 THEN EXPAND_TAC"V"
10121 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
10122 THEN EXISTS_TAC`i + l MOD k`
10123 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`]);;
10124
10125
10126
10127
10128
10129
10130
10131
10132
10133 let TAUSTAR_V3_DEFOR_TWO_CASES_concl = `!s k w l.
10134    3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
10135   MMs_v39 s w /\
10136  w l=v2/\ w (l+k-1) =v1 /\
10137 &0< x1 /\ &0<x2   /\ &0< x6 /\
10138   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
10139  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
10140  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
10141 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1/\
10142   ~(&2 = norm (w l)) /\
10143   (!i. ~(scs_J_v39 s l i)) /\
10144 (!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t))/\
10145 &0< e1
10146  ==> 
10147 (?e. &0 < e /\
10148               (!t. &0 < t /\ t < e
10149                    ==> taustar_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t)< taustar_v39 s w 
10150 ))`;;
10151
10152
10153
10154
10155
10156 let TAUSTAR_V3_DEFOR_TWO_CASES=prove_by_refinement(( TAUSTAR_V3_DEFOR_TWO_CASES_concl),
10157 [
10158 REPEAT STRIP_TAC;
10159
10160 REPLICATE_TAC (22-5)(POP_ASSUM MP_TAC)
10161 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10162 THEN POP_ASSUM MP_TAC
10163 THEN MP_TAC th
10164 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
10165 THEN ASSUME_TAC th
10166 THEN STRIP_TAC)
10167 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
10168 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
10169 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
10170 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
10171 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
10172 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
10173 THEN RESA_TAC
10174 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
10175
10176 REPLICATE_TAC (41-22)(POP_ASSUM MP_TAC)
10177 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10178 THEN MP_TAC th
10179 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
10180 THEN REPEAT RESA_TAC);
10181
10182 ASM_REWRITE_TAC[taustar_v39;LET_DEF;LET_END_DEF;tau_fun]
10183 THEN STRIP_TAC
10184 THEN MP_TAC INTERIOR_ANGLE_SAME_V3_DEFOR1_TWO_CASES
10185 THEN RESA_TAC
10186 THEN MP_TAC RHO_FUN_DEFORMATION_V3_DEFOR
10187 THEN RESA_TAC
10188 THEN ABBREV_TAC`e2=(min (min e1 e) e')/ &2`
10189 THEN MP_TAC(REAL_ARITH`e2=(min(min e1 e) e')/ &2/\ &0< e1/\ &0< e/\ &0<e'
10190 ==> &0< e2/\ e2< e1/\ e2<e/\ e2< e'`)
10191 THEN RESA_TAC
10192 THEN EXISTS_TAC`e2:real`
10193 THEN ASM_REWRITE_TAC[]
10194 THEN REPEAT STRIP_TAC
10195 THEN MP_TAC(REAL_ARITH`e2=(min(min e1 e) e')/ &2/\ &0< e1/\ &0< e/\ &0<e'
10196 /\ t<e2/\ &0<t
10197 ==> t< e1/\ t<e/\ t< e'`)
10198 THEN RESA_TAC
10199 THEN MP_TAC CARD_FF_EQ_V3_DEFOR_DEFORMATION
10200 THEN RESA_TAC
10201 THEN POP_ASSUM(fun th->MRESA1_TAC th`t:real`)
10202 THEN MP_TAC DSV_V3_DEFOR_EQ
10203 THEN RESA_TAC
10204 THEN MATCH_MP_TAC(REAL_ARITH`a<b==> a-c< b-c`)
10205 THEN MATCH_MP_TAC(REAL_ARITH`a<b==> a-c< b-c`)
10206 THEN MRESA_TAC(GEN_ALL Qknvmlb.SUM_AZIM_EQ_ANGLE_LE4)[`V:real^3->bool`;`w:num->real^3`;`l:num`;`s:scs_v39`;`(w:num->real^3) (l MOD scs_k_v39 s)`;`FF:real^3#real^3->bool`;`E:(real^3->bool)->bool`]
10207 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
10208 THEN REPLICATE_TAC (59-20)(POP_ASSUM MP_TAC)
10209 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10210 THEN MRESA_TAC th[`t:real`])
10211 THEN MRESA_TAC(GEN_ALL Qknvmlb.SUM_AZIM_EQ_ANGLE_LE4)[`IMAGE  (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (:num)`;` (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) i) t)`;`l:num`;`s:scs_v39`;` (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (l MOD scs_k_v39 s)`;`IMAGE (\i.  v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) i) t, v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC i)) t) (:num)`;`IMAGE (\i. {  v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w i) t,  v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) (SUC i)) t}) (:num)`]
10212 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
10213 THEN SUBGOAL_THEN`{i|i<k:num}= 0..(k-1)`ASSUME_TAC;
10214
10215 REWRITE_TAC[IN_ELIM_THM;IN_NUMSEG;EXTENSION]
10216 THEN REPLICATE_TAC (59-2)(POP_ASSUM MP_TAC)
10217 THEN POP_ASSUM (fun th-> REPEAT STRIP_TAC
10218 THEN MP_TAC th)
10219 THEN ARITH_TAC;
10220
10221 ASM_REWRITE_TAC[]
10222 THEN MRESAL_TAC SUM_ADD_SPLIT[`(\i. rho_fun (norm (w (i + l MOD k))) *
10223       interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) (w (l MOD k))))`;`0`;`0`;`k-1`][ARITH_RULE`0<=0+1/\ 0+A=A`]
10224 THEN MRESAL_TAC SUM_ADD_SPLIT[`(\i. rho_fun (norm (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (i + l MOD k)) t)) *
10225       interior_angle1 (vec 0)
10226       (IMAGE (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w i) t,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC i)) t)
10227       (:num))
10228       (ITER i
10229        (rho_node1
10230        (IMAGE (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (i)) t,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC i )) t)
10231        (:num)))
10232       (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w ( l MOD k)) t)))`;`0`;`0`;`k-1`][ARITH_RULE`0<=0+1/\ 0+A=A`]
10233 THEN MATCH_MP_TAC(REAL_ARITH`a<b/\ c=d==> a+c<b+d`)
10234 THEN REWRITE_TAC[SUM_SING_NUMSEG;ITER]
10235 THEN STRIP_TAC;
10236
10237 REWRITE_TAC[ARITH_RULE`0+A=A`]
10238 THEN REPLICATE_TAC (62-40)(POP_ASSUM MP_TAC)
10239 THEN POP_ASSUM (fun th-> ASM_TAC
10240 THEN MP_TAC th)
10241 THEN REPEAT RESA_TAC
10242 THEN ASM_TAC
10243 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39;convex_local_fan]
10244 THEN REPEAT RESA_TAC
10245 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10246 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10247 THEN SUBGOAL_THEN`(v2:real^3) IN V`ASSUME_TAC;
10248
10249 EXPAND_TAC"V"
10250 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
10251 THEN EXISTS_TAC`l:num`
10252 THEN ASM_REWRITE_TAC[SET_RULE`(l:num)IN(:num)`];
10253
10254 REPLICATE_TAC (91-67)(POP_ASSUM MP_TAC)
10255 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10256 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e/\ &0<t ==> --e<t`)
10257 THEN RESA_TAC
10258 THEN MRESAL_TAC th[`t:real`;`0`][F_DEFORMATION_V3_DEFOR;ITER])
10259 THEN MP_TAC Local_lemmas.LOFA_IMP_V_DIFF
10260 THEN RESA_TAC
10261 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3) l`])
10262 THEN MATCH_MP_TAC REAL_LT_RMUL
10263 THEN STRIP_TAC;
10264
10265 REPLICATE_TAC (93-68)(POP_ASSUM MP_TAC)
10266 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10267 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e'/\ &0<t ==> --e'<t`)
10268 THEN RESA_TAC
10269 THEN MRESAL_TAC th[`t:real`][v3_defor_v4]);
10270
10271 MRESA_TAC (GEN_ALL Local_lemmas.INTERIOR_ANGLE1_POS)[`E:(real^3->bool)->bool`;`V:real^3->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3) (l MOD scs_k_v39 s)`];
10272
10273 MATCH_MP_TAC SUM_EQ
10274 THEN REWRITE_TAC[IN_NUMSEG;F_DEFORMATION_V3_DEFOR]
10275 THEN REPEAT STRIP_TAC
10276 THEN MP_TAC(ARITH_RULE`x<=k-1/\ 3< k==> x< k`)
10277 THEN RESA_TAC
10278 THEN REPLICATE_TAC (65-44)(POP_ASSUM MP_TAC)
10279 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10280 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e/\ &0<t ==> --e<t`)
10281 THEN RESA_TAC
10282 THEN MRESAL_TAC th[`t:real`;`x:num`][F_DEFORMATION_V3_DEFOR;ITER])
10283 THEN REWRITE_TAC[REAL_EQ_MUL_RCANCEL]
10284 THEN MATCH_MP_TAC (SET_RULE`A==> A\/ B`)
10285 THEN ASM_TAC
10286 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39;convex_local_fan]
10287 THEN REPEAT RESA_TAC
10288 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10289 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10290 THEN SUBGOAL_THEN`(v2:real^3) IN V`ASSUME_TAC;
10291
10292 EXPAND_TAC"V"
10293 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
10294 THEN EXISTS_TAC`l:num`
10295 THEN ASM_REWRITE_TAC[SET_RULE`(l:num)IN(:num)`];
10296
10297 MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;convex_local_fan;is_scs_v39;periodic2]
10298 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)[`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l MOD k)`;`w:num->real^3`;`l MOD k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;convex_local_fan;is_scs_v39;periodic2]
10299 THEN POP_ASSUM(fun th-> MRESA_TAC th[`x:num`] )
10300 THEN MP_TAC(ARITH_RULE`1<=x==> 0<x`)
10301 THEN RESA_TAC
10302 THEN 
10303 MRESA_TAC (GEN_ALL Local_lemmas.LOFA_IMP_DIS_ELMS23)
10304 [`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l MOD k)`]
10305 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`0:num`;`x:num`][ITER;v3_defor_v4] )]);;
10306
10307
10308
10309
10310
10311 let IMJXPHR_concl = `!s k w l.
10312   scs_k_v39 s=k /\
10313   is_scs_v39 s /\
10314   MMs_v39 s w /\
10315   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
10316   3 < k /\
10317  ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
10318  (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
10319   (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
10320   ~(&2 = norm (w l)) /\
10321   (!i. scs_diag k l i ==> scs_a_v39 s l i < dist(w l,w i)) /\
10322   (!i. ~(scs_J_v39 s l i)) /\
10323   (!V E v.
10324      V = IMAGE w (:num) /\
10325       E = IMAGE (\i. {w i, w (SUC i)}) (:num) ==>
10326       ~(lunar (v,(w l)) V E )) ==> 
10327   (scs_a_v39 s l (SUC l) = dist (w l, w (SUC l)) /\
10328   (scs_a_v39 s l (l + (k-1)) = dist (w l, w (l + (k-1)))))`;;
10329
10330
10331
10332 let IMJXPHR=prove_by_refinement((mk_imp(ZLZTHIC_concl, mk_imp (MHAEYJN_concl, IMJXPHR_concl))),
10333
10334 [
10335
10336 REPEAT DISCH_TAC
10337 THEN REPEAT GEN_TAC
10338 THEN STRIP_TAC
10339 THEN POP_ASSUM MP_TAC
10340 THEN MP_TAC ODXLSTCv2
10341 THEN RESA_TAC
10342 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`])
10343 THEN POP_ASSUM (fun th-> STRIP_TAC
10344 THEN MP_TAC th
10345 THEN POP_ASSUM MP_TAC)
10346 THEN ASM_REWRITE_TAC[SET_RULE`(A==> ~(B/\ A)==>C)<=> A==> ~B==>C`]
10347 THEN STRIP_TAC
10348 THEN POP_ASSUM(fun th-> STRIP_TAC THEN MP_TAC th)
10349 THEN REPLICATE_TAC (3)(POP_ASSUM MP_TAC)
10350 THEN REWRITE_TAC[scs_diag]
10351 THEN REPLICATE_TAC (2)STRIP_TAC
10352 THEN REWRITE_TAC[NOT_FORALL_THM;NOT_IMP]
10353 THEN STRIP_TAC 
10354 ;
10355
10356 MP_TAC(SET_RULE`~(SUC l MOD k = i MOD k) /\
10357           ~(l MOD k = SUC i MOD k) \/ 
10358            (SUC l MOD k = i MOD k)\/ (l MOD k = SUC i MOD k)`)
10359 THEN RESA_TAC;
10360
10361
10362
10363 REPLICATE_TAC (14-9)(POP_ASSUM MP_TAC)
10364 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10365 THEN POP_ASSUM MP_TAC
10366 THEN MRESA_TAC th[`i:num`])
10367 ;
10368
10369 MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
10370 THEN RESA_TAC
10371 THEN POP_ASSUM (fun th-> ASM_TAC
10372 THEN MP_TAC th
10373 THEN REPEAT DISCH_TAC
10374 THEN POP_ASSUM MP_TAC)
10375 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
10376 THEN SUBGOAL_THEN`scs_a_v39 s l (SUC l) = dist (w l,(w:num->real^3) (SUC l))`
10377 ASSUME_TAC
10378 ;
10379
10380
10381 ASM_TAC
10382 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10383 THEN REPEAT RESA_TAC
10384 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10385 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
10386 THEN MRESAL1_TAC th`SUC l:num`[ARITH_RULE`4 MOD 4=0`])
10387 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
10388 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
10389 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
10390 THEN MRESAL1_TAC th`SUC l:num`[ARITH_RULE`4 MOD 4=0`])
10391 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
10392 ;
10393
10394 REPLICATE_TAC (54-26) (POP_ASSUM MP_TAC)
10395 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10396 THEN MRESA_TAC th[`l:num`;`i:num`])
10397 ;
10398
10399 REPLICATE_TAC (55-44) (POP_ASSUM MP_TAC)
10400 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10401 THEN MP_TAC th)
10402 THEN REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
10403 THEN REAL_ARITH_TAC
10404 ;
10405
10406 ASM_REWRITE_TAC[]
10407 ;
10408
10409 REPLICATE_TAC (23-5)(POP_ASSUM MP_TAC)
10410 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10411 THEN POP_ASSUM MP_TAC
10412 THEN MP_TAC th
10413 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
10414 THEN ASSUME_TAC th
10415 THEN STRIP_TAC)
10416 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
10417 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
10418 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
10419 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
10420 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
10421 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
10422
10423
10424 REPLICATE_TAC (35-22)(POP_ASSUM MP_TAC)
10425 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10426 THEN MP_TAC th
10427 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
10428 THEN REPEAT RESA_TAC)
10429 ;
10430
10431 SUBGOAL_THEN`(w:num->real^3) l IN V` ASSUME_TAC;
10432
10433
10434 EXPAND_TAC"V"
10435 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
10436 THEN EXISTS_TAC`l:num`
10437 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
10438
10439
10440 SUBGOAL_THEN`(w:num->real^3) (SUC l) IN V` ASSUME_TAC;
10441
10442
10443 EXPAND_TAC"V"
10444 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
10445 THEN EXISTS_TAC`SUC l:num`
10446 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
10447
10448 SUBGOAL_THEN`(w:num->real^3) l IN ball_annulus` ASSUME_TAC;
10449
10450
10451 REPLICATE_TAC (38-22)(POP_ASSUM MP_TAC)
10452 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10453 THEN MP_TAC th
10454 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
10455 THEN REPEAT RESA_TAC)
10456 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
10457 THEN EXISTS_TAC`V:real^3->bool`
10458 THEN ASM_REWRITE_TAC[];
10459
10460
10461
10462 SUBGOAL_THEN`(w:num->real^3) (SUC l) IN ball_annulus` ASSUME_TAC;
10463
10464
10465 REPLICATE_TAC (39-22)(POP_ASSUM MP_TAC)
10466 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10467 THEN MP_TAC th
10468 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
10469 THEN REPEAT RESA_TAC)
10470 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
10471 THEN EXISTS_TAC`V:real^3->bool`
10472 THEN ASM_REWRITE_TAC[];
10473
10474
10475 MP_TAC(REAL_ARITH`scs_a_v39 s l (l + k - 1) < dist ((w:num->real^3) l,w (l + k - 1))\/ scs_a_v39 s l (l + k - 1) >= dist (w l,w (l + k - 1))`)
10476 THEN RESA_TAC;
10477
10478
10479 SUBGOAL_THEN(`!i. ~(l MOD k = i MOD k) /\
10480           ~(SUC l MOD k = i MOD k)
10481           ==> scs_a_v39 s l i < dist ((w:num->real^3) l,(w:num->real^3) i)`)ASSUME_TAC;
10482
10483 GEN_TAC
10484 THEN MP_TAC(SET_RULE`(l MOD k = SUC i' MOD k)\/ ~(l MOD k = SUC i' MOD k)`)
10485 THEN RESA_TAC;
10486
10487 MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i':num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
10488 THEN POP_ASSUM(fun th-> ASSUME_TAC(SYM th))
10489 THEN ASM_TAC
10490 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10491 THEN REPEAT RESA_TAC
10492 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10493 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l+k-1:num`[ARITH_RULE`4 MOD 4=0`]
10494 THEN MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
10495 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
10496 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
10497 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l+k-1:num`[ARITH_RULE`4 MOD 4=0`]
10498 THEN MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
10499 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
10500 THEN ASM_REWRITE_TAC[]
10501 ;
10502
10503
10504 REPLICATE_TAC (42-9)(POP_ASSUM MP_TAC)
10505 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10506 THEN MRESA_TAC th[`i':num`])
10507 ;
10508
10509
10510
10511
10512
10513
10514 ABBREV_TAC`v2= (w:num->real^3) l`
10515 THEN ABBREV_TAC`v1= (w:num->real^3) (SUC l)`
10516 THEN ABBREV_TAC`x1=norm (v1:real^3) pow 2`
10517 THEN ABBREV_TAC`x2=norm (v2:real^3) pow 2`
10518 THEN ABBREV_TAC`x6=norm (v1-v2:real^3) pow 2`
10519 THEN ABBREV_TAC`a= -- &1`
10520 THEN SUBGOAL_THEN`((v2,v1):real^3#real^3) IN FF`ASSUME_TAC
10521 ;
10522
10523
10524 EXPAND_TAC"FF"
10525 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
10526 THEN EXISTS_TAC`l:num`
10527 THEN ASM_REWRITE_TAC[SET_RULE`(a:num) IN (:num)`];
10528
10529 MP_TAC Local_lemmas.CVLF_LF_F
10530 THEN RESA_TAC
10531 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,v1):real^3#real^3`]
10532 THEN POP_ASSUM MP_TAC
10533 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
10534 THEN STRIP_TAC
10535 THEN MP_TAC NORM_POS_COLLINEAR
10536 THEN RESA_TAC
10537 THEN MP_TAC V3_DEFOR_IN_BALL_ANNULUS_DEFORMATION
10538 THEN RESA_TAC
10539 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_COM_SUC
10540 THEN RESA_TAC
10541 THEN MP_TAC UPS_X_POS_SEG
10542 THEN RESA_TAC
10543 THEN ASM_TAC
10544 THEN REPLICATE_TAC (4)(STRIP_TAC)
10545 THEN ASM_REWRITE_TAC[]
10546 THEN REPEAT DISCH_TAC
10547 THEN POP_ASSUM MP_TAC
10548 THEN MP_TAC DEFORMATION_DIST_LE_BLL_V3_DEFOR_COM
10549 THEN RESA_TAC
10550 THEN MP_TAC V3_DEFOR_DEFORMATION_CONVEX_LOCAL_FAN_V1
10551 THEN RESA_TAC
10552 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`])
10553 THEN POP_ASSUM MP_TAC
10554 THEN MATCH_MP_TAC(SET_RULE`(B==> A==>C)==>((A==>B)==> A==>C)`)
10555 THEN STRIP_TAC
10556 THEN ABBREV_TAC`e1=(min (min (min (min e e') e'') e''')e'''') / &2`
10557 THEN MP_TAC(REAL_ARITH`e1=(min (min (min (min e e') e'') e''')e'''') / &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''/\ &0< e''''==> &0<e1/\ e1< e/\ e1<e'/\ e1<e''/\ e1<e'''/\ e1<e''''`)
10558 THEN RESA_TAC
10559 THEN SUBGOAL_THEN`!t. &0 < t /\ t < e1
10560 ==> BBs_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) (t) )` ASSUME_TAC;
10561
10562
10563 REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
10564 THEN REPEAT STRIP_TAC;
10565
10566
10567 ASM_REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;ww_defor]
10568 THEN REPEAT RESA_TAC
10569 THEN MP_TAC(SET_RULE`((w:num->real^3) x' = v2)\/ ~(w x' = v2)`)
10570 THEN RESA_TAC;
10571
10572
10573 MP_TAC(REAL_ARITH`t< e1/\ e1< e==> t< e`)
10574 THEN RESA_TAC
10575 ;
10576
10577 REPLICATE_TAC (80-59)(POP_ASSUM MP_TAC)
10578 THEN POP_ASSUM(fun th-> 
10579 REPEAT STRIP_TAC
10580 THEN MRESA_TAC th[`t:real`])
10581 ;
10582
10583
10584
10585 ASM_REWRITE_TAC[v3_defor_v4]
10586 ;
10587
10588 REPLICATE_TAC (79-24)(POP_ASSUM MP_TAC)
10589 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10590 THEN MP_TAC th
10591 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
10592 THEN REPEAT RESA_TAC)
10593 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
10594 THEN EXISTS_TAC`V:real^3->bool`
10595 THEN ASM_REWRITE_TAC[]
10596 THEN EXPAND_TAC"V"
10597 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
10598 THEN EXISTS_TAC`x':num`
10599 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
10600 ;
10601
10602
10603 ASM_TAC
10604 THEN REPLICATE_TAC 5 (STRIP_TAC)
10605 THEN MP_TAC(ARITH_RULE`3< k==> ~(k<=3)`)
10606 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;periodic;ww_defor]
10607 THEN REPEAT RESA_TAC;
10608
10609
10610 (****scs_a *****)
10611
10612 ASM_REWRITE_TAC[v3_defor_v4]
10613 THEN MP_TAC(SET_RULE`(w:num->real^3) i' =w l \/ ~(w i' = w l)`)
10614 THEN RESA_TAC;
10615
10616
10617 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
10618 THEN RESA_TAC;
10619
10620
10621
10622
10623 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
10624 THEN ASM_TAC
10625 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10626 THEN REPEAT RESA_TAC
10627 THEN POP_ASSUM MP_TAC
10628 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10629 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
10630 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
10631 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
10632 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
10633 THEN STRIP_TAC
10634 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i' MOD k`;`j MOD k`])
10635 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
10636 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
10637 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i' MOD k)`][ARITH_RULE`~(4=0)`;periodic]
10638 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
10639 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE]);
10640
10641
10642
10643
10644
10645
10646
10647
10648 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
10649 THEN ASM_TAC
10650 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10651 THEN REPEAT RESA_TAC
10652 THEN POP_ASSUM MP_TAC
10653 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10654 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
10655 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
10656 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10657 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
10658 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
10659 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
10660 THEN STRIP_TAC
10661 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i' MOD k`;`l MOD k`])
10662 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
10663 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
10664 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
10665 THEN MP_TAC(SET_RULE`j MOD k = l MOD k==> (w:num->real^3)(j MOD k)=(w:num->real^3)(l MOD k)`)
10666 THEN RESA_TAC
10667 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
10668 THEN RESA_TAC
10669 ;
10670
10671 REPLICATE_TAC (111-41) (POP_ASSUM MP_TAC)
10672 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10673 THEN MP_TAC th)
10674 THEN MP_TAC(SET_RULE`j MOD k=SUC l MOD k\/ ~(SUC l MOD k = j MOD k)`)
10675 THEN RESA_TAC
10676 ;
10677
10678
10679 REPLICATE_TAC (108-97) (POP_ASSUM MP_TAC)
10680 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10681 THEN MP_TAC th)
10682 THEN RESA_TAC
10683 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
10684 THEN POP_ASSUM MP_TAC
10685 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (l  MOD k)`][ARITH_RULE`~(4=0)`;periodic]
10686 THEN POP_ASSUM (fun th-> MRESA1_TAC th`SUC l:num`
10687 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
10688 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
10689 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (SUC l)`][ARITH_RULE`~(4=0)`;periodic]
10690 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10691 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
10692 ;
10693
10694 REPLICATE_TAC (111-66) (POP_ASSUM MP_TAC)
10695 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10696 THEN MP_TAC th)
10697 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10698 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
10699 THEN MRESAL1_TAC th`SUC l:num`[ARITH_RULE`4 MOD 4=0`])
10700 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th]) 
10701 THEN RESA_TAC
10702 ;
10703
10704 REPLICATE_TAC (113-82) (POP_ASSUM MP_TAC)
10705 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10706 THEN MP_TAC(REAL_ARITH`e1< e''/\  t< e1/\ &0<t==> --e''<t/\ t< e''`)
10707 THEN RESA_TAC
10708 THEN MRESA_TAC th[`t:real`])
10709 THEN MRESAL_TAC(GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`a:real`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`v2:real^3`;`v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)`;`v1:real^3`;`x6:real`]
10710 [SET_RULE`a IN{a,b}`;v3_defor_v1]
10711 THEN POP_ASSUM MP_TAC
10712 THEN REWRITE_TAC[GSYM v3_defor_v1;dist;REAL_ARITH`a<=b<=> b>=a`;NORM_GE_SQUARE]
10713 THEN REWRITE_TAC[DOT_SQUARE_NORM;GSYM dist]
10714 THEN ONCE_REWRITE_TAC[DIST_SYM]
10715 THEN ASM_REWRITE_TAC[dist]
10716 THEN RESA_TAC
10717 THEN REWRITE_TAC[REAL_ARITH`x6>=x6`]
10718 ;
10719
10720 REPLICATE_TAC (111-81) (POP_ASSUM MP_TAC)
10721 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10722 THEN MRESA_TAC th[`t:real`;`j:num`])
10723 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (j)`][ARITH_RULE`~(4=0)`;periodic]
10724 THEN POP_ASSUM (fun th-> MRESA1_TAC th`l:num`)
10725 THEN REMOVE_ASSUM_TAC
10726 THEN POP_ASSUM MP_TAC
10727 THEN REAL_ARITH_TAC;
10728
10729 (****scs_a SYM*****)
10730
10731 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
10732 THEN RESA_TAC;
10733
10734
10735
10736
10737 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
10738 THEN ASM_TAC
10739 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10740 THEN REPEAT RESA_TAC
10741 THEN POP_ASSUM MP_TAC
10742 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10743 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
10744 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
10745 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10746 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
10747 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
10748 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
10749 THEN STRIP_TAC
10750 THEN POP_ASSUM (fun th-> MRESA_TAC th[`j MOD k`;`l MOD k`])
10751 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s i'`][ARITH_RULE`~(4=0)`;periodic]
10752 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
10753 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
10754 THEN MP_TAC(SET_RULE`i' MOD k = l MOD k==> (w:num->real^3)(i' MOD k)=(w:num->real^3)(l MOD k)`)
10755 THEN RESA_TAC
10756 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
10757 THEN RESA_TAC
10758 ;
10759
10760 REPLICATE_TAC (111-41) (POP_ASSUM MP_TAC)
10761 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10762 THEN MP_TAC th)
10763 THEN MP_TAC(SET_RULE`i' MOD k=SUC l MOD k\/ ~(SUC l MOD k = i' MOD k)`)
10764 THEN RESA_TAC
10765 ;
10766
10767
10768 REPLICATE_TAC (108-96) (POP_ASSUM MP_TAC)
10769 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10770 THEN MP_TAC th)
10771 THEN RESA_TAC
10772 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
10773 THEN POP_ASSUM MP_TAC
10774 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (l  MOD k)`][ARITH_RULE`~(4=0)`;periodic]
10775 THEN POP_ASSUM (fun th-> MRESA1_TAC th`SUC l:num`
10776 THEN MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
10777 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
10778 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (SUC l)`][ARITH_RULE`~(4=0)`;periodic]
10779 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10780 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
10781 ;
10782
10783 REPLICATE_TAC (111-66) (POP_ASSUM MP_TAC)
10784 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10785 THEN MP_TAC th)
10786 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10787 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
10788 THEN MRESAL1_TAC th`SUC l:num`[ARITH_RULE`4 MOD 4=0`])
10789 THEN RESA_TAC
10790 ;
10791
10792
10793 REPLICATE_TAC (114-82) (POP_ASSUM MP_TAC)
10794 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10795 THEN MP_TAC(REAL_ARITH`e1< e''/\  t< e1/\ &0<t==> --e''<t/\ t< e''`)
10796 THEN RESA_TAC
10797 THEN MRESA_TAC th[`t:real`])
10798 THEN MRESAL_TAC(GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`a:real`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`v2:real^3`;`v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)`;`v1:real^3`;`x6:real`]
10799 [SET_RULE`a IN{a,b}`;v3_defor_v1]
10800 THEN POP_ASSUM MP_TAC
10801 THEN REWRITE_TAC[GSYM v3_defor_v1;dist;REAL_ARITH`a<=b<=> b>=a`;NORM_GE_SQUARE]
10802 THEN REWRITE_TAC[DOT_SQUARE_NORM;GSYM dist]
10803 THEN ONCE_REWRITE_TAC[DIST_SYM]
10804 THEN ASM_REWRITE_TAC[dist]
10805 THEN RESA_TAC
10806 THEN REWRITE_TAC[DOT_SQUARE_NORM;GSYM dist]
10807 THEN ONCE_REWRITE_TAC[DIST_SYM]
10808 THEN ASM_REWRITE_TAC[dist]
10809 THEN REWRITE_TAC[REAL_ARITH`x6>=x6`]
10810 ;
10811
10812 REPLICATE_TAC (111-81) (POP_ASSUM MP_TAC)
10813 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10814 THEN MRESA_TAC th[`t:real`;`i':num`])
10815 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i')`][ARITH_RULE`~(4=0)`;periodic]
10816 THEN POP_ASSUM (fun th-> MRESA1_TAC th`l:num`)
10817 THEN ONCE_REWRITE_TAC[DIST_SYM]
10818 THEN REMOVE_ASSUM_TAC
10819 THEN POP_ASSUM MP_TAC
10820 THEN REAL_ARITH_TAC;
10821
10822
10823 ASM_TAC
10824 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10825 THEN REPEAT RESA_TAC
10826 ;
10827
10828 (***LE scs_b**)
10829
10830
10831
10832 ASM_REWRITE_TAC[v3_defor_v4]
10833 THEN MP_TAC(SET_RULE`(w:num->real^3) i' =w l \/ ~(w i' = w l)`)
10834 THEN RESA_TAC;
10835
10836
10837 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
10838 THEN RESA_TAC;
10839
10840
10841
10842 REWRITE_TAC[DIST_REFL]
10843 THEN ASM_TAC
10844 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10845 THEN REPEAT RESA_TAC
10846 ;
10847
10848 REPLICATE_TAC (99-44) (POP_ASSUM MP_TAC)
10849 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10850 THEN MRESAL_TAC th[`i':num`;`j:num`][DIST_REFL]);
10851
10852
10853
10854
10855 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
10856 THEN ASM_TAC
10857 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10858 THEN REPEAT RESA_TAC
10859 THEN POP_ASSUM MP_TAC
10860 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10861 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
10862 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
10863 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10864 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
10865 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
10866 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
10867 THEN STRIP_TAC
10868 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i' MOD k`;`l MOD k`])
10869 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
10870 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
10871 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
10872 THEN MP_TAC(SET_RULE`j MOD k = l MOD k==> (w:num->real^3)(j MOD k)=(w:num->real^3)(l MOD k)`)
10873 THEN RESA_TAC
10874 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'''==> t< e'''`)
10875 THEN RESA_TAC
10876 ;
10877
10878
10879 REPLICATE_TAC (111-86) (POP_ASSUM MP_TAC)
10880 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10881 THEN MRESAL_TAC th[`t:real`;`j:num`][DIST_REFL])
10882 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
10883 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10884 ;
10885
10886
10887
10888
10889 (***********scs_b SYM**********)
10890
10891
10892 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
10893 THEN RESA_TAC;
10894
10895
10896
10897 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
10898 THEN ASM_TAC
10899 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10900 THEN REPEAT RESA_TAC
10901 THEN POP_ASSUM MP_TAC
10902 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10903 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
10904 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
10905 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10906 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
10907 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
10908 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
10909 THEN STRIP_TAC
10910 THEN POP_ASSUM (fun th-> MRESA_TAC th[`j MOD k`;`l MOD k`])
10911 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s i'`][ARITH_RULE`~(4=0)`;periodic]
10912 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
10913 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
10914 THEN MP_TAC(SET_RULE`i' MOD k = l MOD k==> (w:num->real^3)(i' MOD k)=(w:num->real^3)(l MOD k)`)
10915 THEN RESA_TAC
10916 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'''==> t< e'''`)
10917 THEN RESA_TAC
10918 ;
10919
10920
10921 REPLICATE_TAC (111-86) (POP_ASSUM MP_TAC)
10922 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10923 THEN MRESAL_TAC th[`t:real`;`i':num`][DIST_REFL])
10924 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s i'`][ARITH_RULE`~(4=0)`;periodic]
10925 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10926 THEN ONCE_REWRITE_TAC[DIST_SYM]
10927 THEN ASM_REWRITE_TAC[]
10928 ;
10929
10930
10931
10932 ASM_TAC
10933 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10934 THEN REPEAT RESA_TAC
10935 ;
10936
10937
10938 (*************convex_local_fan**************)
10939
10940
10941
10942 ASM_REWRITE_TAC[]
10943 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''''/\ &0< t/\ &0< e''''==> t< e''''/\ --e''''< t`)
10944 THEN RESA_TAC
10945 THEN REPLICATE_TAC (78-67) (POP_ASSUM MP_TAC)
10946 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10947 THEN MRESA_TAC th[`t:real`;])
10948 ;
10949
10950
10951
10952
10953 MP_TAC TAUSTAR_V3_DEFOR
10954 THEN RESA_TAC
10955 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`])
10956 THEN POP_ASSUM MP_TAC
10957 THEN ABBREV_TAC`e2= (min e1 e''''')/ &2`
10958 THEN MP_TAC(REAL_ARITH`e2= (min e1 e''''')/ &2 /\ &0< e1/\ &0< e'''''
10959 ==> &0< e2/\ e2< e1/\ e2< e'''''`)
10960 THEN RESA_TAC
10961 THEN REPLICATE_TAC (80-75)(POP_ASSUM MP_TAC)
10962 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10963 THEN MRESA_TAC th[`e2:real`])
10964 THEN POP_ASSUM MP_TAC
10965 THEN REMOVE_ASSUM_TAC
10966 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10967 THEN MRESA_TAC th[`e2:real`])
10968 THEN REPLICATE_TAC (81-25)(POP_ASSUM MP_TAC)
10969 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10970 THEN MRESA_TAC th[`(\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) e2)`])
10971 THEN REPLICATE_TAC (2)(POP_ASSUM MP_TAC)
10972 THEN REAL_ARITH_TAC
10973 ;
10974
10975 (*********************)
10976
10977 ASM_TAC
10978 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10979 THEN REPEAT RESA_TAC
10980 THEN REPLICATE_TAC (65-44)(POP_ASSUM MP_TAC)
10981 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10982 THEN MRESA_TAC th[`l:num`;`l+k-1`])
10983 THEN REMOVE_ASSUM_TAC
10984 THEN POP_ASSUM MP_TAC
10985 THEN REMOVE_ASSUM_TAC
10986 THEN POP_ASSUM MP_TAC
10987 THEN REAL_ARITH_TAC  ;
10988
10989
10990
10991 (*************CASE TWO****************)
10992
10993 MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
10994 THEN RESA_TAC
10995 THEN POP_ASSUM (fun th-> ASM_TAC
10996 THEN MP_TAC th
10997 THEN REPEAT DISCH_TAC
10998 THEN POP_ASSUM MP_TAC)
10999 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
11000 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
11001 THEN SUBGOAL_THEN`scs_a_v39 s l (l+k-1) = dist (w l,(w:num->real^3) (l+k-1))`
11002 ASSUME_TAC
11003 ;
11004
11005
11006 ASM_TAC
11007 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11008 THEN REPEAT RESA_TAC
11009 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11010 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
11011 THEN MRESAL1_TAC th`l+k-1:num`[ARITH_RULE`4 MOD 4=0`])
11012 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
11013 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
11014 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
11015 THEN MRESAL1_TAC th`l+k-1:num`[ARITH_RULE`4 MOD 4=0`])
11016 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
11017 ;
11018
11019 REPLICATE_TAC (55-26) (POP_ASSUM MP_TAC)
11020 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11021 THEN MRESA_TAC th[`l:num`;`i:num`])
11022 ;
11023
11024
11025 REPLICATE_TAC (56-44) (POP_ASSUM MP_TAC)
11026 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11027 THEN MP_TAC th)
11028 THEN REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
11029 THEN REAL_ARITH_TAC
11030 ;
11031
11032 ASM_REWRITE_TAC[]
11033 ;
11034
11035
11036 REPLICATE_TAC (24-5)(POP_ASSUM MP_TAC)
11037 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11038 THEN POP_ASSUM MP_TAC
11039 THEN MP_TAC th
11040 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
11041 THEN ASSUME_TAC th
11042 THEN STRIP_TAC)
11043 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
11044 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
11045 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
11046 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
11047 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
11048 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
11049
11050
11051 REPLICATE_TAC (35-22)(POP_ASSUM MP_TAC)
11052 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11053 THEN MP_TAC th
11054 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
11055 THEN REPEAT RESA_TAC)
11056 ;
11057
11058 SUBGOAL_THEN`(w:num->real^3) l IN V` ASSUME_TAC;
11059
11060
11061 EXPAND_TAC"V"
11062 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
11063 THEN EXISTS_TAC`l:num`
11064 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
11065
11066
11067 SUBGOAL_THEN`(w:num->real^3) (l+k-1) IN V` ASSUME_TAC;
11068
11069
11070 EXPAND_TAC"V"
11071 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
11072 THEN EXISTS_TAC`l+k-1:num`
11073 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
11074
11075 SUBGOAL_THEN`(w:num->real^3) l IN ball_annulus` ASSUME_TAC;
11076
11077
11078 REPLICATE_TAC (38-22)(POP_ASSUM MP_TAC)
11079 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11080 THEN MP_TAC th
11081 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
11082 THEN REPEAT RESA_TAC)
11083 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
11084 THEN EXISTS_TAC`V:real^3->bool`
11085 THEN ASM_REWRITE_TAC[];
11086
11087
11088
11089 SUBGOAL_THEN`(w:num->real^3) (l+k-1) IN ball_annulus` ASSUME_TAC;
11090
11091
11092 REPLICATE_TAC (39-22)(POP_ASSUM MP_TAC)
11093 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11094 THEN MP_TAC th
11095 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
11096 THEN REPEAT RESA_TAC)
11097 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
11098 THEN EXISTS_TAC`V:real^3->bool`
11099 THEN ASM_REWRITE_TAC[];
11100
11101
11102 MP_TAC(REAL_ARITH`scs_a_v39 s l (SUC l) < dist ((w:num->real^3) l,w (SUC l))\/ scs_a_v39 s l (SUC l) >= dist (w l,w (SUC l))`)
11103 THEN RESA_TAC;
11104
11105
11106
11107
11108 SUBGOAL_THEN(`!i. ~(l MOD k = i MOD k) /\
11109           ~(l MOD k = SUC i MOD k)
11110           ==> scs_a_v39 s l i < dist ((w:num->real^3) l,(w:num->real^3) i)`)ASSUME_TAC;
11111
11112 GEN_TAC
11113 THEN MP_TAC(SET_RULE`(SUC l MOD k = i' MOD k)\/ ~(SUC l MOD k = i' MOD k)`)
11114 THEN RESA_TAC;
11115
11116
11117 ASM_TAC
11118 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11119 THEN REPEAT RESA_TAC
11120 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11121 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`SUC l:num`[ARITH_RULE`4 MOD 4=0`]
11122 THEN MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
11123 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
11124 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
11125 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`SUC l:num`[ARITH_RULE`4 MOD 4=0`]
11126 THEN MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
11127 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
11128 THEN ASM_REWRITE_TAC[]
11129 ;
11130
11131
11132
11133
11134 REPLICATE_TAC (45-11)(POP_ASSUM MP_TAC)
11135 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11136 THEN MRESA_TAC th[`i':num`])
11137 ;
11138
11139
11140
11141
11142 ASM_TAC
11143 THEN REPLICATE_TAC (45)(RESA_TAC)
11144 THEN STRIP_TAC;
11145
11146
11147 ABBREV_TAC`v2= (w:num->real^3) l`
11148 THEN ABBREV_TAC`v1= (w:num->real^3) (l+k-1)`
11149 THEN ABBREV_TAC`x1=norm (v1:real^3) pow 2`
11150 THEN ABBREV_TAC`x2=norm (v2:real^3) pow 2`
11151 THEN ABBREV_TAC`x6=norm (v1-v2:real^3) pow 2`
11152 THEN ABBREV_TAC`a= -- &1`
11153 THEN SUBGOAL_THEN`((v1,v2):real^3#real^3) IN FF`ASSUME_TAC
11154 ;
11155
11156
11157 EXPAND_TAC"FF"
11158 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
11159 THEN EXISTS_TAC`l+k-1:num`
11160 THEN ASM_SIMP_TAC[SET_RULE`(a:num) IN (:num)`;EQ_W_L_IN_BBS]
11161 THEN MP_TAC EQ_W_L_IN_BBS
11162 THEN RESA_TAC;
11163
11164
11165
11166 MP_TAC Local_lemmas.CVLF_LF_F
11167 THEN RESA_TAC
11168 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v1,v2):real^3#real^3`]
11169 THEN MP_TAC NORM_POS_COLLINEAR
11170 THEN RESA_TAC
11171 THEN MP_TAC V3_DEFOR_IN_BALL_ANNULUS_DEFORMATION
11172 THEN RESA_TAC
11173 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_COM_SUC_TWO_CASES
11174 THEN RESA_TAC
11175 THEN MP_TAC UPS_X_POS_SEG
11176 THEN RESA_TAC
11177 THEN ASM_TAC
11178 THEN REPLICATE_TAC (4)(STRIP_TAC)
11179 THEN ASM_REWRITE_TAC[]
11180 THEN REPEAT DISCH_TAC
11181 THEN POP_ASSUM MP_TAC
11182 THEN MP_TAC DEFORMATION_DIST_LE_BLL_V3_DEFOR_COM_TWO_CASES
11183 THEN RESA_TAC
11184 THEN MP_TAC V3_DEFOR_DEFORMATION_CONVEX_LOCAL_FAN_V1_TWO_CASES
11185 THEN RESA_TAC
11186 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`])
11187 THEN POP_ASSUM MP_TAC
11188 THEN MATCH_MP_TAC(SET_RULE`(B==> A==>C)==>((A==>B)==> A==>C)`)
11189 THEN STRIP_TAC
11190 THEN ABBREV_TAC`e1=(min (min (min (min e e') e'') e''')e'''') / &2`
11191 THEN MP_TAC(REAL_ARITH`e1=(min (min (min (min e e') e'') e''')e'''') / &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''/\ &0< e''''==> &0<e1/\ e1< e/\ e1<e'/\ e1<e''/\ e1<e'''/\ e1<e''''`)
11192 THEN RESA_TAC
11193 THEN SUBGOAL_THEN`!t. &0 < t /\ t < e1
11194 ==> BBs_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) (t) )` ASSUME_TAC;
11195
11196
11197
11198
11199
11200 REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
11201 THEN REPEAT STRIP_TAC;
11202
11203
11204 ASM_REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;ww_defor]
11205 THEN REPEAT RESA_TAC
11206 THEN MP_TAC(SET_RULE`((w:num->real^3) x' = v2)\/ ~(w x' = v2)`)
11207 THEN RESA_TAC;
11208
11209
11210 MP_TAC(REAL_ARITH`t< e1/\ e1< e==> t< e`)
11211 THEN RESA_TAC
11212 ;
11213
11214 REPLICATE_TAC (80-59)(POP_ASSUM MP_TAC)
11215 THEN POP_ASSUM(fun th-> 
11216 REPEAT STRIP_TAC
11217 THEN MRESA_TAC th[`t:real`])
11218 ;
11219
11220
11221
11222 ASM_REWRITE_TAC[v3_defor_v4]
11223 ;
11224
11225 REPLICATE_TAC (79-24)(POP_ASSUM MP_TAC)
11226 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11227 THEN MP_TAC th
11228 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
11229 THEN REPEAT RESA_TAC)
11230 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
11231 THEN EXISTS_TAC`V:real^3->bool`
11232 THEN ASM_REWRITE_TAC[]
11233 THEN EXPAND_TAC"V"
11234 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
11235 THEN EXISTS_TAC`x':num`
11236 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
11237 ;
11238
11239
11240 ASM_TAC
11241 THEN REPLICATE_TAC 5 (STRIP_TAC)
11242 THEN MP_TAC(ARITH_RULE`3< k==> ~(k<=3)`)
11243 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;periodic;ww_defor]
11244 THEN REPEAT RESA_TAC;
11245
11246
11247 (****scs_a *****)
11248
11249 ASM_REWRITE_TAC[v3_defor_v4]
11250 THEN MP_TAC(SET_RULE`(w:num->real^3) i' =w l \/ ~(w i' = w l)`)
11251 THEN RESA_TAC;
11252
11253
11254 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
11255 THEN RESA_TAC;
11256
11257
11258
11259
11260 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
11261 THEN ASM_TAC
11262 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11263 THEN REPEAT RESA_TAC
11264 THEN POP_ASSUM MP_TAC
11265 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11266 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
11267 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
11268 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
11269 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
11270 THEN STRIP_TAC
11271 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i' MOD k`;`j MOD k`])
11272 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
11273 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
11274 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i' MOD k)`][ARITH_RULE`~(4=0)`;periodic]
11275 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
11276 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE]);
11277
11278
11279
11280
11281
11282
11283
11284
11285 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
11286 THEN ASM_TAC
11287 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11288 THEN REPEAT RESA_TAC
11289 THEN POP_ASSUM MP_TAC
11290 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11291 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
11292 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
11293 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
11294 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
11295 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
11296 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
11297 THEN STRIP_TAC
11298 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i' MOD k`;`l MOD k`])
11299 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
11300 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
11301 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
11302 THEN MP_TAC(SET_RULE`j MOD k = l MOD k==> (w:num->real^3)(j MOD k)=(w:num->real^3)(l MOD k)`)
11303 THEN RESA_TAC
11304 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
11305 THEN RESA_TAC
11306 ;
11307
11308 REPLICATE_TAC (111-41) (POP_ASSUM MP_TAC)
11309 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11310 THEN MP_TAC th)
11311 THEN MP_TAC(SET_RULE`SUC j MOD k= l MOD k\/ ~(l MOD k = SUC j MOD k)`)
11312 THEN RESA_TAC
11313 ;
11314
11315
11316 MRESAL_TAC Hdplygy.MOD_EQ_MOD[`j:num`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
11317 ;
11318
11319
11320 REPLICATE_TAC (109-97) (POP_ASSUM MP_TAC)
11321 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11322 THEN MP_TAC th)
11323 THEN RESA_TAC
11324 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
11325 THEN POP_ASSUM MP_TAC
11326 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (l  MOD k)`][ARITH_RULE`~(4=0)`;periodic]
11327 THEN POP_ASSUM (fun th-> MRESA1_TAC th`l+k-1:num`
11328 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
11329 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
11330 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (l+k-1)`][ARITH_RULE`~(4=0)`;periodic]
11331 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`] THEN  MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
11332 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
11333 THEN REMOVE_ASSUM_TAC;
11334
11335 REPLICATE_TAC (112-66) (POP_ASSUM MP_TAC)
11336 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11337 THEN MP_TAC th)
11338 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11339 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
11340 THEN MRESAL1_TAC th`l+k-1:num`[ARITH_RULE`4 MOD 4=0`])
11341 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th]) 
11342 THEN RESA_TAC
11343 ;
11344
11345 REPLICATE_TAC (114-82) (POP_ASSUM MP_TAC)
11346 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11347 THEN MP_TAC(REAL_ARITH`e1< e''/\  t< e1/\ &0<t==> --e''<t/\ t< e''`)
11348 THEN RESA_TAC
11349 THEN MRESA_TAC th[`t:real`])
11350 THEN MRESAL_TAC(GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`a:real`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`v2:real^3`;`v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)`;`v1:real^3`;`x6:real`]
11351 [SET_RULE`a IN{a,b}`;v3_defor_v1]
11352 THEN POP_ASSUM MP_TAC
11353 THEN REWRITE_TAC[GSYM v3_defor_v1;dist;REAL_ARITH`a<=b<=> b>=a`;NORM_GE_SQUARE]
11354 THEN REWRITE_TAC[DOT_SQUARE_NORM;GSYM dist]
11355 THEN ONCE_REWRITE_TAC[DIST_SYM]
11356 THEN ASM_REWRITE_TAC[dist]
11357 THEN RESA_TAC
11358 THEN REWRITE_TAC[REAL_ARITH`x6>=x6`]
11359 ;
11360
11361
11362 REPLICATE_TAC (111-81) (POP_ASSUM MP_TAC)
11363 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11364 THEN MRESA_TAC th[`t:real`;`j:num`])
11365 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (j)`][ARITH_RULE`~(4=0)`;periodic]
11366 THEN POP_ASSUM (fun th-> MRESA1_TAC th`SUC i:num` THEN MRESA1_TAC th`l:num`)
11367 THEN REMOVE_ASSUM_TAC
11368 THEN REMOVE_ASSUM_TAC
11369 THEN POP_ASSUM MP_TAC
11370 THEN REAL_ARITH_TAC;
11371
11372 (****scs_a SYM*****)
11373
11374 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
11375 THEN RESA_TAC;
11376
11377
11378
11379
11380 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
11381 THEN ASM_TAC
11382 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11383 THEN REPEAT RESA_TAC
11384 THEN POP_ASSUM MP_TAC
11385 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11386 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
11387 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
11388 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
11389 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
11390 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
11391 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
11392 THEN STRIP_TAC
11393 THEN POP_ASSUM (fun th-> MRESA_TAC th[`j MOD k`;`l MOD k`])
11394 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s i'`][ARITH_RULE`~(4=0)`;periodic]
11395 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
11396 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
11397 THEN MP_TAC(SET_RULE`i' MOD k = l MOD k==> (w:num->real^3)(i' MOD k)=(w:num->real^3)(l MOD k)`)
11398 THEN RESA_TAC
11399 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
11400 THEN RESA_TAC
11401 ;
11402
11403 REPLICATE_TAC (111-41) (POP_ASSUM MP_TAC)
11404 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11405 THEN MP_TAC th)
11406 THEN MP_TAC(SET_RULE`SUC i' MOD k= l MOD k\/ ~(l MOD k = SUC i' MOD k)`)
11407 THEN RESA_TAC
11408 ;
11409
11410 MRESAL_TAC Hdplygy.MOD_EQ_MOD[`i':num`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
11411 ;
11412
11413
11414 REPLICATE_TAC (109-96) (POP_ASSUM MP_TAC)
11415 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11416 THEN MP_TAC th)
11417 THEN RESA_TAC
11418 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
11419 THEN POP_ASSUM MP_TAC
11420 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (l  MOD k)`][ARITH_RULE`~(4=0)`;periodic]
11421 THEN POP_ASSUM (fun th-> MRESA1_TAC th`l+k-1:num`
11422 THEN MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
11423 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
11424 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (l+k-1)`][ARITH_RULE`~(4=0)`;periodic]
11425 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`] THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
11426 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
11427 THEN REMOVE_ASSUM_TAC;
11428
11429 REPLICATE_TAC (112-66) (POP_ASSUM MP_TAC)
11430 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11431 THEN MP_TAC th)
11432 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11433 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
11434 THEN MRESAL1_TAC th`l+k-1:num`[ARITH_RULE`4 MOD 4=0`])
11435 THEN RESA_TAC
11436 ;
11437
11438
11439 REPLICATE_TAC (115-82) (POP_ASSUM MP_TAC)
11440 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11441 THEN MP_TAC(REAL_ARITH`e1< e''/\  t< e1/\ &0<t==> --e''<t/\ t< e''`)
11442 THEN RESA_TAC
11443 THEN MRESA_TAC th[`t:real`])
11444 THEN MRESAL_TAC(GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`a:real`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`v2:real^3`;`v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)`;`v1:real^3`;`x6:real`]
11445 [SET_RULE`a IN{a,b}`;v3_defor_v1]
11446 THEN POP_ASSUM MP_TAC
11447 THEN REWRITE_TAC[GSYM v3_defor_v1;dist;REAL_ARITH`a<=b<=> b>=a`;NORM_GE_SQUARE]
11448 THEN REWRITE_TAC[DOT_SQUARE_NORM;GSYM dist]
11449 THEN ONCE_REWRITE_TAC[DIST_SYM]
11450 THEN ASM_REWRITE_TAC[dist]
11451 THEN RESA_TAC
11452 THEN REWRITE_TAC[DOT_SQUARE_NORM;GSYM dist]
11453 THEN ONCE_REWRITE_TAC[DIST_SYM]
11454 THEN ASM_REWRITE_TAC[dist]
11455 THEN REWRITE_TAC[REAL_ARITH`x6>=x6`]
11456 ;
11457
11458 REPLICATE_TAC (111-81) (POP_ASSUM MP_TAC)
11459 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11460 THEN MRESA_TAC th[`t:real`;`i':num`])
11461 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i')`][ARITH_RULE`~(4=0)`;periodic]
11462 THEN POP_ASSUM (fun th-> MRESA1_TAC th`SUC i:num` THEN  MRESA1_TAC th`l:num`)
11463 THEN ONCE_REWRITE_TAC[DIST_SYM]
11464 THEN REMOVE_ASSUM_TAC
11465 THEN REMOVE_ASSUM_TAC
11466 THEN POP_ASSUM MP_TAC
11467 THEN REAL_ARITH_TAC;
11468
11469
11470 ASM_TAC
11471 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11472 THEN REPEAT RESA_TAC
11473 ;
11474
11475 (***LE scs_b**)
11476
11477
11478
11479 ASM_REWRITE_TAC[v3_defor_v4]
11480 THEN MP_TAC(SET_RULE`(w:num->real^3) i' =w l \/ ~(w i' = w l)`)
11481 THEN RESA_TAC;
11482
11483
11484 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
11485 THEN RESA_TAC;
11486
11487
11488
11489 REWRITE_TAC[DIST_REFL]
11490 THEN ASM_TAC
11491 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11492 THEN REPEAT RESA_TAC
11493 ;
11494
11495 REPLICATE_TAC (99-44) (POP_ASSUM MP_TAC)
11496 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11497 THEN MRESAL_TAC th[`i':num`;`j:num`][DIST_REFL]);
11498
11499
11500
11501
11502 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
11503 THEN ASM_TAC
11504 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11505 THEN REPEAT RESA_TAC
11506 THEN POP_ASSUM MP_TAC
11507 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11508 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
11509 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
11510 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
11511 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
11512 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
11513 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
11514 THEN STRIP_TAC
11515 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i' MOD k`;`l MOD k`])
11516 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
11517 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
11518 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
11519 THEN MP_TAC(SET_RULE`j MOD k = l MOD k==> (w:num->real^3)(j MOD k)=(w:num->real^3)(l MOD k)`)
11520 THEN RESA_TAC
11521 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'''==> t< e'''`)
11522 THEN RESA_TAC
11523 ;
11524
11525
11526 REPLICATE_TAC (111-86) (POP_ASSUM MP_TAC)
11527 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11528 THEN MRESAL_TAC th[`t:real`;`j:num`][DIST_REFL])
11529 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
11530 THEN POP_ASSUM (fun th-> MRESA_TAC th[`SUC i`] THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
11531 ;
11532
11533
11534
11535
11536 (***********scs_b SYM**********)
11537
11538
11539 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
11540 THEN RESA_TAC;
11541
11542
11543
11544 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
11545 THEN ASM_TAC
11546 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11547 THEN REPEAT RESA_TAC
11548 THEN POP_ASSUM MP_TAC
11549 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11550 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
11551 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
11552 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
11553 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
11554 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
11555 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
11556 THEN STRIP_TAC
11557 THEN POP_ASSUM (fun th-> MRESA_TAC th[`j MOD k`;`l MOD k`])
11558 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s i'`][ARITH_RULE`~(4=0)`;periodic]
11559 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
11560 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
11561 THEN MP_TAC(SET_RULE`i' MOD k = l MOD k==> (w:num->real^3)(i' MOD k)=(w:num->real^3)(l MOD k)`)
11562 THEN RESA_TAC
11563 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'''==> t< e'''`)
11564 THEN RESA_TAC
11565 ;
11566
11567
11568 REPLICATE_TAC (111-86) (POP_ASSUM MP_TAC)
11569 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11570 THEN MRESAL_TAC th[`t:real`;`i':num`][DIST_REFL])
11571 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s i'`][ARITH_RULE`~(4=0)`;periodic]
11572 THEN POP_ASSUM (fun th-> MRESA_TAC th[`SUC i`] THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
11573 THEN ONCE_REWRITE_TAC[DIST_SYM]
11574 THEN ASM_REWRITE_TAC[]
11575 ;
11576
11577
11578
11579 ASM_TAC
11580 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11581 THEN REPEAT RESA_TAC
11582 ;
11583
11584
11585 (*************convex_local_fan**************)
11586
11587
11588
11589 ASM_REWRITE_TAC[]
11590 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''''/\ &0< t/\ &0< e''''==> t< e''''/\ --e''''< t`)
11591 THEN RESA_TAC
11592 THEN REPLICATE_TAC (78-67) (POP_ASSUM MP_TAC)
11593 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11594 THEN MRESA_TAC th[`t:real`;])
11595 ;
11596
11597
11598
11599
11600 MP_TAC TAUSTAR_V3_DEFOR_TWO_CASES
11601 THEN RESA_TAC
11602 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`])
11603 THEN POP_ASSUM MP_TAC
11604 THEN ABBREV_TAC`e2= (min e1 e''''')/ &2`
11605 THEN MP_TAC(REAL_ARITH`e2= (min e1 e''''')/ &2 /\ &0< e1/\ &0< e'''''
11606 ==> &0< e2/\ e2< e1/\ e2< e'''''`)
11607 THEN RESA_TAC
11608 THEN REPLICATE_TAC (80-75)(POP_ASSUM MP_TAC)
11609 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11610 THEN MRESA_TAC th[`e2:real`])
11611 THEN POP_ASSUM MP_TAC
11612 THEN REMOVE_ASSUM_TAC
11613 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11614 THEN MRESA_TAC th[`e2:real`])
11615 THEN REPLICATE_TAC (81-25)(POP_ASSUM MP_TAC)
11616 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11617 THEN MRESA_TAC th[`(\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) e2)`])
11618 THEN REPLICATE_TAC (2)(POP_ASSUM MP_TAC)
11619 THEN REAL_ARITH_TAC
11620 ;
11621
11622
11623 ASM_TAC
11624 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11625 THEN REPEAT RESA_TAC
11626 THEN REPLICATE_TAC (65-44)(POP_ASSUM MP_TAC)
11627 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11628 THEN MRESA_TAC th[`l:num`;`SUC l`])
11629 THEN REMOVE_ASSUM_TAC
11630 THEN POP_ASSUM MP_TAC
11631 THEN REMOVE_ASSUM_TAC
11632 THEN POP_ASSUM MP_TAC
11633 THEN REAL_ARITH_TAC  ;
11634
11635
11636
11637
11638
11639
11640
11641
11642 ]);;
11643
11644
11645
11646
11647  end;;
11648
11649
11650 (*
11651 let check_completeness_claimA_concl = 
11652   Ineq.mk_tplate `\x. scs_arrow_v13 (set_of_list x) 
11653 *)
11654
11655
11656
11657