Update from HH
[Flyspeck/.git] / text_formalization / local / NUXCOEA.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 Nuxcoea = 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 open Imjxphr;;
86
87 (**TATIC CHANGE (need Hales_tactics)**)
88
89 let MRESA_TAC th1 (th: term list) = INTRO_TAC (GEN_ALL th1) th THEN RESA_TAC;;
90
91 let MRESAL_TAC th1 (th: term list) (th2: thm list) =INTRO_TAC (GEN_ALL th1) th THEN ASM_REWRITE_TAC th2 THEN STRIP_TAC THEN ASM_REWRITE_TAC th2;;
92
93
94 let MRESAS_TAC th1 (th: term list) (th2: thm list) =INTRO_TAC (GEN_ALL th1) th THEN ASM_REWRITE_TAC th2 THEN STRIP_TAC THEN ASM_REWRITE_TAC th2
95 THEN POP_ASSUM MP_TAC
96 THEN ASM_SIMP_TAC th2
97 THEN STRIP_TAC
98 THEN ASM_SIMP_TAC th2
99 ;;
100
101
102 let THAYTHE_TAC n (th1: term list) =
103 REPLICATE_TAC n (POP_ASSUM MP_TAC)
104 THEN POP_ASSUM(fun th-> REPLICATE_TAC n DISCH_TAC
105 THEN MRESA_TAC th th1 );;
106
107
108 let THAYTHEL_TAC n (th1: term list) (th2: thm list) =
109 REPLICATE_TAC n (POP_ASSUM MP_TAC)
110 THEN POP_ASSUM(fun th-> REPLICATE_TAC n DISCH_TAC
111 THEN MRESAL_TAC th th1 th2);;
112
113
114 let THAYTHES_TAC n (th1: term list) (th2: thm list) =
115 REPLICATE_TAC n (POP_ASSUM MP_TAC)
116 THEN POP_ASSUM(fun th-> REPLICATE_TAC n DISCH_TAC
117 THEN MRESAS_TAC th th1 th2);;
118
119
120 let THAYTHE_ASM_TAC n (th1: term list) =
121 REPLICATE_TAC n (POP_ASSUM MP_TAC)
122 THEN POP_ASSUM(fun th-> REPLICATE_TAC n DISCH_TAC
123 THEN MRESA_TAC th th1 
124 THEN ASSUME_TAC th);;
125
126
127
128
129 let THAYTHEL_ASM_TAC n (th1: term list) (th2: thm list) =
130 REPLICATE_TAC n (POP_ASSUM MP_TAC)
131 THEN POP_ASSUM(fun th-> REPLICATE_TAC n DISCH_TAC
132 THEN MRESAL_TAC th th1 th2
133 THEN ASSUME_TAC th);;
134
135
136 let DICH_TAC n  =
137 REPLICATE_TAC n (POP_ASSUM MP_TAC)
138 THEN POP_ASSUM(fun th-> REPLICATE_TAC n DISCH_TAC
139 THEN MP_TAC th );;
140
141
142 let MATCH_DICH_TAC n  =
143 REPLICATE_TAC n (POP_ASSUM MP_TAC)
144 THEN POP_ASSUM(fun th-> REPLICATE_TAC n DISCH_TAC
145 THEN MATCH_MP_TAC th );;
146
147
148
149
150 (*************)
151
152 let v3_defor_v5=new_definition`  v3_defor_v5 a x1 x5 x2 v1 v2 v t= v3_defor_v4 a x1 x5 x2 (--v1) (v2 - v1) (v - v1) t + v1`;;
153
154
155
156 let EQ_SUC_K_SUB=prove(`l MOD k = SUC i MOD k /\ 1<k
157 ==> (l + k - 1) MOD k = i MOD k`,
158 STRIP_TAC
159 THEN MP_TAC(ARITH_RULE`1<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l `)
160 THEN RESA_TAC
161 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
162 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]);;
163
164 let EQ_SUC_K_SUB3=prove(`l MOD k = SUC i MOD k /\ 3<k
165 ==> (l + k - 1) MOD k = i MOD k`,
166 STRIP_TAC
167 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l `)
168 THEN RESA_TAC
169 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
170 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]);;
171
172
173
174
175
176
177 let WL_IN_V=prove(`(w:num->real^3) l IN IMAGE w (:num)`,
178 REWRITE_TAC[IMAGE;IN_ELIM_THM]
179 THEN EXISTS_TAC`l:num`
180 THEN ASM_REWRITE_TAC[]
181 THEN SET_TAC[]);;
182
183
184
185 let WL_IN_FF=prove(`((w:num->real^3) l,w (SUC l)) IN IMAGE (\i. w i,w (SUC i)) (:num)`,
186 REWRITE_TAC[IMAGE;IN_ELIM_THM]
187 THEN EXISTS_TAC`l:num`
188 THEN ASM_REWRITE_TAC[]
189 THEN SET_TAC[]);;
190
191
192 let WL_IN_BALL_ANNULUS=prove(`BBs_v39 s w ==>  w l IN ball_annulus`,
193 REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
194 THEN STRIP_TAC
195 THEN ASM_TAC
196 THEN STRIP_TAC
197 THEN REPEAT (STRIP_TAC THEN REMOVE_ASSUM_TAC)
198 THEN MP_TAC WL_IN_V
199 THEN STRIP_TAC
200 THEN MP_TAC(SET_RULE`IMAGE w (:num) SUBSET ball_annulus /\ w l IN IMAGE w (:num)
201 ==> w l IN ball_annulus`)
202 THEN RESA_TAC);;
203
204
205 let NORM_LE_2_IN_BBS=prove(`BBs_v39 s w ==>  &2<= norm (w l)`,
206 STRIP_TAC
207 THEN MP_TAC WL_IN_BALL_ANNULUS
208 THEN ASM_REWRITE_TAC[IN_ELIM_THM;ball_annulus;DIFF;ball;]
209 THEN ONCE_REWRITE_TAC[DIST_SYM]
210 THEN REWRITE_TAC[dist;VECTOR_ARITH`A- vec 0= A`]
211 THEN REAL_ARITH_TAC);;
212
213 let MMS_IMP_BBS=prove(`MMs_v39 s w==> BBs_v39 s w`,
214 REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
215 THEN RESA_TAC);;
216
217 let MMS_IMP_BBPRIME=prove(`MMs_v39 s w==> BBprime_v39 s w`,
218 REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
219 THEN RESA_TAC);;
220
221 let MMS_IMP_BBPRIME2=prove(`MMs_v39 s w==> BBprime2_v39 s w`,
222 REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
223 THEN RESA_TAC);;
224
225 let NORM_LE_2_IN_MMS=prove(`MMs_v39 s w ==>  &2<= norm (w l)`,
226 STRIP_TAC
227 THEN MP_TAC MMS_IMP_BBS
228 THEN ASM_REWRITE_TAC[NORM_LE_2_IN_BBS])
229 ;;
230
231 let CHANGE_A_SCS_MODL=prove(`is_scs_v39 s
232 /\ j MOD (scs_k_v39 s) = j1 MOD (scs_k_v39 s)
233 ==>
234 scs_a_v39 s j l =scs_a_v39 s j1 l`,
235 REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
236 THEN REPEAT RESA_TAC
237 THEN MP_TAC(ARITH_RULE`3<= scs_k_v39 s ==> ~(scs_k_v39 s= 0)`)
238 THEN RESA_TAC
239 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
240 THEN POP_ASSUM(fun th-> MRESA_TAC th[`j:num`] THEN MRESA_TAC th[`j1:num`]));;
241
242
243 let CHANGE_A_SCS_MODR=prove(`is_scs_v39 s
244 /\ j MOD (scs_k_v39 s) = j1 MOD (scs_k_v39 s)
245 ==>
246 scs_a_v39 s l j =scs_a_v39 s l j1`,
247 REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
248 THEN REPEAT RESA_TAC
249 THEN MP_TAC(ARITH_RULE`3<= scs_k_v39 s ==> ~(scs_k_v39 s= 0)`)
250 THEN RESA_TAC
251 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
252 THEN POP_ASSUM(fun th-> MRESA_TAC th[`j:num`] THEN MRESA_TAC th[`j1:num`]));;
253
254
255 let CHANGE_A_SCS_MOD=prove(`is_scs_v39 s
256 /\ j MOD (scs_k_v39 s) = j1 MOD (scs_k_v39 s)
257 /\ l MOD (scs_k_v39 s) = l1 MOD (scs_k_v39 s)
258 ==>
259 scs_a_v39 s l j =scs_a_v39 s l1 j1`,
260 STRIP_TAC
261 THEN MRESA_TAC( GEN_ALL CHANGE_A_SCS_MODR)[`j:num`;`s:scs_v39`;`l:num`;`j1:num`] 
262 THEN MRESA_TAC( GEN_ALL CHANGE_A_SCS_MODL)[`l1:num`;`s:scs_v39`;`l:num`;`j1:num`])
263 ;;
264
265
266
267 let CHANGE_B_SCS_MODL=prove(`is_scs_v39 s
268 /\ j MOD (scs_k_v39 s) = j1 MOD (scs_k_v39 s)
269 ==>
270 scs_b_v39 s j l =scs_b_v39 s j1 l`,
271 REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
272 THEN REPEAT RESA_TAC
273 THEN MP_TAC(ARITH_RULE`3<= scs_k_v39 s ==> ~(scs_k_v39 s= 0)`)
274 THEN RESA_TAC
275 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
276 THEN POP_ASSUM(fun th-> MRESA_TAC th[`j:num`] THEN MRESA_TAC th[`j1:num`]));;
277
278
279 let CHANGE_B_SCS_MODR=prove(`is_scs_v39 s
280 /\ j MOD (scs_k_v39 s) = j1 MOD (scs_k_v39 s)
281 ==>
282 scs_b_v39 s l j =scs_b_v39 s l j1`,
283 REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
284 THEN REPEAT RESA_TAC
285 THEN MP_TAC(ARITH_RULE`3<= scs_k_v39 s ==> ~(scs_k_v39 s= 0)`)
286 THEN RESA_TAC
287 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
288 THEN POP_ASSUM(fun th-> MRESA_TAC th[`j:num`] THEN MRESA_TAC th[`j1:num`]));;
289
290
291 let CHANGE_B_SCS_MOD=prove(`is_scs_v39 s
292 /\ j MOD (scs_k_v39 s) = j1 MOD (scs_k_v39 s)
293 /\ l MOD (scs_k_v39 s) = l1 MOD (scs_k_v39 s)
294 ==>
295 scs_b_v39 s l j =scs_b_v39 s l1 j1`,
296 STRIP_TAC
297 THEN MRESA_TAC( GEN_ALL CHANGE_B_SCS_MODR)[`j:num`;`s:scs_v39`;`l:num`;`j1:num`] 
298 THEN MRESA_TAC( GEN_ALL CHANGE_B_SCS_MODL)[`l1:num`;`s:scs_v39`;`l:num`;`j1:num`])
299 ;;
300
301
302
303 let CHANGE_W_IN_BBS_MOD_LE3=prove(`3<= scs_k_v39 s /\ 
304 BBs_v39 s w
305 /\ j MOD (scs_k_v39 s) = j1 MOD (scs_k_v39 s)
306 ==> (w:num->real^3) j= (w:num->real^3) j1`,
307 REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
308 THEN REPEAT RESA_TAC
309 THEN MP_TAC(ARITH_RULE`3<= scs_k_v39 s ==> ~(scs_k_v39 s= 0)`)
310 THEN RESA_TAC
311 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;periodic]
312 THEN POP_ASSUM(fun th-> MRESA_TAC th[`j:num`] THEN MRESA_TAC th[`j1:num`]));;
313
314
315 let CHANGE_W_IN_BBS_MOD_IS_SCS=prove(`is_scs_v39 s /\ 
316 BBs_v39 s w
317 /\ j MOD (scs_k_v39 s) = j1 MOD (scs_k_v39 s)
318 ==> (w:num->real^3) j= (w:num->real^3) j1`,
319 REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
320 THEN REPEAT RESA_TAC
321 THEN MP_TAC(ARITH_RULE`3<= scs_k_v39 s ==> ~(scs_k_v39 s= 0)`)
322 THEN RESA_TAC
323 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;periodic]
324 THEN POP_ASSUM(fun th-> MRESA_TAC th[`j:num`] THEN MRESA_TAC th[`j1:num`]));;
325
326
327
328
329 let EXPAND_PERIODIC=prove( `BBs_v39 s w ==> w (l + scs_k_v39 s)= w l`,
330 REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic]
331 THEN RESA_TAC);;
332
333
334
335
336
337
338
339 let COLLINEAR_EQ_SUB=prove(`collinear {vec 0, v1, v1 - v2:real^3} <=> collinear {vec 0, v1, v2}`,
340 ASM_REWRITE_TAC[GSYM CROSS_EQ_0;VECTOR_ARITH`A-B=A+(--B):real^3`;CROSS_RADD;CROSS_RNEG;CROSS_REFL]
341 THEN VECTOR_ARITH_TAC);;
342
343 let COLLINEAR_EQ_SUB_NEG=prove(`collinear {vec 0, -- v1, v2 - v1:real^3} <=> collinear {vec 0, v1, v2}`,
344 ASM_REWRITE_TAC[GSYM CROSS_EQ_0;VECTOR_ARITH`A-B=A+(--B):real^3`;CROSS_RADD;CROSS_RNEG;CROSS_REFL;CROSS_LNEG]
345 THEN VECTOR_ARITH_TAC);;
346
347
348
349
350 let DEFORMATION_MK_DEFOR_IN_BALL_ANNULUS=prove(`&0< x1 /\ &0<x2   /\ &0< x5 /\ norm v2= &2  /\
351 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
352 ==>  ?e. &0< e/\ (!t. --e<t/\ t< e==> (v3_defor_v4 a x1 x5 x2 (-- v1) (v2-v1) (v2-v1) t) +v1 IN ball_annulus)`,
353 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`]
354 THEN STRIP_TAC
355 THEN ASM_TAC
356 THEN REPEAT RESA_TAC
357 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`v2:real^3`]
358 THEN MRESAL_TAC(GEN_ALL UPS_X_POS_SEG)[`-- v1:real^3`;`v2-v1:real^3`;`x1:real`;`x2:real`;`x5:real`][COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
359 THEN EXISTS_TAC`e:real`
360 THEN ASM_REWRITE_TAC[v3_defor_v4;]
361 THEN GEN_TAC 
362 THEN POP_ASSUM(fun th-> STRIP_TAC
363 THEN MRESA_TAC th[`t:real`])
364 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`-- &1`;`x5:real`;`x2:real`;`x1:real`;`x5-t:real`;`v2-v1:real^3`;`v3_defor_v1 (-- &1) (-- v1) (v2-v1:real^3) x1 x5 x2 x2 (x5 - t)`;`-- v1:real^3`;`x2:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1;COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3/\ a- -- b=a+b`;NORM_NEG]
365 THEN ASM_REWRITE_TAC[NORM_LE_SQUARE;DOT_SQUARE_NORM]
366 THEN REWRITE_TAC[REAL_ARITH`a<=b<=> b>=a`]
367 THEN ASM_REWRITE_TAC[NORM_GE_SQUARE;DOT_SQUARE_NORM;REAL_ARITH`(&2 <= &0 \/ x2 >= x2)`;h0]
368 THEN REMOVE_ASSUM_TAC
369 THEN EXPAND_TAC"x2"
370 THEN REAL_ARITH_TAC);;
371
372
373
374
375
376
377 let EYYPQDW_CONTINUOUS_LIFT_DIST_ADD=prove(`&0< x1 /\ &0<x2 /\ &0< x3 /\ &0<x4 /\ &0<x5 /\ &0< x6 /\
378 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6
379 /\ a IN {-- &1, &1}
380  /\ &0< ups_x x1 x3 x5
381 ==> 
382 lift o (\x3. dist(v3_defor_v1 a v1 v2 x1 x2 x5 x6 x3+w,v))  continuous atreal (x3)`,
383 REPEAT STRIP_TAC
384 THEN SUBGOAL_THEN`lift o(\x3. dist(v3_defor_v1 a v1 v2 x1 x2 x5 x6 x3 +w,v))=  (lift o (\x. dist(x,v))) o(\x3. v3_defor_v1 a v1 v2 x1 x2 x5 x6 x3+w)`ASSUME_TAC
385 THENL[
386 REWRITE_TAC[o_DEF];
387 ASM_REWRITE_TAC[]
388 THEN MATCH_MP_TAC CONTINUOUS_ATREAL_COMPOSE
389 THEN MP_TAC EYYPQDW_CONTINUOUS_AT_X
390 THEN RESA_TAC
391 THEN RESA_TAC
392 THENL[
393 MATCH_MP_TAC CONTINUOUS_ADD
394 THEN ASM_SIMP_TAC[CONTINUOUS_CONST;lemma30000];
395 MATCH_MP_TAC CONTINUOUS_AT_WITHIN
396 THEN ONCE_REWRITE_TAC[DIST_SYM]
397 THEN ASM_SIMP_TAC[CONTINUOUS_AT_LIFT_DIST]]]);;
398
399
400
401 let EXISTS_SMALL_LE_CONST_ADD=prove(`&0< x1 /\ &0<x2   /\ &0< x5 /\
402 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a = -- &1 /\ c< dist(v2,w)
403 ==>
404 ?e. &0< e /\ (!t. --e<t /\ t<e ==> c<dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w))`,
405 STRIP_TAC
406 THEN MRESAL_TAC(GEN_ALL UPS_X_POS_SEG)[`-- v1:real^3`;`v2-v1:real^3`;`x1:real`;`x2:real`;`x5:real`][COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
407 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`]
408 THEN ASSUME_TAC th)
409 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_ID)[`a:real`;`-- v1:real^3`;`x1:real`;`x2:real`;`x5:real`;`v2-v1:real^3`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`;COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
410 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`)
411 THEN RESA_TAC
412 THEN MRESAL_TAC (GEN_ALL EYYPQDW_CONTINUOUS_LIFT_DIST_ADD)[`x2:real`;`a:real`;`-- v1:real^3`;`v2-v1:real^3`;`x1:real`;`x5:real`;`x2:real`;`x2:real`;`v1:real^3`;`w:real^3`;`x5:real`][SET_RULE`A IN {A, B}`;continuous_atreal;DIST_LIFT;o_DEF;GSYM REAL_ABS_BETWEEN;COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
413 THEN POP_ASSUM (fun th-> MRESA_TAC th[`(dist(v2,w:real^3)- c )/ &2`])
414 THEN POP_ASSUM MP_TAC
415 THEN RESA_TAC
416 THEN EXISTS_TAC`d:real`
417 THEN ASM_REWRITE_TAC[]
418 THEN GEN_TAC
419 THEN POP_ASSUM(fun th-> STRIP_TAC
420 THEN MRESAL_TAC th[`x5-t:real`][REAL_ARITH`x2 - d < x2 - t /\ x2 - t < x2 + d <=> --d<t/\ t<d`;VECTOR_ARITH`a-b+b=a:real^3`])
421 THEN ASM_TAC
422 THEN REAL_ARITH_TAC);;
423
424
425
426
427 let DEFORMATION_DIST_LE_MK_A=prove(
428 `is_scs_v39 s /\
429   MMs_v39 s w /\
430   scs_k_v39 s =k/\
431  3<k /\ w l=v2/\ w (l+k-1) =v1
432 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1
433 /\ 
434   (!i. ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)          ==> scs_a_v39 s l i < dist (v2,w i))
435 ==>   (!i.  ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k) ==> ?e. &0< e/\
436 (!t. --e < t/\ t< e  ==> scs_a_v39 s l i < dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w i)))`,
437 STRIP_TAC 
438 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR_TWO_CASES)[`s:scs_v39`;`w:num->real^3`;`l:num`;`k:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
439 THEN POP_ASSUM MP_TAC
440 THEN REWRITE_TAC[GSYM dist]
441 THEN ONCE_REWRITE_TAC[DIST_SYM]
442 THEN REWRITE_TAC[dist]
443 THEN RESA_TAC
444 THEN REWRITE_TAC[GSYM dist]
445 THEN ONCE_REWRITE_TAC[DIST_SYM]
446 THEN REPEAT STRIP_TAC
447 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST_ADD
448 THEN ASM_REWRITE_TAC[]
449 THEN REPLICATE_TAC (16-10)(POP_ASSUM MP_TAC)
450 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
451 THEN MRESA_TAC th[`i:num`]));;
452
453
454 let DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK=prove_by_refinement(`is_scs_v39 s /\
455   MMs_v39 s w /\
456   scs_k_v39 s =k/\
457  3<k /\ w l=v2/\ w (l+k-1) =v1
458 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1
459 /\ 
460   (!i. ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)          ==> scs_a_v39 s l i < dist (v2,w i))
461 ==>   ?e. &0< e/\
462 (!t i. --e< 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 - v1) x1 x5 x2 x2 (x5 - t) + v1,w i))`,
463 [
464 REPEAT STRIP_TAC
465 THEN MP_TAC DEFORMATION_DIST_LE_MK_A
466 THEN RESA_TAC
467 THEN POP_ASSUM MP_TAC
468 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
469 THEN REWRITE_TAC[SKOLEM_THM]
470 THEN STRIP_TAC
471 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`
472 THEN EXISTS_TAC`e1:real`
473 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;
474
475 MATCH_MP_TAC FINITE_SUBSET
476 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
477 THEN STRIP_TAC;
478
479 MATCH_MP_TAC FINITE_IMAGE
480 THEN REWRITE_TAC[FINITE_NUMSEG];
481
482 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_ELIM_THM]
483 THEN GEN_TAC
484 THEN RESA_TAC
485 THEN EXISTS_TAC`i:num`
486 THEN ASM_REWRITE_TAC[IN_NUMSEG]
487 THEN REPLICATE_TAC (16-12)(POP_ASSUM MP_TAC)
488 THEN ARITH_TAC;
489
490 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)} = {})`ASSUME_TAC;
491
492 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
493 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(l MOD k =0)`)
494 THEN RESA_TAC;
495
496 EXISTS_TAC`(e:num->real)2`
497 THEN EXISTS_TAC`2`
498 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
499 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)`)
500 THEN RESA_TAC
501 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
502 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
503 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
504 THEN MRESA_TAC (GEN_ALL Zithlqn.IMP_SUC_MOD_EQ)[`l:num`;`0:num`;`k:num`];
505
506 MP_TAC(SET_RULE`l MOD k=1\/ ~(l MOD k= 1 )`)
507 THEN RESA_TAC;
508
509 EXISTS_TAC`(e:num->real)3`
510 THEN EXISTS_TAC`3`
511 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
512 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)`)
513 THEN RESA_TAC
514 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
515 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
516 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
517 THEN MRESA_TAC MOD_LT[`3`;`k:num`]
518 THEN MRESA_TAC (GEN_ALL Zithlqn.IMP_SUC_MOD_EQ)[`l:num`;`1:num`;`k:num`];
519
520 EXISTS_TAC`(e:num->real)1`
521 THEN EXISTS_TAC`1`
522 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
523 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)`)
524 THEN RESA_TAC
525 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
526 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
527 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
528 THEN MRESA_TAC MOD_LT[`3`;`k:num`]
529 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l:num`;`0:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`];
530
531 STRIP_TAC;
532
533 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`]
534 THEN REWRITE_TAC[IN_ELIM_THM]
535 THEN REPEAT RESA_TAC
536 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
537 THEN REPLICATE_TAC (20-11) (POP_ASSUM MP_TAC)
538 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
539 THEN MRESA_TAC th[`i:num`]);
540
541 REPEAT STRIP_TAC
542 THEN MRESAL_TAC REAL_LE_INF_FINITE[`{(e:num->real) i|  i < k/\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`;`e1:real`][REAL_ARITH`a<=a`]
543 THEN POP_ASSUM MP_TAC
544 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;
545
546 REWRITE_TAC[IN_ELIM_THM]
547 THEN EXISTS_TAC`i MOD k`
548 THEN ASM_REWRITE_TAC[]
549 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
550 THEN RESA_TAC
551 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
552 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
553 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
554 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1];
555
556 STRIP_TAC
557 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
558 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
559 THEN RESA_TAC
560 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
561 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
562 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
563 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1]
564 THEN REPLICATE_TAC (27-11) (POP_ASSUM MP_TAC)
565 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
566 THEN MRESA_TAC th[`i:num MOD k`])
567 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
568 THEN POP_ASSUM MP_TAC
569 THEN MP_TAC(REAL_ARITH`t < e1/\ e1<=  e (i MOD k)/\ &0 < e (i MOD k)/\ --e1<t
570 ==> t < e (i MOD k)/\ -- e (i MOD k)< t`)
571 THEN RESA_TAC
572 THEN ASM_TAC
573 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
574 THEN REPEAT RESA_TAC
575 THEN POP_ASSUM MP_TAC
576 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
577 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
578 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
579 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])]);;
580
581
582
583 let EXISTS_SMALL_LT_CONST_ADD=prove(`&0< x1 /\ &0<x2   /\ &0< x5 /\
584 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a = -- &1 /\ dist(v2,w)<c
585 ==>
586 ?e. &0< e /\ (!t. --e <t /\ t<e ==> dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w)<c)`,
587 STRIP_TAC
588 THEN MRESAL_TAC(GEN_ALL UPS_X_POS_SEG)[`-- v1:real^3`;`v2-v1:real^3`;`x1:real`;`x2:real`;`x5:real`][COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
589 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`]
590 THEN ASSUME_TAC th)
591 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_ID)[`a:real`;`-- v1:real^3`;`x1:real`;`x2:real`;`x5:real`;`v2-v1:real^3`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`;COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
592 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`)
593 THEN RESA_TAC
594 THEN MRESAL_TAC (GEN_ALL EYYPQDW_CONTINUOUS_LIFT_DIST_ADD)[`x2:real`;`a:real`;`-- v1:real^3`;`v2-v1:real^3`;`x1:real`;`x5:real`;`x2:real`;`x2:real`;`v1:real^3`;`w:real^3`;`x5:real`][SET_RULE`A IN {A, B}`;continuous_atreal;DIST_LIFT;o_DEF;GSYM REAL_ABS_BETWEEN;COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
595 THEN POP_ASSUM (fun th-> MRESA_TAC th[`(c-dist(v2,w:real^3))/ &2`])
596 THEN POP_ASSUM MP_TAC
597 THEN RESA_TAC
598 THEN EXISTS_TAC`d:real`
599 THEN ASM_REWRITE_TAC[]
600 THEN GEN_TAC
601 THEN POP_ASSUM(fun th-> STRIP_TAC
602 THEN MRESAL_TAC th[`x5-t:real`][REAL_ARITH`x2 - d < x2 - t /\ x2 - t < x2 + d <=> --d<t/\ t<d`;VECTOR_ARITH`a-b+b=a:real^3`])
603 THEN ASM_TAC
604 THEN REAL_ARITH_TAC);;
605
606
607
608
609 let DEFORMATION_DIST_LE_V3_DEFOR_B_MK=prove_by_refinement(`  scs_k_v39 s =k/\
610  3<k /\ is_scs_v39 s /\
611   MMs_v39 s w /\
612  w l=v2/\ w (l+k-1) =v1
613 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1
614 /\     (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
615 ==> (!i. scs_diag k l i ==> ?e. &0< e/\
616 (!t. --e< t/\ t< e  ==>  dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w i)<scs_b_v39 s l i)) `,
617 [STRIP_TAC 
618 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR_TWO_CASES)[`s:scs_v39`;`w:num->real^3`;`l:num`;`k:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
619 THEN POP_ASSUM MP_TAC
620 THEN REWRITE_TAC[GSYM dist]
621 THEN ONCE_REWRITE_TAC[DIST_SYM]
622 THEN REWRITE_TAC[dist]
623 THEN RESA_TAC
624 THEN REWRITE_TAC[GSYM dist]
625 THEN ONCE_REWRITE_TAC[DIST_SYM]
626 THEN REPEAT STRIP_TAC
627 THEN MATCH_MP_TAC EXISTS_SMALL_LT_CONST_ADD
628 THEN ASM_REWRITE_TAC[]
629 THEN ASM_TAC
630 THEN STRIP_TAC
631 THEN STRIP_TAC
632 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)`)
633 THEN RESA_TAC
634 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
635 THEN REPEAT RESA_TAC
636 THEN SUBGOAL_THEN`v2 IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
637
638  REWRITE_TAC[IN_ELIM_THM;IMAGE]
639 THEN EXISTS_TAC`l:num`
640 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
641
642 SUBGOAL_THEN`w i IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
643
644  REWRITE_TAC[IN_ELIM_THM;IMAGE]
645 THEN EXISTS_TAC`i:num`
646 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
647
648 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`)
649 THEN ASM_REWRITE_TAC[]
650 THEN REWRITE_TAC[IN_ELIM_THM;DIFF;ball_annulus;cball;]
651 THEN REPEAT STRIP_TAC
652 THEN MRESA_TAC DIST_TRIANGLE[`v2:real^3`;`vec 0:real^3`;`(w:num->real^3) i`]
653 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)
654 ==> dist (v2,(w:num->real^3) i)<= &4 *h0`)
655 THEN ASM_REWRITE_TAC[]
656 THEN ONCE_REWRITE_TAC[DIST_SYM]
657 THEN ASM_REWRITE_TAC[]
658 THEN ONCE_REWRITE_TAC[DIST_SYM]
659 THEN REPLICATE_TAC (53-41)(POP_ASSUM MP_TAC)
660 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
661 THEN MRESA_TAC th[`i:num`])
662 THEN REPLICATE_TAC (2)(POP_ASSUM MP_TAC)
663 THEN REAL_ARITH_TAC]);;
664
665
666
667
668
669 let V3_DEFOR_IN_AFF_GT_V1_MK=prove(`&0< x1 /\ &0<x2   /\ &0< x5 /\
670 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1 /\ ~collinear {vec 0,v1,w}/\v2 IN aff_gt {vec 0} {v1,w}
671 ==> ?e. &0< e/\ (!t. --e< t/\ t< e ==> v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1 IN aff_gt {vec 0} {v1,w})`,
672 STRIP_TAC
673 THEN POP_ASSUM MP_TAC
674 THEN MRESAL_TAC(GEN_ALL UPS_X_POS_SEG)[`-- v1:real^3`;`v2-v1:real^3`;`x1:real`;`x2:real`;`x5:real`][COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
675 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`]
676 THEN ASSUME_TAC th)
677 THEN STRIP_TAC
678 THEN MRESA_TAC (GEN_ALL OPEN_RELA_AFF_GT)[`v2:real^3`;`v1:real^3`;`w:real^3`]
679 THEN POP_ASSUM MP_TAC
680 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
681 THEN RESA_TAC
682 THEN MRESAL_TAC (GEN_ALL EXISTS_SMALL_LT_CONST_ADD)[`a:real`;`v2:real^3`;` x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`;`e':real`][DIST_REFL]
683 THEN ABBREV_TAC`e1=(min (min e e') e'')/ &2`
684 THEN MP_TAC(REAL_ARITH`e1=(min (min e e') e'')/ &2/\ &0< e/\ &0< e' /\ &0< e''
685 ==> &0< e1/\ e1< e /\ e1< e'/\ e1< e''`)
686 THEN RESA_TAC
687 THEN EXISTS_TAC`e1:real`
688 THEN ASM_REWRITE_TAC[]
689 THEN REPEAT STRIP_TAC
690 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`A SUBSET B/\ a IN A==> a IN B`))
691 THEN EXISTS_TAC`ball (v2,e') INTER aff {vec 0, v2, v1:real^3}`
692 THEN ASM_REWRITE_TAC[INTER;ball;IN_ELIM_THM]
693 THEN ONCE_REWRITE_TAC[DIST_SYM]
694 THEN REPLICATE_TAC (23-16) (POP_ASSUM MP_TAC)
695 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
696 THEN MP_TAC(REAL_ARITH`-- e1<t /\ t< e1/\ e1< e''==> t< e''/\ --e'' <t`)
697 THEN RESA_TAC
698 THEN MRESA_TAC th[`t:real`])
699 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
700 THEN ASM_SIMP_TAC[exp_aff_by_dot;IN_ELIM_THM]
701 THEN REDUCE_VECTOR_TAC 
702 THEN REWRITE_TAC[e2_fan;e3_fan]
703 THEN REDUCE_VECTOR_TAC 
704 THEN REWRITE_TAC[DOT_RMUL;CROSS_LMUL]
705 THEN ONCE_REWRITE_TAC[DOT_SYM]
706 THEN ONCE_REWRITE_TAC[CROSS_TRIPLE]
707 THEN ONCE_REWRITE_TAC[CROSS_TRIPLE]
708 THEN REPLICATE_TAC (25-11) (POP_ASSUM MP_TAC)
709 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
710 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e/\ --e1<t==> t< e/\ -- e< t`)
711 THEN RESA_TAC
712 THEN MRESA_TAC th[`t:real`])
713 THEN MRESAL_TAC (GEN_ALL EYYPQDW_SCALAR_POS)[`x2:real`;`x5:real`;`x2:real`;`x1:real`;`x5-t:real`;`x2:real`;`v3_defor_v1 (-- &1) (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t)`;`a:real`;`--v1:real^3`;`v2-v1:real^3`][SET_RULE`a IN {a,b}`;GSYM v3_defor_v1;DOT_CROSS_SELF;DOT_LMUL;COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG;CROSS_LADD;CROSS_LNEG;CROSS_RNEG;VECTOR_ARITH`--A=B<=> A= --B:real^3`;CROSS_REFL]
714 THEN REDUCE_VECTOR_TAC
715 THEN REWRITE_TAC[VECTOR_ARITH`A-B=A+ --B:real^3`;CROSS_RADD;CROSS_RNEG;CROSS_REFL;VECTOR_ARITH`A+ -- vec 0=A`;DOT_CROSS_SELF;DOT_LMUL;DOT_LNEG]
716 THEN REAL_ARITH_TAC);;
717
718
719 let V3_DEFOR_INCREASING_IN_ANGLE=prove(`&0< x1 /\ &0<x2   /\ &0< x5 /\ ~(collinear{vec 0,v1,w:real^3})/\
720 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a = -- &1 /\ v2 IN aff_gt {vec 0} {v1, w}
721 ==>
722 ?e. &0< e /\ (!t. &0<t /\ t<e ==> dist(v2,w)<dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w))`,
723
724 STRIP_TAC
725 THEN MRESAL_TAC(GEN_ALL UPS_X_POS_SEG)[`-- v1:real^3`;`v2-v1:real^3`;`x1:real`;`x2:real`;`x5:real`][COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
726 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`]
727 THEN ASSUME_TAC th)
728 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_ID)[`a:real`;`-- v1:real^3`;`x1:real`;`x2:real`;`x5:real`;`v2-v1:real^3`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`;COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
729 THEN MP_TAC V3_DEFOR_IN_AFF_GT_V1_MK
730 THEN RESA_TAC
731 THEN ABBREV_TAC`e1= (min e e')/ &2`
732 THEN MP_TAC(REAL_ARITH`e1= (min e e')/ &2 /\ &0< e/\ &0< e'
733 ==> &0< e1/\ e1<e/\e1<e'`)
734 THEN RESA_TAC
735 THEN EXISTS_TAC`e1:real`
736 THEN ASM_REWRITE_TAC[]
737 THEN GEN_TAC
738 THEN REPLICATE_TAC (19-12) (POP_ASSUM MP_TAC)
739 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
740 THEN MP_TAC(REAL_ARITH`&0<t/\ t<e1/\ e1<e ==> --e<t/\ t<e`)
741 THEN RESA_TAC
742 THEN MRESA_TAC th[`t:real`])
743 THEN REPLICATE_TAC (24-14) (POP_ASSUM MP_TAC)
744 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
745 THEN MP_TAC(REAL_ARITH`&0<t/\ t<e1/\ e1<e' ==> --e'<t/\ t<e'`)
746 THEN RESA_TAC
747 THEN MRESA_TAC th[`t:real`])
748 THEN ABBREV_TAC`v=v3_defor_v1 (-- &1) (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t)`
749 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`v2:real^3`]
750 THEN MP_TAC(SET_RULE`DISJOINT {vec 0, v2} {v1} ==> ~(v1=v2:real^3)`)
751 THEN RESA_TAC
752 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`-- &1`;`x5:real`;`x2:real`;`x1:real`;`x5-t:real`;`v2-v1:real^3`;`v3_defor_v1 (-- &1) (-- v1) (v2-v1:real^3) x1 x5 x2 x2 (x5 - t)`;`-- v1:real^3`;`x2:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1;COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3/\ a- -- b=a+b`;NORM_NEG]
753 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORMV3)[`x2:real`;`-- &1`;`x5:real`;`x2:real`;`x1:real`;`x2:real`;`--v1:real^3`;`v2-v1:real^3`;`v3_defor_v1 (-- &1) (-- v1) (v2-v1:real^3) x1 x5 x2 x2 (x5 - t)`;`x5-t:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1;COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3/\ a- -- b=a+b`;NORM_NEG]
754 THEN MRESAL_TAC xrr_increasing[`norm(v1:real^3)`;`norm(v2:real^3)`;`norm(v:real^3)`;`norm(v2-v1:real^3)`][NORM_POS_LT;NORM_POS_LE;NORM_LT_SQUARE;DOT_SQUARE_NORM;REAL_ARITH`a-b<a<=> &0<b`;VECTOR_ARITH`a-b= vec 0<=> a=b:real^3`;xrr;REAL_ARITH`a*a= a pow 2`]
755 THEN POP_ASSUM MP_TAC
756 THEN ONCE_REWRITE_TAC[Pack1.norm_abs]
757 THEN ASM_REWRITE_TAC[REAL_LT_SQUARE_ABS]
758 THEN ASM_REWRITE_TAC[REAL_ABS_NORM;REAL_ARITH`a-b<a<=> &0<b`]
759 THEN REWRITE_TAC[REAL_ARITH`&8*(&1-A)< &8*(&1-B) <=> B<A`]
760 THEN MRESA_TAC DOT_NORM_SUB[`v2:real^3`;`v1:real^3`]
761 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`]
762 THEN POP_ASSUM MP_TAC
763 THEN ONCE_REWRITE_TAC[DOT_SYM]
764 THEN ASM_REWRITE_TAC[VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c=a*b*c`]
765 THEN STRIP_TAC
766 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
767 THEN MRESA_TAC (GEN_ALL Planarity.properties_of_collinear4_points_fan)
768 [`vec 0:real^3`;`v1:real^3`;`w:real^3`;`v+v1:real^3`]
769 THEN MRESA_TAC th3[`vec 0:real^3`;`v+v1:real^3`;`v1:real^3`]
770 THEN MRESAL_TAC DOT_NORM_SUB[`v+v1:real^3`;`v1:real^3`][VECTOR_ARITH`(a+b)-b=a:real^3`]
771 THEN MRESAL_TAC COS_ANGLE[`v1:real^3`;`vec 0:real^3`;`v+v1: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`]
772 THEN POP_ASSUM MP_TAC
773 THEN ONCE_REWRITE_TAC[DOT_SYM]
774 THEN ASM_REWRITE_TAC[VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c=a*b*c`]
775 THEN SUBGOAL_THEN`norm(v+v1:real^3)= norm (v2:real^3)`ASSUME_TAC
776 THENL[
777
778 ASM_REWRITE_TAC[NORM_EQ_SQUARE;NORM_POS_LE;NORM_LT_SQUARE;DOT_SQUARE_NORM]
779 ;
780
781 ASM_REWRITE_TAC[]
782 THEN STRIP_TAC
783 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
784 THEN MRESAL_TAC COS_MONO_LT_EQ[`angle (v1,vec 0,v2:real^3)`;`angle (v1,vec 0,v+v1:real^3)`][ANGLE_RANGE]
785 THEN MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w}/\ v+v1 IN aff_gt {vec 0} {v1, w} /\ aff_gt {vec 0} {v1,w} SUBSET aff_ge {vec 0} {v1,w}==> v2 IN aff_ge {vec 0} {v1, w}/\ v+v1 IN aff_ge {vec 0} {v1, w:real^3}`)
786 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
787 THEN RESA_TAC
788 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`w:real^3`]
789 THEN MRESA_TAC Polar_fan.ANGLES_ADD_AFF_GE [`vec 0:real^3`;`v1:real^3`;`w:real^3`;`v2:real^3`]
790 THEN MRESA_TAC Polar_fan.ANGLES_ADD_AFF_GE [`vec 0:real^3`;`v1:real^3`;`w:real^3`;`v+v1:real^3`]
791 THEN STRIP_TAC
792 THEN MP_TAC(REAL_ARITH`angle (v1,vec 0,v+v1) < angle (v1,vec 0,v2)
793 /\ angle (v1,vec 0,v2) + angle (v2,vec 0,w) = angle (v1,vec 0,w)
794 /\ angle (v1,vec 0,v+v1) + angle (v+v1,vec 0,w) = angle (v1,vec 0,w)
795 ==> angle (v2,vec 0,w) <angle (v+v1,vec 0,w:real^3)`)
796 THEN RESA_TAC
797 THEN MRESAL_TAC COS_MONO_LT_EQ[`angle (v+v1,vec 0,w:real^3)`;`angle (v2,vec 0,w:real^3)`][ANGLE_RANGE]
798 THEN POP_ASSUM MP_TAC
799 THEN ONCE_REWRITE_TAC[ANGLE_SYM]
800 THEN MRESAL_TAC COS_ANGLE[`w: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`]
801 THEN MRESAL_TAC COS_ANGLE[`w:real^3`;`vec 0:real^3`;`v+v1: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`]
802 THEN MRESA_TAC DOT_NORM_SUB[`w:real^3`;`v2:real^3`]
803 THEN MRESAL_TAC DOT_NORM_SUB[`w:real^3`;`v+v1:real^3`][GSYM dist]
804 THEN MRESAL_TAC Planarity.IMP_NORM_FAN[`v2:real^3`;`vec 0:real^3`][VECTOR_ARITH`A- vec 0=A:real^3`]
805 THEN MRESAL_TAC Planarity.IMP_NORM_FAN[`w:real^3`;`vec 0:real^3`][VECTOR_ARITH`A- vec 0=A:real^3`]
806 THEN ASM_SIMP_TAC[REAL_LT_RMUL_EQ;REAL_ARITH`a*b*c=(a*b)*c`]
807 THEN STRIP_TAC
808 THEN ONCE_REWRITE_TAC[DIST_SYM]
809 THEN POP_ASSUM MP_TAC
810 THEN REWRITE_TAC[REAL_ARITH`(a-b)/ &2< (a-c)/ &2<=> c<b`;dist]
811 THEN STRIP_TAC
812 THEN ASM_REWRITE_TAC[NORM_POS_LE;NORM_LT_SQUARE;DOT_SQUARE_NORM]
813 THEN MRESA_TAC (GEN_ALL Planarity.properties_of_collinear4_points_fan)
814 [`vec 0:real^3`;`w:real^3`;`v1:real^3`;`v+v1:real^3`]
815 THEN POP_ASSUM MP_TAC
816 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
817 THEN ASM_REWRITE_TAC[]
818 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
819 THEN RESA_TAC
820 THEN MRESA_TAC th3[`w:real^3`;`v+v1:real^3`;`vec 0:real^3`]
821 THEN POP_ASSUM MP_TAC
822 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={C,B,A}`]
823 THEN RESA_TAC
824 THEN MRESAL_TAC Planarity.IMP_NORM_FAN[`w:real^3`;`v+v1:real^3`][VECTOR_ARITH`A- vec 0=A:real^3`]]);;
825
826
827
828 let DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK1=prove(`is_scs_v39 s /\
829   MMs_v39 s w /\
830   scs_k_v39 s =k/\
831  3<k /\ w l=v2/\ w (l+k-1) =v1
832 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1/\
833 ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
834       w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} 
835 /\ (SUC l MOD k = j MOD k) /\ scs_a_v39 s l j = dist (v2,w j)
836 ==>   ?e. &0< e/\
837 (!t. &0 < t/\ t< e  ==> scs_a_v39 s l j < dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w j))`,
838 STRIP_TAC
839 THEN ASM_TAC
840 THEN REPEAT RESA_TAC
841 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR_TWO_CASES)[`s:scs_v39`;`w:num->real^3`;`l:num`;`k:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
842 THEN POP_ASSUM MP_TAC
843 THEN REWRITE_TAC[GSYM dist]
844 THEN ONCE_REWRITE_TAC[DIST_SYM]
845 THEN REWRITE_TAC[dist]
846 THEN RESA_TAC
847 THEN REWRITE_TAC[GSYM dist]
848 THEN ONCE_REWRITE_TAC[DIST_SYM]
849 THEN MATCH_MP_TAC V3_DEFOR_INCREASING_IN_ANGLE
850 THEN ASM_REWRITE_TAC[]
851 THEN MP_TAC MMS_IMP_BBS
852 THEN RESA_TAC
853 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`j:num`;`w:num->real^3`;`SUC l`]
854 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
855 THEN ASM_REWRITE_TAC[]
856 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
857 THEN ASM_REWRITE_TAC[]);;
858
859
860
861
862 let  DEFORMATION_DIST_LE_V3_DEFOR_AA_COM_MK=prove(`is_scs_v39 s /\
863   MMs_v39 s w /\
864   scs_k_v39 s =k/\
865  3<k /\ w l=v2/\ w (l+k-1) =v1
866 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1/\
867 ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
868       w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} 
869 /\ (SUC l MOD k = j MOD k) /\ scs_a_v39 s l j = dist (v2,w j)/\ 
870   (!i. ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)          ==> scs_a_v39 s l i < dist (v2,w i))
871 ==>   ?e. &0< e/\
872 (!t i. &0< t/\ t< e /\ ~(l MOD k = i MOD k) ==> scs_a_v39 s l i < dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w i))`,
873 STRIP_TAC
874 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK
875 THEN RESA_TAC
876 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK1
877 THEN RESA_TAC
878 THEN ABBREV_TAC`e1= (min e e')/ &2`
879 THEN MP_TAC(REAL_ARITH`e1= (min e e')/ &2 /\ &0< e/\ &0< e'
880 ==> &0< e1/\ e1<e/\ e1<e'`)
881 THEN RESA_TAC
882 THEN EXISTS_TAC`e1:real`
883 THEN ASM_REWRITE_TAC[]
884 THEN REPEAT STRIP_TAC
885 THEN MP_TAC(SET_RULE`(SUC l MOD k = i MOD k)\/ ~(SUC l MOD k = i MOD k)`)
886 THEN RESA_TAC
887 THENL[
888
889 MP_TAC(REAL_ARITH`t<e1/\ e1<e'==> t< e'`)
890 THEN RESA_TAC
891 THEN MP_TAC MMS_IMP_BBS
892 THEN RESA_TAC
893 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`j:num`;`w:num->real^3`;`i:num`]
894 THEN THAYTHE_TAC (29-18) [`t:real`]
895 THEN MRESA_TAC( GEN_ALL CHANGE_A_SCS_MOD)[`l:num`;`j:num`;`s:scs_v39`;`l:num`;`i:num`] 
896 THEN SYM_ASSUM_TAC
897 THEN ASM_REWRITE_TAC[];
898
899 MP_TAC(REAL_ARITH`t<e1/\ e1<e/\ &0<t==> t< e/\ --e< t`)
900 THEN RESA_TAC
901 THEN THAYTHE_TAC (28-16) [`t:real`;`i:num`]]);;
902
903
904 let EYYPQDW_V3_DEFOR_INCREASING_IN_ANGLE=prove(`&0< x1 /\ &0<x2   /\ &0< x5 /\ ~(collinear{vec 0,v1,w:real^3})/\
905 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a = -- &1 /\ v2 IN aff_gt {vec 0} {v1, w}
906 ==>
907 ?e. &0< e /\ (!t. &0<t /\ t<e ==> dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,v1)< dist(v2,v1))`,
908 STRIP_TAC
909 THEN MRESAL_TAC(GEN_ALL UPS_X_POS_SEG)[`-- v1:real^3`;`v2-v1:real^3`;`x1:real`;`x2:real`;`x5:real`][COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
910 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`]
911 THEN ASSUME_TAC th)
912 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_ID)[`a:real`;`-- v1:real^3`;`x1:real`;`x2:real`;`x5:real`;`v2-v1:real^3`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`;COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
913 THEN MP_TAC V3_DEFOR_IN_AFF_GT_V1_MK
914 THEN RESA_TAC
915 THEN ABBREV_TAC`e1= (min e e')/ &2`
916 THEN MP_TAC(REAL_ARITH`e1= (min e e')/ &2 /\ &0< e/\ &0< e'
917 ==> &0< e1/\ e1<e/\e1<e'`)
918 THEN RESA_TAC
919 THEN EXISTS_TAC`e1:real`
920 THEN ASM_REWRITE_TAC[]
921 THEN GEN_TAC
922 THEN REPLICATE_TAC (19-12) (POP_ASSUM MP_TAC)
923 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
924 THEN MP_TAC(REAL_ARITH`&0<t/\ t<e1/\ e1<e ==> --e<t/\ t<e`)
925 THEN RESA_TAC
926 THEN MRESA_TAC th[`t:real`])
927 THEN REPLICATE_TAC (24-14) (POP_ASSUM MP_TAC)
928 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
929 THEN MP_TAC(REAL_ARITH`&0<t/\ t<e1/\ e1<e' ==> --e'<t/\ t<e'`)
930 THEN RESA_TAC
931 THEN MRESA_TAC th[`t:real`])
932 THEN ABBREV_TAC`v=v3_defor_v1 (-- &1) (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t)`
933 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`v2:real^3`]
934 THEN MP_TAC(SET_RULE`DISJOINT {vec 0, v2} {v1} ==> ~(v1=v2:real^3)`)
935 THEN RESA_TAC
936 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`-- &1`;`x5:real`;`x2:real`;`x1:real`;`x5-t:real`;`v2-v1:real^3`;`v3_defor_v1 (-- &1) (-- v1) (v2-v1:real^3) x1 x5 x2 x2 (x5 - t)`;`-- v1:real^3`;`x2:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1;COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3/\ a- -- b=a+b`;NORM_NEG]
937 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORMV3)[`x2:real`;`-- &1`;`x5:real`;`x2:real`;`x1:real`;`x2:real`;`--v1:real^3`;`v2-v1:real^3`;`v3_defor_v1 (-- &1) (-- v1) (v2-v1:real^3) x1 x5 x2 x2 (x5 - t)`;`x5-t:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1;COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3/\ a- -- b=a+b`;NORM_NEG;dist;VECTOR_ARITH`(a+b)-b=a:real^3`;NORM_POS_LE;NORM_LT_SQUARE;DOT_SQUARE_NORM;REAL_ARITH`a-b<a<=> &0<b`]
938 THEN MRESAL_TAC Planarity.IMP_NORM_FAN[`v2:real^3`;`v1:real^3`][VECTOR_ARITH`A- vec 0=A:real^3`]);;
939
940
941 let DEFORMATION_DIST_LE_V3_DEFOR_EDGE_SUB=prove(` 3<k /\ is_scs_v39 s /\
942   MMs_v39 s w /\
943   scs_k_v39 s =k/\
944  w l=v2/\ w (l+k-1) =v1
945 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1/\
946 ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
947       w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} 
948 ==> (!j. (l MOD k = SUC j MOD k) 
949 ==>   ?e. &0< e/\
950 (!t. &0 < t/\ t< e  ==>  dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w j)<scs_b_v39 s l j))`,
951 STRIP_TAC
952 THEN ASM_TAC
953 THEN REPEAT RESA_TAC
954 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR_TWO_CASES)[`s:scs_v39`;`w:num->real^3`;`l:num`;`k:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
955 THEN POP_ASSUM MP_TAC
956 THEN REWRITE_TAC[GSYM dist]
957 THEN ONCE_REWRITE_TAC[DIST_SYM]
958 THEN REWRITE_TAC[dist]
959 THEN RESA_TAC
960 THEN REWRITE_TAC[GSYM dist]
961 THEN ONCE_REWRITE_TAC[DIST_SYM]THEN MRESA_TAC (GEN_ALL EYYPQDW_V3_DEFOR_INCREASING_IN_ANGLE)
962 [`(w:num->real^3)(SUC l)`;`a:real`;`x1:real`;`x2:real`;`x5:real`;`v2:real^3`;`v1:real^3`]
963 THEN POP_ASSUM MP_TAC
964 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
965 THEN ASM_REWRITE_TAC[]
966 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
967 THEN ASM_REWRITE_TAC[]
968 THEN STRIP_TAC
969 THEN EXISTS_TAC`e:real`
970 THEN ASM_REWRITE_TAC[]
971 THEN REPEAT STRIP_TAC
972 THEN THAYTHE_TAC (20-18)[`t:real`]
973 THEN MP_TAC MMS_IMP_BBS
974 THEN RESA_TAC
975 THEN MRESA_TAC(GEN_ALL EQ_SUC_K_SUB3)[`l:num`;`j:num`;`k:num`]
976 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`j:num`;`w:num->real^3`;`l+k-1:num`]
977 THEN MRESA_TAC(GEN_ALL CHANGE_B_SCS_MOD)[`l:num`;`j:num`;`s:scs_v39`;`l:num`;`l+k-1:num`]
978 THEN ASM_TAC
979 THEN STRIP_TAC 
980 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
981 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
982 THEN REPEAT RESA_TAC
983 THEN THAYTHE_TAC (59-29)[`l:num`;`l+k-1`]
984 THEN DICH_TAC (60-55)
985 THEN POP_ASSUM MP_TAC
986 THEN REAL_ARITH_TAC);;
987
988
989
990
991
992
993
994
995 let DIST_V3_DEFOR_EDGE_SUC=prove(`  scs_k_v39 s =k/\
996  3<k /\ is_scs_v39 s /\
997   MMs_v39 s w /\
998  w l=v2/\ w (l+k-1) =v1
999 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1
1000 /\ (SUC l MOD k = j MOD k) /\ dist (v2,w j)< scs_b_v39 s l j
1001 ==>  ?e. &0< e/\
1002 (!t. --e< t/\ t< e  ==>  dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w j)<scs_b_v39 s l j) `,
1003 STRIP_TAC
1004 THEN MATCH_MP_TAC EXISTS_SMALL_LT_CONST_ADD
1005 THEN ASM_REWRITE_TAC[]
1006 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR_TWO_CASES)[`s:scs_v39`;`w:num->real^3`;`l:num`;`k:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
1007 THEN POP_ASSUM MP_TAC
1008 THEN REWRITE_TAC[GSYM dist]
1009 THEN ONCE_REWRITE_TAC[DIST_SYM]
1010 THEN REWRITE_TAC[dist]
1011 THEN RESA_TAC
1012 THEN REWRITE_TAC[GSYM dist]
1013 THEN ONCE_REWRITE_TAC[DIST_SYM]
1014 THEN REPEAT STRIP_TAC);;
1015
1016
1017
1018 let DEFORMATION_DIST_LE_V3_DEFOR_B_COM_MK1=prove(` 3<k /\ is_scs_v39 s /\
1019   MMs_v39 s w /\
1020   scs_k_v39 s =k/\
1021  w l=v2/\ w (l+k-1) =v1
1022 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1/\
1023 ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
1024       w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)}
1025 /\ (SUC l MOD k = j MOD k) /\  dist (v2,w j) < scs_b_v39 s l j 
1026 /\     (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
1027 ==>   (!i. ~(l MOD k = i MOD k)==> ?e. &0< e/\
1028 (!t. &0< t/\ t< e  ==>   dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w i)<scs_b_v39 s l i))`,
1029 STRIP_TAC
1030 THEN MP_TAC DIST_V3_DEFOR_EDGE_SUC
1031 THEN RESA_TAC
1032 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_EDGE_SUB
1033 THEN RESA_TAC
1034 THEN POP_ASSUM MP_TAC
1035 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
1036 THEN REWRITE_TAC[SKOLEM_THM]
1037 THEN STRIP_TAC
1038 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_B_MK
1039 THEN RESA_TAC
1040 THEN POP_ASSUM MP_TAC
1041 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
1042 THEN REWRITE_TAC[SKOLEM_THM]
1043 THEN STRIP_TAC
1044 THEN REPEAT STRIP_TAC
1045 THEN MP_TAC(SET_RULE`(SUC l MOD k = i MOD k)\/ ~(SUC l MOD k = i MOD k)`)
1046 THEN RESA_TAC
1047 THENL[
1048
1049 EXISTS_TAC`e:real`
1050 THEN ASM_REWRITE_TAC[]
1051 THEN REPEAT STRIP_TAC
1052 THEN MP_TAC(REAL_ARITH`&0< t/\ t< e==> --e< t`)
1053 THEN RESA_TAC
1054 THEN THAYTHE_TAC (23-16)[`t:real`]
1055 THEN MP_TAC MMS_IMP_BBS
1056 THEN RESA_TAC
1057 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`i:num`;`w:num->real^3`;`j:num`]
1058 THEN MRESA_TAC(GEN_ALL CHANGE_B_SCS_MOD)[`l:num`;`i:num`;`s:scs_v39`;`l:num`;`j:num`];
1059
1060 MP_TAC(SET_RULE`(l MOD k = SUC i MOD k)\/ ~(l MOD k =SUC i MOD k)`)
1061 THEN RESA_TAC
1062 THENL[
1063
1064 THAYTHE_TAC (21-17)[`i:num`]
1065 THEN EXISTS_TAC`(e':num->real) i`
1066 THEN ASM_REWRITE_TAC[];
1067
1068 THAYTHEL_TAC (21-18)[`i:num`] [scs_diag]
1069 THEN EXISTS_TAC`(e'':num->real) i`
1070 THEN ASM_REWRITE_TAC[]
1071 THEN REPEAT STRIP_TAC
1072 THEN MATCH_DICH_TAC 2
1073 THEN ASM_REWRITE_TAC[]
1074 THEN POP_ASSUM MP_TAC
1075 THEN POP_ASSUM MP_TAC
1076 THEN REAL_ARITH_TAC]]);;
1077
1078
1079
1080 let DEFORMATION_DIST_LE_V3_DEFOR_B_COM_MK=prove_by_refinement(` 3<k /\ is_scs_v39 s /\
1081   MMs_v39 s w /\
1082   scs_k_v39 s =k/\
1083  w l=v2/\ w (l+k-1) =v1
1084 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1/\
1085 ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
1086       w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)}
1087 /\ (SUC l MOD k = j MOD k) /\  dist (v2,w j) < scs_b_v39 s l j 
1088 /\     (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
1089 ==>    ?e. &0< e/\
1090 (!t i. &0< t/\ t< e /\ ~(l MOD k = i MOD k) ==>   dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w i)<scs_b_v39 s l i)`,
1091 [
1092 REPEAT STRIP_TAC
1093 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_B_COM_MK1
1094 THEN RESA_TAC
1095 THEN POP_ASSUM MP_TAC
1096 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
1097 THEN REWRITE_TAC[SKOLEM_THM]
1098 THEN STRIP_TAC
1099 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k/\  ~(i= l MOD k)}`
1100 THEN EXISTS_TAC`e1:real`
1101 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
1102
1103
1104
1105 MATCH_MP_TAC FINITE_SUBSET
1106 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
1107 THEN STRIP_TAC;
1108
1109
1110 MATCH_MP_TAC FINITE_IMAGE
1111 THEN REWRITE_TAC[FINITE_NUMSEG];
1112
1113
1114 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
1115 THEN REPEAT RESA_TAC
1116 THEN EXISTS_TAC`i:num`
1117 THEN POP_ASSUM MP_TAC
1118 THEN POP_ASSUM MP_TAC
1119 THEN POP_ASSUM MP_TAC
1120 THEN ARITH_TAC;
1121
1122
1123 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
1124
1125
1126 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
1127 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(0=l MOD k )`)
1128 THEN RESA_TAC;
1129
1130
1131
1132 EXISTS_TAC`(e:num->real)1`
1133 THEN EXISTS_TAC`1`
1134 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
1135 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
1136 THEN RESA_TAC;
1137
1138
1139
1140 EXISTS_TAC`(e:num->real)0`
1141 THEN EXISTS_TAC`0`
1142 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
1143 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
1144 THEN RESA_TAC;
1145
1146
1147
1148 STRIP_TAC;
1149
1150
1151 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`&0`]
1152 THEN REWRITE_TAC[IN_ELIM_THM]
1153 THEN REPEAT RESA_TAC
1154 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
1155 THEN REPLICATE_TAC (13-5) (POP_ASSUM MP_TAC)
1156 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1157 THEN MRESA_TAC th[`i:num`]);
1158
1159
1160 REPEAT STRIP_TAC
1161 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`t:real`]
1162 THEN POP_ASSUM MP_TAC
1163 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
1164
1165
1166 REWRITE_TAC[IN_ELIM_THM]
1167 THEN EXISTS_TAC`i MOD k`
1168 THEN ASM_REWRITE_TAC[]
1169 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
1170 THEN RESA_TAC
1171 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
1172
1173
1174 STRIP_TAC
1175 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
1176 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
1177 THEN RESA_TAC
1178 THEN MRESA_TAC MOD_REFL[`i:num`;`k:num`]
1179 THEN REPLICATE_TAC (15-5) (POP_ASSUM MP_TAC)
1180 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1181 THEN MRESA_TAC th[`i:num MOD k`])
1182 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
1183 THEN ASM_TAC
1184 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
1185 THEN REPEAT RESA_TAC
1186 THEN POP_ASSUM MP_TAC
1187 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
1188 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
1189 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
1190 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]);
1191 ]);;
1192
1193
1194
1195
1196 (**************************)
1197
1198 (***********BBs_V39********)
1199
1200 (**************************)
1201
1202
1203 let DEFORMATION_V3_DEFOR_NOT_IN_V_MK=prove(
1204 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
1205   MMs_v39 s w /\
1206  w l=v2/\ w (l+k-1) =v1
1207 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1
1208 ==>  (!i.  ~(i MOD k= l MOD k) ==> (?e. &0< e /\ (!t. --e<t /\ t<e ==> &0<dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w i))))`,
1209 REPEAT STRIP_TAC
1210 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR_TWO_CASES)[`s:scs_v39`;`w:num->real^3`;`l:num`;`k:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
1211 THEN POP_ASSUM MP_TAC
1212 THEN REWRITE_TAC[GSYM dist]
1213 THEN ONCE_REWRITE_TAC[DIST_SYM]
1214 THEN REWRITE_TAC[dist]
1215 THEN RESA_TAC
1216 THEN REWRITE_TAC[GSYM dist]
1217 THEN ONCE_REWRITE_TAC[DIST_SYM]
1218 THEN REPEAT STRIP_TAC
1219 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST_ADD
1220 THEN ASM_REWRITE_TAC[]
1221 THEN MATCH_MP_TAC(REAL_ARITH`&0<= a/\ ~(a= &0)==> &0 < a`)
1222 THEN ASM_REWRITE_TAC[dist;NORM_POS_LE]
1223 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
1224 THEN ASM_TAC
1225 THEN STRIP_TAC
1226 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
1227 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
1228 THEN REPEAT RESA_TAC
1229 THEN POP_ASSUM MP_TAC
1230 THEN POP_ASSUM (fun th-> 
1231 MRESA_TAC DIVISION[`i:num`;`k:num`]
1232 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
1233 THEN MRESA_TAC th[`i MOD k`;`l MOD k`])
1234 THEN POP_ASSUM MP_TAC
1235 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
1236 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
1237 THEN MRESA_TAC th[`l:num`])
1238 THEN STRIP_TAC
1239 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v2:real^3`;`(w:num->real^3) i`;]);;
1240
1241
1242
1243 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM_MK=prove_by_refinement(
1244 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
1245   MMs_v39 s w /\
1246  w l=v2/\ w (l+k-1) =v1
1247 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1
1248 ==>  ?e. &0< e /\ (!t i. --e<t /\ t<e/\ ~(i MOD k= l MOD k) ==> &0<dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w i))`,
1249 [
1250 REPEAT STRIP_TAC
1251 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_MK
1252 THEN RESA_TAC
1253 THEN POP_ASSUM MP_TAC
1254 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
1255 THEN REWRITE_TAC[SKOLEM_THM]
1256 THEN STRIP_TAC
1257 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k/\  ~(i= l MOD k)}`
1258 THEN EXISTS_TAC`e1:real`
1259 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
1260
1261 MATCH_MP_TAC FINITE_SUBSET
1262 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
1263 THEN STRIP_TAC;
1264
1265 MATCH_MP_TAC FINITE_IMAGE
1266 THEN REWRITE_TAC[FINITE_NUMSEG];
1267
1268 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
1269 THEN REPEAT RESA_TAC
1270 THEN EXISTS_TAC`i:num`
1271 THEN POP_ASSUM MP_TAC
1272 THEN POP_ASSUM MP_TAC
1273 THEN POP_ASSUM MP_TAC
1274 THEN ARITH_TAC;
1275
1276 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
1277
1278 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
1279 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(0=l MOD k )`)
1280 THEN RESA_TAC;
1281
1282 EXISTS_TAC`(e:num->real)1`
1283 THEN EXISTS_TAC`1`
1284 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
1285 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
1286 THEN RESA_TAC;
1287
1288 EXISTS_TAC`(e:num->real)0`
1289 THEN EXISTS_TAC`0`
1290 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
1291 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
1292 THEN RESA_TAC;
1293
1294 STRIP_TAC;
1295
1296 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`&0`]
1297 THEN REWRITE_TAC[IN_ELIM_THM]
1298 THEN REPEAT RESA_TAC
1299 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
1300 THEN REPLICATE_TAC (13-5) (POP_ASSUM MP_TAC)
1301 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1302 THEN MRESA_TAC th[`i:num`]);
1303
1304 REPEAT STRIP_TAC
1305 THEN MRESAL_TAC REAL_LE_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`e1:real`][REAL_ARITH`a<=a`]
1306 THEN POP_ASSUM MP_TAC
1307 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
1308
1309 REWRITE_TAC[IN_ELIM_THM]
1310 THEN EXISTS_TAC`i MOD k`
1311 THEN ASM_REWRITE_TAC[]
1312 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
1313 THEN RESA_TAC
1314 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
1315
1316 STRIP_TAC
1317 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
1318 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
1319 THEN RESA_TAC
1320 THEN MRESA_TAC MOD_REFL[`i:num`;`k:num`]
1321 THEN MP_TAC(REAL_ARITH`-- e1<t/\t<e1/\ e1<= e(i MOD k)==> -- e(i MOD k)< t/\ t< e(i MOD k)`)
1322 THEN RESA_TAC
1323 THEN REPLICATE_TAC (12) (POP_ASSUM MP_TAC)
1324 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1325 THEN MRESA_TAC th[`i:num MOD k`])
1326 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
1327 THEN ASM_TAC
1328 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
1329 THEN REPEAT RESA_TAC
1330 THEN POP_ASSUM MP_TAC
1331 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
1332 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
1333 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
1334 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]);]);;
1335
1336
1337
1338
1339 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
1340   MMs_v39 s w /\
1341  w l=v2/\ w (l+k-1) =v1
1342 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1
1343 ==>  ?e. &0< e /\ (!t i. -- e<t /\ t<e/\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))`,
1344 STRIP_TAC
1345 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_MK
1346 THEN RESA_TAC
1347 THEN EXISTS_TAC`e:real`
1348 THEN ASM_REWRITE_TAC[]
1349 THEN REPEAT GEN_TAC
1350 THEN POP_ASSUM(fun th-> STRIP_TAC
1351 THEN MRESA_TAC th[`t:real`;`i:num`])
1352 THEN POP_ASSUM (fun th-> STRIP_TAC
1353 THEN MP_TAC th
1354 THEN RESA_TAC
1355 THEN POP_ASSUM MP_TAC
1356 THEN REWRITE_TAC[DIST_REFL])
1357 THEN REAL_ARITH_TAC);;
1358
1359
1360
1361 let V3_DEFOR_EQ_IN_FF_MK=prove_by_refinement(
1362 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
1363   MMs_v39 s w /\
1364  w l=v2/\ w (l+k-1) =v1 /\
1365 &0< x1 /\ &0<x2   /\ &0< x5 /\
1366 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
1367 /\ &0< e/\ --e<t 
1368 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))
1369 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
1370 /\ IMAGE (w:num->real^3) (:num)=V
1371 ==> (!a. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v2 t,a IN
1372                         IMAGE
1373                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
1374                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
1375                         FF
1376  <=> v2,a IN FF)`,
1377 [STRIP_TAC
1378 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
1379 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1380 THEN MP_TAC th
1381 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
1382 THEN ASSUME_TAC th
1383 THEN STRIP_TAC)
1384 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
1385 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
1386 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
1387 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
1388 THEN RESA_TAC
1389 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
1390
1391 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
1392 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1393 THEN MP_TAC th
1394 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
1395 THEN REPEAT RESA_TAC);
1396
1397 MP_TAC Local_lemmas.CVLF_LF_F
1398 THEN RESA_TAC
1399 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
1400 THEN GEN_TAC
1401 THEN EQ_TAC
1402 THEN RESA_TAC;
1403
1404 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
1405 THEN RESA_TAC;
1406
1407 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
1408 THEN RESA_TAC
1409 THEN REMOVE_ASSUM_TAC
1410 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th;VECTOR_ARITH`a-b+b=a:real^3`]);
1411
1412 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
1413 THEN MP_TAC th)
1414 THEN RESA_TAC
1415 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
1416 THEN REPEAT RESA_TAC
1417 THEN DICH_TAC 3
1418 THEN EXPAND_TAC"FF"
1419 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
1420 THEN STRIP_TAC
1421 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
1422 THEN ASM_TAC
1423 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
1424 THEN REPEAT RESA_TAC
1425 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
1426 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`x':num`[ARITH_RULE`4 MOD 4=0`]
1427 THEN MRESA_TAC th[`l:num`])
1428 THEN DICH_TAC (69-62)
1429 THEN RESA_TAC
1430 THEN REPLICATE_TAC 3 (POP_ASSUM MP_TAC)
1431 THEN MP_TAC(SET_RULE`x' MOD k= l MOD k\/ ~(x' MOD k= l MOD k)`)
1432 THEN RESA_TAC;
1433
1434 REPEAT RESA_TAC;
1435
1436 REPEAT RESA_TAC
1437 THEN THAYTHE_TAC (70-34)[`t:real`;`x':num`]
1438 THEN DICH_TAC (70-61)
1439 THEN RESA_TAC
1440 THEN DICH_TAC 1
1441 THEN ASM_REWRITE_TAC[];
1442
1443 EXISTS_TAC`v2:real^3,a':real^3`
1444 THEN ASM_REWRITE_TAC[]
1445 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,a'):real^3#real^3`]
1446 THEN VECTOR_ARITH_TAC;]);;
1447
1448
1449
1450
1451
1452 let V3_DEFOR_EQ_IN_FF_MK_SYM=prove_by_refinement(
1453 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
1454   MMs_v39 s w /\
1455  w l=v2/\ w (l+k-1) =v1 /\
1456 &0< x1 /\ &0<x2   /\ &0< x5 /\
1457 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
1458 /\ &0< e/\ --e<t 
1459 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))
1460 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
1461 /\ IMAGE (w:num->real^3) (:num)=V
1462 ==> (!a. a, v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v2 t IN
1463                         IMAGE
1464                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
1465                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
1466                         FF
1467  <=> a, v2 IN FF)`,
1468 [ STRIP_TAC
1469 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
1470 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1471 THEN MP_TAC th
1472 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
1473 THEN ASSUME_TAC th
1474 THEN STRIP_TAC)
1475 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
1476 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
1477 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
1478 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
1479 THEN RESA_TAC
1480 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
1481
1482 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
1483 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1484 THEN MP_TAC th
1485 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
1486 THEN REPEAT RESA_TAC);
1487
1488 MP_TAC Local_lemmas.CVLF_LF_F
1489 THEN RESA_TAC
1490 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
1491 THEN GEN_TAC
1492 THEN EQ_TAC
1493 THEN RESA_TAC;
1494
1495 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
1496 THEN RESA_TAC;
1497
1498 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
1499 THEN RESA_TAC
1500 THEN REMOVE_ASSUM_TAC
1501 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th;VECTOR_ARITH`a-b+b=a:real^3`]);
1502
1503 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
1504 THEN MP_TAC th)
1505 THEN RESA_TAC
1506 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
1507 THEN REPEAT RESA_TAC
1508 THEN DICH_TAC 3
1509 THEN EXPAND_TAC"FF"
1510 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
1511 THEN STRIP_TAC
1512 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
1513 THEN ASM_TAC
1514 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
1515 THEN REPEAT RESA_TAC
1516 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
1517 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`SUC x':num`[ARITH_RULE`4 MOD 4=0`]
1518 THEN MRESA_TAC th[`l:num`])
1519 THEN DICH_TAC (69-62)
1520 THEN RESA_TAC
1521 THEN REPLICATE_TAC 3 (POP_ASSUM MP_TAC)
1522 THEN MP_TAC(SET_RULE`SUC x' MOD k= l MOD k\/ ~(SUC x' MOD k=  l MOD k)`)
1523 THEN RESA_TAC;
1524
1525 REPEAT RESA_TAC;
1526
1527 REPEAT RESA_TAC
1528 THEN THAYTHE_TAC (70-34)[`t:real`;`SUC x':num`];
1529
1530 EXISTS_TAC`a':real^3,v2:real^3`
1531 THEN ASM_REWRITE_TAC[]
1532 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`;`(a',v2):real^3#real^3`]
1533 THEN VECTOR_ARITH_TAC]);;
1534
1535
1536
1537
1538
1539
1540
1541 let DEFORMATION_AZIM_V3_DEFOR_V1_MK=prove_by_refinement(`scs_k_v39 s = k /\
1542  3 < k /\
1543  is_scs_v39 s /\
1544  MMs_v39 s w /\
1545  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
1546  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
1547  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
1548  j MOD k = SUC l MOD k /\
1549  scs_a_v39 s j l = dist (w j,w l) /\
1550  dist (w j,w l) < scs_b_v39 s j l /\
1551  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
1552  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
1553  (!i. ~scs_J_v39 s l i) /\
1554  w l = v2 /\
1555  w (l + k - 1) = v1 /\
1556  norm v1 pow 2 = x1 /\
1557  norm v2 pow 2 = x2 /\
1558  norm (v2 - v1) pow 2 = x5 /\
1559  a = -- &1 /\
1560  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
1561  IMAGE w (:num) = V
1562  ==> (?e. &0 < e /\
1563           (!t.
1564                 --e < t /\ t < e
1565                ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v2 t)
1566                    (rho_node1
1567                     (IMAGE
1568                      (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
1569                            v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
1570                     FF)
1571                    (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v2 t))
1572                    (@a. a,v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v2 t IN
1573                         IMAGE
1574                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
1575                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
1576                         FF) =
1577                    azim (vec 0) v2 (rho_node1 FF v2) (@a. a,v2 IN FF)))`,
1578 [
1579 STRIP_TAC
1580 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK
1581 THEN RESA_TAC
1582 THEN ASM_TAC
1583 THEN REPEAT RESA_TAC
1584 THEN DICH_TAC (22-5)
1585 THEN RESA_TAC
1586 THEN DICH_TAC (22-5)
1587 THEN RESA_TAC
1588 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR_TWO_CASES)[`s:scs_v39`;`w:num->real^3`;`l:num`;`k:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
1589 THEN POP_ASSUM MP_TAC
1590 THEN REWRITE_TAC[GSYM dist]
1591 THEN ONCE_REWRITE_TAC[DIST_SYM]
1592 THEN REWRITE_TAC[dist]
1593 THEN RESA_TAC
1594 THEN REWRITE_TAC[GSYM dist]
1595 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1_MK)[`a:real`;`v2:real^3`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`(w:num->real^3)  (SUC l)`]
1596 THEN POP_ASSUM MP_TAC
1597 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
1598 THEN ASM_REWRITE_TAC[]
1599 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
1600 THEN ASM_REWRITE_TAC[]
1601 THEN STRIP_TAC
1602 THEN ABBREV_TAC`e1=(min e e')/ &2`
1603 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
1604 ==> &0< e1/\ e1< e/\ e1<e'`)
1605 THEN RESA_TAC
1606 THEN EXISTS_TAC`e1:real`
1607 THEN ASM_REWRITE_TAC[]
1608 THEN REPEAT STRIP_TAC
1609 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
1610 ==> t< e/\ --e<t`)
1611 THEN RESA_TAC
1612 THEN MP_TAC V3_DEFOR_EQ_IN_FF_MK_SYM
1613 THEN RESA_TAC
1614 THEN REWRITE_TAC[rho_node1]
1615 THEN MP_TAC V3_DEFOR_EQ_IN_FF_MK
1616 THEN RESA_TAC
1617 THEN REWRITE_TAC[v3_defor_v5;v3_defor_v4]
1618 THEN MP_TAC MMS_IMP_BBS
1619 THEN RESA_TAC
1620 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
1621 THEN RESA_TAC
1622 THEN MP_TAC EXPAND_PERIODIC
1623 THEN RESA_TAC
1624 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
1625 THEN MP_TAC WL_IN_FF
1626 THEN RESA_TAC;
1627
1628 ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
1629 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
1630
1631 REPLICATE_TAC (50-3)(POP_ASSUM MP_TAC)
1632 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1633 THEN MP_TAC th
1634 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
1635 THEN REPEAT RESA_TAC);
1636
1637 MP_TAC Local_lemmas.CVLF_LF_F
1638 THEN RESA_TAC
1639 THEN REWRITE_TAC[GSYM rho_node1;GSYM ivs_rho_node1]
1640 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)`]
1641 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)`]
1642 THEN DICH_TAC (55-4)
1643 THEN RESA_TAC
1644 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e' /\ --e1<t
1645 ==> t< e'/\ --e'<t`)
1646 THEN RESA_TAC
1647 THEN THAYTHE_TAC (57-27)[`t:real`]
1648 THEN MATCH_MP_TAC Planarity.aff_gt2_subset_aff_ge
1649 THEN ASM_REWRITE_TAC[]
1650 THEN MRESA_TAC th3[`vec 0:real^3`;`(w:num->real^3) (SUC l)`;`(w:num->real^3)(l+k-1)`]
1651 THEN STRIP_TAC;
1652
1653 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
1654 THEN EXISTS_TAC`(w:num->real^3) (SUC l)`
1655 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
1656 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
1657 THEN ASM_REWRITE_TAC[];
1658
1659 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
1660 THEN EXISTS_TAC`(w:num->real^3)(l+k-1)`
1661 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
1662 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
1663 THEN ASM_REWRITE_TAC[]]);;
1664
1665
1666
1667
1668
1669 let V3_DEFOR_EQ_IN_FF_SUB_MK=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
1670   MMs_v39 s w /\
1671  w l=v2/\ w (l+k-1) =v1 /\
1672 &0< x1 /\ &0<x2   /\ &0< x5 /\
1673 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
1674 /\ &0< e/\ --e<t 
1675 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))
1676 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
1677 /\ IMAGE (w:num->real^3) (:num)=V
1678 ==> (@a. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v1 t,a IN
1679                         IMAGE
1680                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
1681                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
1682                         FF)
1683  = v3_defor_v1 (-- &1) (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1`,
1684 [STRIP_TAC
1685 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
1686 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1687 THEN MP_TAC th
1688 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
1689 THEN ASSUME_TAC th
1690 THEN STRIP_TAC)
1691 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
1692 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
1693 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
1694 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
1695 THEN RESA_TAC
1696 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
1697
1698 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
1699 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1700 THEN MP_TAC th
1701 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
1702 THEN REPEAT RESA_TAC);
1703
1704 MP_TAC Local_lemmas.CVLF_LF_F
1705 THEN RESA_TAC
1706 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
1707 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
1708 THEN STRIP_TAC;
1709
1710 EXISTS_TAC`v3_defor_v1 (-- &1) (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1`
1711 THEN ASM_REWRITE_TAC[IMAGE;IN_ELIM_THM]
1712 THEN EXISTS_TAC`v1:real^3,v2:real^3`
1713 THEN ASM_REWRITE_TAC[]
1714 THEN MP_TAC EXPAND_PERIODIC
1715 THEN RESA_TAC
1716 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`];
1717
1718  GEN_TAC
1719 THEN RESA_TAC;
1720
1721 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
1722 THEN RESA_TAC;
1723
1724 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
1725 THEN RESA_TAC;
1726
1727 DICH_TAC (45-42)
1728 THEN MP_TAC EXPAND_PERIODIC
1729 THEN RESA_TAC
1730 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
1731 THEN MRESAL_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`;`(v1,v2):real^3#real^3`][VECTOR_ARITH`a-a+a=a:real^3`]
1732 THEN MP_TAC Imjxphr.MOD_ADD_SUB_1
1733 THEN RESA_TAC
1734 THEN THAYTHE_TAC(48-15)[`t:real`;`l+k-1`];
1735
1736 DICH_TAC 2
1737 THEN DICH_TAC 2
1738 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
1739 THEN MP_TAC EXPAND_PERIODIC
1740 THEN RESA_TAC
1741 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
1742 THEN MRESAL_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`;`(v1,v2):real^3#real^3`][VECTOR_ARITH`a-a+a=a:real^3`]
1743 THEN STRIP_TAC
1744 THEN STRIP_TAC
1745 THEN SUBGOAL_THEN`v1,a' IN (FF:real^3#real^3->bool)`ASSUME_TAC;
1746
1747 ASM_REWRITE_TAC[];
1748
1749 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`]
1750 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)`;`a':real^3`;]]);;
1751
1752
1753
1754 let V3_DEFOR_EQ_IN_FF_SUB_MK_SYM=prove_by_refinement(
1755 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
1756   MMs_v39 s w /\
1757  w l=v2/\ w (l+k-1) =v1 /\
1758 &0< x1 /\ &0<x2   /\ &0< x5 /\
1759 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
1760 /\ &0< e/\ --e<t 
1761 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))
1762 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
1763 /\ IMAGE (w:num->real^3) (:num)=V
1764 ==> (!a. a, v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v1 t IN
1765                         IMAGE
1766                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
1767                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
1768                         FF
1769  <=> a, v1 IN FF)`,
1770 [
1771 STRIP_TAC
1772 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
1773 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1774 THEN MP_TAC th
1775 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
1776 THEN ASSUME_TAC th
1777 THEN STRIP_TAC)
1778 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
1779 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
1780 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
1781 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
1782 THEN RESA_TAC
1783 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
1784
1785 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
1786 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1787 THEN MP_TAC th
1788 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
1789 THEN REPEAT RESA_TAC);
1790
1791 MP_TAC Local_lemmas.CVLF_LF_F
1792 THEN RESA_TAC
1793 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
1794 THEN GEN_TAC
1795 THEN EQ_TAC
1796 THEN RESA_TAC;
1797
1798 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
1799 THEN RESA_TAC;
1800
1801 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
1802 THEN RESA_TAC
1803 THEN DICH_TAC 2
1804 THEN MP_TAC EXPAND_PERIODIC
1805 THEN RESA_TAC
1806 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
1807 THEN MRESAL_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`;`(v1,v2):real^3#real^3`][VECTOR_ARITH`a-a+a=a:real^3`]
1808 THEN MP_TAC Imjxphr.MOD_ADD_SUB_1
1809 THEN RESA_TAC
1810 THEN THAYTHE_TAC(48-15)[`t:real`;`l+k-1`];
1811
1812 MP_TAC(SET_RULE`v2=FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
1813 THEN RESA_TAC;
1814
1815  DICH_TAC (2)
1816 THEN ASM_REWRITE_TAC[]
1817 THEN MP_TAC EXPAND_PERIODIC
1818 THEN RESA_TAC
1819 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
1820 THEN MRESAL_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`;`(v1,v2):real^3#real^3`][VECTOR_ARITH`a-a+a=a:real^3`]
1821 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
1822 THEN STRIP_TAC
1823 THEN SUBGOAL_THEN`v2,v1 IN FF:real^3#real^3->bool`ASSUME_TAC;
1824
1825 ASM_REWRITE_TAC[];
1826
1827
1828 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`;`FST (x:real^3#real^3)`]
1829 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`;]
1830 THEN POP_ASSUM MP_TAC
1831 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
1832 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`;]
1833 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
1834 THEN RESA_TAC
1835 THEN POP_ASSUM(fun th-> MRESA_TAC th[`SND(x:real^3#real^3)`]);
1836
1837 DICH_TAC 2
1838 THEN DICH_TAC 2
1839 THEN ASM_REWRITE_TAC[]
1840 THEN MP_TAC EXPAND_PERIODIC
1841 THEN RESA_TAC
1842 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
1843 THEN MRESAL_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`;`(v1,v2):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
1844 THEN REPEAT RESA_TAC;
1845
1846 EXISTS_TAC`a':real^3,v1:real^3`
1847 THEN ASM_REWRITE_TAC[]
1848 THEN POP_ASSUM MP_TAC
1849 THEN MP_TAC(SET_RULE`a'=v2\/ ~(a'=v2:real^3)`)
1850 THEN RESA_TAC;
1851
1852 STRIP_TAC
1853 THEN MP_TAC EXPAND_PERIODIC
1854 THEN RESA_TAC
1855 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`];
1856
1857
1858 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`]
1859 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`;]
1860 THEN POP_ASSUM MP_TAC
1861 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
1862 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`;]
1863 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
1864 THEN RESA_TAC
1865 THEN POP_ASSUM(fun th-> MRESA_TAC th[`v1:real^3`]);
1866
1867 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
1868
1869
1870
1871
1872
1873 let DEFORMATION_AZIM_V3_DEFOR_SUB_MK=prove_by_refinement(`scs_k_v39 s = k /\
1874  3 < k /\
1875  is_scs_v39 s /\
1876  MMs_v39 s w /\
1877  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
1878  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
1879  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
1880  j MOD k = SUC l MOD k /\
1881  scs_a_v39 s j l = dist (w j,w l) /\
1882  dist (w j,w l) < scs_b_v39 s j l /\
1883  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
1884  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
1885  (!i. ~scs_J_v39 s l i) /\
1886  w l = v2 /\
1887  w (l + k - 1) = v1 /\
1888  norm v1 pow 2 = x1 /\
1889  norm v2 pow 2 = x2 /\
1890  norm (v2 - v1) pow 2 = x5 /\
1891  a = -- &1 /\
1892  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
1893  IMAGE w (:num) = V
1894  ==> (?e. &0 < e /\
1895           (!t.
1896                 --e < t /\ t < e
1897                ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v1 t)
1898                    (rho_node1
1899                     (IMAGE
1900                      (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
1901                            v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
1902                     FF)
1903                    (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v1 t))
1904                    (@a. a,v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v1 t IN
1905                         IMAGE
1906                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
1907                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
1908                         FF) =
1909                    azim (vec 0) v1 (rho_node1 FF v1) (@a. a,v1 IN FF)))`,
1910 [
1911 STRIP_TAC
1912 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK
1913 THEN RESA_TAC
1914 THEN ASM_TAC
1915 THEN REPEAT RESA_TAC
1916 THEN DICH_TAC (22-5)
1917 THEN RESA_TAC
1918 THEN DICH_TAC (22-5)
1919 THEN RESA_TAC
1920 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR_TWO_CASES)[`s:scs_v39`;`w:num->real^3`;`l:num`;`k:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
1921 THEN POP_ASSUM MP_TAC
1922 THEN REWRITE_TAC[GSYM dist]
1923 THEN ONCE_REWRITE_TAC[DIST_SYM]
1924 THEN REWRITE_TAC[dist]
1925 THEN RESA_TAC
1926 THEN REWRITE_TAC[GSYM dist]
1927 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1_MK)[`a:real`;`v2:real^3`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`(w:num->real^3)  (SUC l)`]
1928 THEN POP_ASSUM MP_TAC
1929 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
1930 THEN ASM_REWRITE_TAC[]
1931 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
1932 THEN ASM_REWRITE_TAC[]
1933 THEN STRIP_TAC
1934 THEN ABBREV_TAC`e1=(min e e')/ &2`
1935 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
1936 ==> &0< e1/\ e1< e/\ e1<e'`)
1937 THEN RESA_TAC
1938 THEN EXISTS_TAC`e1:real`
1939 THEN ASM_REWRITE_TAC[]
1940 THEN REPEAT STRIP_TAC
1941 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
1942 ==> t< e/\ --e<t`)
1943 THEN RESA_TAC
1944 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SUB_MK_SYM
1945 THEN RESA_TAC
1946 THEN REWRITE_TAC[rho_node1]
1947 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SUB_MK
1948 THEN RESA_TAC
1949 THEN MP_TAC MMS_IMP_BBS
1950 THEN RESA_TAC
1951 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
1952 THEN RESA_TAC
1953 THEN MP_TAC EXPAND_PERIODIC
1954 THEN RESA_TAC
1955 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
1956 THEN MP_TAC WL_IN_FF
1957 THEN RESA_TAC;
1958
1959 ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
1960 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
1961
1962 REPLICATE_TAC (50-3)(POP_ASSUM MP_TAC)
1963 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1964 THEN MP_TAC th
1965 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
1966 THEN REPEAT RESA_TAC);
1967
1968 MP_TAC Local_lemmas.CVLF_LF_F
1969 THEN RESA_TAC
1970 THEN MRESAL_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`;`(v1,v2):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
1971 THEN ASM_REWRITE_TAC[v3_defor_v5;v3_defor_v4;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`;VECTOR_ARITH`a-b+b=a:real^3`]
1972 THEN REWRITE_TAC[GSYM rho_node1;GSYM ivs_rho_node1]
1973 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)`]
1974 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)`]
1975 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e' /\ --e1<t
1976 ==> t< e'/\ --e'<t`)
1977 THEN RESA_TAC
1978 THEN THAYTHE_TAC (57-27)[`t:real`]
1979 THEN ONCE_REWRITE_TAC[Rogers.AZIM_EQ_SYM];
1980
1981
1982 MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w (SUC l)}/\
1983  aff_gt {vec 0} {v1, w (SUC l)} SUBSET aff_ge {vec 0} {v1, w (SUC l)}
1984 ==> v2 IN aff_ge {vec 0} {v1:real^3, w (SUC l )}`)
1985 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
1986 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
1987 THEN ASM_REWRITE_TAC[]
1988 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
1989 THEN RESA_TAC
1990 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)))`;]
1991 THEN POP_ASSUM MP_TAC
1992 THEN ONCE_REWRITE_TAC[SET_RULE`{C,A,B}={C,B,A}`]
1993 THEN ASM_REWRITE_TAC[]
1994 THEN RESA_TAC
1995 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)`;`v1:real^3`;`v2:real^3`]
1996 THEN  MATCH_MP_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT
1997 THEN STRIP_TAC
1998 THEN ASM_REWRITE_TAC[];
1999
2000 ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
2001 THEN MATCH_MP_TAC(GEN_ALL (SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
2002 THEN EXISTS_TAC`aff_gt{vec 0:real^3} {w(SUC l),v1}`
2003 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE];
2004
2005 ONCE_REWRITE_TAC[SET_RULE`{C,A,B}={C,B,A}`]
2006 THEN ASM_REWRITE_TAC[];
2007
2008 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
2009 THEN EXISTS_TAC`(w:num->real^3)(SUC l)`
2010 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
2011 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
2012 THEN ASM_REWRITE_TAC[]]);;
2013
2014
2015
2016
2017 let V3_DEFOR_EQ_IN_FF_SUC_MK=prove_by_refinement(
2018 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2019   MMs_v39 s w /\
2020  w l=v2/\ w (l+k-1) =v1 /\
2021 &0< x1 /\ &0<x2   /\ &0< x5 /\
2022 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
2023 /\ &0< e/\ --e<t 
2024 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))
2025 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2026 /\ IMAGE (w:num->real^3) (:num)=V
2027 ==> (!a. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (SUC l)) t,a IN
2028                         IMAGE
2029                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
2030                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
2031                         FF
2032 <=> w(SUC l),a IN FF)`,
2033 [
2034 STRIP_TAC
2035 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
2036 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2037 THEN MP_TAC th
2038 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
2039 THEN ASSUME_TAC th
2040 THEN STRIP_TAC)
2041 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2042 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
2043 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
2044 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
2045 THEN RESA_TAC
2046 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2047
2048 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
2049 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2050 THEN MP_TAC th
2051 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2052 THEN REPEAT RESA_TAC);
2053
2054 MP_TAC Local_lemmas.CVLF_LF_F
2055 THEN RESA_TAC
2056 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
2057 THEN GEN_TAC
2058 THEN EQ_TAC
2059 THEN RESA_TAC;
2060
2061 MP_TAC(SET_RULE`v2=SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
2062 THEN RESA_TAC;
2063
2064 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
2065 THEN RESA_TAC
2066 THEN DICH_TAC 2
2067 THEN DICH_TAC 2
2068 THEN ASM_REWRITE_TAC[]
2069 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
2070 THEN MRESAL_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(SUC l)):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
2071 THEN STRIP_TAC
2072 THEN SUBGOAL_THEN`w(SUC l),v2 IN FF:real^3#real^3->bool`ASSUME_TAC;
2073
2074 ASM_REWRITE_TAC[];
2075
2076
2077 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`SND (x:real^3#real^3)`;`(w:num->real^3)(SUC l)`]
2078 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)(SUC l)`;`v2:real^3`;]
2079 THEN POP_ASSUM MP_TAC
2080 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
2081 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`SND (x:real^3#real^3),(w:num->real^3)(SUC l)`;`V:real^3->bool`;]
2082 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
2083 THEN RESA_TAC
2084 THEN POP_ASSUM(fun th-> MRESA_TAC th[`SND(x:real^3#real^3)`]);
2085
2086 MP_TAC(SET_RULE`v2=FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
2087 THEN RESA_TAC;
2088
2089 DICH_TAC 2
2090 THEN DICH_TAC 2
2091 THEN ASM_REWRITE_TAC[]
2092 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
2093 THEN MRESAL_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(SUC l)):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
2094 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
2095 THEN RESA_TAC
2096 THEN POP_ASSUM(fun th-> MRESA_TAC th[`l:num`])
2097 THEN THAYTHE_TAC (46-15)[`t:real`;`SUC l`];
2098
2099 DICH_TAC 2
2100 THEN DICH_TAC 2
2101 THEN ASM_REWRITE_TAC[]
2102 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
2103 THEN MRESAL_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(SUC l)):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
2104 THEN STRIP_TAC
2105 THEN DICH_TAC 1
2106 THEN ASM_REWRITE_TAC[];
2107
2108 EXISTS_TAC`w (SUC l):real^3,a':real^3`
2109 THEN ASM_REWRITE_TAC[]
2110 THEN POP_ASSUM MP_TAC
2111 THEN MP_TAC(SET_RULE`a'=v2\/ ~(a'=v2:real^3)`)
2112 THEN RESA_TAC;
2113
2114 STRIP_TAC
2115 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`];
2116
2117 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)`]
2118 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)(SUC l)`;`v2:real^3`;]
2119 THEN POP_ASSUM MP_TAC
2120 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
2121 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)(SUC l)`;`V:real^3->bool`;]
2122 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
2123 THEN RESA_TAC
2124 THEN POP_ASSUM(fun th-> MRESA_TAC th[`v2:real^3`]);
2125
2126 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
2127
2128
2129
2130 let V3_DEFOR_EQ_IN_FF_SUC_MK_SYM=prove_by_refinement(
2131 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2132   MMs_v39 s w /\
2133  w l=v2/\ w (l+k-1) =v1 /\
2134 &0< x1 /\ &0<x2   /\ &0< x5 /\
2135 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
2136 /\ &0< e/\ --e<t 
2137 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))
2138 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2139 /\ IMAGE (w:num->real^3) (:num)=V
2140 ==> (@a. a, v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (SUC l)) t IN
2141                         IMAGE
2142                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
2143                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
2144                         FF
2145 )  = v3_defor_v1 (-- &1) (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1`,
2146 [ STRIP_TAC
2147 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
2148 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2149 THEN MP_TAC th
2150 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
2151 THEN ASSUME_TAC th
2152 THEN STRIP_TAC)
2153 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2154 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
2155 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
2156 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
2157 THEN RESA_TAC
2158 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2159
2160 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
2161 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2162 THEN MP_TAC th
2163 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2164 THEN REPEAT RESA_TAC);
2165
2166
2167
2168 MP_TAC Local_lemmas.CVLF_LF_F
2169 THEN RESA_TAC
2170 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
2171 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
2172 THEN STRIP_TAC;
2173
2174 EXISTS_TAC`v3_defor_v1 (-- &1) (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1`
2175 THEN ASM_REWRITE_TAC[IMAGE;IN_ELIM_THM]
2176 THEN EXISTS_TAC`v2:real^3,(w:num->real^3) (SUC l)`
2177 THEN ASM_REWRITE_TAC[]
2178 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`];
2179
2180  GEN_TAC
2181 THEN RESA_TAC;
2182
2183 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
2184 THEN RESA_TAC;
2185
2186
2187 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
2188 THEN RESA_TAC;
2189
2190
2191 DICH_TAC (45-43)
2192 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
2193 THEN MRESAL_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(SUC l)):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
2194 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
2195 THEN RESA_TAC
2196 THEN POP_ASSUM(fun th-> MRESA_TAC th[`l:num`])
2197 THEN THAYTHE_TAC (47-15)[`t:real`;`SUC l`];
2198
2199 DICH_TAC 2
2200 THEN DICH_TAC 2
2201 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
2202 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
2203 THEN MRESAL_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(SUC  l)):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
2204 THEN STRIP_TAC
2205 THEN STRIP_TAC
2206 THEN SUBGOAL_THEN`a',w(SUC l) IN (FF:real^3#real^3->bool)`ASSUME_TAC;
2207
2208 ASM_REWRITE_TAC[];
2209
2210 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`]
2211 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)`;`(w:num->real^3)(SUC l)`;`a':real^3`]]);;
2212
2213
2214
2215 let DEFORMATION_AZIM_V3_DEFOR_SUC_MK=prove_by_refinement(`scs_k_v39 s = k /\
2216  3 < k /\
2217  is_scs_v39 s /\
2218  MMs_v39 s w /\
2219  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
2220  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
2221  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
2222  j MOD k = SUC l MOD k /\
2223  scs_a_v39 s j l = dist (w j,w l) /\
2224  dist (w j,w l) < scs_b_v39 s j l /\
2225  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
2226  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
2227  (!i. ~scs_J_v39 s l i) /\
2228  w l = v2 /\
2229  w (l + k - 1) = v1 /\
2230  norm v1 pow 2 = x1 /\
2231  norm v2 pow 2 = x2 /\
2232  norm (v2 - v1) pow 2 = x5 /\
2233  a = -- &1 /\
2234  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
2235  IMAGE w (:num) = V
2236  ==> (?e. &0 < e /\
2237           (!t.
2238                 --e < t /\ t < e
2239                ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (SUC l)) t)
2240                    (rho_node1
2241                     (IMAGE
2242                      (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
2243                            v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
2244                     FF)
2245                    (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (SUC l)) t))
2246                    (@a. a,v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (SUC l)) t IN
2247                         IMAGE
2248                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
2249                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
2250                         FF) =
2251                    azim (vec 0) (w (SUC l)) (rho_node1 FF (w (SUC l))) (@a. a,w (SUC l) IN FF)))`,
2252 [
2253 STRIP_TAC
2254 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK
2255 THEN RESA_TAC
2256 THEN ASM_TAC
2257 THEN REPEAT RESA_TAC
2258 THEN DICH_TAC (22-5)
2259 THEN RESA_TAC
2260 THEN DICH_TAC (22-5)
2261 THEN RESA_TAC
2262 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR_TWO_CASES)[`s:scs_v39`;`w:num->real^3`;`l:num`;`k:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
2263 THEN POP_ASSUM MP_TAC
2264 THEN REWRITE_TAC[GSYM dist]
2265 THEN ONCE_REWRITE_TAC[DIST_SYM]
2266 THEN REWRITE_TAC[dist]
2267 THEN RESA_TAC
2268 THEN REWRITE_TAC[GSYM dist]
2269 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1_MK)[`a:real`;`v2:real^3`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`(w:num->real^3)  (SUC l)`]
2270 THEN POP_ASSUM MP_TAC
2271 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
2272 THEN ASM_REWRITE_TAC[]
2273 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
2274 THEN ASM_REWRITE_TAC[]
2275 THEN STRIP_TAC
2276 THEN ABBREV_TAC`e1=(min e e')/ &2`
2277 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
2278 ==> &0< e1/\ e1< e/\ e1<e'`)
2279 THEN RESA_TAC
2280 THEN EXISTS_TAC`e1:real`
2281 THEN ASM_REWRITE_TAC[]
2282 THEN REPEAT STRIP_TAC
2283 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
2284 ==> t< e/\ --e<t`)
2285 THEN RESA_TAC
2286 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SUC_MK_SYM
2287 THEN RESA_TAC
2288 THEN REWRITE_TAC[rho_node1]
2289 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SUC_MK
2290 THEN RESA_TAC
2291 THEN MP_TAC MMS_IMP_BBS
2292 THEN RESA_TAC
2293 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2294 THEN RESA_TAC
2295 THEN MP_TAC EXPAND_PERIODIC
2296 THEN RESA_TAC
2297 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
2298 THEN MP_TAC WL_IN_FF
2299 THEN RESA_TAC;
2300
2301 ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2302 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2303
2304 REPLICATE_TAC (50-3)(POP_ASSUM MP_TAC)
2305 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2306 THEN MP_TAC th
2307 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
2308 THEN REPEAT RESA_TAC);
2309
2310 MP_TAC Local_lemmas.CVLF_LF_F
2311 THEN RESA_TAC
2312 THEN MRESAL_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(SUC l)):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
2313 THEN ASM_REWRITE_TAC[v3_defor_v5;v3_defor_v4;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`;VECTOR_ARITH`a-b+b=a:real^3`]
2314 THEN REWRITE_TAC[GSYM rho_node1;GSYM ivs_rho_node1]
2315 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)`]
2316 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)`]
2317 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e' /\ --e1<t
2318 ==> t< e'/\ --e'<t`)
2319 THEN RESA_TAC
2320 THEN THAYTHE_TAC (57-27)[`t:real`];
2321
2322
2323 MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w (SUC l)}/\
2324  aff_gt {vec 0} {v1, w (SUC l)} SUBSET aff_ge {vec 0} {v1, w (SUC l)}
2325 ==> v2 IN aff_ge {vec 0} {v1:real^3, w (SUC l )}`)
2326 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
2327 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
2328 THEN RESA_TAC
2329 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,w(SUC l)):real^3#real^3`]
2330 THEN MRESA_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT[`vec 0:real^3`;`(w:num->real^3)(SUC l)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;`(rho_node1 FF (w(SUC l)))`;]
2331 THEN POP_ASSUM MP_TAC
2332 THEN ONCE_REWRITE_TAC[SET_RULE`{C,A,B}={C,B,A}`]
2333 THEN ASM_REWRITE_TAC[]
2334 THEN RESA_TAC
2335 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)`;`(w:num->real^3)(SUC l)`;`v2:real^3`]
2336 THEN  MATCH_MP_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT
2337 THEN STRIP_TAC
2338 THEN ASM_REWRITE_TAC[];
2339
2340 ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
2341 THEN MATCH_MP_TAC(GEN_ALL (SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
2342 THEN EXISTS_TAC`aff_gt{vec 0:real^3} {v1,w(SUC l)}`
2343 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
2344 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
2345 THEN ASM_REWRITE_TAC[];
2346
2347 ONCE_REWRITE_TAC[SET_RULE`{C,A,B}={C,B,A}`]
2348 THEN ASM_REWRITE_TAC[];
2349
2350 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
2351 THEN EXISTS_TAC`(w:num->real^3)(l+k-1)`
2352 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
2353 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
2354 THEN ASM_REWRITE_TAC[]]);;
2355
2356
2357
2358 let V3_DEFOR_EQ_IN_FF_NOT_MK=prove_by_refinement(
2359 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2360   MMs_v39 s w /\
2361  w l=v2/\ w (l+k-1) =v1 /\
2362 &0< x1 /\ &0<x2   /\ &0< x5 /\
2363 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
2364 /\ &0< e/\ --e<t 
2365 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))
2366 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2367 /\ IMAGE (w:num->real^3) (:num)=V
2368 /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(SUC l))
2369 /\ v IN V
2370 ==> (!a. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t,a IN
2371                         IMAGE
2372                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
2373                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
2374                         FF
2375 <=> v,a IN FF)`,
2376 [STRIP_TAC
2377 THEN REPLICATE_TAC (23-3)(POP_ASSUM MP_TAC)
2378 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2379 THEN MP_TAC th
2380 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
2381 THEN ASSUME_TAC th
2382 THEN STRIP_TAC)
2383 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2384 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
2385 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
2386 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
2387 THEN RESA_TAC
2388 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2389
2390 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
2391 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2392 THEN MP_TAC th
2393 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2394 THEN REPEAT RESA_TAC);
2395
2396 MP_TAC Local_lemmas.CVLF_LF_F
2397 THEN RESA_TAC
2398 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
2399 THEN GEN_TAC
2400 THEN EQ_TAC
2401 THEN RESA_TAC;
2402
2403 MP_TAC(SET_RULE`v2=SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
2404 THEN RESA_TAC;
2405
2406 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
2407 THEN RESA_TAC
2408 THEN DICH_TAC 2
2409 THEN DICH_TAC 2
2410 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
2411 THEN STRIP_TAC
2412 THEN SUBGOAL_THEN`v,v2 IN FF:real^3#real^3->bool`ASSUME_TAC;
2413
2414 ASM_REWRITE_TAC[];
2415
2416 MP_TAC EXPAND_PERIODIC
2417 THEN RESA_TAC
2418 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
2419 THEN 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)`]
2420 THEN DICH_TAC (52-19)
2421 THEN RESA_TAC;
2422
2423 MP_TAC(SET_RULE`v2=FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
2424 THEN RESA_TAC;
2425
2426 DICH_TAC 2
2427 THEN DICH_TAC 2
2428 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
2429 THEN DICH_TAC(47-22)
2430 THEN EXPAND_TAC "V"
2431 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
2432 THEN STRIP_TAC
2433 THEN THAYTHE_TAC (48-15)[`t:real`;`x':num`]
2434 THEN POP_ASSUM MP_TAC
2435 THEN MP_TAC(SET_RULE`x' MOD k = l MOD k\/ ~(x' MOD k = l MOD k)`)
2436 THEN RESA_TAC;
2437
2438 MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`x':num`;`w:num->real^3`;`l:num`];
2439
2440 SET_TAC[];
2441
2442 DICH_TAC 2
2443 THEN DICH_TAC 2
2444 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
2445 THEN RESA_TAC;
2446
2447 EXISTS_TAC`v:real^3,a':real^3`
2448 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
2449 THEN POP_ASSUM MP_TAC
2450 THEN MP_TAC(SET_RULE`a'=v2\/ ~(a'=v2:real^3)`)
2451 THEN RESA_TAC;
2452
2453 STRIP_TAC
2454 THEN MP_TAC EXPAND_PERIODIC
2455 THEN RESA_TAC
2456 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
2457 THEN 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)`]
2458 THEN DICH_TAC (52-19)
2459 THEN RESA_TAC;
2460
2461 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
2462
2463
2464
2465
2466 let V3_DEFOR_EQ_IN_FF_NOT_MK_SYM=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2467   MMs_v39 s w /\
2468  w l=v2/\ w (l+k-1) =v1 /\
2469 &0< x1 /\ &0<x2   /\ &0< x5 /\
2470 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
2471 /\ &0< e/\ --e<t 
2472 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))
2473 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2474 /\ IMAGE (w:num->real^3) (:num)=V
2475 /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(SUC l))
2476 /\ v IN V
2477 ==> (!a. a, v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t IN
2478                         IMAGE
2479                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
2480                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
2481                         FF
2482 <=> a,v IN FF)`,
2483 [STRIP_TAC
2484 THEN REPLICATE_TAC (23-3)(POP_ASSUM MP_TAC)
2485 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2486 THEN MP_TAC th
2487 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
2488 THEN ASSUME_TAC th
2489 THEN STRIP_TAC)
2490 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2491 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
2492 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
2493 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
2494 THEN RESA_TAC
2495 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2496
2497 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
2498 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2499 THEN MP_TAC th
2500 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2501 THEN REPEAT RESA_TAC);
2502
2503 MP_TAC Local_lemmas.CVLF_LF_F
2504 THEN RESA_TAC
2505 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
2506 THEN GEN_TAC
2507 THEN EQ_TAC
2508 THEN RESA_TAC;
2509
2510 MP_TAC(SET_RULE`v2=FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
2511 THEN RESA_TAC;
2512
2513 MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
2514 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:real^3,(w:num->real^3) (SUC l)`]
2515 THEN DICH_TAC 3
2516 THEN DICH_TAC 3
2517 THEN MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
2518 THEN RESA_TAC
2519 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
2520 THEN STRIP_TAC
2521 THEN STRIP_TAC
2522 THEN SUBGOAL_THEN`v2,v IN FF:real^3#real^3->bool`ASSUME_TAC;
2523
2524 ASM_REWRITE_TAC[];
2525
2526 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`]
2527 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)`]
2528 THEN DICH_TAC (54-21)
2529 THEN RESA_TAC;
2530
2531 MP_TAC(SET_RULE`v2=SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
2532 THEN RESA_TAC;
2533
2534
2535 DICH_TAC 2
2536 THEN DICH_TAC 2
2537 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
2538 THEN DICH_TAC(47-22)
2539 THEN EXPAND_TAC "V"
2540 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
2541 THEN STRIP_TAC
2542 THEN THAYTHE_TAC (48-15)[`t:real`;`x':num`]
2543 THEN POP_ASSUM MP_TAC
2544 THEN MP_TAC(SET_RULE`x' MOD k = l MOD k\/ ~(x' MOD k = l MOD k)`)
2545 THEN RESA_TAC;
2546
2547 MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`x':num`;`w:num->real^3`;`l:num`];
2548
2549 SET_TAC[];
2550
2551 DICH_TAC 2
2552 THEN DICH_TAC 2
2553 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
2554 THEN REPEAT RESA_TAC;
2555
2556 EXISTS_TAC`a':real^3,v:real^3`
2557 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
2558 THEN POP_ASSUM MP_TAC
2559 THEN MP_TAC(SET_RULE`a'=v2\/ ~(a'=v2:real^3)`)
2560 THEN RESA_TAC;
2561
2562 MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
2563 THEN STRIP_TAC
2564 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`;`v:real^3`]
2565 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)`];
2566
2567 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
2568
2569
2570
2571
2572
2573
2574 let DEFORMATION_AZIM_V3_DEFOR_NOT_MK=prove_by_refinement(`scs_k_v39 s = k /\
2575  3 < k /\
2576  is_scs_v39 s /\
2577  MMs_v39 s w /\
2578  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
2579  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
2580  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
2581  j MOD k = SUC l MOD k /\
2582  scs_a_v39 s j l = dist (w j,w l) /\
2583  dist (w j,w l) < scs_b_v39 s j l /\
2584  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
2585  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
2586  (!i. ~scs_J_v39 s l i) /\
2587  w l = v2 /\
2588  w (l + k - 1) = v1 /\
2589  norm v1 pow 2 = x1 /\
2590  norm v2 pow 2 = x2 /\
2591  norm (v2 - v1) pow 2 = x5 /\
2592  a = -- &1 /\
2593  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
2594  IMAGE w (:num) = V
2595  ==> (?e. &0 < e /\
2596           (!t v.
2597                 --e < t /\ t < e  /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(SUC l))
2598 /\ v IN V
2599              ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t)
2600                    (rho_node1
2601                     (IMAGE
2602                      (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
2603                            v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
2604                     FF)
2605                    (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t))
2606                    (@a. a,v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t IN
2607                         IMAGE
2608                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
2609                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
2610                         FF) =
2611                    azim (vec 0) (v) (rho_node1 FF (v)) (@a. a,v IN FF)))`,
2612 [
2613 STRIP_TAC
2614 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK
2615 THEN RESA_TAC
2616 THEN ASM_TAC
2617 THEN REPEAT RESA_TAC
2618 THEN DICH_TAC (22-5)
2619 THEN RESA_TAC
2620 THEN DICH_TAC (22-5)
2621 THEN RESA_TAC
2622 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR_TWO_CASES)[`s:scs_v39`;`w:num->real^3`;`l:num`;`k:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
2623 THEN POP_ASSUM MP_TAC
2624 THEN REWRITE_TAC[GSYM dist]
2625 THEN ONCE_REWRITE_TAC[DIST_SYM]
2626 THEN REWRITE_TAC[dist]
2627 THEN RESA_TAC
2628 THEN REWRITE_TAC[GSYM dist]
2629 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1_MK)[`a:real`;`v2:real^3`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`(w:num->real^3)  (SUC l)`]
2630 THEN POP_ASSUM MP_TAC
2631 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
2632 THEN ASM_REWRITE_TAC[]
2633 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
2634 THEN ASM_REWRITE_TAC[]
2635 THEN STRIP_TAC
2636 THEN ABBREV_TAC`e1=(min e e')/ &2`
2637 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
2638 ==> &0< e1/\ e1< e/\ e1<e'`)
2639 THEN RESA_TAC
2640 THEN EXISTS_TAC`e1:real`
2641 THEN ASM_REWRITE_TAC[]
2642 THEN REPEAT STRIP_TAC
2643 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
2644 ==> t< e/\ --e<t`)
2645 THEN RESA_TAC
2646 THEN MP_TAC V3_DEFOR_EQ_IN_FF_NOT_MK_SYM
2647 THEN RESA_TAC
2648 THEN REWRITE_TAC[rho_node1]
2649 THEN MP_TAC V3_DEFOR_EQ_IN_FF_NOT_MK
2650 THEN RESA_TAC
2651 THEN MP_TAC MMS_IMP_BBS
2652 THEN RESA_TAC
2653 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2654 THEN RESA_TAC
2655 THEN MP_TAC EXPAND_PERIODIC
2656 THEN RESA_TAC
2657 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
2658 THEN MP_TAC WL_IN_FF
2659 THEN RESA_TAC;
2660
2661 ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2662 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2663
2664
2665 REPLICATE_TAC (54-3)(POP_ASSUM MP_TAC)
2666 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2667 THEN MP_TAC th
2668 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
2669 THEN REPEAT RESA_TAC);
2670
2671 MP_TAC Local_lemmas.CVLF_LF_F
2672 THEN RESA_TAC
2673 THEN MRESAL_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(SUC l)):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
2674 THEN ASM_REWRITE_TAC[v3_defor_v5;v3_defor_v4;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`;VECTOR_ARITH`a-b+b=a:real^3`]]);;
2675
2676
2677
2678 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_MK=prove_by_refinement(`scs_k_v39 s = k /\
2679  3 < k /\
2680  is_scs_v39 s /\
2681  MMs_v39 s w /\
2682  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
2683  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
2684  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
2685  j MOD k = SUC l MOD k /\
2686  scs_a_v39 s j l = dist (w j,w l) /\
2687  dist (w j,w l) < scs_b_v39 s j l /\
2688  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
2689  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
2690  (!i. ~scs_J_v39 s l i) /\
2691  w l = v2 /\
2692  w (l + k - 1) = v1 /\
2693  norm v1 pow 2 = x1 /\
2694  norm v2 pow 2 = x2 /\
2695  norm (v2 - v1) pow 2 = x5 /\
2696  a = -- &1 /\
2697  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
2698  IMAGE w (:num) = V
2699  ==> (?e. &0 < e /\
2700           (!t v.
2701                 --e < t /\ t < e  /\ v IN V
2702              ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t)
2703                    (rho_node1
2704                     (IMAGE
2705                      (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
2706                            v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
2707                     FF)
2708                    (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t))
2709                    (@a. a,v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t IN
2710                         IMAGE
2711                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
2712                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
2713                         FF) =
2714                    azim (vec 0) (v) (rho_node1 FF (v)) (@a. a,v IN FF)))`,
2715 [STRIP_TAC
2716 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_MK
2717 THEN RESA_TAC
2718 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_SUB_MK
2719 THEN RESA_TAC
2720 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_SUC_MK
2721 THEN RESA_TAC
2722 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_NOT_MK
2723 THEN RESA_TAC
2724 THEN ABBREV_TAC`e1=(min (min (min e e') e'')e''')/ &2`
2725 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'''`)
2726 THEN RESA_TAC
2727 THEN EXISTS_TAC`e1:real`
2728 THEN ASM_REWRITE_TAC[]
2729 THEN REPEAT RESA_TAC
2730 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'''
2731 /\  --e< t/\ --e'<t /\ --e''<t/\ --e'''<t`)
2732 THEN RESA_TAC
2733 THEN MP_TAC(SET_RULE`(v=(w:num->real^3)(l+k-1))\/ ~(v=(w:num->real^3)(l+k-1))`)
2734 THEN RESA_TAC;
2735
2736 MATCH_DICH_TAC (46-24)
2737 THEN ASM_REWRITE_TAC[];
2738
2739 MP_TAC(SET_RULE`(v=(w:num->real^3)(SUC l))\/ ~(v=(w:num->real^3)(SUC l))`)
2740 THEN RESA_TAC;
2741
2742 MATCH_DICH_TAC (47-26)
2743 THEN ASM_REWRITE_TAC[];
2744
2745 MP_TAC(SET_RULE`(v=(w:num->real^3)(l))\/ ~(v=(w:num->real^3)( l))`)
2746 THEN RESA_TAC;
2747
2748 MATCH_DICH_TAC (48-22)
2749 THEN ASM_REWRITE_TAC[];
2750
2751 MATCH_DICH_TAC (48-28)
2752 THEN ASM_REWRITE_TAC[]]);;
2753
2754
2755 let DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_AT_ALL_MK=prove(`scs_k_v39 s = k /\
2756  3 < k /\
2757  is_scs_v39 s /\
2758  MMs_v39 s w /\
2759  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
2760  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
2761  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
2762  j MOD k = SUC l MOD k /\
2763  scs_a_v39 s j l = dist (w j,w l) /\
2764  dist (w j,w l) < scs_b_v39 s j l /\
2765  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
2766  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
2767  (!i. ~scs_J_v39 s l i) /\
2768  w l = v2 /\
2769  w (l + k - 1) = v1 /\
2770  norm v1 pow 2 = x1 /\
2771  norm v2 pow 2 = x2 /\
2772  norm (v2 - v1) pow 2 = x5 /\
2773  a = -- &1 /\
2774  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
2775  IMAGE w (:num) = V
2776  ==> (?e. &0 < e /\
2777           (!t v.
2778                 --e < t /\ t < e  /\ v IN V
2779            ==> interior_angle1 (vec 0)
2780                (IMAGE
2781                 (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
2782                       v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
2783                FF)
2784                (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v t) =
2785                interior_angle1 (vec 0) FF v))`,
2786 REWRITE_TAC[interior_angle1;DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_MK]);;
2787
2788
2789
2790 let DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_LE_PI_AT_ALL_MK=prove(`scs_k_v39 s = k /\
2791  3 < k /\
2792  is_scs_v39 s /\
2793  MMs_v39 s w /\
2794  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
2795  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
2796  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
2797  j MOD k = SUC l MOD k /\
2798  scs_a_v39 s j l = dist (w j,w l) /\
2799  dist (w j,w l) < scs_b_v39 s j l /\
2800  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
2801  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
2802  (!i. ~scs_J_v39 s l i) /\
2803  w l = v2 /\
2804  w (l + k - 1) = v1 /\
2805  norm v1 pow 2 = x1 /\
2806  norm v2 pow 2 = x2 /\
2807  norm (v2 - v1) pow 2 = x5 /\
2808  a = -- &1 /\
2809  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
2810  IMAGE w (:num) = V
2811  ==> (?e. &0 < e /\
2812           (!t v.
2813                 --e < t /\ t < e  /\ v IN V /\ interior_angle1 (vec 0) FF v= pi
2814            ==> interior_angle1 (vec 0)
2815                (IMAGE
2816                 (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
2817                       v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
2818                FF)
2819                (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v t) <= pi
2820                ))`,
2821 STRIP_TAC
2822 THEN MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_AT_ALL_MK
2823 THEN RESA_TAC
2824 THEN EXISTS_TAC`e:real`
2825 THEN ASM_REWRITE_TAC[]
2826 THEN REPEAT RESA_TAC
2827 THEN THAYTHE_TAC (26-22)[`t:real`;`v:real^3`]
2828 THEN REAL_ARITH_TAC);;
2829
2830
2831 let FUN_V3_DEFOR_V5=prove(`v3_defor_v5 a x1 x2 x6 v1 w v = (\t. v3_defor_v5 a x1 x2 x6 v1 w v t)`,REWRITE_TAC[FUN_EQ_THM]);;
2832
2833
2834 let V3_DEFOR_DEFORMATION_V5=prove_by_refinement(`&0< x1 /\ &0<x2  /\ &0<x5  /\
2835 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5
2836 /\ a= -- &1
2837 ==> ?e. &0< e /\ deformation (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2) V (--e,e)`,
2838 [
2839 REWRITE_TAC[deformation;real_interval;IN_ELIM_THM;REAL_ARITH`(-- &1 < &0 /\ &0 < &1)`]
2840 THEN STRIP_TAC
2841 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`v2:real^3`]
2842 THEN MRESAL_TAC(GEN_ALL UPS_X_POS_SEG)[`-- v1:real^3`;`v2-v1:real^3`;`x1:real`;`x2:real`;`x5:real`][COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
2843 THEN EXISTS_TAC`e:real`
2844 THEN ASM_REWRITE_TAC[]
2845 THEN MP_TAC(REAL_ARITH`&0< e==> -- e< &0`)
2846 THEN RESA_TAC
2847 THEN STRIP_TAC;
2848
2849 REPEAT STRIP_TAC
2850 THEN ONCE_REWRITE_TAC[FUN_V3_DEFOR_V5]
2851 THEN REWRITE_TAC[v3_defor_v5;v3_defor_v4;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
2852 THEN MP_TAC(SET_RULE`(v=v2:real^3)\/ ~(v=v2)`)
2853 THEN RESA_TAC;
2854
2855 MATCH_MP_TAC CONTINUOUS_ADD
2856 THEN ASM_SIMP_TAC[CONTINUOUS_CONST;]
2857 THEN REWRITE_TAC[V3_DEFOR_V1_O_DEF]
2858 THEN MATCH_MP_TAC CONTINUOUS_REAL_CONTINUOUS_ATREAL_COMPOSE
2859 THEN STRIP_TAC;
2860
2861 MATCH_MP_TAC REAL_CONTINUOUS_SUB
2862 THEN ASM_SIMP_TAC[REAL_CONTINUOUS_CONST;REAL_CONTINUOUS_AT_ID];
2863
2864
2865 MATCH_MP_TAC CONTINUOUS_ATREAL_WITHINREAL
2866 THEN REWRITE_TAC[]
2867 THEN MATCH_MP_TAC (GEN_ALL EYYPQDW_CONTINUOUS_AT_X)
2868 THEN ASM_REWRITE_TAC[]
2869 THEN THAYTHE_TAC (20-15)[`r:real`]
2870 THEN EXISTS_TAC`x2:real`
2871 THEN ASM_REWRITE_TAC[COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
2872 THEN SET_TAC[];
2873
2874 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`;CONTINUOUS_CONST];
2875
2876 REPEAT RESA_TAC
2877 THEN REWRITE_TAC[v3_defor_v5;v3_defor_v4;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`;]
2878 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_ID)[`a:real`;`-- v1:real^3`;`x1:real`;`x2:real`;`x5:real`;`v2-v1:real^3`][REAL_ARITH`(--a< &0<=>  &0<a)/\ a- &0=a`;COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
2879 THEN MP_TAC(SET_RULE`(v=v2:real^3)\/ ~(v=v2)`)
2880 THEN RESA_TAC
2881 THEN VECTOR_ARITH_TAC]);;
2882
2883
2884
2885 let V_DEFORMATION_V3_DEFOR_V5=prove(`IMAGE
2886            (\i. v3_defor_v4 (-- &1) x1 x5 x2 (--v1) (v2 - v1) (w i - v1) t +
2887                 v1)
2888            (:num)=IMAGE (\v. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v t) (IMAGE w (:num))`,
2889 REWRITE_TAC[IMAGE;IN_ELIM_THM;EXTENSION;v3_defor_v5]
2890 THEN SET_TAC[]);;
2891
2892
2893
2894 let E_DEFORMATION_V3_DEFOR_V5=prove_by_refinement(`IMAGE
2895            (\i. {v3_defor_v4 (-- &1) x1 x5 x2 (--v1) (v2 - v1) (w i - v1) t +
2896                  v1, v3_defor_v4 (-- &1) x1 x5 x2 (--v1) (v2 - v1)
2897                      (w (SUC i) - v1)
2898                      t +
2899                      v1})
2900            (:num) = IMAGE (IMAGE (\v. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v t)) (IMAGE (\i. {w i, w (SUC i)}) (:num))`,
2901 [
2902 REWRITE_TAC[EXTENSION]
2903 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;v3_defor_v5]
2904 THEN GEN_TAC
2905 THEN EQ_TAC;
2906 RESA_TAC
2907 THEN EXISTS_TAC`{(w:num->real^3) x', w (SUC x')}`
2908 THEN STRIP_TAC;
2909 EXISTS_TAC`x':num`
2910 THEN ASM_REWRITE_TAC[];
2911 SET_TAC[];
2912 RESA_TAC
2913 THEN EXISTS_TAC`x'':num`
2914 THEN ASM_REWRITE_TAC[]
2915 THEN SET_TAC[]]);;
2916
2917
2918
2919 let F_DEFORMATION_V3_DEFOR_V5=prove(`IMAGE
2920            (\i. v3_defor_v4 (-- &1) x1 x5 x2 (--v1) (v2 - v1) (w i - v1) t +
2921                  v1, v3_defor_v4 (-- &1) x1 x5 x2 (--v1) (v2 - v1)
2922                      (w (SUC i) - v1)
2923                      t +
2924                      v1)
2925            (:num) = IMAGE
2926                (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
2927                      v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t) (IMAGE (\i. w i, w (SUC i)) (:num))`,
2928 REWRITE_TAC[EXTENSION;IMAGE;IN_ELIM_THM;v3_defor_v5]
2929 THEN GEN_TAC
2930 THEN EQ_TAC
2931 THENL[
2932 RESA_TAC
2933 THEN EXISTS_TAC`(w:num->real^3) x',w (SUC x')`
2934 THEN ASM_REWRITE_TAC[]
2935 THEN EXISTS_TAC`x':num`
2936 THEN ASM_REWRITE_TAC[];
2937 RESA_TAC
2938 THEN EXISTS_TAC`x'':num`
2939 THEN ASM_REWRITE_TAC[]]);;
2940
2941
2942
2943 let DEFORMATION_LUNAR_AFFINE_HULL_MK=prove_by_refinement(
2944 `scs_k_v39 s = k /\
2945  3 < k /\
2946  is_scs_v39 s /\
2947  MMs_v39 s w /\
2948  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
2949  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
2950  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
2951  j MOD k = SUC l MOD k /\
2952  scs_a_v39 s j l = dist (w j,w l) /\
2953  dist (w j,w l) < scs_b_v39 s j l /\
2954  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
2955  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
2956  (!i. ~scs_J_v39 s l i) /\
2957  w l = v2 /\
2958  w (l + k - 1) = v1 /\
2959  norm v1 pow 2 = x1 /\
2960  norm v2 pow 2 = x2 /\
2961  norm (v2 - v1) pow 2 = x5 /\
2962  a = -- &1 /\
2963  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
2964  IMAGE w (:num) = V /\
2965  ~(v=v2)/\ ~(w1=v2) 
2966 /\ IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)=E
2967 /\ lunar (v,w1) V E
2968 ==> 
2969 ?e. &0<e /\ (!t. t IN real_interval (--e,e)
2970      ==> v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v2 t IN
2971          affine hull {vec 0, v, w1, v2})`,
2972 [STRIP_TAC
2973 THEN ASM_TAC
2974 THEN REPEAT RESA_TAC
2975 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK
2976 THEN RESA_TAC
2977 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR_TWO_CASES)[`s:scs_v39`;`w:num->real^3`;`l:num`;`k:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
2978 THEN POP_ASSUM MP_TAC
2979 THEN REWRITE_TAC[GSYM dist]
2980 THEN ONCE_REWRITE_TAC[DIST_SYM]
2981 THEN REWRITE_TAC[dist]
2982 THEN RESA_TAC
2983 THEN REWRITE_TAC[GSYM dist]
2984 THEN DICH_TAC (30-4)
2985 THEN RESA_TAC
2986 THEN DICH_TAC (30-4)
2987 THEN RESA_TAC
2988 THEN DICH_TAC (30-4)
2989 THEN RESA_TAC
2990 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1_MK)[`a:real`;`v2:real^3`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`(w:num->real^3)  (SUC l)`]
2991 THEN POP_ASSUM MP_TAC
2992 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
2993 THEN ASM_REWRITE_TAC[]
2994 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
2995 THEN ASM_REWRITE_TAC[]
2996 THEN STRIP_TAC
2997 THEN REPLICATE_TAC (32-3)(POP_ASSUM MP_TAC)
2998 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2999 THEN MP_TAC th
3000 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;IN_REAL_INTERVAL]
3001 THEN MP_TAC th
3002 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
3003 THEN REPEAT RESA_TAC)
3004 THEN MP_TAC BBS_IMP_CONVEX_LOCAL_FAN
3005 THEN RESA_TAC
3006 THEN MP_TAC WL_IN_V
3007 THEN RESA_TAC
3008 THEN MP_TAC EXPAND_PERIODIC
3009 THEN RESA_TAC
3010 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
3011 THEN MP_TAC WL_IN_FF
3012 THEN RESA_TAC;
3013
3014
3015 MP_TAC Local_lemmas.CVLF_LF_F
3016 THEN RESA_TAC
3017 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`;]
3018 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)`]
3019 THEN MRESAL_TAC (GEN_ALL LUNAR_IMP_INTERIOR_ANGLE1_EQ_PI)
3020 [`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))`]
3021 THEN POP_ASSUM(fun th-> MRESA_TAC th[`v2:real^3`])
3022 THEN MRESA_TAC (GEN_ALL Collect_geom2.THREE_GEN_POINTS_IN_AFF3)[`v2:real^3`;`v:real^3`;`w1:real^3`]
3023 THEN MRESA_TAC (GEN_ALL Local_lemmas.CONV02_SUBSET_AFF2)[`v:real^3`;`w1:real^3`] 
3024 THEN MP_TAC(SET_RULE`v IN aff {v2, v, w1}/\ w1 IN aff {v2, v, w1}
3025 ==> {v, w1} SUBSET  aff {v2, v, w1:real^3}`)
3026 THEN RESA_TAC
3027 THEN MRESA_TAC(GEN_ALL Local_lemmas.S_SUBSET_IMP_AFF_S_TOO)[`{v, w1:real^3}`;` {v2, v, w1:real^3}`]
3028 THEN MP_TAC(SET_RULE`v1 IN aff {v2, v, w1}/\ w (SUC l) IN aff {v2, v, w1}
3029 /\ vec 0 IN conv0 {v, w1} /\ conv0 {v, w1} SUBSET aff {v, w1}
3030 /\ aff {v, w1} SUBSET aff {v2, v, w1}
3031 ==> {vec 0, v1, w (SUC l)} SUBSET aff {v2, v, w1:real^3}`)
3032 THEN RESA_TAC
3033 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}`]
3034 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}`]
3035 THEN EXISTS_TAC`e':real`
3036 THEN ASM_REWRITE_TAC[]
3037 THEN REPEAT RESA_TAC;
3038
3039 THAYTHE_TAC (71-31)[`t:real`]
3040 THEN REWRITE_TAC[GSYM aff]
3041 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]
3042 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
3043 THEN EXISTS_TAC`aff {v2, v, w1:real^3}`
3044 THEN ASM_REWRITE_TAC[]
3045 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
3046 THEN EXISTS_TAC`aff {vec 0, v1,  w (SUC l):real^3}`
3047 THEN ASM_REWRITE_TAC[]
3048 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
3049 THEN EXISTS_TAC`aff_gt {vec 0} {v1, w (SUC l):real^3}`
3050 THEN ASM_REWRITE_TAC[v3_defor_v4]
3051 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
3052 THEN ASM_REWRITE_TAC[v3_defor_v5;v3_defor_v4]
3053 ]);;
3054
3055
3056
3057
3058
3059
3060 let V3_DEFOR_CONVEX_LOCAL_FAN_MK_concl =`!s k w l j.
3061   scs_k_v39 s=k /\
3062   3 < k /\
3063   is_scs_v39 s /\
3064   MMs_v39 s w /\
3065   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
3066 ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
3067       w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
3068   (j MOD k = SUC l MOD k ) /\
3069   (scs_a_v39 s j l = dist(w j,w l)) /\ 
3070 (dist(w j,w l)<scs_b_v39 s j l ) /\ 
3071   (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
3072   (!i. scs_diag k l i ==> scs_a_v39 s l i < dist(w l,w i)) /\
3073   (!i. ~(scs_J_v39 s l i)) /\
3074  w l=v2/\ w (l+k-1) =v1
3075 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1
3076 /\ norm v2 = &2
3077 /\  (!V E v.
3078      V = IMAGE w (:num) /\
3079       E = IMAGE (\i. {w i, w (SUC i)}) (:num) ==>
3080       ~(lunar (v,(w l)) V E )) ==> 
3081 (?e. &0 < e /\
3082               (!t. --e < t /\ t < e
3083                    ==>
3084 convex_local_fan
3085  (IMAGE (\i. v3_defor_v4 a x1 x5 x2 (--v1) (v2 - v1) (w i - v1) t + v1)
3086   (:num),
3087   IMAGE
3088   (\i. {v3_defor_v4 a x1 x5 x2 (--v1) (v2 - v1) (w i - v1) t + v1, v3_defor_v4
3089                                                                    a
3090                                                                    x1
3091                                                                    x5
3092                                                                    x2
3093                                                                    (--v1)
3094                                                                    (v2 - v1)
3095                                                                    (w (SUC i) -
3096                                                                     v1)
3097                                                                    t +
3098                                                                    v1})
3099   (:num),
3100   IMAGE
3101   (\i. v3_defor_v4 a x1 x5 x2 (--v1) (v2 - v1) (w i - v1) t + v1,
3102        v3_defor_v4 a x1 x5 x2 (--v1) (v2 - v1) (w (SUC i) - v1) t + v1)
3103   (:num))))`;;
3104
3105 let V3_DEFOR_CONVEX_LOCAL_FAN_MK=prove_by_refinement(
3106 (mk_imp(ZLZTHIC_concl, mk_imp (MHAEYJN_concl, V3_DEFOR_CONVEX_LOCAL_FAN_MK_concl))),
3107 [
3108 REPEAT STRIP_TAC;
3109
3110 REPLICATE_TAC (22-5)(POP_ASSUM MP_TAC)
3111 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3112 THEN POP_ASSUM MP_TAC
3113 THEN MP_TAC th
3114 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3115 THEN ASSUME_TAC th
3116 THEN STRIP_TAC)
3117 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
3118 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3119 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
3120 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
3121 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
3122 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
3123 THEN RESA_TAC
3124 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
3125
3126
3127 REPLICATE_TAC (40-21)(POP_ASSUM MP_TAC)
3128 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3129 THEN MP_TAC th
3130 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3131 THEN REPEAT RESA_TAC);
3132
3133 MP_TAC WL_IN_V
3134 THEN RESA_TAC
3135 THEN MRESA_TAC(GEN_ALL WL_IN_V)[`l+k-1`;`w:num->real^3`]
3136 THEN MRESA_TAC(GEN_ALL WL_IN_V)[`SUC l`;`w:num->real^3`]
3137 THEN MP_TAC WL_IN_BALL_ANNULUS
3138 THEN RESA_TAC
3139 THEN MRESA_TAC (GEN_ALL WL_IN_BALL_ANNULUS)[`s:scs_v39`;`w:num->real^3`;`l+k-1`]
3140 THEN MRESA_TAC (GEN_ALL WL_IN_BALL_ANNULUS)[`s:scs_v39`;`w:num->real^3`;`SUC l`]
3141 THEN MP_TAC EXPAND_PERIODIC
3142 THEN RESA_TAC
3143 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`];
3144
3145 MP_TAC Local_lemmas.CVLF_LF_F
3146 THEN RESA_TAC
3147 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`]
3148 THEN MRESA_TAC(GEN_ALL NORM_POS_COLLINEAR)[`v2:real^3`;`v1:real^3`;`x2:real`;`x1:real`;`x5:real`]
3149 THEN POP_ASSUM MP_TAC
3150 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
3151 THEN RESA_TAC
3152 THEN MP_TAC DEFORMATION_MK_DEFOR_IN_BALL_ANNULUS
3153 THEN RESA_TAC;
3154
3155 MRESA_TAC Deformation.XRECQNS[`-- &1`;`&1`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`ww_defor ((w:num->real^3) l)`]
3156 THEN MP_TAC Wrgcvdr_cizmrrh.CIZMRRH
3157 THEN RESA_TAC;
3158
3159 MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_LE_PI_AT_ALL_MK
3160 THEN RESA_TAC
3161 THEN MP_TAC V3_DEFOR_DEFORMATION_V5
3162 THEN RESA_TAC;
3163
3164 ABBREV_TAC`e1= (min(min(min (min e (&1)) e') e'')e''')/ &2`
3165 THEN MP_TAC(REAL_ARITH`e1= (min(min(min (min e (&1)) e') e'')e''')/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e''' ==> &0< e1/\ e1< &1/\ e1< e /\ e1< e' /\ e1< e'' /\ --e1< &0/\ e1<= e'''/\ --e'''<= --e1`)
3166 THEN RESA_TAC;
3167
3168 MRESA_TAC (GEN_ALL DEFORMATION_SMALL_INTERVAL)[`-- e''':real`;`e''':real`;`v3_defor_v5 (-- &1) x1 x5 x2 v1 v2`;`V:real^3->bool`;`--e1:real`;`e1:real`]
3169 THEN THAYTHE_TAC (76-0) [`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v3_defor_v5 (-- &1) x1 x5 x2 v1 v2`]
3170 THEN POP_ASSUM MP_TAC
3171 THEN SUBGOAL_THEN`(!v t.
3172            v IN V /\
3173            t IN real_interval (--e1,e1) /\
3174            interior_angle1 (vec 0) FF v = pi
3175            ==> interior_angle1 (vec 0)
3176                (IMAGE
3177                 (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
3178                       v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
3179                FF)
3180                (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v t) <=
3181                pi)`ASSUME_TAC;
3182
3183 ASM_REWRITE_TAC[IN_REAL_INTERVAL]
3184 THEN REPEAT RESA_TAC
3185 THEN MATCH_DICH_TAC (79-63)
3186 THEN ASM_REWRITE_TAC[]
3187 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''/\ --e1 <t ==> t<e''/\ --e''<t`)
3188 THEN RESA_TAC;
3189
3190 RESA_TAC
3191 THEN STRIP_TAC
3192 THEN REMOVE_ASSUM_TAC
3193 THEN EXISTS_TAC`e'''':real`
3194 THEN ASM_REWRITE_TAC[V_DEFORMATION_V3_DEFOR_V5;E_DEFORMATION_V3_DEFOR_V5;F_DEFORMATION_V3_DEFOR_V5]
3195 THEN GEN_TAC
3196 THEN POP_ASSUM(fun th-> STRIP_TAC
3197 THEN MRESA_TAC th[`t:real`]);
3198
3199
3200 (*********LUNAR*******)
3201
3202
3203 MRESAL_TAC JKQEWGV3[`s:scs_v39`;`w:num->real^3`;`v:real^3`;`w':real^3`][LET_DEF;LET_END_DEF;]
3204 THEN MP_TAC(REAL_ARITH`interior_angle1 (vec 0) FF v < pi / &2/\ &0< pi
3205 ==> interior_angle1 (vec 0) FF v < pi`)
3206 THEN ASM_REWRITE_TAC[PI_WORKS]
3207 THEN RESA_TAC
3208 THEN STRIP_TAC
3209 THEN SUBGOAL_THEN`~(v2=v:real^3)`ASSUME_TAC;
3210
3211 POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`w':real^3`])
3212 THEN STRIP_TAC
3213 THEN POP_ASSUM(fun th->
3214 ASM_TAC
3215 THEN REWRITE_TAC[th]
3216 THEN REPEAT RESA_TAC)
3217 THEN ASM_REWRITE_TAC[Local_lemmas.LUNAR_COMM];
3218
3219
3220 SUBGOAL_THEN`~(v2=w':real^3)`ASSUME_TAC;
3221
3222 REMOVE_ASSUM_TAC
3223 THEN POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v:real^3`])
3224 THEN STRIP_TAC
3225 THEN POP_ASSUM(fun th->
3226 ASM_TAC
3227 THEN REWRITE_TAC[th]
3228 THEN REPEAT RESA_TAC);
3229
3230
3231
3232 POP_ASSUM MP_TAC
3233 THEN POP_ASSUM MP_TAC
3234 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3235 THEN MP_TAC th)
3236 THEN ABBREV_TAC`w1=w':real^3`
3237 THEN MP_TAC DEFORMATION_LUNAR_AFFINE_HULL_MK
3238 THEN RESA_TAC
3239 THEN MP_TAC V3_DEFOR_DEFORMATION_V5
3240 THEN RESA_TAC;
3241
3242 ABBREV_TAC`e1= (min(min(min (min e (&1)) e') e'') e''')/ &2`
3243 THEN MP_TAC(REAL_ARITH`e1= (min(min(min (min e (&1)) e') e'') e''')/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e''' ==> &0< e1/\ e1< &1/\ e1< e /\ e1< e' /\ e1< e'' /\ e1<= e'''/\  -- e'''<= --e1/\ --e1< &0`)
3244 THEN RESA_TAC
3245 THEN SUBGOAL_THEN`(!u' t.
3246            u' IN V /\ ~(v2 = u':real^3) /\ t IN real_interval (--e1,e1)
3247            ==> v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 u' t = u')`ASSUME_TAC;
3248
3249 REPEAT STRIP_TAC
3250 THEN REWRITE_TAC[v3_defor_v5;v3_defor_v4;VECTOR_ARITH`a-c=b-c<=>a=b:real^3`]
3251 THEN REMOVE_ASSUM_TAC
3252 THEN POP_ASSUM(fun th-> REWRITE_TAC[th;])
3253 THEN VECTOR_ARITH_TAC;
3254
3255 SUBGOAL_THEN`(!t. t IN real_interval (--e1,e1)
3256        ==> v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v2 t IN
3257            affine hull {vec 0, v, w1, v2})`ASSUME_TAC;
3258
3259 ASM_REWRITE_TAC[IN_REAL_INTERVAL]
3260 THEN REPEAT RESA_TAC
3261 THEN MATCH_DICH_TAC (83-69)
3262 THEN ASM_REWRITE_TAC[IN_REAL_INTERVAL]
3263 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''/\ --e1<t==> t<e''/\ --e''<t`)
3264 THEN RESA_TAC;
3265
3266 MRESA_TAC (GEN_ALL DEFORMATION_SMALL_INTERVAL)[`-- e''':real`;`e''':real`;`v3_defor_v5 (-- &1) x1 x5 x2 v1 v2`;`V:real^3->bool`;`--e1:real`;`e1:real`]
3267 THEN REPLICATE_TAC (83-1) (POP_ASSUM MP_TAC)
3268 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3269 THEN POP_ASSUM MP_TAC
3270 THEN MRESA_TAC th[`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v3_defor_v5 (-- &1) x1 x5 x2 v1 v2`;`v:real^3`;`w':real^3`;`v2:real^3`])
3271 THEN POP_ASSUM MP_TAC;
3272
3273 RESA_TAC
3274 THEN STRIP_TAC
3275 THEN REMOVE_ASSUM_TAC
3276 THEN EXISTS_TAC`e'''':real`
3277 THEN ASM_REWRITE_TAC[V_DEFORMATION_V3_DEFOR_V5;E_DEFORMATION_V3_DEFOR_V5;F_DEFORMATION_V3_DEFOR_V5]
3278 THEN GEN_TAC
3279 THEN POP_ASSUM(fun th-> STRIP_TAC
3280 THEN MRESA_TAC th[`t:real`])]);;
3281
3282
3283
3284
3285 let CARD_FF_EQ_V3_DEFOR_DEFORMATION_MK=prove(`scs_k_v39 s =k /\
3286  IMAGE (w:num->real^3) (:num)=V/\
3287         is_scs_v39 s /\
3288 3< k/\
3289         BBs_v39 s w /\(!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t))
3290 ==> (!t. &0< t/\ t< e1==>
3291 CARD               (IMAGE
3292                       (\i.  v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t,
3293                            v3_defor_v5 a x1 x5 x2 v1 v2 (w (SUC  i)) t)
3294                      (:num))
3295 =CARD(IMAGE (\i. w i,w (SUC i)) (:num)))`,
3296 STRIP_TAC
3297 THEN GEN_TAC
3298 THEN POP_ASSUM(fun th-> STRIP_TAC
3299 THEN MRESA_TAC th[`t:real`])
3300 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`]
3301 THEN MRESA_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`(\i. v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) t)`;`IMAGE ((\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t)) (:num)`;`k:num`]
3302 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<= 3)`)
3303 THEN RESA_TAC
3304 THEN POP_ASSUM(fun th-> ASM_TAC
3305 THEN ASSUME_TAC(th)
3306 THEN REPEAT RESA_TAC)
3307 THEN ASM_TAC
3308 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;convex_local_fan]
3309 THEN REPEAT RESA_TAC
3310 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOFA_IMP_CARD_FF_V_EQ)
3311 [`IMAGE (\i. { v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) t,  v3_defor_v5 a x1 x5 x2 v1 v2 (w (SUC i)) t})
3312        (:num)`;`IMAGE (\i. v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) t,v3_defor_v5 a x1 x5 x2 v1 v2 (w (SUC i)) t) (:num)`;`IMAGE (\i. v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) t) (:num)`]
3313 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOFA_IMP_CARD_FF_V_EQ)
3314 [`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`]);;
3315
3316
3317
3318
3319
3320 let DSV_V3_DEFOR_EQ_MK=prove_by_refinement(
3321 `scs_k_v39 s=k/\
3322   is_scs_v39 s /\
3323   BBs_v39 s w /\
3324 (!i. ~(scs_J_v39 s l i))
3325 ==>
3326 dsv_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 (w l) (w i) t) = dsv_v39 s w`,
3327 [
3328 REWRITE_TAC[dsv_v39]
3329 THEN STRIP_TAC
3330 THEN MATCH_MP_TAC(REAL_ARITH`a=b==> c+a=c+b`)
3331 THEN MP_TAC(SET_RULE`is_ear_v39 s\/ ~(is_ear_v39 s)`)
3332 THEN RESA_TAC
3333 THEN MATCH_MP_TAC(REAL_ARITH`a=b==> #0.1*a= #0.1*b`);
3334
3335 REWRITE_TAC[REAL_ARITH`&1 *a=a`]
3336 THEN MATCH_MP_TAC SUM_EQ
3337 THEN REWRITE_TAC[IN_ELIM_THM]
3338 THEN REPEAT STRIP_TAC
3339 THEN MP_TAC(SET_RULE`(w:num->real^3) l= w x\/ ~(w l =w x)`)
3340 THEN RESA_TAC;
3341
3342 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
3343 THEN ASM_TAC
3344 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
3345 THEN REPEAT RESA_TAC
3346 THEN MP_TAC(ARITH_RULE`3<=k ==> ~(k=0)`)
3347 THEN RESA_TAC
3348 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
3349 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
3350 THEN MRESA_TAC DIVISION[`l:num`;`scs_k_v39 s`]
3351 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
3352 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3353 THEN MRESA_TAC th[`l MOD k:num`;`x:num`])
3354 THEN REPLICATE_TAC (34-25) (POP_ASSUM MP_TAC)
3355 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3356 THEN MRESA_TAC th[`SUC x:num`;])
3357 THEN POP_ASSUM MP_TAC
3358 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_J_v39 s (SUC x)`][ARITH_RULE`~(4=0)`;periodic]
3359 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]);
3360
3361 MP_TAC(SET_RULE`(w:num->real^3) l= w (SUC x)\/ ~(w l =w (SUC x))`)
3362 THEN RESA_TAC;
3363
3364 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
3365 THEN ASM_TAC
3366 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
3367 THEN REPEAT RESA_TAC
3368 THEN MP_TAC(ARITH_RULE`3<=k ==> ~(k=0)`)
3369 THEN RESA_TAC
3370 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
3371 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
3372 THEN POP_ASSUM MP_TAC
3373 THEN MRESAL1_TAC th`SUC x:num`[ARITH_RULE`4 MOD 4=0`])
3374 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
3375 THEN STRIP_TAC
3376 THEN MRESA_TAC DIVISION[`l:num`;`scs_k_v39 s`]
3377 THEN MRESA_TAC DIVISION[`SUC x:num`;`scs_k_v39 s`]
3378 THEN REPLICATE_TAC (6) (POP_ASSUM MP_TAC)
3379 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3380 THEN MRESA_TAC th[`l MOD k:num`;`SUC x MOD k:num`])
3381 THEN REPLICATE_TAC (37-25) (POP_ASSUM MP_TAC)
3382 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3383 THEN MRESA_TAC th[`x:num`;])
3384 THEN POP_ASSUM MP_TAC
3385 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_J_v39 s (x)`][ARITH_RULE`~(4=0)`;periodic]
3386 THEN POP_ASSUM (fun th-> 
3387 MRESAL1_TAC th`SUC x:num`[ARITH_RULE`4 MOD 4=0`]
3388 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
3389 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th]);
3390
3391 ASM_REWRITE_TAC[v3_defor_v4;v3_defor_v5;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`;VECTOR_ARITH`a-b+b=a:real^3`];
3392
3393 REWRITE_TAC[REAL_ARITH`-- &1 *a= -- &1 * b<=> a=b`]
3394 THEN MATCH_MP_TAC SUM_EQ
3395 THEN REWRITE_TAC[IN_ELIM_THM]
3396 THEN REPEAT STRIP_TAC
3397 THEN MP_TAC(SET_RULE`(w:num->real^3) l= w x\/ ~(w l =w x)`)
3398 THEN RESA_TAC;
3399
3400 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
3401 THEN ASM_TAC
3402 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
3403 THEN REPEAT RESA_TAC
3404 THEN MP_TAC(ARITH_RULE`3<=k ==> ~(k=0)`)
3405 THEN RESA_TAC
3406 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
3407 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
3408 THEN MRESA_TAC DIVISION[`l:num`;`scs_k_v39 s`]
3409 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
3410 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3411 THEN MRESA_TAC th[`l MOD k:num`;`x:num`])
3412 THEN REPLICATE_TAC (34-25) (POP_ASSUM MP_TAC)
3413 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3414 THEN MRESA_TAC th[`SUC x:num`;])
3415 THEN POP_ASSUM MP_TAC
3416 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_J_v39 s (SUC x)`][ARITH_RULE`~(4=0)`;periodic]
3417 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]);
3418
3419 MP_TAC(SET_RULE`(w:num->real^3) l= w (SUC x)\/ ~(w l =w (SUC x))`)
3420 THEN RESA_TAC;
3421
3422 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
3423 THEN ASM_TAC
3424 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
3425 THEN REPEAT RESA_TAC
3426 THEN MP_TAC(ARITH_RULE`3<=k ==> ~(k=0)`)
3427 THEN RESA_TAC
3428 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
3429 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
3430 THEN POP_ASSUM MP_TAC
3431 THEN MRESAL1_TAC th`SUC x:num`[ARITH_RULE`4 MOD 4=0`])
3432 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
3433 THEN STRIP_TAC
3434 THEN MRESA_TAC DIVISION[`l:num`;`scs_k_v39 s`]
3435 THEN MRESA_TAC DIVISION[`SUC x:num`;`scs_k_v39 s`]
3436 THEN REPLICATE_TAC (6) (POP_ASSUM MP_TAC)
3437 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3438 THEN MRESA_TAC th[`l MOD k:num`;`SUC x MOD k:num`])
3439 THEN REPLICATE_TAC (37-25) (POP_ASSUM MP_TAC)
3440 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3441 THEN MRESA_TAC th[`x:num`;])
3442 THEN POP_ASSUM MP_TAC
3443 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_J_v39 s (x)`][ARITH_RULE`~(4=0)`;periodic]
3444 THEN POP_ASSUM (fun th-> 
3445 MRESAL1_TAC th`SUC x:num`[ARITH_RULE`4 MOD 4=0`]
3446 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
3447 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th]);
3448
3449 ASM_REWRITE_TAC[v3_defor_v4;v3_defor_v5;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`;VECTOR_ARITH`a-b+b=a:real^3`]]);;
3450
3451
3452
3453
3454 let INTERIOR_ANGLE_SAME_V3_DEFOR1_MK=prove(`scs_k_v39 s = k /\
3455  3 < k /\
3456  is_scs_v39 s /\
3457  MMs_v39 s w /\
3458  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
3459  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
3460  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
3461  j MOD k = SUC l MOD k /\
3462  scs_a_v39 s j l = dist (w j,w l) /\
3463  dist (w j,w l) < scs_b_v39 s j l /\
3464  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
3465  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
3466  (!i. ~scs_J_v39 s l i) /\
3467  w l = v2 /\
3468  w (l + k - 1) = v1 /\
3469  norm v1 pow 2 = x1 /\
3470  norm v2 pow 2 = x2 /\
3471  norm (v2 - v1) pow 2 = x5 /\
3472  a = -- &1 /\
3473  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
3474  IMAGE w (:num) = V
3475 /\(!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t))/\
3476 &0< e1
3477 ==>
3478 (?e. &0< e/\ (!t i.
3479                       &0< t /\ t< e  
3480 ==> 
3481 interior_angle1 (vec 0)
3482  (IMAGE
3483   (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
3484         v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
3485  FF)
3486  (ITER i
3487   (rho_node1
3488   (IMAGE
3489    (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
3490          v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
3491   FF))
3492  (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (l MOD k)) t))
3493  =
3494 interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) (w (l MOD k)))))`,
3495 STRIP_TAC
3496 THEN MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_AT_ALL_MK
3497 THEN RESA_TAC
3498 THEN ABBREV_TAC`e2=(min e e1)/ &2`
3499 THEN MP_TAC(REAL_ARITH`e2=(min e e1)/ &2 /\ &0< e/\ &0<e1==> &0<e2/\ e2<e/\ e2<e1`)
3500 THEN RESA_TAC
3501 THEN EXISTS_TAC`e2:real`
3502 THEN ASM_REWRITE_TAC[]
3503 THEN REPEAT RESA_TAC
3504 THEN ASM_TAC
3505 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;]
3506 THEN REPEAT STRIP_TAC
3507 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3508 THEN RESA_TAC
3509 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;]
3510 THEN REPLICATE_TAC (45-29)(POP_ASSUM MP_TAC)
3511 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3512 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e1==> t<e1`)
3513 THEN RESA_TAC
3514 THEN MRESA_TAC th[`t:real`])
3515 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)
3516 [`IMAGE (\i. v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) t) (:num)`;`IMAGE (\i. { v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) t, v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) (SUC i)) t}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) t, v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) (SUC i)) t) (:num)`;`(\i. v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) t) (l MOD k)`;`(\i. v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) t)`;`l MOD k`]
3517 [MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;]
3518 THEN POP_ASSUM MP_TAC
3519 THEN ASM_REWRITE_TAC[v3_defor_v5; F_DEFORMATION_V3_DEFOR_V5]
3520 THEN RESA_TAC
3521 THEN REWRITE_TAC[GSYM v3_defor_v5]
3522 THEN MATCH_DICH_TAC (47-31)
3523 THEN ASM_REWRITE_TAC[]
3524 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e/\ &0<t==> t<e/\ --e<t`)
3525 THEN RESA_TAC
3526 THEN EXPAND_TAC"V"
3527 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3528 THEN EXISTS_TAC`i + l MOD k`
3529 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`]);;
3530
3531
3532
3533 let TAUSTAR_V3_DEFOR_MK_concl = `!s k w l.
3534    scs_k_v39 s = k /\
3535  3 < k /\
3536  is_scs_v39 s /\
3537  MMs_v39 s w /\
3538  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
3539  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
3540  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
3541  j MOD k = SUC l MOD k /\
3542  scs_a_v39 s j l = dist (w j,w l) /\
3543  dist (w j,w l) < scs_b_v39 s j l /\
3544  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
3545  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
3546  (!i. ~scs_J_v39 s l i) /\
3547  w l = v2 /\
3548  w (l + k - 1) = v1 /\
3549  norm v1 pow 2 = x1 /\
3550  norm v2 pow 2 = x2 /\
3551  norm (v2 - v1) pow 2 = x5 /\
3552  a = -- &1 
3553 /\(!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t))/\
3554 &0< e1
3555  ==> 
3556 (?e. &0 < e /\
3557               (!t. &0 < t /\ t < e
3558                    ==> taustar_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t)= taustar_v39 s w 
3559 ))`;;
3560
3561
3562
3563
3564
3565 let TAUSTAR_V3_DEFOR_MK=prove_by_refinement(( TAUSTAR_V3_DEFOR_MK_concl),
3566 [
3567 REPEAT STRIP_TAC;
3568
3569 REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
3570 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3571 THEN POP_ASSUM MP_TAC
3572 THEN MP_TAC th
3573 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3574 THEN ASSUME_TAC th
3575 THEN STRIP_TAC)
3576 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
3577 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3578 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
3579 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
3580 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
3581 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3582 THEN RESA_TAC
3583 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
3584
3585 REPLICATE_TAC (41-22)(POP_ASSUM MP_TAC)
3586 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3587 THEN MP_TAC th
3588 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3589 THEN REPEAT RESA_TAC);
3590
3591 ASM_REWRITE_TAC[taustar_v39;LET_DEF;LET_END_DEF;tau_fun]
3592 THEN STRIP_TAC
3593 THEN MP_TAC INTERIOR_ANGLE_SAME_V3_DEFOR1_MK
3594 THEN RESA_TAC
3595 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR_TWO_CASES)[`s:scs_v39`;`w:num->real^3`;`l:num`;`k:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
3596 THEN POP_ASSUM MP_TAC
3597 THEN REWRITE_TAC[GSYM dist]
3598 THEN ONCE_REWRITE_TAC[DIST_SYM]
3599 THEN REWRITE_TAC[dist]
3600 THEN RESA_TAC
3601 THEN REWRITE_TAC[GSYM dist]
3602 THEN MRESAL_TAC(GEN_ALL UPS_X_POS_SEG)[`-- v1:real^3`;`v2-v1:real^3`;`x1:real`;`x2:real`;`x5:real`][COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
3603 THEN ABBREV_TAC`e2=(min (min e1 e)e')/ &2`
3604 THEN MP_TAC(REAL_ARITH`e2=(min (min e1 e)e' )/ &2/\ &0< e1/\ &0< e /\ &0< e'
3605 ==> &0< e2/\ e2< e1/\ e2<e`)
3606 THEN RESA_TAC
3607 THEN EXISTS_TAC`e2:real`
3608 THEN ASM_REWRITE_TAC[]
3609 THEN REPEAT STRIP_TAC
3610 THEN MP_TAC(REAL_ARITH`e2=(min (min e1 e)e')/ &2/\ &0< e1/\ &0< e/\  &0< e'
3611 /\ t<e2/\ &0<t
3612 ==> t< e1/\ t<e/\ t<e'`)
3613 THEN RESA_TAC
3614 THEN MP_TAC CARD_FF_EQ_V3_DEFOR_DEFORMATION_MK
3615 THEN RESA_TAC
3616 THEN POP_ASSUM(fun th->MRESA1_TAC th`t:real`)
3617 THEN MP_TAC DSV_V3_DEFOR_EQ_MK
3618 THEN RESA_TAC
3619 THEN MATCH_MP_TAC(REAL_ARITH`a=b==> a-c= b-c`)
3620 THEN MATCH_MP_TAC(REAL_ARITH`a=b==> a-c= b-c`)
3621 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`]
3622 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th]);
3623
3624 THAYTHE_TAC (60-18)[`t:real`]
3625 THEN MRESA_TAC(GEN_ALL Qknvmlb.SUM_AZIM_EQ_ANGLE_LE4)[`IMAGE  (\i. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 ((w:num->real^3) i) t) (:num)`;` (\i. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 ((w:num->real^3) i) t)`;`l:num`;`s:scs_v39`;` (\i. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 ((w:num->real^3) i) t) (l MOD scs_k_v39 s)`;`IMAGE (\i.  v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 ((w:num->real^3) i) t, v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (SUC i)) t) (:num)`;`IMAGE (\i. {  v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w i) t,  v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 ((w:num->real^3) (SUC i)) t}) (:num)`]
3626 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th]);
3627
3628 MATCH_MP_TAC SUM_EQ
3629 THEN REWRITE_TAC[IN_ELIM_THM;F_DEFORMATION_V3_DEFOR_V5]
3630 THEN REPEAT STRIP_TAC
3631 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e/\ &0<t ==> --e<t`)
3632 THEN RESA_TAC;
3633
3634 THAYTHEL_TAC (62-42)[`t:real`;`x:num`][F_DEFORMATION_V3_DEFOR_V5;ITER]
3635 THEN POP_ASSUM MP_TAC
3636 THEN ASM_REWRITE_TAC[v3_defor_v5; F_DEFORMATION_V3_DEFOR_V5]
3637 THEN RESA_TAC
3638 THEN REWRITE_TAC[GSYM v3_defor_v5]
3639 THEN REWRITE_TAC[REAL_EQ_MUL_RCANCEL]
3640 THEN MATCH_MP_TAC (SET_RULE`A==> A\/ B`)
3641 THEN ASM_TAC
3642 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]
3643 THEN REPEAT RESA_TAC
3644 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
3645 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
3646 THEN MATCH_MP_TAC(SET_RULE`x=y==> rho_fun x= rho_fun y`)
3647 THEN REWRITE_TAC[v3_defor_v5;v3_defor_v4;VECTOR_ARITH`a-b=c-b<=>a=c:real^3`]
3648 THEN MP_TAC(SET_RULE`(w:num->real^3) (x + l MOD k) = v2 \/ ~(w (x + l MOD k) = v2)`)
3649 THEN RESA_TAC;
3650
3651 ASM_REWRITE_TAC[NORM_EQ_SQUARE;NORM_POS_LE;DOT_SQUARE_NORM]
3652 THEN MP_TAC(REAL_ARITH`&0< t/\ t< e'==> --e'<t`)
3653 THEN RESA_TAC
3654 THEN THAYTHE_TAC (92-70)[`t:real`]
3655 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`-- &1`;`x5:real`;`x2:real`;`x1:real`;`x5-t:real`;`v2-v1:real^3`;`v3_defor_v1 (-- &1) (-- v1) (v2-v1:real^3) x1 x5 x2 x2 (x5 - t)`;`-- v1:real^3`;`x2:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1;COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3/\ a- -- b=a+b`;NORM_NEG];
3656
3657 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
3658
3659
3660
3661 let W_IN_BB_FUN_EQ=prove(`is_scs_v39 s/\ BBs_v39 s w /\ w x= w y ==> x MOD (scs_k_v39 s)= y MOD (scs_k_v39 s)`,
3662 REPEAT STRIP_TAC
3663 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`scs_k_v39 s`;`w:num->real^3`]
3664 THEN ASM_TAC
3665 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3666 THEN REPEAT RESA_TAC
3667 THEN ABBREV_TAC `k= scs_k_v39 s`
3668 THEN MP_TAC(ARITH_RULE`3<=k==> ~(k=0)`)
3669 THEN RESA_TAC
3670 THEN MRESA_TAC DIVISION[`x:num`;`k:num`]
3671 THEN MRESA_TAC DIVISION[`y:num`;`k:num`]
3672 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
3673 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`x:num`[ARITH_RULE`4 MOD 4=0`]
3674 THEN MRESA_TAC th[`y:num`])
3675 THEN THAYTHE_TAC (33-25)[`x MOD k`;`y MOD k`]);;
3676
3677
3678 let MIN_LEAST=prove(`!X c. c IN X ==> (min_num X) IN X /\ min_num X <= c`,
3679 REWRITE_TAC[IN;Misc_defs_and_lemmas.min_least]);;
3680
3681
3682
3683
3684 (***************************)
3685
3686 (**********TWO CASES********)
3687
3688 (***************************)
3689
3690
3691 let DEFORMATION_DIST_LE_MK_A_TWO_CASES=prove(`is_scs_v39 s /\
3692   MMs_v39 s w /\
3693   scs_k_v39 s =k/\
3694  3<k /\ w l=v2/\ w (SUC l) =v1
3695 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1
3696 /\ 
3697   (!i. ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)          ==> scs_a_v39 s l i < dist (v2,w i))
3698 ==>   (!i.  ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k) ==> ?e. &0< e/\
3699 (!t. --e < t/\ t< e  ==> scs_a_v39 s l i < dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w i)))`,
3700 STRIP_TAC 
3701 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR)[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
3702 THEN POP_ASSUM MP_TAC
3703 THEN REWRITE_TAC[GSYM dist]
3704 THEN ONCE_REWRITE_TAC[DIST_SYM]
3705 THEN REWRITE_TAC[dist]
3706 THEN RESA_TAC
3707 THEN REWRITE_TAC[GSYM dist]
3708 THEN ONCE_REWRITE_TAC[DIST_SYM]
3709 THEN REPEAT STRIP_TAC
3710 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST_ADD
3711 THEN ASM_REWRITE_TAC[]
3712 THEN THAYTHE_TAC (16-10) [`i:num`]);;
3713
3714
3715
3716
3717 let DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK_TWO_CASES=prove_by_refinement(
3718 `is_scs_v39 s /\
3719   MMs_v39 s w /\
3720   scs_k_v39 s =k/\
3721  3<k /\ w l=v2/\ w (SUC l) =v1
3722 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1
3723 /\ 
3724   (!i. ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)          ==> scs_a_v39 s l i < dist (v2,w i))
3725 ==>   ?e. &0< e/\
3726 (!t i. --e< 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 - v1) x1 x5 x2 x2 (x5 - t) + v1,w i))`,
3727 [REPEAT STRIP_TAC
3728 THEN MP_TAC DEFORMATION_DIST_LE_MK_A_TWO_CASES
3729 THEN RESA_TAC
3730 THEN POP_ASSUM MP_TAC
3731 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
3732 THEN REWRITE_TAC[SKOLEM_THM]
3733 THEN STRIP_TAC
3734 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`
3735 THEN EXISTS_TAC`e1:real`
3736 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;
3737
3738 MATCH_MP_TAC FINITE_SUBSET
3739 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
3740 THEN STRIP_TAC;
3741
3742 MATCH_MP_TAC FINITE_IMAGE
3743 THEN REWRITE_TAC[FINITE_NUMSEG];
3744
3745 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_ELIM_THM]
3746 THEN GEN_TAC
3747 THEN RESA_TAC
3748 THEN EXISTS_TAC`i:num`
3749 THEN ASM_REWRITE_TAC[IN_NUMSEG]
3750 THEN REPLICATE_TAC (16-12)(POP_ASSUM MP_TAC)
3751 THEN ARITH_TAC;
3752
3753 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)} = {})`ASSUME_TAC;
3754
3755 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
3756 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(l MOD k =0)`)
3757 THEN RESA_TAC;
3758
3759 EXISTS_TAC`(e:num->real)1`
3760 THEN EXISTS_TAC`1`
3761 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
3762 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)`)
3763 THEN RESA_TAC
3764 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
3765 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
3766 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
3767 THEN MRESA_TAC (GEN_ALL Zithlqn.IMP_SUC_MOD_EQ)[`l:num`;`0:num`;`k:num`];
3768
3769 MP_TAC(SET_RULE`l MOD k=1\/ ~(l MOD k= 1 )`)
3770 THEN RESA_TAC;
3771
3772 EXISTS_TAC`(e:num->real)2`
3773 THEN EXISTS_TAC`2`
3774 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
3775 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)/\ SUC 2=3`)
3776 THEN RESA_TAC
3777 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
3778 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
3779 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
3780 THEN MRESA_TAC MOD_LT[`3`;`k:num`]
3781 THEN MRESA_TAC (GEN_ALL Zithlqn.IMP_SUC_MOD_EQ)[`l:num`;`1:num`;`k:num`];
3782
3783 EXISTS_TAC`(e:num->real)0`
3784 THEN EXISTS_TAC`0`
3785 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
3786 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)`)
3787 THEN RESA_TAC
3788 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
3789 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
3790 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
3791 THEN MRESA_TAC MOD_LT[`3`;`k:num`]
3792 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l:num`;`0:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`];
3793
3794 STRIP_TAC;
3795
3796 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`]
3797 THEN REWRITE_TAC[IN_ELIM_THM]
3798 THEN REPEAT RESA_TAC
3799 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
3800 THEN THAYTHE_TAC (20-11)[`i:num`];
3801
3802 REPEAT STRIP_TAC
3803 THEN MRESAL_TAC REAL_LE_INF_FINITE[`{(e:num->real) i|  i < k/\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`;`e1:real`][REAL_ARITH`a<=a`]
3804 THEN POP_ASSUM MP_TAC
3805 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;
3806
3807 REWRITE_TAC[IN_ELIM_THM]
3808 THEN EXISTS_TAC`i MOD k`
3809 THEN ASM_REWRITE_TAC[]
3810 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
3811 THEN RESA_TAC
3812 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
3813 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
3814 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
3815 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1];
3816
3817 STRIP_TAC
3818 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
3819 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
3820 THEN RESA_TAC
3821 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
3822 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
3823 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
3824 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1]
3825 THEN THAYTHE_TAC (27-11) [`i:num MOD k`]
3826 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
3827 THEN POP_ASSUM MP_TAC
3828 THEN MP_TAC(REAL_ARITH`t < e1/\ e1<=  e (i MOD k)/\ &0 < e (i MOD k)/\ --e1<t
3829 ==> t < e (i MOD k)/\ -- e (i MOD k)< t`)
3830 THEN RESA_TAC
3831 THEN ASM_TAC
3832 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3833 THEN REPEAT RESA_TAC
3834 THEN POP_ASSUM MP_TAC
3835 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
3836 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
3837 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
3838 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])]);;
3839
3840
3841
3842
3843 let DEFORMATION_DIST_LE_V3_DEFOR_B_MK_TWO_CASES=prove_by_refinement(`  scs_k_v39 s =k/\
3844  3<k /\ is_scs_v39 s /\
3845   MMs_v39 s w /\
3846  w l=v2/\ w (SUC l) =v1
3847 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1
3848 /\     (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
3849 ==> (!i. scs_diag k l i ==> ?e. &0< e/\
3850 (!t. --e< t/\ t< e  ==>  dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w i)<scs_b_v39 s l i)) `,
3851 [STRIP_TAC 
3852 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR)[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
3853 THEN POP_ASSUM MP_TAC
3854 THEN REWRITE_TAC[GSYM dist]
3855 THEN ONCE_REWRITE_TAC[DIST_SYM]
3856 THEN REWRITE_TAC[dist]
3857 THEN RESA_TAC
3858 THEN REWRITE_TAC[GSYM dist]
3859 THEN ONCE_REWRITE_TAC[DIST_SYM]
3860 THEN REPEAT STRIP_TAC
3861 THEN MATCH_MP_TAC EXISTS_SMALL_LT_CONST_ADD
3862 THEN ASM_REWRITE_TAC[]
3863 THEN ASM_TAC
3864 THEN STRIP_TAC
3865 THEN STRIP_TAC
3866 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)`)
3867 THEN RESA_TAC
3868 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3869 THEN REPEAT RESA_TAC
3870 THEN SUBGOAL_THEN`v2 IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
3871
3872  REWRITE_TAC[IN_ELIM_THM;IMAGE]
3873 THEN EXISTS_TAC`l:num`
3874 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
3875
3876 SUBGOAL_THEN`w i IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
3877
3878  REWRITE_TAC[IN_ELIM_THM;IMAGE]
3879 THEN EXISTS_TAC`i:num`
3880 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
3881
3882 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`)
3883 THEN ASM_REWRITE_TAC[]
3884 THEN REWRITE_TAC[IN_ELIM_THM;DIFF;ball_annulus;cball;]
3885 THEN REPEAT STRIP_TAC
3886 THEN MRESA_TAC DIST_TRIANGLE[`v2:real^3`;`vec 0:real^3`;`(w:num->real^3) i`]
3887 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)
3888 ==> dist (v2,(w:num->real^3) i)<= &4 *h0`)
3889 THEN ASM_REWRITE_TAC[]
3890 THEN ONCE_REWRITE_TAC[DIST_SYM]
3891 THEN ASM_REWRITE_TAC[]
3892 THEN ONCE_REWRITE_TAC[DIST_SYM]
3893 THEN REPLICATE_TAC (53-41)(POP_ASSUM MP_TAC)
3894 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3895 THEN MRESA_TAC th[`i:num`])
3896 THEN REPLICATE_TAC (2)(POP_ASSUM MP_TAC)
3897 THEN REAL_ARITH_TAC]);;
3898
3899
3900
3901
3902
3903 let DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK1_TWO_CASES=prove(`is_scs_v39 s /\
3904   MMs_v39 s w /\
3905   scs_k_v39 s =k/\
3906  3<k /\ w l=v2/\ w (SUC l) =v1
3907 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1/\
3908 ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
3909       w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} 
3910 /\ (l MOD k =SUC j MOD k) /\ scs_a_v39 s l j = dist (v2,w j)
3911 ==>   ?e. &0< e/\
3912 (!t. &0 < t/\ t< e  ==> scs_a_v39 s l j < dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w j))`,
3913 STRIP_TAC
3914 THEN ASM_TAC
3915 THEN REPEAT RESA_TAC
3916 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR)[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
3917 THEN POP_ASSUM MP_TAC
3918 THEN REWRITE_TAC[GSYM dist]
3919 THEN ONCE_REWRITE_TAC[DIST_SYM]
3920 THEN REWRITE_TAC[dist]
3921 THEN RESA_TAC
3922 THEN REWRITE_TAC[GSYM dist]
3923 THEN ONCE_REWRITE_TAC[DIST_SYM]
3924 THEN MATCH_MP_TAC V3_DEFOR_INCREASING_IN_ANGLE
3925 THEN ASM_REWRITE_TAC[]
3926 THEN MP_TAC MMS_IMP_BBS
3927 THEN RESA_TAC
3928 THEN MRESA_TAC(GEN_ALL EQ_SUC_K_SUB3)[`l:num`;`j:num`;`k:num`]
3929 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`j:num`;`w:num->real^3`;`l+k-1:num`]
3930 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
3931 THEN ASM_REWRITE_TAC[]
3932 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
3933 THEN ASM_REWRITE_TAC[]);;
3934
3935
3936
3937
3938
3939
3940
3941 let  DEFORMATION_DIST_LE_V3_DEFOR_AA_COM_MK_TWO_CASES=prove(`is_scs_v39 s /\
3942   MMs_v39 s w /\
3943   scs_k_v39 s =k/\
3944  3<k /\ w l=v2/\ w (SUC l) =v1
3945 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1/\
3946 ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
3947       w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} 
3948 /\ (l MOD k = SUC j MOD k) /\ scs_a_v39 s l j = dist (v2,w j)/\ 
3949   (!i. ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)          ==> scs_a_v39 s l i < dist (v2,w i))
3950 ==>   ?e. &0< e/\
3951 (!t i. &0< t/\ t< e /\ ~(l MOD k = i MOD k) ==> scs_a_v39 s l i < dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w i))`,
3952 STRIP_TAC
3953 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK_TWO_CASES
3954 THEN RESA_TAC
3955 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK1_TWO_CASES
3956 THEN RESA_TAC
3957 THEN ABBREV_TAC`e1= (min e e')/ &2`
3958 THEN MP_TAC(REAL_ARITH`e1= (min e e')/ &2 /\ &0< e/\ &0< e'
3959 ==> &0< e1/\ e1<e/\ e1<e'`)
3960 THEN RESA_TAC
3961 THEN EXISTS_TAC`e1:real`
3962 THEN ASM_REWRITE_TAC[]
3963 THEN REPEAT STRIP_TAC
3964 THEN MP_TAC(SET_RULE`(l MOD k = SUC i MOD k)\/ ~(l MOD k =SUC  i MOD k)`)
3965 THEN RESA_TAC
3966 THENL[
3967
3968 MP_TAC(REAL_ARITH`t<e1/\ e1<e'==> t< e'`)
3969 THEN RESA_TAC
3970 THEN MP_TAC MMS_IMP_BBS
3971 THEN RESA_TAC
3972 THEN MP_TAC(ARITH_RULE`3<k==>  ~(k=0)`)
3973 THEN RESA_TAC
3974 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`j:num`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
3975 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`j:num`;`w:num->real^3`;`i:num`]
3976 THEN THAYTHE_TAC (31-18) [`t:real`]
3977 THEN MRESA_TAC( GEN_ALL CHANGE_A_SCS_MOD)[`l:num`;`j:num`;`s:scs_v39`;`l:num`;`i:num`] 
3978 THEN SYM_ASSUM_TAC
3979 THEN ASM_REWRITE_TAC[];
3980
3981 MP_TAC(REAL_ARITH`t<e1/\ e1<e/\ &0<t==> t< e/\ --e< t`)
3982 THEN RESA_TAC
3983 THEN THAYTHE_TAC (28-16) [`t:real`;`i:num`]]);;
3984
3985
3986
3987
3988
3989 let DEFORMATION_DIST_LE_V3_DEFOR_EDGE_SUB_TWO_CASES=prove(` 3<k /\ is_scs_v39 s /\
3990   MMs_v39 s w /\
3991   scs_k_v39 s =k/\
3992  w l=v2/\ w (SUC l) =v1
3993 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1/\
3994 ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
3995       w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} 
3996 ==> (!j. (SUC l MOD k = j MOD k) 
3997 ==>   ?e. &0< e/\
3998 (!t. &0 < t/\ t< e  ==>  dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w j)<scs_b_v39 s l j))`,
3999 STRIP_TAC
4000 THEN ASM_TAC
4001 THEN REPEAT RESA_TAC
4002 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR)[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
4003 THEN POP_ASSUM MP_TAC
4004 THEN REWRITE_TAC[GSYM dist]
4005 THEN ONCE_REWRITE_TAC[DIST_SYM]
4006 THEN REWRITE_TAC[dist]
4007 THEN RESA_TAC
4008 THEN REWRITE_TAC[GSYM dist]
4009 THEN ONCE_REWRITE_TAC[DIST_SYM]THEN MRESA_TAC (GEN_ALL EYYPQDW_V3_DEFOR_INCREASING_IN_ANGLE)
4010 [`(w:num->real^3)(l+k-1)`;`a:real`;`x1:real`;`x2:real`;`x5:real`;`v2:real^3`;`v1:real^3`]
4011 THEN EXISTS_TAC`e:real`
4012 THEN ASM_REWRITE_TAC[]
4013 THEN REPEAT STRIP_TAC
4014 THEN THAYTHE_TAC (20-18)[`t:real`]
4015 THEN MP_TAC MMS_IMP_BBS
4016 THEN RESA_TAC
4017 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`j:num`;`w:num->real^3`;`SUC l:num`]
4018 THEN MRESA_TAC(GEN_ALL CHANGE_B_SCS_MOD)[`l:num`;`j:num`;`s:scs_v39`;`l:num`;`SUC l:num`]
4019 THEN ASM_TAC
4020 THEN STRIP_TAC 
4021 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4022 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
4023 THEN REPEAT RESA_TAC
4024 THEN THAYTHE_TAC (58-29)[`l:num`;`SUC l`]
4025 THEN DICH_TAC (59-55)
4026 THEN POP_ASSUM MP_TAC
4027 THEN REAL_ARITH_TAC);;
4028
4029
4030
4031
4032 let DIST_V3_DEFOR_EDGE_SUC_TWO_CASES=prove(`  scs_k_v39 s =k/\
4033  3<k /\ is_scs_v39 s /\
4034   MMs_v39 s w /\
4035  w l=v2/\ w (SUC l) =v1
4036 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1
4037 /\ (l MOD k =SUC j MOD k) /\ dist (v2,w j)< scs_b_v39 s l j
4038 ==>  ?e. &0< e/\
4039 (!t. --e< t/\ t< e  ==>  dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w j)<scs_b_v39 s l j) `,
4040 STRIP_TAC
4041 THEN MATCH_MP_TAC EXISTS_SMALL_LT_CONST_ADD
4042 THEN ASM_REWRITE_TAC[]
4043 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR)[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
4044 THEN POP_ASSUM MP_TAC
4045 THEN REWRITE_TAC[GSYM dist]
4046 THEN ONCE_REWRITE_TAC[DIST_SYM]
4047 THEN REWRITE_TAC[dist]
4048 THEN RESA_TAC
4049 THEN REWRITE_TAC[GSYM dist]
4050 THEN ONCE_REWRITE_TAC[DIST_SYM]
4051 THEN REPEAT STRIP_TAC);;
4052
4053
4054
4055
4056 let DEFORMATION_DIST_LE_V3_DEFOR_B_COM_MK1_TWO_CASES=prove(
4057 ` 3<k /\ is_scs_v39 s /\
4058   MMs_v39 s w /\
4059   scs_k_v39 s =k/\
4060  w l=v2/\ w (SUC l) =v1
4061 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1/\
4062 ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
4063       w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)}
4064 /\ (l MOD k =SUC j MOD k) /\  dist (v2,w j) < scs_b_v39 s l j 
4065 /\     (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
4066 ==>   (!i. ~(l MOD k = i MOD k)==> ?e. &0< e/\
4067 (!t. &0< t/\ t< e  ==>   dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w i)<scs_b_v39 s l i))`,
4068 STRIP_TAC
4069 THEN MP_TAC DIST_V3_DEFOR_EDGE_SUC_TWO_CASES
4070 THEN RESA_TAC
4071 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_EDGE_SUB_TWO_CASES
4072 THEN RESA_TAC
4073 THEN POP_ASSUM MP_TAC
4074 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
4075 THEN REWRITE_TAC[SKOLEM_THM]
4076 THEN STRIP_TAC
4077 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_B_MK_TWO_CASES
4078 THEN RESA_TAC
4079 THEN POP_ASSUM MP_TAC
4080 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
4081 THEN REWRITE_TAC[SKOLEM_THM]
4082 THEN STRIP_TAC
4083 THEN REPEAT STRIP_TAC
4084 THEN MP_TAC(SET_RULE`(l MOD k = SUC i MOD k)\/ ~(l MOD k = SUC i MOD k)`)
4085 THEN RESA_TAC
4086 THENL[
4087
4088 EXISTS_TAC`e:real`
4089 THEN ASM_REWRITE_TAC[]
4090 THEN REPEAT STRIP_TAC
4091 THEN MP_TAC(REAL_ARITH`&0< t/\ t< e==> --e< t`)
4092 THEN RESA_TAC
4093 THEN THAYTHE_TAC (23-16)[`t:real`]
4094 THEN MP_TAC MMS_IMP_BBS
4095 THEN RESA_TAC
4096 THEN MP_TAC(ARITH_RULE`3<k==>  ~(k=0)`)
4097 THEN RESA_TAC
4098 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`j:num`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
4099 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`i:num`;`w:num->real^3`;`j:num`]
4100 THEN MRESA_TAC(GEN_ALL CHANGE_B_SCS_MOD)[`l:num`;`i:num`;`s:scs_v39`;`l:num`;`j:num`];
4101
4102
4103 MP_TAC(SET_RULE`(SUC l MOD k = i MOD k)\/ ~(SUC l MOD k = i MOD k)`)
4104 THEN RESA_TAC
4105 THENL[
4106
4107 THAYTHE_TAC (21-17)[`i:num`]
4108 THEN EXISTS_TAC`(e':num->real) i`
4109 THEN ASM_REWRITE_TAC[];
4110
4111 THAYTHEL_TAC (21-18)[`i:num`] [scs_diag]
4112 THEN EXISTS_TAC`(e'':num->real) i`
4113 THEN ASM_REWRITE_TAC[]
4114 THEN REPEAT STRIP_TAC
4115 THEN MATCH_DICH_TAC 2
4116 THEN ASM_REWRITE_TAC[]
4117 THEN POP_ASSUM MP_TAC
4118 THEN POP_ASSUM MP_TAC
4119 THEN REAL_ARITH_TAC]]);;
4120
4121
4122
4123 let DEFORMATION_DIST_LE_V3_DEFOR_B_COM_MK_TWO_CASES=prove_by_refinement(` 3<k /\ is_scs_v39 s /\
4124   MMs_v39 s w /\
4125   scs_k_v39 s =k/\
4126  w l=v2/\ w (SUC l) =v1
4127 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1/\
4128 ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
4129       w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)}
4130 /\ (l MOD k = SUC j MOD k) /\  dist (v2,w j) < scs_b_v39 s l j 
4131 /\     (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
4132 ==>    ?e. &0< e/\
4133 (!t i. &0< t/\ t< e /\ ~(l MOD k = i MOD k) ==>   dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w i)<scs_b_v39 s l i)`,
4134 [
4135 REPEAT STRIP_TAC
4136 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_B_COM_MK1_TWO_CASES
4137 THEN RESA_TAC
4138 THEN POP_ASSUM MP_TAC
4139 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
4140 THEN REWRITE_TAC[SKOLEM_THM]
4141 THEN STRIP_TAC
4142 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k/\  ~(i= l MOD k)}`
4143 THEN EXISTS_TAC`e1:real`
4144 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
4145
4146
4147
4148 MATCH_MP_TAC FINITE_SUBSET
4149 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
4150 THEN STRIP_TAC;
4151
4152
4153 MATCH_MP_TAC FINITE_IMAGE
4154 THEN REWRITE_TAC[FINITE_NUMSEG];
4155
4156
4157 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
4158 THEN REPEAT RESA_TAC
4159 THEN EXISTS_TAC`i:num`
4160 THEN POP_ASSUM MP_TAC
4161 THEN POP_ASSUM MP_TAC
4162 THEN POP_ASSUM MP_TAC
4163 THEN ARITH_TAC;
4164
4165
4166 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
4167
4168
4169 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
4170 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(0=l MOD k )`)
4171 THEN RESA_TAC;
4172
4173
4174
4175 EXISTS_TAC`(e:num->real)1`
4176 THEN EXISTS_TAC`1`
4177 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
4178 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
4179 THEN RESA_TAC;
4180
4181
4182
4183 EXISTS_TAC`(e:num->real)0`
4184 THEN EXISTS_TAC`0`
4185 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
4186 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
4187 THEN RESA_TAC;
4188
4189
4190
4191 STRIP_TAC;
4192
4193
4194 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`&0`]
4195 THEN REWRITE_TAC[IN_ELIM_THM]
4196 THEN REPEAT RESA_TAC
4197 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
4198 THEN REPLICATE_TAC (13-5) (POP_ASSUM MP_TAC)
4199 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
4200 THEN MRESA_TAC th[`i:num`]);
4201
4202
4203 REPEAT STRIP_TAC
4204 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`t:real`]
4205 THEN POP_ASSUM MP_TAC
4206 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
4207
4208
4209 REWRITE_TAC[IN_ELIM_THM]
4210 THEN EXISTS_TAC`i MOD k`
4211 THEN ASM_REWRITE_TAC[]
4212 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
4213 THEN RESA_TAC
4214 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
4215
4216
4217 STRIP_TAC
4218 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
4219 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
4220 THEN RESA_TAC
4221 THEN MRESA_TAC MOD_REFL[`i:num`;`k:num`]
4222 THEN REPLICATE_TAC (15-5) (POP_ASSUM MP_TAC)
4223 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
4224 THEN MRESA_TAC th[`i:num MOD k`])
4225 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
4226 THEN ASM_TAC
4227 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
4228 THEN REPEAT RESA_TAC
4229 THEN POP_ASSUM MP_TAC
4230 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
4231 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
4232 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
4233 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]);
4234 ]);;
4235
4236
4237
4238 let DEFORMATION_V3_DEFOR_NOT_IN_V_MK_TWO_CASES=prove(
4239 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4240   MMs_v39 s w /\
4241  w l=v2/\ w (SUC l) =v1
4242 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1
4243 ==>  (!i.  ~(i MOD k= l MOD k) ==> (?e. &0< e /\ (!t. --e<t /\ t<e ==> &0<dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w i))))`,
4244 REPEAT STRIP_TAC
4245 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR)[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
4246 THEN POP_ASSUM MP_TAC
4247 THEN REWRITE_TAC[GSYM dist]
4248 THEN ONCE_REWRITE_TAC[DIST_SYM]
4249 THEN REWRITE_TAC[dist]
4250 THEN RESA_TAC
4251 THEN REWRITE_TAC[GSYM dist]
4252 THEN ONCE_REWRITE_TAC[DIST_SYM]
4253 THEN REPEAT STRIP_TAC
4254 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST_ADD
4255 THEN ASM_REWRITE_TAC[]
4256 THEN MATCH_MP_TAC(REAL_ARITH`&0<= a/\ ~(a= &0)==> &0 < a`)
4257 THEN ASM_REWRITE_TAC[dist;NORM_POS_LE]
4258 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
4259 THEN ASM_TAC
4260 THEN STRIP_TAC
4261 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4262 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
4263 THEN REPEAT RESA_TAC
4264 THEN POP_ASSUM MP_TAC
4265 THEN POP_ASSUM (fun th-> 
4266 MRESA_TAC DIVISION[`i:num`;`k:num`]
4267 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
4268 THEN MRESA_TAC th[`i MOD k`;`l MOD k`])
4269 THEN POP_ASSUM MP_TAC
4270 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
4271 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
4272 THEN MRESA_TAC th[`l:num`])
4273 THEN STRIP_TAC
4274 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v2:real^3`;`(w:num->real^3) i`;]);;
4275
4276
4277
4278
4279 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM_MK_TWO_CASES=prove_by_refinement(
4280 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4281   MMs_v39 s w /\
4282  w l=v2/\ w (SUC l) =v1
4283 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1
4284 ==>  ?e. &0< e /\ (!t i. --e<t /\ t<e/\ ~(i MOD k= l MOD k) ==> &0<dist(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1,w i))`,
4285 [
4286 REPEAT STRIP_TAC
4287 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_MK_TWO_CASES
4288 THEN RESA_TAC
4289 THEN POP_ASSUM MP_TAC
4290 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
4291 THEN REWRITE_TAC[SKOLEM_THM]
4292 THEN STRIP_TAC
4293 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k/\  ~(i= l MOD k)}`
4294 THEN EXISTS_TAC`e1:real`
4295 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
4296
4297 MATCH_MP_TAC FINITE_SUBSET
4298 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
4299 THEN STRIP_TAC;
4300
4301 MATCH_MP_TAC FINITE_IMAGE
4302 THEN REWRITE_TAC[FINITE_NUMSEG];
4303
4304 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
4305 THEN REPEAT RESA_TAC
4306 THEN EXISTS_TAC`i:num`
4307 THEN POP_ASSUM MP_TAC
4308 THEN POP_ASSUM MP_TAC
4309 THEN POP_ASSUM MP_TAC
4310 THEN ARITH_TAC;
4311
4312 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
4313
4314 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
4315 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(0=l MOD k )`)
4316 THEN RESA_TAC;
4317
4318 EXISTS_TAC`(e:num->real)1`
4319 THEN EXISTS_TAC`1`
4320 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
4321 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
4322 THEN RESA_TAC;
4323
4324 EXISTS_TAC`(e:num->real)0`
4325 THEN EXISTS_TAC`0`
4326 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
4327 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
4328 THEN RESA_TAC;
4329
4330 STRIP_TAC;
4331
4332 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`&0`]
4333 THEN REWRITE_TAC[IN_ELIM_THM]
4334 THEN REPEAT RESA_TAC
4335 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
4336 THEN REPLICATE_TAC (13-5) (POP_ASSUM MP_TAC)
4337 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
4338 THEN MRESA_TAC th[`i:num`]);
4339
4340 REPEAT STRIP_TAC
4341 THEN MRESAL_TAC REAL_LE_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`e1:real`][REAL_ARITH`a<=a`]
4342 THEN POP_ASSUM MP_TAC
4343 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
4344
4345 REWRITE_TAC[IN_ELIM_THM]
4346 THEN EXISTS_TAC`i MOD k`
4347 THEN ASM_REWRITE_TAC[]
4348 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
4349 THEN RESA_TAC
4350 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
4351
4352 STRIP_TAC
4353 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
4354 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
4355 THEN RESA_TAC
4356 THEN MRESA_TAC MOD_REFL[`i:num`;`k:num`]
4357 THEN MP_TAC(REAL_ARITH`-- e1<t/\t<e1/\ e1<= e(i MOD k)==> -- e(i MOD k)< t/\ t< e(i MOD k)`)
4358 THEN RESA_TAC
4359 THEN REPLICATE_TAC (12) (POP_ASSUM MP_TAC)
4360 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
4361 THEN MRESA_TAC th[`i:num MOD k`])
4362 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
4363 THEN ASM_TAC
4364 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
4365 THEN REPEAT RESA_TAC
4366 THEN POP_ASSUM MP_TAC
4367 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
4368 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
4369 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
4370 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]);]);;
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK_TWO_CASES=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4381   MMs_v39 s w /\
4382  w l=v2/\ w (SUC l) =v1
4383 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1
4384 ==>  ?e. &0< e /\ (!t i. -- e<t /\ t<e/\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))`,
4385 STRIP_TAC
4386 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_MK_TWO_CASES
4387 THEN RESA_TAC
4388 THEN EXISTS_TAC`e:real`
4389 THEN ASM_REWRITE_TAC[]
4390 THEN REPEAT GEN_TAC
4391 THEN POP_ASSUM(fun th-> STRIP_TAC
4392 THEN MRESA_TAC th[`t:real`;`i:num`])
4393 THEN POP_ASSUM (fun th-> STRIP_TAC
4394 THEN MP_TAC th
4395 THEN RESA_TAC
4396 THEN POP_ASSUM MP_TAC
4397 THEN REWRITE_TAC[DIST_REFL])
4398 THEN REAL_ARITH_TAC);;
4399
4400
4401
4402 let V3_DEFOR_EQ_IN_FF_MK_TWO_CASES=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4403   MMs_v39 s w /\
4404  w l=v2/\ w (SUC l) =v1 /\
4405 &0< x1 /\ &0<x2   /\ &0< x5 /\
4406 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
4407 /\ &0< e/\ --e<t 
4408 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))
4409 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4410 /\ IMAGE (w:num->real^3) (:num)=V
4411 ==> (!a. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v2 t,a IN
4412                         IMAGE
4413                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
4414                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
4415                         FF
4416  <=> v2,a IN FF)`,
4417 [
4418 STRIP_TAC
4419 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
4420 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4421 THEN MP_TAC th
4422 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
4423 THEN ASSUME_TAC th
4424 THEN STRIP_TAC)
4425 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4426 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
4427 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
4428 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
4429 THEN RESA_TAC
4430 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4431
4432 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
4433 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4434 THEN MP_TAC th
4435 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4436 THEN REPEAT RESA_TAC);
4437
4438 MP_TAC Local_lemmas.CVLF_LF_F
4439 THEN RESA_TAC
4440 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
4441 THEN GEN_TAC
4442 THEN EQ_TAC
4443 THEN RESA_TAC;
4444
4445 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
4446 THEN RESA_TAC;
4447
4448 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
4449 THEN RESA_TAC
4450 THEN REMOVE_ASSUM_TAC
4451 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th;VECTOR_ARITH`a-b+b=a:real^3`]);
4452
4453 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4454 THEN MP_TAC th)
4455 THEN RESA_TAC
4456 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
4457 THEN REPEAT RESA_TAC
4458 THEN DICH_TAC 3
4459 THEN EXPAND_TAC"FF"
4460 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4461 THEN STRIP_TAC
4462 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
4463 THEN ASM_TAC
4464 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
4465 THEN REPEAT RESA_TAC
4466 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
4467 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`x':num`[ARITH_RULE`4 MOD 4=0`]
4468 THEN MRESA_TAC th[`l:num`])
4469 THEN DICH_TAC (69-62)
4470 THEN RESA_TAC
4471 THEN REPLICATE_TAC 3 (POP_ASSUM MP_TAC)
4472 THEN MP_TAC(SET_RULE`x' MOD k= l MOD k\/ ~(x' MOD k= l MOD k)`)
4473 THEN RESA_TAC;
4474
4475 REPEAT RESA_TAC;
4476
4477 REPEAT RESA_TAC
4478 THEN THAYTHE_TAC (70-34)[`t:real`;`x':num`]
4479 THEN DICH_TAC (70-61)
4480 THEN RESA_TAC
4481 THEN DICH_TAC 1
4482 THEN ASM_REWRITE_TAC[];
4483
4484 EXISTS_TAC`v2:real^3,a':real^3`
4485 THEN ASM_REWRITE_TAC[]
4486 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,a'):real^3#real^3`]
4487 THEN VECTOR_ARITH_TAC]);;
4488
4489
4490
4491
4492 let V3_DEFOR_EQ_IN_FF_MK_SYM_TWO_CASES=prove_by_refinement(
4493 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4494   MMs_v39 s w /\
4495  w l=v2/\ w (SUC l) =v1 /\
4496 &0< x1 /\ &0<x2   /\ &0< x5 /\
4497 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
4498 /\ &0< e/\ --e<t 
4499 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))
4500 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4501 /\ IMAGE (w:num->real^3) (:num)=V
4502 ==> (!a. a, v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v2 t IN
4503                         IMAGE
4504                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
4505                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
4506                         FF
4507  <=> a, v2 IN FF)`,
4508 [ STRIP_TAC
4509 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
4510 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4511 THEN MP_TAC th
4512 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
4513 THEN ASSUME_TAC th
4514 THEN STRIP_TAC)
4515 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4516 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
4517 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
4518 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
4519 THEN RESA_TAC
4520 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4521
4522 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
4523 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4524 THEN MP_TAC th
4525 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4526 THEN REPEAT RESA_TAC);
4527
4528 MP_TAC Local_lemmas.CVLF_LF_F
4529 THEN RESA_TAC
4530 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
4531 THEN GEN_TAC
4532 THEN EQ_TAC
4533 THEN RESA_TAC;
4534
4535 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
4536 THEN RESA_TAC;
4537
4538 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
4539 THEN RESA_TAC
4540 THEN REMOVE_ASSUM_TAC
4541 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th;VECTOR_ARITH`a-b+b=a:real^3`]);
4542
4543 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4544 THEN MP_TAC th)
4545 THEN RESA_TAC
4546 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
4547 THEN REPEAT RESA_TAC
4548 THEN DICH_TAC 3
4549 THEN EXPAND_TAC"FF"
4550 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4551 THEN STRIP_TAC
4552 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
4553 THEN ASM_TAC
4554 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
4555 THEN REPEAT RESA_TAC
4556 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
4557 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`SUC x':num`[ARITH_RULE`4 MOD 4=0`]
4558 THEN MRESA_TAC th[`l:num`])
4559 THEN DICH_TAC (69-62)
4560 THEN RESA_TAC
4561 THEN REPLICATE_TAC 3 (POP_ASSUM MP_TAC)
4562 THEN MP_TAC(SET_RULE`SUC x' MOD k= l MOD k\/ ~(SUC x' MOD k=  l MOD k)`)
4563 THEN RESA_TAC;
4564
4565 REPEAT RESA_TAC;
4566
4567 REPEAT RESA_TAC
4568 THEN THAYTHE_TAC (70-34)[`t:real`;`SUC x':num`];
4569
4570 EXISTS_TAC`a':real^3,v2:real^3`
4571 THEN ASM_REWRITE_TAC[]
4572 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`;`(a',v2):real^3#real^3`]
4573 THEN VECTOR_ARITH_TAC]);;
4574
4575
4576
4577
4578
4579 let DEFORMATION_AZIM_V3_DEFOR_V1_MK_TWO_CASES=prove_by_refinement(
4580 `scs_k_v39 s = k /\
4581  3 < k /\
4582  is_scs_v39 s /\
4583  MMs_v39 s w /\
4584  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
4585  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
4586  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
4587  SUC j MOD k = l MOD k /\
4588  scs_a_v39 s j l = dist (w j,w l) /\
4589  dist (w j,w l) < scs_b_v39 s j l /\
4590  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
4591  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
4592  (!i. ~scs_J_v39 s l i) /\
4593  w l = v2 /\
4594  w (SUC l) = v1 /\
4595  norm v1 pow 2 = x1 /\
4596  norm v2 pow 2 = x2 /\
4597  norm (v2 - v1) pow 2 = x5 /\
4598  a = -- &1 /\
4599  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
4600  IMAGE w (:num) = V
4601  ==> (?e. &0 < e /\
4602           (!t.
4603                 --e < t /\ t < e
4604                ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v2 t)
4605                    (rho_node1
4606                     (IMAGE
4607                      (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
4608                            v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
4609                     FF)
4610                    (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v2 t))
4611                    (@a. a,v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v2 t IN
4612                         IMAGE
4613                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
4614                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
4615                         FF) =
4616                    azim (vec 0) v2 (rho_node1 FF v2) (@a. a,v2 IN FF)))`,
4617 [
4618 STRIP_TAC
4619 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK_TWO_CASES
4620 THEN RESA_TAC
4621 THEN ASM_TAC
4622 THEN REPEAT RESA_TAC
4623 THEN DICH_TAC (22-5)
4624 THEN RESA_TAC
4625 THEN DICH_TAC (22-5)
4626 THEN RESA_TAC
4627 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR)[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
4628 THEN POP_ASSUM MP_TAC
4629 THEN REWRITE_TAC[GSYM dist]
4630 THEN ONCE_REWRITE_TAC[DIST_SYM]
4631 THEN REWRITE_TAC[dist]
4632 THEN RESA_TAC
4633 THEN REWRITE_TAC[GSYM dist]
4634 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1_MK)[`a:real`;`v2:real^3`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`(w:num->real^3)  (l+k-1)`]
4635 THEN POP_ASSUM MP_TAC
4636 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4637 THEN ASM_REWRITE_TAC[]
4638 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
4639 THEN ASM_REWRITE_TAC[]
4640 THEN STRIP_TAC
4641 THEN ABBREV_TAC`e1=(min e e')/ &2`
4642 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
4643 ==> &0< e1/\ e1< e/\ e1<e'`)
4644 THEN RESA_TAC
4645 THEN EXISTS_TAC`e1:real`
4646 THEN ASM_REWRITE_TAC[]
4647 THEN REPEAT STRIP_TAC
4648 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
4649 ==> t< e/\ --e<t`)
4650 THEN RESA_TAC
4651 THEN MP_TAC V3_DEFOR_EQ_IN_FF_MK_SYM_TWO_CASES
4652 THEN RESA_TAC
4653 THEN REWRITE_TAC[rho_node1]
4654 THEN MP_TAC V3_DEFOR_EQ_IN_FF_MK_TWO_CASES
4655 THEN RESA_TAC
4656 THEN REWRITE_TAC[v3_defor_v5;v3_defor_v4]
4657 THEN MP_TAC MMS_IMP_BBS
4658 THEN RESA_TAC
4659 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4660 THEN RESA_TAC
4661 THEN MP_TAC EXPAND_PERIODIC
4662 THEN RESA_TAC
4663 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
4664 THEN MP_TAC WL_IN_FF
4665 THEN RESA_TAC;
4666
4667 ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4668 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4669
4670 REPLICATE_TAC (50-3)(POP_ASSUM MP_TAC)
4671 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4672 THEN MP_TAC th
4673 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
4674 THEN REPEAT RESA_TAC);
4675
4676 MP_TAC Local_lemmas.CVLF_LF_F
4677 THEN RESA_TAC
4678 THEN REWRITE_TAC[GSYM rho_node1;GSYM ivs_rho_node1]
4679 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)`]
4680 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)`]
4681 THEN DICH_TAC (55-4)
4682 THEN RESA_TAC
4683 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e' /\ --e1<t
4684 ==> t< e'/\ --e'<t`)
4685 THEN RESA_TAC
4686 THEN THAYTHE_TAC (57-27)[`t:real`]
4687 THEN MATCH_MP_TAC Planarity.aff_gt2_subset_aff_ge
4688 THEN ASM_REWRITE_TAC[]
4689 THEN MRESA_TAC th3[`vec 0:real^3`;`(w:num->real^3) (SUC l)`;`(w:num->real^3)(l+k-1)`]
4690 THEN STRIP_TAC;
4691
4692 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
4693 THEN EXISTS_TAC`(w:num->real^3) (SUC l)`
4694 THEN ASM_REWRITE_TAC[]
4695 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4696 THEN ASM_REWRITE_TAC[];
4697
4698 ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
4699 THEN ASM_REWRITE_TAC[]
4700 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4701 THEN MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
4702 THEN EXISTS_TAC`(w:num->real^3)(l+k-1)`
4703 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4704 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
4705 THEN ASM_REWRITE_TAC[];]);;
4706
4707
4708
4709
4710
4711
4712 let V3_DEFOR_EQ_IN_FF_SUB_MK_TWO_CASES=prove_by_refinement(
4713 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4714   MMs_v39 s w /\
4715  w l=v2/\ w (SUC l) =v1 /\
4716 &0< x1 /\ &0<x2   /\ &0< x5 /\
4717 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
4718 /\ &0< e/\ --e<t 
4719 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))
4720 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4721 /\ IMAGE (w:num->real^3) (:num)=V
4722 ==> (@a. a,v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v1 t IN
4723                         IMAGE
4724                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
4725                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
4726                         FF)
4727  = v3_defor_v1 (-- &1) (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1`,
4728 [
4729 STRIP_TAC
4730 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
4731 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4732 THEN MP_TAC th
4733 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
4734 THEN ASSUME_TAC th
4735 THEN STRIP_TAC)
4736 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4737 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
4738 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
4739 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
4740 THEN RESA_TAC
4741 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4742
4743 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
4744 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4745 THEN MP_TAC th
4746 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4747 THEN REPEAT RESA_TAC);
4748
4749 MP_TAC Local_lemmas.CVLF_LF_F
4750 THEN RESA_TAC
4751 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
4752 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
4753 THEN STRIP_TAC;
4754
4755 EXISTS_TAC`v3_defor_v1 (-- &1) (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1`
4756 THEN ASM_REWRITE_TAC[IMAGE;IN_ELIM_THM]
4757 THEN EXISTS_TAC`v2:real^3,v1:real^3`
4758 THEN ASM_REWRITE_TAC[]
4759 THEN MP_TAC EXPAND_PERIODIC
4760 THEN RESA_TAC
4761 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`];
4762
4763 GEN_TAC
4764 THEN RESA_TAC;
4765
4766 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
4767 THEN RESA_TAC;
4768
4769 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
4770 THEN RESA_TAC;
4771
4772 DICH_TAC (45-43)
4773 THEN MP_TAC EXPAND_PERIODIC
4774 THEN RESA_TAC
4775 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
4776 THEN MRESAL_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,v1):real^3#real^3`][VECTOR_ARITH`a-a+a=a:real^3`]
4777 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
4778 THEN RESA_TAC
4779 THEN THAYTHE_TAC 0[`l:num`]
4780 THEN THAYTHE_TAC(48-15)[`t:real`;`SUC l`];
4781
4782 DICH_TAC 2
4783 THEN DICH_TAC 2
4784 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
4785 THEN MP_TAC EXPAND_PERIODIC
4786 THEN RESA_TAC
4787 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
4788 THEN MRESAL_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,v1):real^3#real^3`][VECTOR_ARITH`a-a+a=a:real^3`]
4789 THEN STRIP_TAC
4790 THEN STRIP_TAC
4791 THEN SUBGOAL_THEN`a',v1 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
4792
4793 ASM_REWRITE_TAC[];
4794
4795 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`]
4796 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)`;`(w:num->real^3)(SUC l)`;`a':real^3`;]]);;
4797
4798
4799
4800
4801 let V3_DEFOR_EQ_IN_FF_SUB_MK_SYM_TWO_CASES=prove_by_refinement(
4802 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4803   MMs_v39 s w /\
4804  w l=v2/\ w (SUC l) =v1 /\
4805 &0< x1 /\ &0<x2   /\ &0< x5 /\
4806 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
4807 /\ &0< e/\ --e<t 
4808 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))
4809 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4810 /\ IMAGE (w:num->real^3) (:num)=V
4811 ==> (!a.  v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v1 t,a IN
4812                         IMAGE
4813                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
4814                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
4815                         FF
4816  <=> v1,a IN FF)`,
4817 [
4818 STRIP_TAC
4819 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
4820 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4821 THEN MP_TAC th
4822 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
4823 THEN ASSUME_TAC th
4824 THEN STRIP_TAC)
4825 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4826 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
4827 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
4828 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
4829 THEN RESA_TAC
4830 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4831
4832 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
4833 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4834 THEN MP_TAC th
4835 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4836 THEN REPEAT RESA_TAC);
4837
4838 MP_TAC Local_lemmas.CVLF_LF_F
4839 THEN RESA_TAC
4840 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
4841 THEN GEN_TAC
4842 THEN EQ_TAC
4843 THEN RESA_TAC;
4844
4845 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
4846 THEN RESA_TAC;
4847
4848 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
4849 THEN RESA_TAC
4850 THEN DICH_TAC 3
4851 THEN MP_TAC EXPAND_PERIODIC
4852 THEN RESA_TAC
4853 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
4854 THEN MRESAL_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,v1):real^3#real^3`][VECTOR_ARITH`a-a+a=a:real^3`]
4855 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
4856 THEN RESA_TAC
4857 THEN THAYTHE_TAC 0[`l:num`]
4858 THEN THAYTHE_TAC(48-15)[`t:real`;`SUC l`];
4859
4860 MP_TAC(SET_RULE`v2=SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
4861 THEN RESA_TAC;
4862
4863 DICH_TAC 3
4864 THEN ASM_REWRITE_TAC[]
4865 THEN MP_TAC EXPAND_PERIODIC
4866 THEN RESA_TAC
4867 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
4868 THEN MRESAL_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,v1):real^3#real^3`][VECTOR_ARITH`a-a+a=a:real^3`]
4869 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
4870 THEN STRIP_TAC
4871 THEN SUBGOAL_THEN`v1,v2 IN FF:real^3#real^3->bool`ASSUME_TAC;
4872
4873 ASM_REWRITE_TAC[];
4874
4875
4876 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`SND (x:real^3#real^3)`;`v1:real^3`]
4877 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)`;`v1:real^3`;`v2:real^3`;]
4878 THEN POP_ASSUM MP_TAC
4879 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
4880 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(SUC l),v2:real^3`;`V:real^3->bool`;]
4881 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
4882 THEN RESA_TAC
4883 THEN POP_ASSUM(fun th-> MRESA_TAC th[`SND(x:real^3#real^3)`]);
4884
4885 DICH_TAC 2
4886 THEN DICH_TAC 2
4887 THEN ASM_REWRITE_TAC[]
4888 THEN MP_TAC EXPAND_PERIODIC
4889 THEN RESA_TAC
4890 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
4891 THEN MRESAL_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,v1):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
4892 THEN REPEAT RESA_TAC;
4893
4894 EXISTS_TAC`v1:real^3,a':real^3`
4895 THEN ASM_REWRITE_TAC[]
4896 THEN POP_ASSUM MP_TAC
4897 THEN MP_TAC(SET_RULE`a'=v2\/ ~(a'=v2:real^3)`)
4898 THEN RESA_TAC;
4899
4900 STRIP_TAC
4901 THEN MP_TAC EXPAND_PERIODIC
4902 THEN RESA_TAC
4903 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`];
4904
4905 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`]
4906 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`;]
4907 THEN POP_ASSUM MP_TAC
4908 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
4909 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(SUC l),v2:real^3`;`V:real^3->bool`;]
4910 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
4911 THEN RESA_TAC
4912 THEN POP_ASSUM(fun th-> MRESA_TAC th[`v1:real^3`]);
4913
4914 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
4915
4916
4917
4918
4919 let DEFORMATION_AZIM_V3_DEFOR_SUB_MK_TWO_CASES=prove_by_refinement(
4920 `scs_k_v39 s = k /\
4921  3 < k /\
4922  is_scs_v39 s /\
4923  MMs_v39 s w /\
4924  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
4925  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
4926  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
4927  SUC j MOD k = l MOD k /\
4928  scs_a_v39 s j l = dist (w j,w l) /\
4929  dist (w j,w l) < scs_b_v39 s j l /\
4930  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
4931  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
4932  (!i. ~scs_J_v39 s l i) /\
4933  w l = v2 /\
4934  w (SUC l) = v1 /\
4935  norm v1 pow 2 = x1 /\
4936  norm v2 pow 2 = x2 /\
4937  norm (v2 - v1) pow 2 = x5 /\
4938  a = -- &1 /\
4939  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
4940  IMAGE w (:num) = V
4941  ==> (?e. &0 < e /\
4942           (!t.
4943                 --e < t /\ t < e
4944                ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v1 t)
4945                    (rho_node1
4946                     (IMAGE
4947                      (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
4948                            v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
4949                     FF)
4950                    (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v1 t))
4951                    (@a. a,v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v1 t IN
4952                         IMAGE
4953                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
4954                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
4955                         FF) =
4956                    azim (vec 0) v1 (rho_node1 FF v1) (@a. a,v1 IN FF)))`,
4957 [
4958 STRIP_TAC
4959 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK_TWO_CASES
4960 THEN RESA_TAC
4961 THEN ASM_TAC
4962 THEN REPEAT RESA_TAC
4963 THEN DICH_TAC (22-5)
4964 THEN RESA_TAC
4965 THEN DICH_TAC (22-5)
4966 THEN RESA_TAC
4967 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR)[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
4968 THEN POP_ASSUM MP_TAC
4969 THEN REWRITE_TAC[GSYM dist]
4970 THEN ONCE_REWRITE_TAC[DIST_SYM]
4971 THEN REWRITE_TAC[dist]
4972 THEN RESA_TAC
4973 THEN REWRITE_TAC[GSYM dist]
4974 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1_MK)[`a:real`;`v2:real^3`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`(w:num->real^3)  (l+k-1)`]
4975 THEN POP_ASSUM MP_TAC
4976 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4977 THEN ASM_REWRITE_TAC[]
4978 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
4979 THEN ASM_REWRITE_TAC[]
4980 THEN STRIP_TAC
4981 THEN ABBREV_TAC`e1=(min e e')/ &2`
4982 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
4983 ==> &0< e1/\ e1< e/\ e1<e'`)
4984 THEN RESA_TAC
4985 THEN EXISTS_TAC`e1:real`
4986 THEN ASM_REWRITE_TAC[]
4987 THEN REPEAT STRIP_TAC
4988 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
4989 ==> t< e/\ --e<t`)
4990 THEN RESA_TAC
4991 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SUB_MK_SYM_TWO_CASES
4992 THEN RESA_TAC
4993 THEN REWRITE_TAC[rho_node1]
4994 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SUB_MK_TWO_CASES
4995 THEN RESA_TAC
4996 THEN MP_TAC MMS_IMP_BBS
4997 THEN RESA_TAC
4998 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4999 THEN RESA_TAC
5000 THEN MP_TAC EXPAND_PERIODIC
5001 THEN RESA_TAC
5002 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
5003 THEN MP_TAC WL_IN_FF
5004 THEN RESA_TAC;
5005
5006 ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
5007 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
5008
5009
5010 REPLICATE_TAC (50-3)(POP_ASSUM MP_TAC)
5011 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5012 THEN MP_TAC th
5013 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
5014 THEN REPEAT RESA_TAC);
5015
5016 MP_TAC Local_lemmas.CVLF_LF_F
5017 THEN RESA_TAC
5018 THEN MRESAL_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,v1):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
5019 THEN ASM_REWRITE_TAC[v3_defor_v5;v3_defor_v4;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`;VECTOR_ARITH`a-b+b=a:real^3`]
5020 THEN REWRITE_TAC[GSYM rho_node1;GSYM ivs_rho_node1]
5021 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)`]
5022 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)`]
5023 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e' /\ --e1<t
5024 ==> t< e'/\ --e'<t`)
5025 THEN RESA_TAC
5026 THEN THAYTHE_TAC (57-27)[`t:real`]
5027 THEN ONCE_REWRITE_TAC[Rogers.AZIM_EQ_SYM];
5028
5029
5030 MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w (l+k-1)}/\
5031  aff_gt {vec 0} {v1, w (l+k-1)} SUBSET aff_ge {vec 0} {v1, w (l+k-1)}
5032 ==> v2 IN aff_ge {vec 0} {v1:real^3, w (l+k-1 )}`)
5033 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
5034 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
5035 THEN ASM_REWRITE_TAC[]
5036 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
5037 THEN RESA_TAC
5038 THEN MRESA_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT[`vec 0:real^3`;`(w:num->real^3)(SUC l)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;`(rho_node1 FF (w(SUC l)))`;]
5039 THEN POP_ASSUM MP_TAC
5040 THEN ONCE_REWRITE_TAC[SET_RULE`{C,A,B}={C,B,A}`]
5041 THEN ASM_REWRITE_TAC[]
5042 THEN RESA_TAC
5043 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)`;`v1:real^3`;`v2:real^3`]
5044 THEN  MATCH_MP_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT
5045 THEN STRIP_TAC
5046 THEN ASM_REWRITE_TAC[];
5047
5048 ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
5049 THEN MATCH_MP_TAC(GEN_ALL (SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
5050 THEN EXISTS_TAC`aff_gt{vec 0:real^3} {w(l+k-1),v1}`
5051 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE];
5052
5053 ONCE_REWRITE_TAC[SET_RULE`{C,A,B}={C,B,A}`]
5054 THEN ASM_REWRITE_TAC[];
5055
5056 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
5057 THEN EXISTS_TAC`(w:num->real^3)(l+k-1)`
5058 THEN ASM_REWRITE_TAC[]
5059 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
5060 THEN ASM_REWRITE_TAC[]]);;
5061
5062
5063
5064
5065
5066 let V3_DEFOR_EQ_IN_FF_SUC_MK_TWO_CASES=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
5067   MMs_v39 s w /\
5068  w l=v2/\ w (SUC l) =v1 /\
5069 &0< x1 /\ &0<x2   /\ &0< x5 /\
5070 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
5071 /\ &0< e/\ --e<t 
5072 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))
5073 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5074 /\ IMAGE (w:num->real^3) (:num)=V
5075 ==> (!a. a,v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (l+k-1)) t IN
5076                         IMAGE
5077                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
5078                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
5079                         FF
5080 <=> a, w(l+k-1) IN FF)`,
5081 [
5082 STRIP_TAC
5083 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
5084 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5085 THEN MP_TAC th
5086 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
5087 THEN ASSUME_TAC th
5088 THEN STRIP_TAC)
5089 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
5090 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
5091 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
5092 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
5093 THEN RESA_TAC
5094 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
5095
5096 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
5097 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5098 THEN MP_TAC th
5099 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
5100 THEN REPEAT RESA_TAC);
5101
5102 MP_TAC Local_lemmas.CVLF_LF_F
5103 THEN RESA_TAC
5104 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
5105 THEN GEN_TAC
5106 THEN EQ_TAC
5107 THEN RESA_TAC;
5108
5109 MP_TAC(SET_RULE`v2=SND(x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
5110 THEN RESA_TAC;
5111
5112 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
5113 THEN RESA_TAC
5114 THEN DICH_TAC 2
5115 THEN DICH_TAC 2
5116 THEN ASM_REWRITE_TAC[]
5117 THEN MP_TAC EXPAND_PERIODIC
5118 THEN RESA_TAC
5119 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1:num`;`w:num->real^3`]
5120 THEN MRESAL_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(l+k-1),v2):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
5121 THEN STRIP_TAC
5122 THEN MP_TAC Imjxphr.MOD_ADD_SUB_1
5123 THEN RESA_TAC
5124 THEN THAYTHE_TAC (48-15)[`t:real`;`l+k-1`];
5125
5126
5127 MP_TAC(SET_RULE`v2=FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
5128 THEN RESA_TAC;
5129
5130 DICH_TAC 2
5131 THEN DICH_TAC 2
5132 THEN ASM_REWRITE_TAC[]
5133 THEN MP_TAC EXPAND_PERIODIC
5134 THEN RESA_TAC
5135 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1:num`;`w:num->real^3`]
5136 THEN MRESAL_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(l+k-1),v2):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
5137 THEN REPEAT STRIP_TAC
5138 THEN SUBGOAL_THEN`v2,w(l+k-1) IN FF:real^3#real^3->bool`ASSUME_TAC;
5139
5140 ASM_REWRITE_TAC[];
5141
5142 MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
5143 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`]
5144 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(l+k-1):real^3`;]
5145 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(l+k-1):real^3`;`FST(x:real^3#real^3)`]
5146 THEN DICH_TAC 2
5147 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
5148 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`;]
5149 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
5150 THEN RESA_TAC
5151 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3)(l+k-1)`]);
5152
5153 DICH_TAC 2
5154 THEN DICH_TAC 2
5155 THEN ASM_REWRITE_TAC[]
5156 THEN MP_TAC EXPAND_PERIODIC
5157 THEN RESA_TAC
5158 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1:num`;`w:num->real^3`]
5159 THEN MRESAL_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(l+k-1),v2):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
5160 THEN REPEAT RESA_TAC;
5161
5162
5163 EXISTS_TAC`a':real^3,w(l+k-1):real^3`
5164 THEN ASM_REWRITE_TAC[]
5165 THEN POP_ASSUM MP_TAC
5166 THEN MP_TAC(SET_RULE`a'=v2\/ ~(a'=v2:real^3)`)
5167 THEN RESA_TAC;
5168
5169 STRIP_TAC
5170 THEN MP_TAC EXPAND_PERIODIC
5171 THEN RESA_TAC
5172 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1:num`;`w:num->real^3`];
5173
5174 MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
5175 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`]
5176 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(l+k-1):real^3`;]
5177 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(l+k-1):real^3`;`v2:real^3`]
5178 THEN DICH_TAC 2
5179 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
5180 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`;]
5181 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
5182 THEN RESA_TAC
5183 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3)(l+k-1)`]);
5184
5185
5186 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
5187
5188
5189
5190
5191 let V3_DEFOR_EQ_IN_FF_SUC_MK_SYM_TWO_CASES=prove_by_refinement(
5192 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
5193   MMs_v39 s w /\
5194  w l=v2/\ w (SUC l) =v1 /\
5195 &0< x1 /\ &0<x2   /\ &0< x5 /\
5196 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
5197 /\ &0< e/\ --e<t 
5198 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))
5199 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5200 /\ IMAGE (w:num->real^3) (:num)=V
5201 ==> (@a. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (l+k-1)) t,a IN
5202                         IMAGE
5203                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
5204                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
5205                         FF
5206 )  = v3_defor_v1 (-- &1) (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1`,
5207 [
5208 STRIP_TAC
5209 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
5210 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5211 THEN MP_TAC th
5212 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
5213 THEN ASSUME_TAC th
5214 THEN STRIP_TAC)
5215 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
5216 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
5217 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
5218 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
5219 THEN RESA_TAC
5220 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
5221
5222 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
5223 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5224 THEN MP_TAC th
5225 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
5226 THEN REPEAT RESA_TAC);
5227
5228 MP_TAC Local_lemmas.CVLF_LF_F
5229 THEN RESA_TAC
5230 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
5231 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
5232 THEN STRIP_TAC;
5233
5234 EXISTS_TAC`v3_defor_v1 (-- &1) (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1`
5235 THEN ASM_REWRITE_TAC[IMAGE;IN_ELIM_THM]
5236 THEN EXISTS_TAC`(w:num->real^3) (l+k-1),v2:real^3`
5237 THEN ASM_REWRITE_TAC[]
5238 THEN MP_TAC EXPAND_PERIODIC
5239 THEN RESA_TAC
5240 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1:num`;`w:num->real^3`];
5241
5242 GEN_TAC
5243 THEN RESA_TAC;
5244
5245 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
5246 THEN RESA_TAC;
5247
5248 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
5249 THEN RESA_TAC;
5250
5251 DICH_TAC (45-42)
5252 THEN MP_TAC EXPAND_PERIODIC
5253 THEN RESA_TAC
5254 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1:num`;`w:num->real^3`]
5255 THEN MRESAL_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(l+k-1),v2):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
5256 THEN MP_TAC Imjxphr.MOD_ADD_SUB_1
5257 THEN RESA_TAC
5258 THEN THAYTHE_TAC (48-15)[`t:real`;`l+k-1`];
5259
5260 DICH_TAC 2
5261 THEN DICH_TAC 2
5262 THEN MP_TAC EXPAND_PERIODIC
5263 THEN RESA_TAC
5264 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1:num`;`w:num->real^3`]
5265 THEN MRESAL_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(l+k-1),v2):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
5266 THEN STRIP_TAC
5267 THEN STRIP_TAC
5268 THEN SUBGOAL_THEN`w(l+k-1),a' IN (FF:real^3#real^3->bool)`ASSUME_TAC;
5269
5270 ASM_REWRITE_TAC[];
5271
5272 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`]
5273 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)`;`a':real^3`;]]);;
5274
5275
5276
5277
5278 let DEFORMATION_AZIM_V3_DEFOR_SUC_MK_TWO_CASES=prove_by_refinement(
5279 `scs_k_v39 s = k /\
5280  3 < k /\
5281  is_scs_v39 s /\
5282  MMs_v39 s w /\
5283  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
5284  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
5285  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
5286  SUC j MOD k = l MOD k /\
5287  scs_a_v39 s j l = dist (w j,w l) /\
5288  dist (w j,w l) < scs_b_v39 s j l /\
5289  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
5290  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
5291  (!i. ~scs_J_v39 s l i) /\
5292  w l = v2 /\
5293  w (SUC l) = v1 /\
5294  norm v1 pow 2 = x1 /\
5295  norm v2 pow 2 = x2 /\
5296  norm (v2 - v1) pow 2 = x5 /\
5297  a = -- &1 /\
5298  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
5299  IMAGE w (:num) = V
5300  ==> (?e. &0 < e /\
5301           (!t.
5302                 --e < t /\ t < e
5303                ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (l+k-1)) t)
5304                    (rho_node1
5305                     (IMAGE
5306                      (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
5307                            v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
5308                     FF)
5309                    (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (l+k-1)) t))
5310                    (@a. a,v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (l+k-1)) t IN
5311                         IMAGE
5312                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
5313                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
5314                         FF) =
5315                    azim (vec 0) (w (l+k-1)) (rho_node1 FF (w (l+k-1))) (@a. a,w (l+k-1) IN FF)))`,
5316 [
5317 STRIP_TAC
5318 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK_TWO_CASES
5319 THEN RESA_TAC
5320 THEN ASM_TAC
5321 THEN REPEAT RESA_TAC
5322 THEN DICH_TAC (22-5)
5323 THEN RESA_TAC
5324 THEN DICH_TAC (22-5)
5325 THEN RESA_TAC
5326 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR)[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
5327 THEN POP_ASSUM MP_TAC
5328 THEN REWRITE_TAC[GSYM dist]
5329 THEN ONCE_REWRITE_TAC[DIST_SYM]
5330 THEN REWRITE_TAC[dist]
5331 THEN RESA_TAC
5332 THEN REWRITE_TAC[GSYM dist]
5333 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1_MK)[`a:real`;`v2:real^3`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`(w:num->real^3)  (l+k-1)`]
5334 THEN POP_ASSUM MP_TAC
5335 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
5336 THEN ASM_REWRITE_TAC[]
5337 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
5338 THEN ASM_REWRITE_TAC[]
5339 THEN STRIP_TAC
5340 THEN ABBREV_TAC`e1=(min e e')/ &2`
5341 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
5342 ==> &0< e1/\ e1< e/\ e1<e'`)
5343 THEN RESA_TAC
5344 THEN EXISTS_TAC`e1:real`
5345 THEN ASM_REWRITE_TAC[]
5346 THEN REPEAT STRIP_TAC
5347 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
5348 ==> t< e/\ --e<t`)
5349 THEN RESA_TAC
5350 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SUC_MK_SYM_TWO_CASES
5351 THEN RESA_TAC
5352 THEN REWRITE_TAC[rho_node1]
5353 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SUC_MK_TWO_CASES
5354 THEN RESA_TAC
5355 THEN MP_TAC MMS_IMP_BBS
5356 THEN RESA_TAC
5357 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
5358 THEN RESA_TAC
5359 THEN MP_TAC EXPAND_PERIODIC
5360 THEN RESA_TAC
5361 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
5362 THEN MP_TAC WL_IN_FF
5363 THEN RESA_TAC;
5364
5365 ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
5366 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
5367
5368 REPLICATE_TAC (50-3)(POP_ASSUM MP_TAC)
5369 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5370 THEN MP_TAC th
5371 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
5372 THEN REPEAT RESA_TAC);
5373
5374 MP_TAC Local_lemmas.CVLF_LF_F
5375 THEN RESA_TAC
5376 THEN MRESAL_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(l+k-1),v2):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
5377 THEN ASM_REWRITE_TAC[v3_defor_v5;v3_defor_v4;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`;VECTOR_ARITH`a-b+b=a:real^3`]
5378 THEN REWRITE_TAC[GSYM rho_node1;GSYM ivs_rho_node1]
5379 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)`]
5380 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)`]
5381 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e' /\ --e1<t
5382 ==> t< e'/\ --e'<t`)
5383 THEN RESA_TAC
5384 THEN THAYTHE_TAC (57-27)[`t:real`];
5385
5386 MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w (l+k-1)}/\
5387  aff_gt {vec 0} {v1, w (l+k-1)} SUBSET aff_ge {vec 0} {v1, w (l+k-1)}
5388 ==> v2 IN aff_ge {vec 0} {v1:real^3, w (l+k-1 )}`)
5389 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
5390 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
5391 THEN RESA_TAC
5392 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`;`(w(l+k-1),v2):real^3#real^3`]
5393 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)))`;]
5394 THEN POP_ASSUM MP_TAC
5395 THEN ONCE_REWRITE_TAC[SET_RULE`{C,A,B}={C,B,A}`]
5396 THEN ASM_REWRITE_TAC[]
5397 THEN RESA_TAC
5398 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`]
5399 THEN ONCE_REWRITE_TAC[Rogers.AZIM_EQ_SYM]
5400 THEN ASM_REWRITE_TAC[]
5401 THEN  MATCH_MP_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT
5402 THEN STRIP_TAC
5403 THEN ASM_REWRITE_TAC[];
5404
5405 MATCH_MP_TAC(GEN_ALL (SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
5406 THEN EXISTS_TAC`aff_gt{vec 0:real^3} {w(l+k-1),v1}`
5407 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE];
5408
5409 ONCE_REWRITE_TAC[SET_RULE`{C,A,B}={C,B,A}`]
5410 THEN ASM_REWRITE_TAC[];
5411
5412 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
5413 THEN EXISTS_TAC`(w:num->real^3)(SUC l)`
5414 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]]);;
5415
5416
5417
5418 let V3_DEFOR_EQ_IN_FF_NOT_MK_TWO_CASES=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
5419   MMs_v39 s w /\
5420  w l=v2/\ w (SUC l) =v1 /\
5421 &0< x1 /\ &0<x2   /\ &0< x5 /\
5422 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
5423 /\ &0< e/\ --e<t 
5424 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))
5425 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5426 /\ IMAGE (w:num->real^3) (:num)=V
5427 /\ ~(v= w(l+k-1))/\ ~(v=v2) /\ ~(v=v1)
5428 /\ v IN V
5429 ==> (!a. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t,a IN
5430                         IMAGE
5431                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
5432                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
5433                         FF
5434 <=> v,a IN FF)`,
5435 [STRIP_TAC
5436 THEN REPLICATE_TAC (23-3)(POP_ASSUM MP_TAC)
5437 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5438 THEN MP_TAC th
5439 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
5440 THEN ASSUME_TAC th
5441 THEN STRIP_TAC)
5442 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
5443 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
5444 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
5445 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
5446 THEN RESA_TAC
5447 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
5448
5449 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
5450 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5451 THEN MP_TAC th
5452 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
5453 THEN REPEAT RESA_TAC);
5454
5455 MP_TAC Local_lemmas.CVLF_LF_F
5456 THEN RESA_TAC
5457 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
5458 THEN GEN_TAC
5459 THEN EQ_TAC
5460 THEN RESA_TAC;
5461
5462 MP_TAC(SET_RULE`v2=SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
5463 THEN RESA_TAC;
5464
5465 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
5466 THEN RESA_TAC
5467 THEN DICH_TAC 2
5468 THEN DICH_TAC 2
5469 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
5470 THEN STRIP_TAC
5471 THEN SUBGOAL_THEN`v,v2 IN FF:real^3#real^3->bool`ASSUME_TAC;
5472
5473 ASM_REWRITE_TAC[];
5474
5475 MP_TAC EXPAND_PERIODIC
5476 THEN RESA_TAC
5477 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
5478 THEN 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)`]
5479 THEN DICH_TAC (52-19)
5480 THEN RESA_TAC;
5481
5482 MP_TAC(SET_RULE`v2=FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
5483 THEN RESA_TAC;
5484
5485 DICH_TAC 2
5486 THEN DICH_TAC 2
5487 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
5488 THEN DICH_TAC(47-22)
5489 THEN EXPAND_TAC "V"
5490 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
5491 THEN STRIP_TAC
5492 THEN THAYTHE_TAC (48-15)[`t:real`;`x':num`]
5493 THEN POP_ASSUM MP_TAC
5494 THEN MP_TAC(SET_RULE`x' MOD k = l MOD k\/ ~(x' MOD k = l MOD k)`)
5495 THEN RESA_TAC;
5496
5497 MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`x':num`;`w:num->real^3`;`l:num`];
5498
5499 SET_TAC[];
5500
5501 DICH_TAC 2
5502 THEN DICH_TAC 2
5503 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
5504 THEN RESA_TAC;
5505
5506 EXISTS_TAC`v:real^3,a':real^3`
5507 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
5508 THEN POP_ASSUM MP_TAC
5509 THEN MP_TAC(SET_RULE`a'=v2\/ ~(a'=v2:real^3)`)
5510 THEN RESA_TAC;
5511
5512 STRIP_TAC
5513 THEN MP_TAC EXPAND_PERIODIC
5514 THEN RESA_TAC
5515 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
5516 THEN 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)`]
5517 THEN DICH_TAC (52-19)
5518 THEN RESA_TAC;
5519
5520 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
5521
5522
5523
5524
5525
5526
5527 let V3_DEFOR_EQ_IN_FF_NOT_MK_SYM_TWO_CASES=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
5528   MMs_v39 s w /\
5529  w l=v2/\ w (SUC l) =v1 /\
5530 &0< x1 /\ &0<x2   /\ &0< x5 /\
5531 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5 /\ a= -- &1
5532 /\ &0< e/\ --e<t 
5533 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1=w i))
5534 /\ t <e /\  IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5535 /\ IMAGE (w:num->real^3) (:num)=V
5536 /\ ~(v= w(l+k-1))/\ ~(v=v2)/\ ~(v=v1)
5537 /\ v IN V
5538 ==> (!a. a, v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t IN
5539                         IMAGE
5540                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
5541                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
5542                         FF
5543 <=> a,v IN FF)`,
5544 [STRIP_TAC
5545 THEN REPLICATE_TAC (23-3)(POP_ASSUM MP_TAC)
5546 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5547 THEN MP_TAC th
5548 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
5549 THEN ASSUME_TAC th
5550 THEN STRIP_TAC)
5551 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
5552 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
5553 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
5554 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
5555 THEN RESA_TAC
5556 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
5557
5558 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
5559 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5560 THEN MP_TAC th
5561 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
5562 THEN REPEAT RESA_TAC);
5563
5564 MP_TAC Local_lemmas.CVLF_LF_F
5565 THEN RESA_TAC
5566 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
5567 THEN GEN_TAC
5568 THEN EQ_TAC
5569 THEN RESA_TAC;
5570
5571 MP_TAC(SET_RULE`v2=FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
5572 THEN RESA_TAC;
5573
5574 MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
5575 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:real^3,(w:num->real^3) (SUC l)`]
5576 THEN DICH_TAC 3
5577 THEN DICH_TAC 3
5578 THEN MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
5579 THEN RESA_TAC
5580 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
5581 THEN STRIP_TAC
5582 THEN STRIP_TAC
5583 THEN SUBGOAL_THEN`v2,v IN FF:real^3#real^3->bool`ASSUME_TAC;
5584
5585 ASM_REWRITE_TAC[];
5586
5587 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`]
5588 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)`]
5589 THEN DICH_TAC (54-21)
5590 THEN RESA_TAC;
5591
5592 MP_TAC(SET_RULE`v2=SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
5593 THEN RESA_TAC;
5594
5595
5596 DICH_TAC 2
5597 THEN DICH_TAC 2
5598 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
5599 THEN DICH_TAC(47-22)
5600 THEN EXPAND_TAC "V"
5601 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
5602 THEN STRIP_TAC
5603 THEN THAYTHE_TAC (48-15)[`t:real`;`x':num`]
5604 THEN POP_ASSUM MP_TAC
5605 THEN MP_TAC(SET_RULE`x' MOD k = l MOD k\/ ~(x' MOD k = l MOD k)`)
5606 THEN RESA_TAC;
5607
5608 MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`x':num`;`w:num->real^3`;`l:num`];
5609
5610 SET_TAC[];
5611
5612 DICH_TAC 2
5613 THEN DICH_TAC 2
5614 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
5615 THEN REPEAT RESA_TAC;
5616
5617 EXISTS_TAC`a':real^3,v:real^3`
5618 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
5619 THEN POP_ASSUM MP_TAC
5620 THEN MP_TAC(SET_RULE`a'=v2\/ ~(a'=v2:real^3)`)
5621 THEN RESA_TAC;
5622
5623 MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
5624 THEN STRIP_TAC
5625 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`;`v:real^3`]
5626 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)`];
5627
5628 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
5629
5630
5631
5632
5633
5634 let DEFORMATION_AZIM_V3_DEFOR_NOT_MK_TWO_CASES=prove_by_refinement(`scs_k_v39 s = k /\
5635  3 < k /\
5636  is_scs_v39 s /\
5637  MMs_v39 s w /\
5638  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
5639  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
5640  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
5641  SUC j MOD k = l MOD k /\
5642  scs_a_v39 s j l = dist (w j,w l) /\
5643  dist (w j,w l) < scs_b_v39 s j l /\
5644  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
5645  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
5646  (!i. ~scs_J_v39 s l i) /\
5647  w l = v2 /\
5648  w (SUC l) = v1 /\
5649  norm v1 pow 2 = x1 /\
5650  norm v2 pow 2 = x2 /\
5651  norm (v2 - v1) pow 2 = x5 /\
5652  a = -- &1 /\
5653  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
5654  IMAGE w (:num) = V
5655  ==> (?e. &0 < e /\
5656           (!t v.
5657                 --e < t /\ t < e  /\ ~(v= w(l+k-1))/\ ~(v=v2)/\ ~(v=v1)
5658 /\ v IN V
5659              ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t)
5660                    (rho_node1
5661                     (IMAGE
5662                      (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
5663                            v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
5664                     FF)
5665                    (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t))
5666                    (@a. a,v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t IN
5667                         IMAGE
5668                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
5669                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
5670                         FF) =
5671                    azim (vec 0) (v) (rho_node1 FF (v)) (@a. a,v IN FF)))`,
5672 [
5673 STRIP_TAC
5674 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK_TWO_CASES
5675 THEN RESA_TAC
5676 THEN ASM_TAC
5677 THEN REPEAT RESA_TAC
5678 THEN DICH_TAC (22-5)
5679 THEN RESA_TAC
5680 THEN DICH_TAC (22-5)
5681 THEN RESA_TAC
5682 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR)[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
5683 THEN POP_ASSUM MP_TAC
5684 THEN REWRITE_TAC[GSYM dist]
5685 THEN ONCE_REWRITE_TAC[DIST_SYM]
5686 THEN REWRITE_TAC[dist]
5687 THEN RESA_TAC
5688 THEN REWRITE_TAC[GSYM dist]
5689 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1_MK)[`a:real`;`v2:real^3`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`(w:num->real^3)  (l+k-1)`]
5690 THEN POP_ASSUM MP_TAC
5691 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
5692 THEN ASM_REWRITE_TAC[]
5693 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
5694 THEN ASM_REWRITE_TAC[]
5695 THEN STRIP_TAC
5696 THEN ABBREV_TAC`e1=(min e e')/ &2`
5697 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
5698 ==> &0< e1/\ e1< e/\ e1<e'`)
5699 THEN RESA_TAC
5700 THEN EXISTS_TAC`e1:real`
5701 THEN ASM_REWRITE_TAC[]
5702 THEN REPEAT STRIP_TAC
5703 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
5704 ==> t< e/\ --e<t`)
5705 THEN RESA_TAC
5706 THEN MP_TAC V3_DEFOR_EQ_IN_FF_NOT_MK_SYM_TWO_CASES
5707 THEN RESA_TAC
5708 THEN REWRITE_TAC[rho_node1]
5709 THEN MP_TAC V3_DEFOR_EQ_IN_FF_NOT_MK_TWO_CASES
5710 THEN RESA_TAC
5711 THEN MP_TAC MMS_IMP_BBS
5712 THEN RESA_TAC
5713 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
5714 THEN RESA_TAC
5715 THEN MP_TAC EXPAND_PERIODIC
5716 THEN RESA_TAC
5717 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
5718 THEN MP_TAC WL_IN_FF
5719 THEN RESA_TAC;
5720
5721 ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
5722 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
5723
5724
5725 REPLICATE_TAC (54-3)(POP_ASSUM MP_TAC)
5726 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5727 THEN MP_TAC th
5728 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
5729 THEN REPEAT RESA_TAC);
5730
5731 MP_TAC Local_lemmas.CVLF_LF_F
5732 THEN RESA_TAC
5733 THEN MRESAL_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(l+k-1),v2):real^3#real^3`][VECTOR_ARITH`b-a+a=b:real^3`]
5734 THEN ASM_REWRITE_TAC[v3_defor_v5;v3_defor_v4;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`;VECTOR_ARITH`a-b+b=a:real^3`]]);;
5735
5736
5737
5738
5739
5740 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_MK_TWO_CASES=prove_by_refinement(`scs_k_v39 s = k /\
5741  3 < k /\
5742  is_scs_v39 s /\
5743  MMs_v39 s w /\
5744  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
5745  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
5746  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
5747  SUC j MOD k = l MOD k /\
5748  scs_a_v39 s j l = dist (w j,w l) /\
5749  dist (w j,w l) < scs_b_v39 s j l /\
5750  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
5751  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
5752  (!i. ~scs_J_v39 s l i) /\
5753  w l = v2 /\
5754  w (SUC l ) = v1 /\
5755  norm v1 pow 2 = x1 /\
5756  norm v2 pow 2 = x2 /\
5757  norm (v2 - v1) pow 2 = x5 /\
5758  a = -- &1 /\
5759  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
5760  IMAGE w (:num) = V
5761  ==> (?e. &0 < e /\
5762           (!t v.
5763                 --e < t /\ t < e  /\ v IN V
5764              ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t)
5765                    (rho_node1
5766                     (IMAGE
5767                      (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
5768                            v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
5769                     FF)
5770                    (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t))
5771                    (@a. a,v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t IN
5772                         IMAGE
5773                         (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
5774                               v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
5775                         FF) =
5776                    azim (vec 0) (v) (rho_node1 FF (v)) (@a. a,v IN FF)))`,
5777 [STRIP_TAC
5778 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_MK_TWO_CASES
5779 THEN RESA_TAC
5780 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_SUC_MK_TWO_CASES
5781 THEN RESA_TAC
5782 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_SUB_MK_TWO_CASES
5783 THEN RESA_TAC
5784 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_NOT_MK_TWO_CASES
5785 THEN RESA_TAC
5786 THEN ABBREV_TAC`e1=(min (min (min e e') e'')e''')/ &2`
5787 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'''`)
5788 THEN RESA_TAC
5789 THEN EXISTS_TAC`e1:real`
5790 THEN ASM_REWRITE_TAC[]
5791 THEN REPEAT RESA_TAC
5792 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'''
5793 /\  --e< t/\ --e'<t /\ --e''<t/\ --e'''<t`)
5794 THEN RESA_TAC
5795 THEN MP_TAC(SET_RULE`(v=(w:num->real^3)(l+k-1))\/ ~(v=(w:num->real^3)(l+k-1))`)
5796 THEN RESA_TAC;
5797
5798 MATCH_DICH_TAC (46-24)
5799 THEN ASM_REWRITE_TAC[];
5800
5801 MP_TAC(SET_RULE`(v=(w:num->real^3)(SUC l))\/ ~(v=(w:num->real^3)(SUC l))`)
5802 THEN RESA_TAC;
5803
5804 MATCH_DICH_TAC (47-26)
5805 THEN ASM_REWRITE_TAC[];
5806
5807 MP_TAC(SET_RULE`(v=(w:num->real^3)(l))\/ ~(v=(w:num->real^3)( l))`)
5808 THEN RESA_TAC;
5809
5810 MATCH_DICH_TAC (48-22)
5811 THEN ASM_REWRITE_TAC[];
5812
5813 MATCH_DICH_TAC (48-28)
5814 THEN ASM_REWRITE_TAC[]]);;
5815
5816
5817 let DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_AT_ALL_MK_TWO_CASES=prove(
5818 `scs_k_v39 s = k /\
5819  3 < k /\
5820  is_scs_v39 s /\
5821  MMs_v39 s w /\
5822  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
5823  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
5824  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
5825  SUC j MOD k = l MOD k /\
5826  scs_a_v39 s j l = dist (w j,w l) /\
5827  dist (w j,w l) < scs_b_v39 s j l /\
5828  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
5829  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
5830  (!i. ~scs_J_v39 s l i) /\
5831  w l = v2 /\
5832  w (SUC l) = v1 /\
5833  norm v1 pow 2 = x1 /\
5834  norm v2 pow 2 = x2 /\
5835  norm (v2 - v1) pow 2 = x5 /\
5836  a = -- &1 /\
5837  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
5838  IMAGE w (:num) = V
5839  ==> (?e. &0 < e /\
5840           (!t v.
5841                 --e < t /\ t < e  /\ v IN V
5842            ==> interior_angle1 (vec 0)
5843                (IMAGE
5844                 (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
5845                       v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
5846                FF)
5847                (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v t) =
5848                interior_angle1 (vec 0) FF v))`,
5849 REWRITE_TAC[interior_angle1;DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_MK_TWO_CASES]);;
5850
5851
5852
5853
5854
5855
5856
5857
5858 let DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_LE_PI_AT_ALL_MK_TWO_CASES=prove(`scs_k_v39 s = k /\
5859  3 < k /\
5860  is_scs_v39 s /\
5861  MMs_v39 s w /\
5862  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
5863  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
5864  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
5865  SUC j MOD k = l MOD k /\
5866  scs_a_v39 s j l = dist (w j,w l) /\
5867  dist (w j,w l) < scs_b_v39 s j l /\
5868  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
5869  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
5870  (!i. ~scs_J_v39 s l i) /\
5871  w l = v2 /\
5872  w (SUC l) = v1 /\
5873  norm v1 pow 2 = x1 /\
5874  norm v2 pow 2 = x2 /\
5875  norm (v2 - v1) pow 2 = x5 /\
5876  a = -- &1 /\
5877  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
5878  IMAGE w (:num) = V
5879  ==> (?e. &0 < e /\
5880           (!t v.
5881                 --e < t /\ t < e  /\ v IN V /\ interior_angle1 (vec 0) FF v= pi
5882            ==> interior_angle1 (vec 0)
5883                (IMAGE
5884                 (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
5885                       v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
5886                FF)
5887                (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v t) <= pi
5888                ))`,
5889 STRIP_TAC
5890 THEN MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_AT_ALL_MK_TWO_CASES
5891 THEN RESA_TAC
5892 THEN EXISTS_TAC`e:real`
5893 THEN ASM_REWRITE_TAC[]
5894 THEN REPEAT RESA_TAC
5895 THEN THAYTHE_TAC (26-22)[`t:real`;`v:real^3`]
5896 THEN REAL_ARITH_TAC);;
5897
5898
5899
5900
5901 let DEFORMATION_LUNAR_AFFINE_HULL_MK_TWO_CASES=prove_by_refinement(`scs_k_v39 s = k /\
5902  3 < k /\
5903  is_scs_v39 s /\
5904  MMs_v39 s w /\
5905  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
5906  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
5907  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
5908  SUC j MOD k = l MOD k /\
5909  scs_a_v39 s j l = dist (w j,w l) /\
5910  dist (w j,w l) < scs_b_v39 s j l /\
5911  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
5912  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
5913  (!i. ~scs_J_v39 s l i) /\
5914  w l = v2 /\
5915  w (SUC l) = v1 /\
5916  norm v1 pow 2 = x1 /\
5917  norm v2 pow 2 = x2 /\
5918  norm (v2 - v1) pow 2 = x5 /\
5919  a = -- &1 /\
5920  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
5921  IMAGE w (:num) = V /\
5922  ~(v=v2)/\ ~(w1=v2) 
5923 /\ IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)=E
5924 /\ lunar (v,w1) V E
5925 ==> 
5926 ?e. &0<e /\ (!t. t IN real_interval (--e,e)
5927      ==> v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v2 t IN
5928          affine hull {vec 0, v, w1, v2})`,
5929 [STRIP_TAC
5930 THEN ASM_TAC
5931 THEN REPEAT RESA_TAC
5932 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK_TWO_CASES
5933 THEN RESA_TAC
5934 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR)[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
5935 THEN POP_ASSUM MP_TAC
5936 THEN REWRITE_TAC[GSYM dist]
5937 THEN ONCE_REWRITE_TAC[DIST_SYM]
5938 THEN REWRITE_TAC[dist]
5939 THEN RESA_TAC
5940 THEN REWRITE_TAC[GSYM dist]
5941 THEN DICH_TAC (30-4)
5942 THEN RESA_TAC
5943 THEN DICH_TAC (30-4)
5944 THEN RESA_TAC
5945 THEN DICH_TAC (30-4)
5946 THEN RESA_TAC
5947 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1_MK)[`a:real`;`v2:real^3`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`(w:num->real^3)  (l+k-1)`]
5948 THEN POP_ASSUM MP_TAC
5949 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
5950 THEN ASM_REWRITE_TAC[]
5951 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
5952 THEN ASM_REWRITE_TAC[]
5953 THEN STRIP_TAC
5954 THEN REPLICATE_TAC (32-3)(POP_ASSUM MP_TAC)
5955 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5956 THEN MP_TAC th
5957 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;IN_REAL_INTERVAL]
5958 THEN MP_TAC th
5959 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
5960 THEN REPEAT RESA_TAC)
5961 THEN MP_TAC BBS_IMP_CONVEX_LOCAL_FAN
5962 THEN RESA_TAC
5963 THEN MP_TAC WL_IN_V
5964 THEN RESA_TAC
5965 THEN MP_TAC EXPAND_PERIODIC
5966 THEN RESA_TAC
5967 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
5968 THEN MP_TAC WL_IN_FF
5969 THEN RESA_TAC;
5970
5971 MP_TAC Local_lemmas.CVLF_LF_F
5972 THEN RESA_TAC
5973 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)`]
5974 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`;]
5975 THEN MRESAL_TAC (GEN_ALL LUNAR_IMP_INTERIOR_ANGLE1_EQ_PI)
5976 [`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))`]
5977 THEN POP_ASSUM(fun th-> MRESA_TAC th[`v2:real^3`])
5978 THEN MRESA_TAC (GEN_ALL Collect_geom2.THREE_GEN_POINTS_IN_AFF3)[`v2:real^3`;`v:real^3`;`w1:real^3`]
5979 THEN MRESA_TAC (GEN_ALL Local_lemmas.CONV02_SUBSET_AFF2)[`v:real^3`;`w1:real^3`] 
5980 THEN MP_TAC(SET_RULE`v IN aff {v2, v, w1}/\ w1 IN aff {v2, v, w1}
5981 ==> {v, w1} SUBSET  aff {v2, v, w1:real^3}`)
5982 THEN RESA_TAC
5983 THEN MRESA_TAC(GEN_ALL Local_lemmas.S_SUBSET_IMP_AFF_S_TOO)[`{v, w1:real^3}`;` {v2, v, w1:real^3}`]
5984 THEN MP_TAC(SET_RULE`v1 IN aff {v2, v, w1}/\ w (l+k-1) IN aff {v2, v, w1}
5985 /\ vec 0 IN conv0 {v, w1} /\ conv0 {v, w1} SUBSET aff {v, w1}
5986 /\ aff {v, w1} SUBSET aff {v2, v, w1}
5987 ==> {vec 0, v1, w (l+k-1)} SUBSET aff {v2, v, w1:real^3}`)
5988 THEN RESA_TAC
5989 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}`]
5990 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}`]
5991 THEN EXISTS_TAC`e':real`
5992 THEN ASM_REWRITE_TAC[]
5993 THEN REPEAT RESA_TAC;
5994
5995 THAYTHE_TAC (71-31)[`t:real`]
5996 THEN REWRITE_TAC[GSYM aff]
5997 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]
5998 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
5999 THEN EXISTS_TAC`aff {v2, v, w1:real^3}`
6000 THEN ASM_REWRITE_TAC[]
6001 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
6002 THEN EXISTS_TAC`aff {vec 0, v1,  w (l+k-1):real^3}`
6003 THEN ASM_REWRITE_TAC[]
6004 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
6005 THEN EXISTS_TAC`aff_gt {vec 0} {v1, w (l+k-1):real^3}`
6006 THEN ASM_REWRITE_TAC[v3_defor_v4]
6007 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
6008 THEN ASM_REWRITE_TAC[v3_defor_v5;v3_defor_v4]]);;
6009
6010
6011
6012
6013
6014
6015 let V3_DEFOR_CONVEX_LOCAL_FAN_MK_TWO_CASES_concl =`!s k w l j.
6016   scs_k_v39 s=k /\
6017   3 < k /\
6018   is_scs_v39 s /\
6019   MMs_v39 s w /\
6020   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
6021 ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
6022       w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
6023   (SUC j MOD k = l MOD k ) /\
6024   (scs_a_v39 s j l = dist(w j,w l)) /\ 
6025 (dist(w j,w l)<scs_b_v39 s j l ) /\ 
6026   (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
6027   (!i. scs_diag k l i ==> scs_a_v39 s l i < dist(w l,w i)) /\
6028   (!i. ~(scs_J_v39 s l i)) /\
6029  w l=v2/\ w (SUC l) =v1
6030 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v2-v1) pow 2=x5/\ a= -- &1
6031 /\ norm v2 = &2
6032 /\  (!V E v.
6033      V = IMAGE w (:num) /\
6034       E = IMAGE (\i. {w i, w (SUC i)}) (:num) ==>
6035       ~(lunar (v,(w l)) V E )) ==> 
6036 (?e. &0 < e /\
6037               (!t. --e < t /\ t < e
6038                    ==>
6039 convex_local_fan
6040  (IMAGE (\i. v3_defor_v4 a x1 x5 x2 (--v1) (v2 - v1) (w i - v1) t + v1)
6041   (:num),
6042   IMAGE
6043   (\i. {v3_defor_v4 a x1 x5 x2 (--v1) (v2 - v1) (w i - v1) t + v1, v3_defor_v4
6044                                                                    a
6045                                                                    x1
6046                                                                    x5
6047                                                                    x2
6048                                                                    (--v1)
6049                                                                    (v2 - v1)
6050                                                                    (w (SUC i) -
6051                                                                     v1)
6052                                                                    t +
6053                                                                    v1})
6054   (:num),
6055   IMAGE
6056   (\i. v3_defor_v4 a x1 x5 x2 (--v1) (v2 - v1) (w i - v1) t + v1,
6057        v3_defor_v4 a x1 x5 x2 (--v1) (v2 - v1) (w (SUC i) - v1) t + v1)
6058   (:num))))`;;
6059
6060 let V3_DEFOR_CONVEX_LOCAL_FAN_MK_TWO_CASES=prove_by_refinement(
6061 (mk_imp(ZLZTHIC_concl, mk_imp (MHAEYJN_concl, V3_DEFOR_CONVEX_LOCAL_FAN_MK_TWO_CASES_concl))),
6062 [
6063 REPEAT STRIP_TAC;
6064
6065
6066 REPLICATE_TAC (22-5)(POP_ASSUM MP_TAC)
6067 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6068 THEN POP_ASSUM MP_TAC
6069 THEN MP_TAC th
6070 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6071 THEN ASSUME_TAC th
6072 THEN STRIP_TAC)
6073 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
6074 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
6075 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
6076 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
6077 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
6078 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ ~(k<=3)`)
6079 THEN RESA_TAC
6080 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
6081
6082 REPLICATE_TAC (40-21)(POP_ASSUM MP_TAC)
6083 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6084 THEN MP_TAC th
6085 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6086 THEN REPEAT RESA_TAC);
6087
6088 MP_TAC WL_IN_V
6089 THEN RESA_TAC
6090 THEN MRESA_TAC(GEN_ALL WL_IN_V)[`l+k-1`;`w:num->real^3`]
6091 THEN MRESA_TAC(GEN_ALL WL_IN_V)[`SUC l`;`w:num->real^3`]
6092 THEN MP_TAC WL_IN_BALL_ANNULUS
6093 THEN RESA_TAC
6094 THEN MRESA_TAC (GEN_ALL WL_IN_BALL_ANNULUS)[`s:scs_v39`;`w:num->real^3`;`l+k-1`]
6095 THEN MRESA_TAC (GEN_ALL WL_IN_BALL_ANNULUS)[`s:scs_v39`;`w:num->real^3`;`SUC l`]
6096 THEN MP_TAC EXPAND_PERIODIC
6097 THEN RESA_TAC
6098 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`];
6099
6100 MP_TAC Local_lemmas.CVLF_LF_F
6101 THEN RESA_TAC
6102 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`]
6103 THEN POP_ASSUM MP_TAC
6104 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
6105 THEN RESA_TAC
6106 THEN MRESA_TAC(GEN_ALL NORM_POS_COLLINEAR)[`v2:real^3`;`v1:real^3`;`x2:real`;`x1:real`;`x5:real`]
6107 THEN POP_ASSUM MP_TAC
6108 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
6109 THEN RESA_TAC
6110 THEN MP_TAC DEFORMATION_MK_DEFOR_IN_BALL_ANNULUS
6111 THEN RESA_TAC;
6112
6113 MRESA_TAC Deformation.XRECQNS[`-- &1`;`&1`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`ww_defor ((w:num->real^3) l)`]
6114 THEN MP_TAC Wrgcvdr_cizmrrh.CIZMRRH
6115 THEN RESA_TAC;
6116
6117
6118 MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_LE_PI_AT_ALL_MK_TWO_CASES
6119 THEN RESA_TAC
6120 THEN MP_TAC V3_DEFOR_DEFORMATION_V5
6121 THEN RESA_TAC;
6122
6123 ABBREV_TAC`e1= (min(min(min (min e (&1)) e') e'')e''')/ &2`
6124 THEN MP_TAC(REAL_ARITH`e1= (min(min(min (min e (&1)) e') e'')e''')/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e''' ==> &0< e1/\ e1< &1/\ e1< e /\ e1< e' /\ e1< e'' /\ --e1< &0/\ e1<= e'''/\ --e'''<= --e1`)
6125 THEN RESA_TAC;
6126
6127 MRESA_TAC (GEN_ALL DEFORMATION_SMALL_INTERVAL)[`-- e''':real`;`e''':real`;`v3_defor_v5 (-- &1) x1 x5 x2 v1 v2`;`V:real^3->bool`;`--e1:real`;`e1:real`]
6128 THEN THAYTHE_TAC (76-0) [`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v3_defor_v5 (-- &1) x1 x5 x2 v1 v2`]
6129 THEN POP_ASSUM MP_TAC
6130 THEN SUBGOAL_THEN`(!v t.
6131            v IN V /\
6132            t IN real_interval (--e1,e1) /\
6133            interior_angle1 (vec 0) FF v = pi
6134            ==> interior_angle1 (vec 0)
6135                (IMAGE
6136                 (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
6137                       v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
6138                FF)
6139                (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v t) <=
6140                pi)`ASSUME_TAC;
6141
6142 ASM_REWRITE_TAC[IN_REAL_INTERVAL]
6143 THEN REPEAT RESA_TAC
6144 THEN MATCH_DICH_TAC (79-63)
6145 THEN ASM_REWRITE_TAC[]
6146 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''/\ --e1 <t ==> t<e''/\ --e''<t`)
6147 THEN RESA_TAC;
6148
6149 RESA_TAC
6150 THEN STRIP_TAC
6151 THEN REMOVE_ASSUM_TAC
6152 THEN EXISTS_TAC`e'''':real`
6153 THEN ASM_REWRITE_TAC[V_DEFORMATION_V3_DEFOR_V5;E_DEFORMATION_V3_DEFOR_V5;F_DEFORMATION_V3_DEFOR_V5]
6154 THEN GEN_TAC
6155 THEN POP_ASSUM(fun th-> STRIP_TAC
6156 THEN MRESA_TAC th[`t:real`]);
6157
6158
6159 (*********LUNAR*******)
6160
6161
6162 MRESAL_TAC JKQEWGV3[`s:scs_v39`;`w:num->real^3`;`v:real^3`;`w':real^3`][LET_DEF;LET_END_DEF;]
6163 THEN MP_TAC(REAL_ARITH`interior_angle1 (vec 0) FF v < pi / &2/\ &0< pi
6164 ==> interior_angle1 (vec 0) FF v < pi`)
6165 THEN ASM_REWRITE_TAC[PI_WORKS]
6166 THEN RESA_TAC
6167 THEN STRIP_TAC
6168 THEN SUBGOAL_THEN`~(v2=v:real^3)`ASSUME_TAC;
6169
6170 POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`w':real^3`])
6171 THEN STRIP_TAC
6172 THEN POP_ASSUM(fun th->
6173 ASM_TAC
6174 THEN REWRITE_TAC[th]
6175 THEN REPEAT RESA_TAC)
6176 THEN ASM_REWRITE_TAC[Local_lemmas.LUNAR_COMM];
6177
6178 SUBGOAL_THEN`~(v2=w':real^3)`ASSUME_TAC;
6179
6180 REMOVE_ASSUM_TAC
6181 THEN POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v:real^3`])
6182 THEN STRIP_TAC
6183 THEN POP_ASSUM(fun th->
6184 ASM_TAC
6185 THEN REWRITE_TAC[th]
6186 THEN REPEAT RESA_TAC);
6187
6188
6189 POP_ASSUM MP_TAC
6190 THEN POP_ASSUM MP_TAC
6191 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6192 THEN MP_TAC th)
6193 THEN ABBREV_TAC`w1=w':real^3`
6194 THEN MP_TAC DEFORMATION_LUNAR_AFFINE_HULL_MK_TWO_CASES
6195 THEN RESA_TAC
6196 THEN MP_TAC V3_DEFOR_DEFORMATION_V5
6197 THEN RESA_TAC;
6198
6199 ABBREV_TAC`e1= (min(min(min (min e (&1)) e') e'') e''')/ &2`
6200 THEN MP_TAC(REAL_ARITH`e1= (min(min(min (min e (&1)) e') e'') e''')/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e''' ==> &0< e1/\ e1< &1/\ e1< e /\ e1< e' /\ e1< e'' /\ e1<= e'''/\  -- e'''<= --e1/\ --e1< &0`)
6201 THEN RESA_TAC
6202 THEN SUBGOAL_THEN`(!u' t.
6203            u' IN V /\ ~(v2 = u':real^3) /\ t IN real_interval (--e1,e1)
6204            ==> v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 u' t = u')`ASSUME_TAC;
6205
6206 REPEAT STRIP_TAC
6207 THEN REWRITE_TAC[v3_defor_v5;v3_defor_v4;VECTOR_ARITH`a-c=b-c<=>a=b:real^3`]
6208 THEN REMOVE_ASSUM_TAC
6209 THEN POP_ASSUM(fun th-> REWRITE_TAC[th;])
6210 THEN VECTOR_ARITH_TAC;
6211
6212 SUBGOAL_THEN`(!t. t IN real_interval (--e1,e1)
6213        ==> v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v2 t IN
6214            affine hull {vec 0, v, w1, v2})`ASSUME_TAC;
6215
6216 ASM_REWRITE_TAC[IN_REAL_INTERVAL]
6217 THEN REPEAT RESA_TAC
6218 THEN MATCH_DICH_TAC (83-69)
6219 THEN ASM_REWRITE_TAC[IN_REAL_INTERVAL]
6220 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''/\ --e1<t==> t<e''/\ --e''<t`)
6221 THEN RESA_TAC;
6222
6223 MRESA_TAC (GEN_ALL DEFORMATION_SMALL_INTERVAL)[`-- e''':real`;`e''':real`;`v3_defor_v5 (-- &1) x1 x5 x2 v1 v2`;`V:real^3->bool`;`--e1:real`;`e1:real`]
6224 THEN REPLICATE_TAC (83-1) (POP_ASSUM MP_TAC)
6225 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6226 THEN POP_ASSUM MP_TAC
6227 THEN MRESA_TAC th[`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v3_defor_v5 (-- &1) x1 x5 x2 v1 v2`;`v:real^3`;`w':real^3`;`v2:real^3`])
6228 THEN POP_ASSUM MP_TAC;
6229
6230 RESA_TAC
6231 THEN STRIP_TAC
6232 THEN REMOVE_ASSUM_TAC
6233 THEN EXISTS_TAC`e'''':real`
6234 THEN ASM_REWRITE_TAC[V_DEFORMATION_V3_DEFOR_V5;E_DEFORMATION_V3_DEFOR_V5;F_DEFORMATION_V3_DEFOR_V5]
6235 THEN GEN_TAC
6236 THEN POP_ASSUM(fun th-> STRIP_TAC
6237 THEN MRESA_TAC th[`t:real`])]);;
6238
6239
6240
6241
6242 let INTERIOR_ANGLE_SAME_V3_DEFOR1_MK_TWO_CASES=prove(
6243 `scs_k_v39 s = k /\
6244  3 < k /\
6245  is_scs_v39 s /\
6246  MMs_v39 s w /\
6247  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
6248  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
6249  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
6250  SUC j MOD k = l MOD k /\
6251  scs_a_v39 s j l = dist (w j,w l) /\
6252  dist (w j,w l) < scs_b_v39 s j l /\
6253  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
6254  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
6255  (!i. ~scs_J_v39 s l i) /\
6256  w l = v2 /\
6257  w (SUC l) = v1 /\
6258  norm v1 pow 2 = x1 /\
6259  norm v2 pow 2 = x2 /\
6260  norm (v2 - v1) pow 2 = x5 /\
6261  a = -- &1 /\
6262  IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
6263  IMAGE w (:num) = V
6264 /\(!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t))/\
6265 &0< e1
6266 ==>
6267 (?e. &0< e/\ (!t i.
6268                       &0< t /\ t< e  
6269 ==> 
6270 interior_angle1 (vec 0)
6271  (IMAGE
6272   (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
6273         v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
6274  FF)
6275  (ITER i
6276   (rho_node1
6277   (IMAGE
6278    (\uv. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (FST uv) t,
6279          v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (SND uv) t)
6280   FF))
6281  (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (l MOD k)) t))
6282  =
6283 interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) (w (l MOD k)))))`,
6284
6285 STRIP_TAC
6286 THEN MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_AT_ALL_MK_TWO_CASES
6287 THEN RESA_TAC
6288 THEN ABBREV_TAC`e2=(min e e1)/ &2`
6289 THEN MP_TAC(REAL_ARITH`e2=(min e e1)/ &2 /\ &0< e/\ &0<e1==> &0<e2/\ e2<e/\ e2<e1`)
6290 THEN RESA_TAC
6291 THEN EXISTS_TAC`e2:real`
6292 THEN ASM_REWRITE_TAC[]
6293 THEN REPEAT RESA_TAC
6294 THEN ASM_TAC
6295 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;]
6296 THEN REPEAT STRIP_TAC
6297 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
6298 THEN RESA_TAC
6299 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;]
6300 THEN REPLICATE_TAC (45-29)(POP_ASSUM MP_TAC)
6301 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6302 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e1==> t<e1`)
6303 THEN RESA_TAC
6304 THEN MRESA_TAC th[`t:real`])
6305 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)
6306 [`IMAGE (\i. v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) t) (:num)`;`IMAGE (\i. { v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) t, v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) (SUC i)) t}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) t, v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) (SUC i)) t) (:num)`;`(\i. v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) t) (l MOD k)`;`(\i. v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) t)`;`l MOD k`]
6307 [MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;]
6308 THEN POP_ASSUM MP_TAC
6309 THEN ASM_REWRITE_TAC[v3_defor_v5; F_DEFORMATION_V3_DEFOR_V5]
6310 THEN RESA_TAC
6311 THEN REWRITE_TAC[GSYM v3_defor_v5]
6312 THEN MATCH_DICH_TAC (47-31)
6313 THEN ASM_REWRITE_TAC[]
6314 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e/\ &0<t==> t<e/\ --e<t`)
6315 THEN RESA_TAC
6316 THEN EXPAND_TAC"V"
6317 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
6318 THEN EXISTS_TAC`i + l MOD k`
6319 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`]);;
6320
6321
6322
6323
6324
6325 let TAUSTAR_V3_DEFOR_MK_TWO_CASES_concl = `!s k w l.
6326    scs_k_v39 s = k /\
6327  3 < k /\
6328  is_scs_v39 s /\
6329  MMs_v39 s w /\
6330  azim (vec 0) (w l) (w (SUC l)) (w (l + scs_k_v39 s - 1)) = pi /\
6331  ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
6332  w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
6333  SUC j MOD k = l MOD k /\
6334  scs_a_v39 s j l = dist (w j,w l) /\
6335  dist (w j,w l) < scs_b_v39 s j l /\
6336  (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
6337  (!i. scs_diag k l i ==> scs_a_v39 s l i < dist (w l,w i)) /\
6338  (!i. ~scs_J_v39 s l i) /\
6339  w l = v2 /\
6340  w (SUC l) = v1 /\
6341  norm v1 pow 2 = x1 /\
6342  norm v2 pow 2 = x2 /\
6343  norm (v2 - v1) pow 2 = x5 /\
6344  a = -- &1 
6345 /\(!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t))/\
6346 &0< e1
6347  ==> 
6348 (?e. &0 < e /\
6349               (!t. &0 < t /\ t < e
6350                    ==> taustar_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t)= taustar_v39 s w 
6351 ))`;;
6352
6353
6354
6355
6356
6357 let TAUSTAR_V3_DEFOR_MK_TWO_CASES=prove_by_refinement(
6358 ( TAUSTAR_V3_DEFOR_MK_TWO_CASES_concl),
6359 [
6360 REPEAT STRIP_TAC;
6361
6362 REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
6363 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6364 THEN POP_ASSUM MP_TAC
6365 THEN MP_TAC th
6366 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6367 THEN ASSUME_TAC th
6368 THEN STRIP_TAC)
6369 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
6370 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
6371 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
6372 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
6373 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
6374 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
6375 THEN RESA_TAC
6376 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
6377
6378 REPLICATE_TAC (41-22)(POP_ASSUM MP_TAC)
6379 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6380 THEN MP_TAC th
6381 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6382 THEN REPEAT RESA_TAC);
6383
6384 ASM_REWRITE_TAC[taustar_v39;LET_DEF;LET_END_DEF;tau_fun]
6385 THEN STRIP_TAC
6386 THEN MP_TAC INTERIOR_ANGLE_SAME_V3_DEFOR1_MK_TWO_CASES
6387 THEN RESA_TAC
6388 THEN MRESA_TAC(GEN_ALL HYPER_MM_COLLINEAR)[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`;`x1:real`;`x2:real`;`x5:real`;`v1:real^3`;`v2:real^3`]
6389 THEN POP_ASSUM MP_TAC
6390 THEN REWRITE_TAC[GSYM dist]
6391 THEN ONCE_REWRITE_TAC[DIST_SYM]
6392 THEN REWRITE_TAC[dist]
6393 THEN RESA_TAC
6394 THEN REWRITE_TAC[GSYM dist]
6395 THEN MRESAL_TAC(GEN_ALL UPS_X_POS_SEG)[`-- v1:real^3`;`v2-v1:real^3`;`x1:real`;`x2:real`;`x5:real`][COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3`;NORM_NEG]
6396 THEN ABBREV_TAC`e2=(min (min e1 e)e')/ &2`
6397 THEN MP_TAC(REAL_ARITH`e2=(min (min e1 e)e' )/ &2/\ &0< e1/\ &0< e /\ &0< e'
6398 ==> &0< e2/\ e2< e1/\ e2<e`)
6399 THEN RESA_TAC
6400 THEN EXISTS_TAC`e2:real`
6401 THEN ASM_REWRITE_TAC[]
6402 THEN REPEAT STRIP_TAC
6403 THEN MP_TAC(REAL_ARITH`e2=(min (min e1 e)e')/ &2/\ &0< e1/\ &0< e/\  &0< e'
6404 /\ t<e2/\ &0<t
6405 ==> t< e1/\ t<e/\ t<e'`)
6406 THEN RESA_TAC
6407 THEN MP_TAC CARD_FF_EQ_V3_DEFOR_DEFORMATION_MK
6408 THEN RESA_TAC
6409 THEN POP_ASSUM(fun th->MRESA1_TAC th`t:real`)
6410 THEN MP_TAC DSV_V3_DEFOR_EQ_MK
6411 THEN RESA_TAC
6412 THEN MATCH_MP_TAC(REAL_ARITH`a=b==> a-c= b-c`)
6413 THEN MATCH_MP_TAC(REAL_ARITH`a=b==> a-c= b-c`)
6414 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`]
6415 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th]);
6416
6417 THAYTHE_TAC (60-18)[`t:real`]
6418 THEN MRESA_TAC(GEN_ALL Qknvmlb.SUM_AZIM_EQ_ANGLE_LE4)[`IMAGE  (\i. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 ((w:num->real^3) i) t) (:num)`;` (\i. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 ((w:num->real^3) i) t)`;`l:num`;`s:scs_v39`;` (\i. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 ((w:num->real^3) i) t) (l MOD scs_k_v39 s)`;`IMAGE (\i.  v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 ((w:num->real^3) i) t, v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (SUC i)) t) (:num)`;`IMAGE (\i. {  v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w i) t,  v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 ((w:num->real^3) (SUC i)) t}) (:num)`]
6419 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th]);
6420
6421 MATCH_MP_TAC SUM_EQ
6422 THEN REWRITE_TAC[IN_ELIM_THM;F_DEFORMATION_V3_DEFOR_V5]
6423 THEN REPEAT STRIP_TAC
6424 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e/\ &0<t ==> --e<t`)
6425 THEN RESA_TAC;
6426
6427 THAYTHEL_TAC (62-42)[`t:real`;`x:num`][F_DEFORMATION_V3_DEFOR_V5;ITER]
6428 THEN POP_ASSUM MP_TAC
6429 THEN ASM_REWRITE_TAC[v3_defor_v5; F_DEFORMATION_V3_DEFOR_V5]
6430 THEN RESA_TAC
6431 THEN REWRITE_TAC[GSYM v3_defor_v5]
6432 THEN REWRITE_TAC[REAL_EQ_MUL_RCANCEL]
6433 THEN MATCH_MP_TAC (SET_RULE`A==> A\/ B`)
6434 THEN ASM_TAC
6435 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]
6436 THEN REPEAT RESA_TAC
6437 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6438 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6439 THEN MATCH_MP_TAC(SET_RULE`x=y==> rho_fun x= rho_fun y`)
6440 THEN REWRITE_TAC[v3_defor_v5;v3_defor_v4;VECTOR_ARITH`a-b=c-b<=>a=c:real^3`]
6441 THEN MP_TAC(SET_RULE`(w:num->real^3) (x + l MOD k) = v2 \/ ~(w (x + l MOD k) = v2)`)
6442 THEN RESA_TAC;
6443
6444 ASM_REWRITE_TAC[NORM_EQ_SQUARE;NORM_POS_LE;DOT_SQUARE_NORM]
6445 THEN MP_TAC(REAL_ARITH`&0< t/\ t< e'==> --e'<t`)
6446 THEN RESA_TAC
6447 THEN THAYTHE_TAC (92-70)[`t:real`]
6448 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`-- &1`;`x5:real`;`x2:real`;`x1:real`;`x5-t:real`;`v2-v1:real^3`;`v3_defor_v1 (-- &1) (-- v1) (v2-v1:real^3) x1 x5 x2 x2 (x5 - t)`;`-- v1:real^3`;`x2:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1;COLLINEAR_EQ_SUB_NEG;VECTOR_ARITH`--a-(b-a)= -- b:real^3/\ a- -- b=a+b`;NORM_NEG];
6449
6450 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
6451
6452
6453
6454
6455
6456
6457 let NUXCOEA_concl = `!s k w l j.
6458   scs_k_v39 s=k /\
6459   3 < k /\
6460   is_scs_v39 s /\
6461   MMs_v39 s w /\
6462   azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1))  ) = pi /\
6463 ~collinear {vec 0, w (SUC l), w (l + scs_k_v39 s - 1)} /\
6464       w l IN aff_gt {vec 0} {w (SUC l), w (l + scs_k_v39 s - 1)} /\
6465   (j MOD k = SUC l MOD k \/ SUC j MOD k = l MOD k) /\
6466   (scs_a_v39 s j l = dist(w j,w l)) /\ 
6467 (dist(w j,w l)<scs_b_v39 s j l ) /\ 
6468   (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
6469   (!i. scs_diag k l i ==> scs_a_v39 s l i < dist(w l,w i)) /\
6470   (!i. ~(scs_J_v39 s l i)) /\
6471   (!V E v.
6472      V = IMAGE w (:num) /\
6473       E = IMAGE (\i. {w i, w (SUC i)}) (:num) ==>
6474       ~(lunar (v,(w l)) V E )) ==> 
6475   (scs_a_v39 s l (SUC l) = dist (w l, w (SUC l)) /\
6476   (scs_a_v39 s l (l + (k-1)) = dist (w l, w (l + (k-1)))))`;;
6477
6478
6479
6480
6481
6482
6483 let NUXCOEA=prove_by_refinement( (mk_imp(ZLZTHIC_concl, mk_imp (MHAEYJN_concl, NUXCOEA_concl))),
6484 [
6485
6486 REPEAT DISCH_TAC
6487 THEN REPEAT GEN_TAC
6488 THEN STRIP_TAC
6489 THEN POP_ASSUM MP_TAC
6490 THEN MP_TAC IMJXPHR
6491 THEN RESA_TAC
6492 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`])
6493 THEN POP_ASSUM MP_TAC
6494 THEN MP_TAC NORM_LE_2_IN_MMS
6495 THEN RESA_TAC
6496 THEN MP_TAC(REAL_ARITH`&2 <= norm ((w:num->real^3) l) ==> ~(&2 = norm (w l)) \/ &2= norm (w l) `)
6497 THEN RESA_TAC
6498 THEN ASM_TAC
6499 THEN REPLICATE_TAC (16) (RESA_TAC)
6500 THEN REPLICATE_TAC (15-10)(POP_ASSUM MP_TAC)
6501 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6502 THEN REPLICATE_TAC (1)(POP_ASSUM MP_TAC)
6503 THEN MP_TAC th)
6504 ;
6505
6506 MP_TAC MMS_IMP_BBS
6507 THEN RESA_TAC
6508 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`j:num`;`w:num->real^3`;`SUC l`]
6509 THEN MRESA_TAC( GEN_ALL CHANGE_A_SCS_MODL)[`j:num`;`s:scs_v39`;`SUC l:num`;`l:num`]
6510 THEN ASM_REWRITE_TAC[]
6511 THEN REPLICATE_TAC (18-4)(POP_ASSUM MP_TAC)
6512 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6513 THEN POP_ASSUM MP_TAC
6514 THEN POP_ASSUM MP_TAC
6515 THEN MP_TAC th
6516 THEN ASM_REWRITE_TAC[is_scs_v39;periodic2]
6517 THEN ASSUME_TAC th
6518 THEN RESA_TAC)
6519 THEN STRIP_TAC
6520 THEN ONCE_REWRITE_TAC[DIST_SYM]
6521 THEN ASM_REWRITE_TAC[]
6522 THEN ONCE_REWRITE_TAC[DIST_SYM]
6523 ;
6524
6525
6526 REPLICATE_TAC (39-4)(POP_ASSUM MP_TAC)
6527 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6528 THEN POP_ASSUM MP_TAC
6529 THEN MP_TAC th
6530 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6531 THEN ASSUME_TAC th
6532 THEN STRIP_TAC)
6533 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
6534 THEN RESA_TAC
6535 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
6536 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
6537 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
6538 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
6539 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
6540 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
6541
6542
6543
6544 REPLICATE_TAC (59-14)(POP_ASSUM MP_TAC)
6545 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6546 THEN MP_TAC th
6547 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6548 THEN REPEAT RESA_TAC)
6549 ;
6550
6551
6552 MP_TAC WL_IN_BALL_ANNULUS
6553 THEN RESA_TAC
6554 THEN MRESA_TAC(GEN_ALL WL_IN_BALL_ANNULUS)[`s:scs_v39`;`w:num->real^3`;`SUC l`]
6555 THEN MRESA_TAC(GEN_ALL WL_IN_BALL_ANNULUS)[`s:scs_v39`;`w:num->real^3`;`l+k-1`]
6556 THEN MP_TAC WL_IN_V
6557 THEN RESA_TAC
6558 THEN MRESA_TAC(GEN_ALL WL_IN_V)[`SUC l`;`w:num->real^3`]
6559 THEN MRESA_TAC(GEN_ALL WL_IN_V)[`l+k-1`;`w:num->real^3`]
6560 THEN MP_TAC WL_IN_FF
6561 THEN RESA_TAC
6562 THEN MP_TAC EXPAND_PERIODIC
6563 THEN RESA_TAC
6564 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
6565 ;
6566
6567
6568
6569
6570 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))`)
6571 THEN RESA_TAC;
6572
6573
6574 SUBGOAL_THEN(`!i. ~(l MOD k = i MOD k) /\
6575           ~(SUC l MOD k = i MOD k)
6576           ==> scs_a_v39 s l i < dist ((w:num->real^3) l,(w:num->real^3) i)`)ASSUME_TAC;
6577
6578
6579
6580 GEN_TAC
6581 THEN MP_TAC(SET_RULE`(l MOD k = SUC i MOD k)\/ ~(l MOD k = SUC i MOD k)`)
6582 THEN RESA_TAC;
6583
6584
6585 MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
6586 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
6587 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_LE3)[`s:scs_v39`;`i:num`;`w:num->real^3`;`l+k-1:num`]
6588 THEN MRESA_TAC( GEN_ALL CHANGE_A_SCS_MODL)[`i:num`;`s:scs_v39`;`l+k-1:num`;`l:num`];
6589
6590
6591
6592 REPLICATE_TAC (71-10)(POP_ASSUM MP_TAC)
6593 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6594 THEN MRESAL_TAC th[`i:num`][scs_diag]);
6595
6596
6597
6598 ABBREV_TAC`v2= (w:num->real^3) l`
6599 THEN ABBREV_TAC`v3= (w:num->real^3) (SUC l)`
6600 THEN ABBREV_TAC`v1= (w:num->real^3) (l+k-1)`
6601 THEN ABBREV_TAC`x1=norm (v1:real^3) pow 2`
6602 THEN ABBREV_TAC`x2=norm (v2:real^3) pow 2`
6603 THEN ABBREV_TAC`x3=norm (v3:real^3) pow 2`
6604 THEN ABBREV_TAC`x5=norm (v2-v1:real^3) pow 2`
6605 THEN ABBREV_TAC`x6=norm (v2-v3:real^3) pow 2`
6606 THEN ABBREV_TAC`a= -- &1`
6607 ;
6608
6609
6610 MP_TAC Local_lemmas.CVLF_LF_F
6611 THEN RESA_TAC
6612 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`]
6613 THEN MRESA_TAC(GEN_ALL NORM_POS_COLLINEAR)[`v2:real^3`;`v1:real^3`;`x2:real`;`x1:real`;`x5:real`]
6614 THEN POP_ASSUM MP_TAC
6615 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
6616 THEN RESA_TAC
6617 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,v3):real^3#real^3`]
6618 THEN POP_ASSUM MP_TAC
6619 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
6620 THEN STRIP_TAC
6621 THEN MRESA_TAC(GEN_ALL NORM_POS_COLLINEAR)[`v2:real^3`;`v3:real^3`;`x2:real`;`x3:real`;`x6:real`]
6622 THEN POP_ASSUM MP_TAC
6623 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
6624 THEN RESA_TAC
6625 THEN MP_TAC DEFORMATION_MK_DEFOR_IN_BALL_ANNULUS
6626 THEN RESA_TAC
6627 THEN POP_ASSUM MP_TAC
6628 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
6629 THEN RESA_TAC
6630 THEN MRESA_TAC DIST_SYM[`v3:real^3`;`v2:real^3`]
6631 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_AA_COM_MK
6632 THEN RESA_TAC
6633 THEN DICH_TAC (94-8)
6634 THEN RESA_TAC
6635 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_B_COM_MK
6636 THEN RESA_TAC
6637 THEN MP_TAC V3_DEFOR_CONVEX_LOCAL_FAN_MK
6638 THEN RESA_TAC
6639 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`;`j:num`])
6640 THEN POP_ASSUM MP_TAC
6641 THEN DICH_TAC (96-9)
6642 THEN RESA_TAC
6643 THEN MATCH_MP_TAC(SET_RULE`(B==> A==>C)==>((A==>B)==> A==>C)`)
6644 THEN STRIP_TAC
6645 THEN ABBREV_TAC`e1=((min (min (min e e') e'') e''')) / &2`
6646 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'''`)
6647 THEN RESA_TAC
6648 THEN SUBGOAL_THEN`!t. &0 < t /\ t < e1
6649 ==> BBs_v39 s (\i. (v3_defor_v4 a x1 x5 x2 (--v1) (v2-v1) ((w:num->real^3) i-v1) t)+v1 )` ASSUME_TAC
6650 ;
6651
6652
6653
6654
6655 REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6656 THEN REPEAT STRIP_TAC;
6657
6658
6659
6660 ASM_REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;]
6661 THEN REPEAT RESA_TAC
6662 THEN MP_TAC(SET_RULE`((w:num->real^3) x' -v1 =v2- v1)\/ ~(w x' -v1 = v2-v1)`)
6663 THEN RESA_TAC;
6664
6665
6666 MP_TAC(REAL_ARITH`t< e1/\ e1< e/\ &0<t==> t< e/\ --e<t`)
6667 THEN RESA_TAC
6668 ;
6669
6670 THAYTHE_TAC (111-89)[`t:real`];
6671
6672
6673 ASM_REWRITE_TAC[v3_defor_v4];
6674
6675 DICH_TAC(109-12)
6676 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;VECTOR_ARITH`A-B+B=A:real^3`]
6677 THEN REPEAT RESA_TAC
6678 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
6679 THEN EXISTS_TAC`V:real^3->bool`
6680 THEN ASM_REWRITE_TAC[]
6681 THEN EXPAND_TAC"V"
6682 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
6683 THEN EXISTS_TAC`x':num`
6684 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
6685
6686
6687 ASM_TAC
6688 THEN REPLICATE_TAC 5 (STRIP_TAC)
6689 THEN MP_TAC(ARITH_RULE`3< k==> ~(k<=3)`)
6690 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;periodic;ww_defor]
6691 THEN REPEAT RESA_TAC;
6692
6693
6694
6695
6696
6697
6698
6699 (****scs_a *****)
6700
6701 ASM_REWRITE_TAC[v3_defor_v4]
6702 THEN MP_TAC(SET_RULE`(w:num->real^3) i =w l \/ ~(w i = w l)`)
6703 THEN RESA_TAC
6704 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b=c-b<=> a=c:real^3`];
6705
6706
6707
6708 MP_TAC(SET_RULE`(w:num->real^3) j' =w l \/ ~(w j' = w l)`)
6709 THEN RESA_TAC
6710 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b=c-b<=> a=c:real^3`];
6711
6712
6713
6714 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
6715 THEN ASM_TAC
6716 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
6717 THEN REPEAT RESA_TAC
6718 THEN POP_ASSUM MP_TAC
6719 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6720 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
6721 THEN MRESAL1_TAC th`j':num`[ARITH_RULE`4 MOD 4=0`])
6722 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
6723 THEN MRESA_TAC DIVISION[`j':num`;`k:num`]
6724 THEN STRIP_TAC
6725 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i MOD k`;`j' MOD k`])
6726 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j'`][ARITH_RULE`~(4=0)`;periodic]
6727 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
6728 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
6729 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j':num`[ARITH_RULE`4 MOD 4=0`])
6730 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE]);
6731
6732
6733 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
6734 THEN ASM_TAC
6735 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
6736 THEN REPEAT RESA_TAC
6737 THEN POP_ASSUM MP_TAC
6738 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6739 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
6740 THEN MRESAL1_TAC th`j':num`[ARITH_RULE`4 MOD 4=0`]
6741 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6742 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
6743 THEN MRESA_TAC DIVISION[`j':num`;`k:num`]
6744 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
6745 THEN STRIP_TAC
6746 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i MOD k`;`l MOD k`])
6747 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j'`][ARITH_RULE`~(4=0)`;periodic]
6748 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
6749 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
6750 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)`)
6751 THEN RESA_TAC
6752 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
6753 THEN RESA_TAC;
6754
6755
6756
6757
6758 THAYTHEL_TAC (121-93) [`t:real`;`j':num`][DIST_REFL]
6759 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j'`][ARITH_RULE`~(4=0)`;periodic]
6760 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`;VECTOR_ARITH`a-b+b=a:real^3`])
6761 THEN DICH_TAC 1
6762 THEN REAL_ARITH_TAC
6763 ;
6764
6765
6766
6767
6768 MP_TAC(SET_RULE`(w:num->real^3) j' =w l \/ ~(w j' = w l)`)
6769 THEN RESA_TAC;
6770
6771
6772
6773
6774 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
6775 THEN ASM_TAC
6776 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
6777 THEN REPEAT RESA_TAC
6778 THEN POP_ASSUM MP_TAC
6779 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6780 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
6781 THEN MRESAL1_TAC th`j':num`[ARITH_RULE`4 MOD 4=0`]
6782 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6783 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
6784 THEN MRESA_TAC DIVISION[`j':num`;`k:num`]
6785 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
6786 THEN STRIP_TAC
6787 THEN POP_ASSUM (fun th-> MRESA_TAC th[`j' MOD k`;`l MOD k`])
6788 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s i`][ARITH_RULE`~(4=0)`;periodic]
6789 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j':num`[ARITH_RULE`4 MOD 4=0`])
6790 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
6791 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)`)
6792 THEN RESA_TAC
6793 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
6794 THEN RESA_TAC;
6795
6796
6797
6798
6799 THAYTHEL_TAC (121-93) [`t:real`;`i:num`][]
6800 THEN ONCE_REWRITE_TAC[DIST_SYM]
6801 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s i`][ARITH_RULE`~(4=0)`;periodic]
6802 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`;VECTOR_ARITH`a-b+b=a:real^3`])
6803 THEN DICH_TAC 1
6804 THEN REAL_ARITH_TAC
6805 ;
6806
6807
6808 ASM_TAC
6809 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;VECTOR_ARITH`a-b+b=a:real^3`]
6810 THEN REPEAT RESA_TAC;
6811
6812
6813
6814 (**************scs_b_v39************)
6815
6816
6817 ASM_REWRITE_TAC[v3_defor_v4]
6818 THEN MP_TAC(SET_RULE`(w:num->real^3) i =w l \/ ~(w i = w l)`)
6819 THEN RESA_TAC
6820 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b=c-b<=> a=c:real^3`];
6821
6822
6823
6824 MP_TAC(SET_RULE`(w:num->real^3) j' =w l \/ ~(w j' = w l)`)
6825 THEN RESA_TAC
6826 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b=c-b<=> a=c:real^3`];
6827
6828
6829
6830 REWRITE_TAC[DIST_REFL]
6831 THEN ASM_TAC
6832 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
6833 THEN REPEAT RESA_TAC;
6834
6835
6836 THAYTHEL_TAC (109-14) [`i:num`;`j':num`][DIST_REFL];
6837
6838
6839
6840 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
6841 THEN ASM_TAC
6842 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
6843 THEN REPEAT RESA_TAC
6844 THEN POP_ASSUM MP_TAC
6845 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6846 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
6847 THEN MRESAL1_TAC th`j':num`[ARITH_RULE`4 MOD 4=0`]
6848 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6849 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
6850 THEN MRESA_TAC DIVISION[`j':num`;`k:num`]
6851 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
6852 THEN STRIP_TAC
6853 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i MOD k`;`l MOD k`])
6854 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s j'`][ARITH_RULE`~(4=0)`;periodic]
6855 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
6856 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
6857 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)`)
6858 THEN RESA_TAC
6859 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''==> t< e''`)
6860 THEN RESA_TAC;
6861
6862
6863
6864
6865 THAYTHEL_TAC (121-96) [`t:real`;`j':num`][DIST_REFL]
6866 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s j'`][ARITH_RULE`~(4=0)`;periodic]
6867 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`;VECTOR_ARITH`a-b+b=a:real^3`])
6868 THEN DICH_TAC 1
6869 THEN REAL_ARITH_TAC
6870 ;
6871
6872
6873
6874
6875 MP_TAC(SET_RULE`(w:num->real^3) j' =w l \/ ~(w j' = w l)`)
6876 THEN RESA_TAC;
6877
6878
6879
6880
6881 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
6882 THEN ASM_TAC
6883 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
6884 THEN REPEAT RESA_TAC
6885 THEN POP_ASSUM MP_TAC
6886 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6887 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
6888 THEN MRESAL1_TAC th`j':num`[ARITH_RULE`4 MOD 4=0`]
6889 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6890 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
6891 THEN MRESA_TAC DIVISION[`j':num`;`k:num`]
6892 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
6893 THEN STRIP_TAC
6894 THEN POP_ASSUM (fun th-> MRESA_TAC th[`j' MOD k`;`l MOD k`])
6895 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s i`][ARITH_RULE`~(4=0)`;periodic]
6896 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j':num`[ARITH_RULE`4 MOD 4=0`])
6897 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
6898 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)`)
6899 THEN RESA_TAC
6900 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''==> t< e''`)
6901 THEN RESA_TAC;
6902
6903
6904
6905
6906 THAYTHEL_TAC (121-96) [`t:real`;`i:num`][]
6907 THEN ONCE_REWRITE_TAC[DIST_SYM]
6908 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s i`][ARITH_RULE`~(4=0)`;periodic]
6909 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`;VECTOR_ARITH`a-b+b=a:real^3`])
6910 THEN DICH_TAC 1
6911 THEN REAL_ARITH_TAC
6912 ;
6913
6914
6915 ASM_TAC
6916 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;VECTOR_ARITH`a-b+b=a:real^3`]
6917 THEN REPEAT RESA_TAC;
6918
6919
6920
6921
6922 (*************convex_local_fan**************)
6923
6924
6925
6926 ASM_REWRITE_TAC[]
6927 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'''/\ &0< t/\ &0< e'''==> t< e'''/\ --e'''< t`)
6928 THEN RESA_TAC
6929 THEN THAYTHE_TAC (108-98)[`t:real`;]
6930 ;
6931
6932
6933
6934 POP_ASSUM MP_TAC
6935 THEN REWRITE_TAC[GSYM v3_defor_v5]
6936 THEN STRIP_TAC
6937 THEN MP_TAC TAUSTAR_V3_DEFOR_MK
6938 THEN RESA_TAC
6939 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`])
6940 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK1
6941 THEN RESA_TAC
6942 THEN ABBREV_TAC`e3=e''''':real`;
6943
6944
6945 ABBREV_TAC`e2= (min (min (min e1 e'''')e') e3)/ &2`
6946 THEN MP_TAC(REAL_ARITH`e2=(min (min (min e1 e'''')e') e3)/ &2 /\ &0< e1/\ &0< e''''
6947 /\ &0< e' /\ &0< e3
6948 ==> &0< e2/\ e2< e1/\ e2< e''''/\ e2< e'/\ e2< e3`)
6949 THEN RESA_TAC
6950 THEN SUBGOAL_THEN`!t. &0 < t /\ t < e2
6951           ==> BBprime_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t)`ASSUME_TAC
6952 ;
6953
6954
6955 REPEAT RESA_TAC
6956 THEN REWRITE_TAC[LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6957 THEN MP_TAC(REAL_ARITH`e2=(min (min (min e1 e'''')e') e3)/ &2 /\ &0< e1/\ &0< e''''
6958 /\ &0< e' /\ &0< e3
6959 /\ &0<t/\ t<e2
6960 ==> t< e1/\ t< e''''`)
6961 THEN RESA_TAC
6962 THEN THAYTHE_TAC (120-105)[`t:real`]
6963 THEN THAYTHE_TAC (120-106)[`t:real`];
6964
6965
6966
6967
6968
6969 SUBGOAL_THEN`!t. &0 < t /\ t < e2
6970           ==> BBindex_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t)< BBindex_v39 s w`ASSUME_TAC
6971 ;
6972
6973
6974
6975 REWRITE_TAC[BBindex_v39]
6976 THEN REPEAT RESA_TAC
6977 THEN MATCH_MP_TAC CARD_PSUBSET
6978 THEN STRIP_TAC;
6979
6980
6981 REWRITE_TAC[PSUBSET_ALT]
6982 THEN STRIP_TAC;
6983
6984
6985
6986 REWRITE_TAC[v3_defor_v5;v3_defor_v4;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`;SUBSET;IN_ELIM_THM]
6987 THEN REPEAT RESA_TAC
6988 THEN POP_ASSUM MP_TAC
6989 THEN MP_TAC(SET_RULE`(w:num->real^3) x=v2 \/ ~(w x= v2)`)
6990 THEN RESA_TAC;
6991
6992
6993 MRESA_TAC (GEN_ALL W_IN_BB_FUN_EQ)[`w:num->real^3`;`x:num`;`l:num`;`s:scs_v39`]
6994 THEN MP_TAC(SET_RULE`(w:num->real^3) (SUC x)=v2 \/ ~(w (SUC x)= v2)`)
6995 THEN RESA_TAC;
6996
6997
6998
6999 REWRITE_TAC[DIST_REFL];
7000
7001
7002 MRESA_TAC (GEN_ALL Zithlqn.IMP_SUC_MOD_EQ)[`x:num`;`l:num`;`k:num`]
7003 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`SUC x:num`;`w:num->real^3`;`SUC l`]
7004 THEN MRESA_TAC( GEN_ALL CHANGE_A_SCS_MOD)[`x:num`;`SUC x:num`;`s:scs_v39`;`l:num`;`SUC l:num`] 
7005 THEN RESA_TAC
7006 ;
7007
7008
7009 MP_TAC(SET_RULE`(w:num->real^3) (SUC x)=v2 \/ ~(w (SUC x)= v2)`)
7010 THEN RESA_TAC;
7011
7012
7013 MRESA_TAC (GEN_ALL W_IN_BB_FUN_EQ)[`w:num->real^3`;`SUC x:num`;`l:num`;`s:scs_v39`]
7014 THEN MRESA_TAC (GEN_ALL EQ_SUC_K_SUB)[`l:num`;`x:num`;`k:num`]
7015 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`x:num`;`w:num->real^3`;`l+k-1`]
7016 THEN MRESA_TAC( GEN_ALL CHANGE_A_SCS_MOD)[`x:num`;`SUC x:num`;`s:scs_v39`;`l+k-1:num`;`l:num`] 
7017 THEN MP_TAC(REAL_ARITH`e2=(min (min (min e1 e'''')e') e3)/ &2 /\ &0< e1/\ &0< e''''
7018 /\ &0< e' /\ &0< e3
7019 /\ &0<t/\ t<e2
7020 ==> t< e'`)
7021 THEN RESA_TAC
7022 THEN MP_TAC Imjxphr.MOD_ADD_SUB_1
7023 THEN RESA_TAC
7024 THEN THAYTHEL_TAC (128-92)[`t:real`;`l+k-1`][VECTOR_ARITH`a-b+b=a:real^3`]
7025 THEN ONCE_REWRITE_TAC[DIST_SYM]
7026 THEN POP_ASSUM MP_TAC
7027 THEN REAL_ARITH_TAC
7028 ;
7029
7030
7031 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
7032 ;
7033
7034 EXISTS_TAC`l MOD k`
7035 THEN ASM_REWRITE_TAC[IN_ELIM_THM]
7036 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
7037 THEN MRESA_TAC MOD_LT[`l MOD k`;`k:num`]
7038 THEN MRESA_TAC MOD_REFL[`SUC l`;`k:num`]
7039 THEN MRESA_TAC Hypermap.lemma_suc_mod[`l:num`;`k:num`]
7040 THEN MRESAL_TAC( GEN_ALL CHANGE_A_SCS_MOD)[`l MOD k:num`;`SUC(l MOD k):num`;`s:scs_v39`;`l:num`;`SUC (l MOD k) MOD k:num`][MOD_REFL] 
7041 THEN MRESAL_TAC( GEN_ALL CHANGE_A_SCS_MOD)[`l:num`;`SUC l MOD k:num`;`s:scs_v39`;`l:num`;`SUC l:num`][MOD_REFL] 
7042 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`l MOD k :num`;`w:num->real^3`;`l:num`]
7043 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`SUC(l MOD k) :num`;`w:num->real^3`;`SUC(l MOD k) MOD k:num`]
7044 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`SUC l MOD k :num`;`w:num->real^3`;`SUC l :num`]
7045 THEN REWRITE_TAC[v3_defor_v5;v3_defor_v4;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
7046 THEN MRESAL_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,v3):real^3#real^3`][VECTOR_ARITH`a-b+b=a:real^3`]
7047 THEN MP_TAC(REAL_ARITH`e2=(min (min (min e1 e'''')e') e3)/ &2 /\ &0< e1/\ &0< e''''
7048 /\ &0< e' /\ &0< e3
7049 /\ &0<t/\ t<e2
7050 ==> t< e3`)
7051 THEN RESA_TAC
7052 THEN THAYTHE_TAC (131-109)[`t:real`]
7053 THEN POP_ASSUM MP_TAC
7054 THEN REAL_ARITH_TAC;
7055
7056
7057 MATCH_MP_TAC FINITE_SUBSET
7058 THEN EXISTS_TAC`0..k`
7059 THEN ASM_REWRITE_TAC[FINITE_NUMSEG;SUBSET;IN_ELIM_THM;IN_NUMSEG]
7060 THEN ARITH_TAC;
7061
7062
7063 STRIP_TAC
7064 THEN REMOVE_ASSUM_TAC
7065 THEN DICH_TAC (118-40)
7066 THEN STRIP_TAC
7067 THEN SUBGOAL_THEN`BBindex_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) (e2 / &3)) IN
7068       IMAGE (BBindex_v39 s) (BBprime_v39 s)`ASSUME_TAC
7069 ;
7070
7071 REWRITE_TAC[IMAGE;IN_ELIM_THM;]
7072 THEN EXISTS_TAC`(\i. v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) (e2 / &3))`
7073 THEN ASM_REWRITE_TAC[IN]
7074 THEN MATCH_DICH_TAC 2
7075 THEN DICH_TAC (117-111)
7076 THEN REAL_ARITH_TAC;
7077
7078
7079 MRESAL_TAC MIN_LEAST[`(IMAGE (BBindex_v39 s) (BBprime_v39 s))`;`BBindex_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) (e2/ &3))`][GSYM BBindex_min_v39]
7080 THEN MP_TAC(REAL_ARITH`&0< e2==> &0 < e2 / &3 /\ e2 / &3 < e2`)
7081 THEN RESA_TAC
7082 THEN THAYTHE_TAC (123-117)[`e2/ &3`]
7083 THEN POP_ASSUM MP_TAC
7084 THEN DICH_TAC 2
7085 THEN ARITH_TAC;
7086
7087
7088
7089
7090 ASM_TAC
7091 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7092 THEN REPEAT RESA_TAC
7093 THEN REMOVE_ASSUM_TAC
7094 THEN THAYTHE_TAC  (71-16)[`l:num`;`l+k-1`]
7095 THEN REMOVE_ASSUM_TAC
7096 THEN POP_ASSUM MP_TAC
7097 THEN POP_ASSUM MP_TAC
7098 THEN REAL_ARITH_TAC;
7099
7100 (*************************************)
7101
7102 (*************TWO_CASES***************)
7103
7104 (*************************************)
7105
7106 MP_TAC MMS_IMP_BBS
7107 THEN RESA_TAC
7108 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`j:num`;`w:num->real^3`;`SUC l`]
7109 THEN MRESA_TAC( GEN_ALL CHANGE_A_SCS_MODL)[`j:num`;`s:scs_v39`;`SUC l:num`;`l:num`]
7110 THEN ASM_REWRITE_TAC[]
7111 THEN REPLICATE_TAC (18-4)(POP_ASSUM MP_TAC)
7112 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7113 THEN POP_ASSUM MP_TAC
7114 THEN POP_ASSUM MP_TAC
7115 THEN MP_TAC th
7116 THEN ASM_REWRITE_TAC[is_scs_v39;periodic2]
7117 THEN ASSUME_TAC th
7118 THEN RESA_TAC)
7119 THEN STRIP_TAC
7120 THEN ONCE_REWRITE_TAC[DIST_SYM]
7121 THEN ASM_REWRITE_TAC[]
7122 THEN ONCE_REWRITE_TAC[DIST_SYM]
7123 ;
7124
7125
7126 REPLICATE_TAC (39-4)(POP_ASSUM MP_TAC)
7127 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7128 THEN POP_ASSUM MP_TAC
7129 THEN MP_TAC th
7130 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
7131 THEN ASSUME_TAC th
7132 THEN STRIP_TAC)
7133 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ SUC(l+k-1)= l+k /\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
7134 THEN RESA_TAC
7135 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
7136 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
7137 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
7138 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
7139 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
7140 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
7141
7142
7143
7144 REPLICATE_TAC (59-14)(POP_ASSUM MP_TAC)
7145 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7146 THEN MP_TAC th
7147 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
7148 THEN REPEAT RESA_TAC)
7149 ;
7150
7151
7152 MP_TAC WL_IN_BALL_ANNULUS
7153 THEN RESA_TAC
7154 THEN MRESA_TAC(GEN_ALL WL_IN_BALL_ANNULUS)[`s:scs_v39`;`w:num->real^3`;`SUC l`]
7155 THEN MRESA_TAC(GEN_ALL WL_IN_BALL_ANNULUS)[`s:scs_v39`;`w:num->real^3`;`l+k-1`]
7156 THEN MP_TAC WL_IN_V
7157 THEN RESA_TAC
7158 THEN MRESA_TAC(GEN_ALL WL_IN_V)[`SUC l`;`w:num->real^3`]
7159 THEN MRESA_TAC(GEN_ALL WL_IN_V)[`l+k-1`;`w:num->real^3`]
7160 THEN MP_TAC WL_IN_FF
7161 THEN RESA_TAC
7162 THEN MP_TAC EXPAND_PERIODIC
7163 THEN RESA_TAC
7164 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
7165 ;
7166
7167
7168
7169
7170 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 ))`)
7171 THEN RESA_TAC;
7172
7173
7174 SUBGOAL_THEN(`!i. ~(l MOD k = i MOD k) /\
7175           ~(l MOD k = SUC i MOD k)
7176           ==> scs_a_v39 s l i < dist ((w:num->real^3) l,(w:num->real^3) i)`)ASSUME_TAC;
7177
7178
7179
7180 GEN_TAC
7181 THEN MP_TAC(SET_RULE`(SUC l MOD k = i MOD k)\/ ~(SUC l MOD k = i MOD k)`)
7182 THEN RESA_TAC;
7183
7184
7185 MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_LE3)[`s:scs_v39`;`i:num`;`w:num->real^3`;`SUC l:num`]
7186 THEN MRESA_TAC( GEN_ALL CHANGE_A_SCS_MODL)[`i:num`;`s:scs_v39`;`SUC l:num`;`l:num`];
7187
7188
7189
7190 REPLICATE_TAC (71-10)(POP_ASSUM MP_TAC)
7191 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7192 THEN MRESAL_TAC th[`i:num`][scs_diag]);
7193
7194
7195
7196 ABBREV_TAC`v2= (w:num->real^3) l`
7197 THEN ABBREV_TAC`v1= (w:num->real^3) (SUC l)`
7198 THEN ABBREV_TAC`v3= (w:num->real^3) (l+k-1)`
7199 THEN ABBREV_TAC`x1=norm (v1:real^3) pow 2`
7200 THEN ABBREV_TAC`x2=norm (v2:real^3) pow 2`
7201 THEN ABBREV_TAC`x3=norm (v3:real^3) pow 2`
7202 THEN ABBREV_TAC`x5=norm (v2-v1:real^3) pow 2`
7203 THEN ABBREV_TAC`x6=norm (v2-v3:real^3) pow 2`
7204 THEN ABBREV_TAC`a= -- &1`
7205 ;
7206
7207
7208 MP_TAC Local_lemmas.CVLF_LF_F
7209 THEN RESA_TAC
7210 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`]
7211 THEN POP_ASSUM MP_TAC
7212 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
7213 THEN RESA_TAC
7214 THEN MRESA_TAC(GEN_ALL NORM_POS_COLLINEAR)[`v2:real^3`;`v1:real^3`;`x2:real`;`x1:real`;`x5:real`]
7215 THEN POP_ASSUM MP_TAC
7216 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
7217 THEN RESA_TAC
7218 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`;`(v3,v2):real^3#real^3`]
7219 THEN MRESA_TAC(GEN_ALL NORM_POS_COLLINEAR)[`v2:real^3`;`v3:real^3`;`x2:real`;`x3:real`;`x6:real`]
7220 THEN POP_ASSUM MP_TAC
7221 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
7222 THEN RESA_TAC
7223 THEN MP_TAC DEFORMATION_MK_DEFOR_IN_BALL_ANNULUS
7224 THEN RESA_TAC
7225 THEN POP_ASSUM MP_TAC
7226 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
7227 THEN RESA_TAC
7228 THEN MRESA_TAC DIST_SYM[`(w:num->real^3)j`;`v2:real^3`]
7229 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_AA_COM_MK_TWO_CASES
7230 THEN RESA_TAC
7231 THEN DICH_TAC (94-8)
7232 THEN RESA_TAC
7233 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_B_COM_MK_TWO_CASES
7234 THEN RESA_TAC
7235 THEN MP_TAC V3_DEFOR_CONVEX_LOCAL_FAN_MK_TWO_CASES
7236 THEN RESA_TAC
7237 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`;`j:num`])
7238 THEN POP_ASSUM MP_TAC
7239 THEN DICH_TAC (96-9)
7240 THEN RESA_TAC
7241 THEN MATCH_MP_TAC(SET_RULE`(B==> A==>C)==>((A==>B)==> A==>C)`)
7242 THEN STRIP_TAC
7243 THEN ABBREV_TAC`e1=((min (min (min e e') e'') e''')) / &2`
7244 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'''`)
7245 THEN RESA_TAC
7246 THEN SUBGOAL_THEN`!t. &0 < t /\ t < e1
7247 ==> BBs_v39 s (\i. (v3_defor_v4 a x1 x5 x2 (--v1) (v2-v1) ((w:num->real^3) i-v1) t)+v1 )` ASSUME_TAC
7248 ;
7249
7250
7251
7252
7253 REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
7254 THEN REPEAT STRIP_TAC;
7255
7256
7257
7258 ASM_REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;]
7259 THEN REPEAT RESA_TAC
7260 THEN MP_TAC(SET_RULE`((w:num->real^3) x' -v1 =v2- v1)\/ ~(w x' -v1 = v2-v1)`)
7261 THEN RESA_TAC;
7262
7263
7264 MP_TAC(REAL_ARITH`t< e1/\ e1< e/\ &0<t==> t< e/\ --e<t`)
7265 THEN RESA_TAC
7266 ;
7267
7268 THAYTHE_TAC (111-89)[`t:real`];
7269
7270
7271 ASM_REWRITE_TAC[v3_defor_v4];
7272
7273 DICH_TAC(109-12)
7274 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;VECTOR_ARITH`A-B+B=A:real^3`]
7275 THEN REPEAT RESA_TAC
7276 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
7277 THEN EXISTS_TAC`V:real^3->bool`
7278 THEN ASM_REWRITE_TAC[]
7279 THEN EXPAND_TAC"V"
7280 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
7281 THEN EXISTS_TAC`x':num`
7282 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
7283
7284
7285 ASM_TAC
7286 THEN REPLICATE_TAC 5 (STRIP_TAC)
7287 THEN MP_TAC(ARITH_RULE`3< k==> ~(k<=3)`)
7288 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;periodic;ww_defor]
7289 THEN REPEAT RESA_TAC;
7290
7291
7292
7293
7294
7295
7296
7297 (****scs_a *****)
7298
7299 ASM_REWRITE_TAC[v3_defor_v4]
7300 THEN MP_TAC(SET_RULE`(w:num->real^3) i =w l \/ ~(w i = w l)`)
7301 THEN RESA_TAC
7302 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b=c-b<=> a=c:real^3`];
7303
7304
7305
7306 MP_TAC(SET_RULE`(w:num->real^3) j' =w l \/ ~(w j' = w l)`)
7307 THEN RESA_TAC
7308 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b=c-b<=> a=c:real^3`];
7309
7310
7311
7312 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
7313 THEN ASM_TAC
7314 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7315 THEN REPEAT RESA_TAC
7316 THEN POP_ASSUM MP_TAC
7317 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7318 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
7319 THEN MRESAL1_TAC th`j':num`[ARITH_RULE`4 MOD 4=0`])
7320 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
7321 THEN MRESA_TAC DIVISION[`j':num`;`k:num`]
7322 THEN STRIP_TAC
7323 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i MOD k`;`j' MOD k`])
7324 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j'`][ARITH_RULE`~(4=0)`;periodic]
7325 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
7326 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
7327 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j':num`[ARITH_RULE`4 MOD 4=0`])
7328 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE]);
7329
7330
7331 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
7332 THEN ASM_TAC
7333 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7334 THEN REPEAT RESA_TAC
7335 THEN POP_ASSUM MP_TAC
7336 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7337 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
7338 THEN MRESAL1_TAC th`j':num`[ARITH_RULE`4 MOD 4=0`]
7339 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
7340 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
7341 THEN MRESA_TAC DIVISION[`j':num`;`k:num`]
7342 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
7343 THEN STRIP_TAC
7344 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i MOD k`;`l MOD k`])
7345 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j'`][ARITH_RULE`~(4=0)`;periodic]
7346 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
7347 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
7348 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)`)
7349 THEN RESA_TAC
7350 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
7351 THEN RESA_TAC;
7352
7353
7354
7355
7356 THAYTHEL_TAC (121-93) [`t:real`;`j':num`][DIST_REFL]
7357 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j'`][ARITH_RULE`~(4=0)`;periodic]
7358 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`;VECTOR_ARITH`a-b+b=a:real^3`])
7359 THEN DICH_TAC 1
7360 THEN REAL_ARITH_TAC
7361 ;
7362
7363
7364
7365
7366 MP_TAC(SET_RULE`(w:num->real^3) j' =w l \/ ~(w j' = w l)`)
7367 THEN RESA_TAC;
7368
7369
7370
7371
7372 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
7373 THEN ASM_TAC
7374 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7375 THEN REPEAT RESA_TAC
7376 THEN POP_ASSUM MP_TAC
7377 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7378 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
7379 THEN MRESAL1_TAC th`j':num`[ARITH_RULE`4 MOD 4=0`]
7380 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
7381 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
7382 THEN MRESA_TAC DIVISION[`j':num`;`k:num`]
7383 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
7384 THEN STRIP_TAC
7385 THEN POP_ASSUM (fun th-> MRESA_TAC th[`j' MOD k`;`l MOD k`])
7386 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s i`][ARITH_RULE`~(4=0)`;periodic]
7387 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j':num`[ARITH_RULE`4 MOD 4=0`])
7388 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
7389 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)`)
7390 THEN RESA_TAC
7391 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
7392 THEN RESA_TAC;
7393
7394
7395
7396
7397 THAYTHEL_TAC (121-93) [`t:real`;`i:num`][]
7398 THEN ONCE_REWRITE_TAC[DIST_SYM]
7399 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s i`][ARITH_RULE`~(4=0)`;periodic]
7400 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`;VECTOR_ARITH`a-b+b=a:real^3`])
7401 THEN DICH_TAC 1
7402 THEN REAL_ARITH_TAC
7403 ;
7404
7405
7406 ASM_TAC
7407 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;VECTOR_ARITH`a-b+b=a:real^3`]
7408 THEN REPEAT RESA_TAC;
7409
7410
7411
7412 (**************scs_b_v39************)
7413
7414
7415 ASM_REWRITE_TAC[v3_defor_v4]
7416 THEN MP_TAC(SET_RULE`(w:num->real^3) i =w l \/ ~(w i = w l)`)
7417 THEN RESA_TAC
7418 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b=c-b<=> a=c:real^3`];
7419
7420
7421
7422 MP_TAC(SET_RULE`(w:num->real^3) j' =w l \/ ~(w j' = w l)`)
7423 THEN RESA_TAC
7424 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b=c-b<=> a=c:real^3`];
7425
7426
7427
7428 REWRITE_TAC[DIST_REFL]
7429 THEN ASM_TAC
7430 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7431 THEN REPEAT RESA_TAC;
7432
7433
7434 THAYTHEL_TAC (109-14) [`i:num`;`j':num`][DIST_REFL];
7435
7436
7437
7438 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
7439 THEN ASM_TAC
7440 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7441 THEN REPEAT RESA_TAC
7442 THEN POP_ASSUM MP_TAC
7443 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7444 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
7445 THEN MRESAL1_TAC th`j':num`[ARITH_RULE`4 MOD 4=0`]
7446 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
7447 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
7448 THEN MRESA_TAC DIVISION[`j':num`;`k:num`]
7449 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
7450 THEN STRIP_TAC
7451 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i MOD k`;`l MOD k`])
7452 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s j'`][ARITH_RULE`~(4=0)`;periodic]
7453 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
7454 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
7455 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)`)
7456 THEN RESA_TAC
7457 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''==> t< e''`)
7458 THEN RESA_TAC;
7459
7460
7461
7462
7463 THAYTHEL_TAC (121-96) [`t:real`;`j':num`][DIST_REFL]
7464 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s j'`][ARITH_RULE`~(4=0)`;periodic]
7465 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`;VECTOR_ARITH`a-b+b=a:real^3`])
7466 THEN DICH_TAC 1
7467 THEN REAL_ARITH_TAC
7468 ;
7469
7470
7471
7472
7473 MP_TAC(SET_RULE`(w:num->real^3) j' =w l \/ ~(w j' = w l)`)
7474 THEN RESA_TAC;
7475
7476
7477
7478
7479 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
7480 THEN ASM_TAC
7481 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7482 THEN REPEAT RESA_TAC
7483 THEN POP_ASSUM MP_TAC
7484 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7485 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
7486 THEN MRESAL1_TAC th`j':num`[ARITH_RULE`4 MOD 4=0`]
7487 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
7488 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
7489 THEN MRESA_TAC DIVISION[`j':num`;`k:num`]
7490 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
7491 THEN STRIP_TAC
7492 THEN POP_ASSUM (fun th-> MRESA_TAC th[`j' MOD k`;`l MOD k`])
7493 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s i`][ARITH_RULE`~(4=0)`;periodic]
7494 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j':num`[ARITH_RULE`4 MOD 4=0`])
7495 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
7496 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)`)
7497 THEN RESA_TAC
7498 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''==> t< e''`)
7499 THEN RESA_TAC;
7500
7501
7502
7503
7504 THAYTHEL_TAC (121-96) [`t:real`;`i:num`][]
7505 THEN ONCE_REWRITE_TAC[DIST_SYM]
7506 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s i`][ARITH_RULE`~(4=0)`;periodic]
7507 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`;VECTOR_ARITH`a-b+b=a:real^3`])
7508 THEN DICH_TAC 1
7509 THEN REAL_ARITH_TAC
7510 ;
7511
7512
7513 ASM_TAC
7514 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;VECTOR_ARITH`a-b+b=a:real^3`]
7515 THEN REPEAT RESA_TAC;
7516
7517
7518
7519
7520 (*************convex_local_fan**************)
7521
7522
7523
7524 ASM_REWRITE_TAC[]
7525 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'''/\ &0< t/\ &0< e'''==> t< e'''/\ --e'''< t`)
7526 THEN RESA_TAC
7527 THEN THAYTHE_TAC (108-98)[`t:real`;]
7528 ;
7529
7530
7531
7532 POP_ASSUM MP_TAC
7533 THEN REWRITE_TAC[GSYM v3_defor_v5]
7534 THEN STRIP_TAC
7535 THEN MP_TAC TAUSTAR_V3_DEFOR_MK_TWO_CASES
7536 THEN RESA_TAC
7537 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`])
7538 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK1_TWO_CASES
7539 THEN RESA_TAC
7540 THEN ABBREV_TAC`e3=e''''':real`;
7541
7542
7543 ABBREV_TAC`e2= (min (min (min e1 e'''')e') e3)/ &2`
7544 THEN MP_TAC(REAL_ARITH`e2=(min (min (min e1 e'''')e') e3)/ &2 /\ &0< e1/\ &0< e''''
7545 /\ &0< e' /\ &0< e3
7546 ==> &0< e2/\ e2< e1/\ e2< e''''/\ e2< e'/\ e2< e3`)
7547 THEN RESA_TAC
7548 THEN SUBGOAL_THEN`!t. &0 < t /\ t < e2
7549           ==> BBprime_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t)`ASSUME_TAC
7550 ;
7551
7552
7553 REPEAT RESA_TAC
7554 THEN REWRITE_TAC[LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
7555 THEN MP_TAC(REAL_ARITH`e2=(min (min (min e1 e'''')e') e3)/ &2 /\ &0< e1/\ &0< e''''
7556 /\ &0< e' /\ &0< e3
7557 /\ &0<t/\ t<e2
7558 ==> t< e1/\ t< e''''`)
7559 THEN RESA_TAC
7560 THEN THAYTHE_TAC (120-105)[`t:real`]
7561 THEN THAYTHE_TAC (120-106)[`t:real`];
7562
7563
7564
7565
7566
7567 SUBGOAL_THEN`!t. &0 < t /\ t < e2
7568           ==> BBindex_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t)< BBindex_v39 s w`ASSUME_TAC
7569 ;
7570
7571
7572
7573 REWRITE_TAC[BBindex_v39]
7574 THEN REPEAT RESA_TAC
7575 THEN MATCH_MP_TAC CARD_PSUBSET
7576 THEN STRIP_TAC;
7577
7578
7579 REWRITE_TAC[PSUBSET_ALT]
7580 THEN STRIP_TAC;
7581
7582
7583
7584 REWRITE_TAC[v3_defor_v5;v3_defor_v4;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`;SUBSET;IN_ELIM_THM]
7585 THEN REPEAT RESA_TAC
7586 THEN POP_ASSUM MP_TAC
7587 THEN MP_TAC(SET_RULE`(w:num->real^3) x=v2 \/ ~(w x= v2)`)
7588 THEN RESA_TAC;
7589
7590
7591 MRESA_TAC (GEN_ALL W_IN_BB_FUN_EQ)[`w:num->real^3`;`x:num`;`l:num`;`s:scs_v39`]
7592 THEN MP_TAC(SET_RULE`(w:num->real^3) (SUC x)=v2 \/ ~(w (SUC x)= v2)`)
7593 THEN RESA_TAC;
7594
7595
7596
7597 REWRITE_TAC[DIST_REFL];
7598
7599
7600
7601
7602 MRESAL_TAC (GEN_ALL Zithlqn.IMP_SUC_MOD_EQ)[`l:num`;`x:num`;`k:num`][ARITH_RULE`1+i=SUC i`]
7603 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`SUC x:num`;`w:num->real^3`;`SUC l:num`]
7604 THEN MRESA_TAC( GEN_ALL CHANGE_A_SCS_MOD)[`x:num`;`SUC x:num`;`s:scs_v39`;`l:num`;`SUC l:num`] 
7605 THEN MP_TAC(REAL_ARITH`e2=(min (min (min e1 e'''')e') e3)/ &2 /\ &0< e1/\ &0< e''''
7606 /\ &0< e' /\ &0< e3
7607 /\ &0<t/\ t<e2
7608 ==> t< e'`)
7609 THEN RESA_TAC
7610 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
7611 THEN RESA_TAC
7612 THEN THAYTHE_TAC 0[`l:num`]
7613 THEN THAYTHEL_TAC (128-92)[`t:real`;`SUC l`][VECTOR_ARITH`a-b+b=a:real^3`]
7614 THEN POP_ASSUM MP_TAC
7615 THEN REAL_ARITH_TAC
7616 ;
7617
7618
7619 MP_TAC(SET_RULE`(w:num->real^3) (SUC x)=v2 \/ ~(w (SUC x)= v2)`)
7620 THEN RESA_TAC;
7621
7622
7623 MRESA_TAC(GEN_ALL W_IN_BB_FUN_EQ)[`w:num->real^3`;`SUC x`;`l:num`;`s:scs_v39`]
7624 THEN MRESA_TAC (GEN_ALL EQ_SUC_K_SUB3)[`l:num`;`x:num`;`k:num`]
7625 THEN MRESA_TAC (GEN_ALL EQ_SUC_K_SUB3)[`l:num`;`j:num`;`k:num`]
7626 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`x:num`;`w:num->real^3`;`j:num`]
7627 THEN MRESA_TAC( GEN_ALL CHANGE_A_SCS_MOD)[`x:num`;`SUC x:num`;`s:scs_v39`;`j:num`;`l:num`] 
7628 THEN RESA_TAC;
7629
7630
7631
7632
7633 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
7634 ;
7635
7636 EXISTS_TAC`(l+k-1) MOD k`
7637 THEN ASM_REWRITE_TAC[IN_ELIM_THM]
7638 THEN MRESA_TAC DIVISION[`l+k-1:num`;`k:num`]
7639 THEN MRESA_TAC MOD_REFL[`l+k:num`;`k:num`]
7640 THEN MRESA_TAC MOD_REFL[`l+k-1:num`;`k:num`]
7641 THEN MRESA_TAC MOD_REFL[`l:num`;`k:num`]
7642 THEN MRESA_TAC Hypermap.lemma_suc_mod[`l+k-1:num`;`k:num`]
7643 THEN MRESAL_TAC( GEN_ALL CHANGE_A_SCS_MOD)[`(l+k-1) MOD k:num`;`SUC((l+k-1) MOD k):num`;`s:scs_v39`;`l+k-1:num`;`SUC ((l+k-1) MOD k) MOD k:num`][MOD_REFL] 
7644 THEN MRESAL_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`][ARITH_RULE`1 * k + l= l+k`]
7645 THEN MRESAL_TAC( GEN_ALL CHANGE_A_SCS_MOD)[`l+k-1:num`;`l MOD k:num`;`s:scs_v39`;`l+k-1:num`;`l:num`][MOD_REFL] 
7646 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`(l+k-1) MOD k :num`;`w:num->real^3`;`l+k-1:num`]
7647 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`SUC((l+k-1) MOD k) :num`;`w:num->real^3`;`SUC((l+k-1) MOD k) MOD k:num`]
7648 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`l MOD k :num`;`w:num->real^3`;`l :num`]
7649 THEN MRESA_TAC (GEN_ALL EQ_SUC_K_SUB3)[`l:num`;`j:num`;`k:num`]
7650 THEN ONCE_REWRITE_TAC[DIST_SYM]
7651 THEN MRESAL_TAC( GEN_ALL CHANGE_A_SCS_MOD)[`l:num`;`l+k-1:num`;`s:scs_v39`;`l:num`;`j:num`][MOD_REFL] 
7652 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`j :num`;`w:num->real^3`;`l+k-1 :num`]
7653 THEN REWRITE_TAC[v3_defor_v5;v3_defor_v4;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
7654 THEN MRESAL_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`;`(v3,v2):real^3#real^3`][VECTOR_ARITH`a-b+b=a:real^3`]
7655 THEN MP_TAC(REAL_ARITH`e2=(min (min (min e1 e'''')e') e3)/ &2 /\ &0< e1/\ &0< e''''
7656 /\ &0< e' /\ &0< e3
7657 /\ &0<t/\ t<e2
7658 ==> t< e3`)
7659 THEN RESA_TAC
7660 THEN THAYTHE_TAC (136-109)[`t:real`]
7661 THEN POP_ASSUM MP_TAC
7662 THEN REAL_ARITH_TAC;
7663
7664
7665
7666
7667 MATCH_MP_TAC FINITE_SUBSET
7668 THEN EXISTS_TAC`0..k`
7669 THEN ASM_REWRITE_TAC[FINITE_NUMSEG;SUBSET;IN_ELIM_THM;IN_NUMSEG]
7670 THEN ARITH_TAC;
7671
7672
7673 STRIP_TAC
7674 THEN REMOVE_ASSUM_TAC
7675 THEN DICH_TAC (118-40)
7676 THEN STRIP_TAC
7677 THEN SUBGOAL_THEN`BBindex_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) (e2 / &3)) IN
7678       IMAGE (BBindex_v39 s) (BBprime_v39 s)`ASSUME_TAC
7679 ;
7680
7681 REWRITE_TAC[IMAGE;IN_ELIM_THM;]
7682 THEN EXISTS_TAC`(\i. v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) (e2 / &3))`
7683 THEN ASM_REWRITE_TAC[IN]
7684 THEN MATCH_DICH_TAC 2
7685 THEN DICH_TAC (117-111)
7686 THEN REAL_ARITH_TAC;
7687
7688
7689 MRESAL_TAC MIN_LEAST[`(IMAGE (BBindex_v39 s) (BBprime_v39 s))`;`BBindex_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 ((w:num->real^3) i) (e2/ &3))`][GSYM BBindex_min_v39]
7690 THEN MP_TAC(REAL_ARITH`&0< e2==> &0 < e2 / &3 /\ e2 / &3 < e2`)
7691 THEN RESA_TAC
7692 THEN THAYTHE_TAC (123-117)[`e2/ &3`]
7693 THEN POP_ASSUM MP_TAC
7694 THEN DICH_TAC 2
7695 THEN ARITH_TAC;
7696
7697
7698 ONCE_REWRITE_TAC[DIST_SYM]
7699 THEN ASM_REWRITE_TAC[]
7700 THEN MRESA_TAC (GEN_ALL EQ_SUC_K_SUB3)[`l:num`;`j:num`;`k:num`]
7701 THEN MRESAL_TAC( GEN_ALL CHANGE_A_SCS_MOD)[`l:num`;`l+k-1:num`;`s:scs_v39`;`l:num`;`j:num`][MOD_REFL] 
7702 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`j :num`;`w:num->real^3`;`l+k-1 :num`]
7703 THEN REMOVE_ASSUM_TAC
7704 THEN REMOVE_ASSUM_TAC
7705 THEN REMOVE_ASSUM_TAC
7706 THEN STRIP_TAC
7707 THEN REMOVE_ASSUM_TAC
7708 ;
7709
7710
7711 ASM_TAC
7712 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7713 THEN REPEAT RESA_TAC
7714 THEN ONCE_REWRITE_TAC[DIST_SYM]
7715 THEN THAYTHE_TAC  (71-16)[`l:num`;`SUC l`]
7716 THEN REMOVE_ASSUM_TAC
7717 THEN POP_ASSUM MP_TAC
7718 THEN POP_ASSUM MP_TAC
7719 THEN REAL_ARITH_TAC;
7720
7721 ]);;
7722
7723
7724
7725 let NUXCOEAv2=prove((NUXCOEA_concl),
7726 MP_TAC NUXCOEA
7727 THEN ASM_REWRITE_TAC[Lunar_deform.MHAEYJN;Zlzthic.ZLZTHIC]
7728 THEN MESON_TAC[]);;
7729
7730
7731 let IMJXPHRv2=prove((IMJXPHR_concl),
7732 MP_TAC IMJXPHR
7733 THEN ASM_REWRITE_TAC[Lunar_deform.MHAEYJN;Zlzthic.ZLZTHIC]
7734 THEN MESON_TAC[]);;
7735
7736
7737 let ODXLSTCv2=prove((ODXLSTCv2_concl),
7738 MP_TAC ODXLSTCv2
7739 THEN ASM_REWRITE_TAC[Lunar_deform.MHAEYJN;Zlzthic.ZLZTHIC]
7740 THEN MESON_TAC[]);;
7741
7742
7743
7744
7745  end;;
7746
7747
7748 (*
7749 let check_completeness_claimA_concl = 
7750   Ineq.mk_tplate `\x. scs_arrow_v13 (set_of_list x) 
7751 *)
7752
7753
7754
7755