1 (* ========================================================================== *)
2 (* FLYSPECK - BOOK FORMALIZATION *)
4 (* Chapter: Local Fan *)
5 (* Author: Hoang Le Truong *)
7 (* ========================================================================= *)
11 remaining conclusions from appendix to Local Fan chapter
15 module Nuxcoea = struct
27 open Wrgcvdr_cizmrrh;;
35 open Flyspeck_constants;;
51 open Wrgcvdr_cizmrrh;;
53 open Flyspeck_constants;;
87 (**TATIC CHANGE (need Hales_tactics)**)
89 let MRESA_TAC th1 (th: term list) = INTRO_TAC (GEN_ALL th1) th THEN RESA_TAC;;
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;;
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
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 );;
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);;
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);;
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);;
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);;
137 REPLICATE_TAC n (POP_ASSUM MP_TAC)
138 THEN POP_ASSUM(fun th-> REPLICATE_TAC n DISCH_TAC
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 );;
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`;;
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`,
159 THEN MP_TAC(ARITH_RULE`1<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l `)
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`]);;
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`,
167 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l `)
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`]);;
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[]
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[]
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]
197 THEN REPEAT (STRIP_TAC THEN REMOVE_ASSUM_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`)
205 let NORM_LE_2_IN_BBS=prove(`BBs_v39 s w ==> &2<= norm (w l)`,
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);;
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]
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]
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]
225 let NORM_LE_2_IN_MMS=prove(`MMs_v39 s w ==> &2<= norm (w l)`,
227 THEN MP_TAC MMS_IMP_BBS
228 THEN ASM_REWRITE_TAC[NORM_LE_2_IN_BBS])
231 let CHANGE_A_SCS_MODL=prove(`is_scs_v39 s
232 /\ j MOD (scs_k_v39 s) = j1 MOD (scs_k_v39 s)
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]
237 THEN MP_TAC(ARITH_RULE`3<= scs_k_v39 s ==> ~(scs_k_v39 s= 0)`)
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`]));;
243 let CHANGE_A_SCS_MODR=prove(`is_scs_v39 s
244 /\ j MOD (scs_k_v39 s) = j1 MOD (scs_k_v39 s)
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]
249 THEN MP_TAC(ARITH_RULE`3<= scs_k_v39 s ==> ~(scs_k_v39 s= 0)`)
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`]));;
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)
259 scs_a_v39 s l j =scs_a_v39 s l1 j1`,
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`])
267 let CHANGE_B_SCS_MODL=prove(`is_scs_v39 s
268 /\ j MOD (scs_k_v39 s) = j1 MOD (scs_k_v39 s)
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]
273 THEN MP_TAC(ARITH_RULE`3<= scs_k_v39 s ==> ~(scs_k_v39 s= 0)`)
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`]));;
279 let CHANGE_B_SCS_MODR=prove(`is_scs_v39 s
280 /\ j MOD (scs_k_v39 s) = j1 MOD (scs_k_v39 s)
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]
285 THEN MP_TAC(ARITH_RULE`3<= scs_k_v39 s ==> ~(scs_k_v39 s= 0)`)
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`]));;
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)
295 scs_b_v39 s l j =scs_b_v39 s l1 j1`,
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`])
303 let CHANGE_W_IN_BBS_MOD_LE3=prove(`3<= scs_k_v39 s /\
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]
309 THEN MP_TAC(ARITH_RULE`3<= scs_k_v39 s ==> ~(scs_k_v39 s= 0)`)
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`]));;
315 let CHANGE_W_IN_BBS_MOD_IS_SCS=prove(`is_scs_v39 s /\
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]
321 THEN MP_TAC(ARITH_RULE`3<= scs_k_v39 s ==> ~(scs_k_v39 s= 0)`)
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`]));;
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]
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);;
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);;
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`]
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;]
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
370 THEN REAL_ARITH_TAC);;
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
380 /\ &0< ups_x x1 x3 x5
382 lift o (\x3. dist(v3_defor_v1 a v1 v2 x1 x2 x5 x6 x3+w,v)) continuous atreal (x3)`,
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
388 THEN MATCH_MP_TAC CONTINUOUS_ATREAL_COMPOSE
389 THEN MP_TAC EYYPQDW_CONTINUOUS_AT_X
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]]]);;
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)
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))`,
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`]
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`)
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
416 THEN EXISTS_TAC`d:real`
417 THEN ASM_REWRITE_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`])
422 THEN REAL_ARITH_TAC);;
427 let DEFORMATION_DIST_LE_MK_A=prove(
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
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)))`,
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]
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`]));;
454 let DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK=prove_by_refinement(`is_scs_v39 s /\
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
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))
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))`,
465 THEN MP_TAC DEFORMATION_DIST_LE_MK_A
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]
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;
475 MATCH_MP_TAC FINITE_SUBSET
476 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
479 MATCH_MP_TAC FINITE_IMAGE
480 THEN REWRITE_TAC[FINITE_NUMSEG];
482 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_ELIM_THM]
485 THEN EXISTS_TAC`i:num`
486 THEN ASM_REWRITE_TAC[IN_NUMSEG]
487 THEN REPLICATE_TAC (16-12)(POP_ASSUM MP_TAC)
490 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)} = {})`ASSUME_TAC;
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)`)
496 EXISTS_TAC`(e:num->real)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)`)
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`];
506 MP_TAC(SET_RULE`l MOD k=1\/ ~(l MOD k= 1 )`)
509 EXISTS_TAC`(e:num->real)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)`)
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`];
520 EXISTS_TAC`(e:num->real)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)`)
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`];
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]
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`]);
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;
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`)
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];
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`)
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`)
573 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
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`])]);;
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
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)`,
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`]
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`)
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
598 THEN EXISTS_TAC`d:real`
599 THEN ASM_REWRITE_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`])
604 THEN REAL_ARITH_TAC);;
609 let DEFORMATION_DIST_LE_V3_DEFOR_B_MK=prove_by_refinement(` scs_k_v39 s =k/\
610 3<k /\ is_scs_v39 s /\
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)) `,
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]
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[]
632 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)`)
634 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
636 THEN SUBGOAL_THEN`v2 IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
638 REWRITE_TAC[IN_ELIM_THM;IMAGE]
639 THEN EXISTS_TAC`l:num`
640 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
642 SUBGOAL_THEN`w i IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
644 REWRITE_TAC[IN_ELIM_THM;IMAGE]
645 THEN EXISTS_TAC`i:num`
646 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
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]);;
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})`,
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`]
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}`]
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''`)
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`)
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`)
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);;
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}
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))`,
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`]
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
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'`)
735 THEN EXISTS_TAC`e1:real`
736 THEN ASM_REWRITE_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`)
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'`)
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)`)
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`]
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
778 ASM_REWRITE_TAC[NORM_EQ_SQUARE;NORM_POS_LE;NORM_LT_SQUARE;DOT_SQUARE_NORM]
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]
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`]
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)`)
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`]
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]
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}`]
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}`]
824 THEN MRESAL_TAC Planarity.IMP_NORM_FAN[`w:real^3`;`v+v1:real^3`][VECTOR_ARITH`A- vec 0=A:real^3`]]);;
828 let DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK1=prove(`is_scs_v39 s /\
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)
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))`,
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]
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
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[]);;
862 let DEFORMATION_DIST_LE_V3_DEFOR_AA_COM_MK=prove(`is_scs_v39 s /\
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))
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))`,
874 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK
876 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK1
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'`)
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)`)
889 MP_TAC(REAL_ARITH`t<e1/\ e1<e'==> t< e'`)
891 THEN MP_TAC MMS_IMP_BBS
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`]
897 THEN ASM_REWRITE_TAC[];
899 MP_TAC(REAL_ARITH`t<e1/\ e1<e/\ &0<t==> t< e/\ --e< t`)
901 THEN THAYTHE_TAC (28-16) [`t:real`;`i:num`]]);;
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}
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))`,
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`]
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
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'`)
919 THEN EXISTS_TAC`e1:real`
920 THEN ASM_REWRITE_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`)
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'`)
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)`)
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`]);;
941 let DEFORMATION_DIST_LE_V3_DEFOR_EDGE_SUB=prove(` 3<k /\ is_scs_v39 s /\
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)
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))`,
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]
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[]
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
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`]
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]
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);;
995 let DIST_V3_DEFOR_EDGE_SUC=prove(` scs_k_v39 s =k/\
996 3<k /\ is_scs_v39 s /\
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
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) `,
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]
1012 THEN REWRITE_TAC[GSYM dist]
1013 THEN ONCE_REWRITE_TAC[DIST_SYM]
1014 THEN REPEAT STRIP_TAC);;
1018 let DEFORMATION_DIST_LE_V3_DEFOR_B_COM_MK1=prove(` 3<k /\ is_scs_v39 s /\
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))`,
1030 THEN MP_TAC DIST_V3_DEFOR_EDGE_SUC
1032 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_EDGE_SUB
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]
1038 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_B_MK
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]
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)`)
1050 THEN ASM_REWRITE_TAC[]
1051 THEN REPEAT STRIP_TAC
1052 THEN MP_TAC(REAL_ARITH`&0< t/\ t< e==> --e< t`)
1054 THEN THAYTHE_TAC (23-16)[`t:real`]
1055 THEN MP_TAC MMS_IMP_BBS
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`];
1060 MP_TAC(SET_RULE`(l MOD k = SUC i MOD k)\/ ~(l MOD k =SUC i MOD k)`)
1064 THAYTHE_TAC (21-17)[`i:num`]
1065 THEN EXISTS_TAC`(e':num->real) i`
1066 THEN ASM_REWRITE_TAC[];
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]]);;
1080 let DEFORMATION_DIST_LE_V3_DEFOR_B_COM_MK=prove_by_refinement(` 3<k /\ is_scs_v39 s /\
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)
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)`,
1093 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_B_COM_MK1
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]
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;
1105 MATCH_MP_TAC FINITE_SUBSET
1106 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
1110 MATCH_MP_TAC FINITE_IMAGE
1111 THEN REWRITE_TAC[FINITE_NUMSEG];
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
1123 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
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 )`)
1132 EXISTS_TAC`(e:num->real)1`
1134 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
1135 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
1140 EXISTS_TAC`(e:num->real)0`
1142 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
1143 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
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`]);
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;
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)`)
1171 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
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)`)
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`)
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`]);
1196 (**************************)
1198 (***********BBs_V39********)
1200 (**************************)
1203 let DEFORMATION_V3_DEFOR_NOT_IN_V_MK=prove(
1204 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
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))))`,
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]
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`]
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`])
1239 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v2:real^3`;`(w:num->real^3) i`;]);;
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 /\
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))`,
1251 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_MK
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]
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;
1261 MATCH_MP_TAC FINITE_SUBSET
1262 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
1265 MATCH_MP_TAC FINITE_IMAGE
1266 THEN REWRITE_TAC[FINITE_NUMSEG];
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
1276 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
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 )`)
1282 EXISTS_TAC`(e:num->real)1`
1284 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
1285 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
1288 EXISTS_TAC`(e:num->real)0`
1290 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
1291 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
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`]);
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;
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)`)
1314 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
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)`)
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)`)
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`)
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`]);]);;
1339 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
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))`,
1345 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_MK
1347 THEN EXISTS_TAC`e:real`
1348 THEN ASM_REWRITE_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
1355 THEN POP_ASSUM MP_TAC
1356 THEN REWRITE_TAC[DIST_REFL])
1357 THEN REAL_ARITH_TAC);;
1361 let V3_DEFOR_EQ_IN_FF_MK=prove_by_refinement(
1362 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
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
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
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)
1378 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
1379 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1381 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
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)`)
1389 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
1391 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
1392 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1394 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
1395 THEN REPEAT RESA_TAC);
1397 MP_TAC Local_lemmas.CVLF_LF_F
1399 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
1404 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
1407 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
1409 THEN REMOVE_ASSUM_TAC
1410 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th;VECTOR_ARITH`a-b+b=a:real^3`]);
1412 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
1415 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
1416 THEN REPEAT RESA_TAC
1419 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
1421 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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)
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)`)
1437 THEN THAYTHE_TAC (70-34)[`t:real`;`x':num`]
1438 THEN DICH_TAC (70-61)
1441 THEN ASM_REWRITE_TAC[];
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;]);;
1452 let V3_DEFOR_EQ_IN_FF_MK_SYM=prove_by_refinement(
1453 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
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
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
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)
1469 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
1470 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1472 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
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)`)
1480 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
1482 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
1483 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1485 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
1486 THEN REPEAT RESA_TAC);
1488 MP_TAC Local_lemmas.CVLF_LF_F
1490 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
1495 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
1498 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
1500 THEN REMOVE_ASSUM_TAC
1501 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th;VECTOR_ARITH`a-b+b=a:real^3`]);
1503 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
1506 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
1507 THEN REPEAT RESA_TAC
1510 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
1512 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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)
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)`)
1528 THEN THAYTHE_TAC (70-34)[`t:real`;`SUC x':num`];
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]);;
1541 let DEFORMATION_AZIM_V3_DEFOR_V1_MK=prove_by_refinement(`scs_k_v39 s = k /\
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) /\
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 /\
1560 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
1565 ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v2 t)
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)
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
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)
1577 azim (vec 0) v2 (rho_node1 FF v2) (@a. a,v2 IN FF)))`,
1580 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK
1583 THEN REPEAT RESA_TAC
1584 THEN DICH_TAC (22-5)
1586 THEN DICH_TAC (22-5)
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]
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[]
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'`)
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
1612 THEN MP_TAC V3_DEFOR_EQ_IN_FF_MK_SYM
1614 THEN REWRITE_TAC[rho_node1]
1615 THEN MP_TAC V3_DEFOR_EQ_IN_FF_MK
1617 THEN REWRITE_TAC[v3_defor_v5;v3_defor_v4]
1618 THEN MP_TAC MMS_IMP_BBS
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)`)
1622 THEN MP_TAC EXPAND_PERIODIC
1624 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
1625 THEN MP_TAC WL_IN_FF
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;
1631 REPLICATE_TAC (50-3)(POP_ASSUM MP_TAC)
1632 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1634 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
1635 THEN REPEAT RESA_TAC);
1637 MP_TAC Local_lemmas.CVLF_LF_F
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)
1644 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e' /\ --e1<t
1645 ==> t< e'/\ --e'<t`)
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)`]
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[];
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[]]);;
1669 let V3_DEFOR_EQ_IN_FF_SUB_MK=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
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
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
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)
1683 = v3_defor_v1 (-- &1) (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1`,
1685 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
1686 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1688 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
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)`)
1696 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
1698 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
1699 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1701 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
1702 THEN REPEAT RESA_TAC);
1704 MP_TAC Local_lemmas.CVLF_LF_F
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
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
1716 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`];
1721 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
1724 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
1728 THEN MP_TAC EXPAND_PERIODIC
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
1734 THEN THAYTHE_TAC(48-15)[`t:real`;`l+k-1`];
1738 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
1739 THEN MP_TAC EXPAND_PERIODIC
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`]
1745 THEN SUBGOAL_THEN`v1,a' IN (FF:real^3#real^3->bool)`ASSUME_TAC;
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`;]]);;
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 /\
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
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
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)
1772 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
1773 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1775 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
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)`)
1783 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
1785 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
1786 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1788 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
1789 THEN REPEAT RESA_TAC);
1791 MP_TAC Local_lemmas.CVLF_LF_F
1793 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
1798 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
1801 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
1804 THEN MP_TAC EXPAND_PERIODIC
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
1810 THEN THAYTHE_TAC(48-15)[`t:real`;`l+k-1`];
1812 MP_TAC(SET_RULE`v2=FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
1816 THEN ASM_REWRITE_TAC[]
1817 THEN MP_TAC EXPAND_PERIODIC
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`]
1823 THEN SUBGOAL_THEN`v2,v1 IN FF:real^3#real^3->bool`ASSUME_TAC;
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
1835 THEN POP_ASSUM(fun th-> MRESA_TAC th[`SND(x:real^3#real^3)`]);
1839 THEN ASM_REWRITE_TAC[]
1840 THEN MP_TAC EXPAND_PERIODIC
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;
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)`)
1853 THEN MP_TAC EXPAND_PERIODIC
1855 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`];
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
1865 THEN POP_ASSUM(fun th-> MRESA_TAC th[`v1:real^3`]);
1867 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
1873 let DEFORMATION_AZIM_V3_DEFOR_SUB_MK=prove_by_refinement(`scs_k_v39 s = k /\
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) /\
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 /\
1892 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
1897 ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v1 t)
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)
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
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)
1909 azim (vec 0) v1 (rho_node1 FF v1) (@a. a,v1 IN FF)))`,
1912 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK
1915 THEN REPEAT RESA_TAC
1916 THEN DICH_TAC (22-5)
1918 THEN DICH_TAC (22-5)
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]
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[]
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'`)
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
1944 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SUB_MK_SYM
1946 THEN REWRITE_TAC[rho_node1]
1947 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SUB_MK
1949 THEN MP_TAC MMS_IMP_BBS
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)`)
1953 THEN MP_TAC EXPAND_PERIODIC
1955 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
1956 THEN MP_TAC WL_IN_FF
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;
1962 REPLICATE_TAC (50-3)(POP_ASSUM MP_TAC)
1963 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1965 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
1966 THEN REPEAT RESA_TAC);
1968 MP_TAC Local_lemmas.CVLF_LF_F
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`)
1978 THEN THAYTHE_TAC (57-27)[`t:real`]
1979 THEN ONCE_REWRITE_TAC[Rogers.AZIM_EQ_SYM];
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}`]
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[]
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
1998 THEN ASM_REWRITE_TAC[];
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];
2005 ONCE_REWRITE_TAC[SET_RULE`{C,A,B}={C,B,A}`]
2006 THEN ASM_REWRITE_TAC[];
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[]]);;
2017 let V3_DEFOR_EQ_IN_FF_SUC_MK=prove_by_refinement(
2018 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
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
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
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)
2032 <=> w(SUC l),a IN FF)`,
2035 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
2036 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2038 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
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)`)
2046 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2048 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
2049 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2051 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2052 THEN REPEAT RESA_TAC);
2054 MP_TAC Local_lemmas.CVLF_LF_F
2056 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
2061 MP_TAC(SET_RULE`v2=SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
2064 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
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`]
2072 THEN SUBGOAL_THEN`w(SUC l),v2 IN FF:real^3#real^3->bool`ASSUME_TAC;
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
2084 THEN POP_ASSUM(fun th-> MRESA_TAC th[`SND(x:real^3#real^3)`]);
2086 MP_TAC(SET_RULE`v2=FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
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
2096 THEN POP_ASSUM(fun th-> MRESA_TAC th[`l:num`])
2097 THEN THAYTHE_TAC (46-15)[`t:real`;`SUC l`];
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`]
2106 THEN ASM_REWRITE_TAC[];
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)`)
2115 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`];
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
2124 THEN POP_ASSUM(fun th-> MRESA_TAC th[`v2:real^3`]);
2126 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
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 /\
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
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
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)
2145 ) = v3_defor_v1 (-- &1) (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1`,
2147 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
2148 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2150 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
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)`)
2158 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2160 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
2161 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2163 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2164 THEN REPEAT RESA_TAC);
2168 MP_TAC Local_lemmas.CVLF_LF_F
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
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`];
2183 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
2187 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
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
2196 THEN POP_ASSUM(fun th-> MRESA_TAC th[`l:num`])
2197 THEN THAYTHE_TAC (47-15)[`t:real`;`SUC l`];
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`]
2206 THEN SUBGOAL_THEN`a',w(SUC l) IN (FF:real^3#real^3->bool)`ASSUME_TAC;
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`]]);;
2215 let DEFORMATION_AZIM_V3_DEFOR_SUC_MK=prove_by_refinement(`scs_k_v39 s = k /\
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) /\
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 /\
2234 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
2239 ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (SUC l)) t)
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)
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
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)
2251 azim (vec 0) (w (SUC l)) (rho_node1 FF (w (SUC l))) (@a. a,w (SUC l) IN FF)))`,
2254 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK
2257 THEN REPEAT RESA_TAC
2258 THEN DICH_TAC (22-5)
2260 THEN DICH_TAC (22-5)
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]
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[]
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'`)
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
2286 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SUC_MK_SYM
2288 THEN REWRITE_TAC[rho_node1]
2289 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SUC_MK
2291 THEN MP_TAC MMS_IMP_BBS
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)`)
2295 THEN MP_TAC EXPAND_PERIODIC
2297 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
2298 THEN MP_TAC WL_IN_FF
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;
2304 REPLICATE_TAC (50-3)(POP_ASSUM MP_TAC)
2305 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2307 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
2308 THEN REPEAT RESA_TAC);
2310 MP_TAC Local_lemmas.CVLF_LF_F
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`)
2320 THEN THAYTHE_TAC (57-27)[`t:real`];
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}`]
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[]
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
2338 THEN ASM_REWRITE_TAC[];
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[];
2347 ONCE_REWRITE_TAC[SET_RULE`{C,A,B}={C,B,A}`]
2348 THEN ASM_REWRITE_TAC[];
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[]]);;
2358 let V3_DEFOR_EQ_IN_FF_NOT_MK=prove_by_refinement(
2359 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
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
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))
2370 ==> (!a. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t,a IN
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)
2377 THEN REPLICATE_TAC (23-3)(POP_ASSUM MP_TAC)
2378 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2380 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
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)`)
2388 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2390 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
2391 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2393 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2394 THEN REPEAT RESA_TAC);
2396 MP_TAC Local_lemmas.CVLF_LF_F
2398 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
2403 MP_TAC(SET_RULE`v2=SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
2406 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
2410 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
2412 THEN SUBGOAL_THEN`v,v2 IN FF:real^3#real^3->bool`ASSUME_TAC;
2416 MP_TAC EXPAND_PERIODIC
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)
2423 MP_TAC(SET_RULE`v2=FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
2428 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
2429 THEN DICH_TAC(47-22)
2431 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
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)`)
2438 MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`x':num`;`w:num->real^3`;`l:num`];
2444 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
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)`)
2454 THEN MP_TAC EXPAND_PERIODIC
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)
2461 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
2466 let V3_DEFOR_EQ_IN_FF_NOT_MK_SYM=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
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
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))
2477 ==> (!a. a, v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t IN
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)
2484 THEN REPLICATE_TAC (23-3)(POP_ASSUM MP_TAC)
2485 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2487 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
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)`)
2495 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2497 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
2498 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2500 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2501 THEN REPEAT RESA_TAC);
2503 MP_TAC Local_lemmas.CVLF_LF_F
2505 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
2510 MP_TAC(SET_RULE`v2=FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
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)`]
2517 THEN MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
2519 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
2522 THEN SUBGOAL_THEN`v2,v IN FF:real^3#real^3->bool`ASSUME_TAC;
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)
2531 MP_TAC(SET_RULE`v2=SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
2537 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
2538 THEN DICH_TAC(47-22)
2540 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
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)`)
2547 MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`x':num`;`w:num->real^3`;`l:num`];
2553 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
2554 THEN REPEAT RESA_TAC;
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)`)
2562 MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
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)`];
2567 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
2574 let DEFORMATION_AZIM_V3_DEFOR_NOT_MK=prove_by_refinement(`scs_k_v39 s = k /\
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) /\
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 /\
2593 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
2597 --e < t /\ t < e /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(SUC l))
2599 ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t)
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)
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
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)
2611 azim (vec 0) (v) (rho_node1 FF (v)) (@a. a,v IN FF)))`,
2614 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK
2617 THEN REPEAT RESA_TAC
2618 THEN DICH_TAC (22-5)
2620 THEN DICH_TAC (22-5)
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]
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[]
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'`)
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
2646 THEN MP_TAC V3_DEFOR_EQ_IN_FF_NOT_MK_SYM
2648 THEN REWRITE_TAC[rho_node1]
2649 THEN MP_TAC V3_DEFOR_EQ_IN_FF_NOT_MK
2651 THEN MP_TAC MMS_IMP_BBS
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)`)
2655 THEN MP_TAC EXPAND_PERIODIC
2657 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
2658 THEN MP_TAC WL_IN_FF
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;
2665 REPLICATE_TAC (54-3)(POP_ASSUM MP_TAC)
2666 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2668 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
2669 THEN REPEAT RESA_TAC);
2671 MP_TAC Local_lemmas.CVLF_LF_F
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`]]);;
2678 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_MK=prove_by_refinement(`scs_k_v39 s = k /\
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) /\
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 /\
2697 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
2701 --e < t /\ t < e /\ v IN V
2702 ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t)
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)
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
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)
2714 azim (vec 0) (v) (rho_node1 FF (v)) (@a. a,v IN FF)))`,
2716 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_MK
2718 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_SUB_MK
2720 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_SUC_MK
2722 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_NOT_MK
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'''`)
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`)
2733 THEN MP_TAC(SET_RULE`(v=(w:num->real^3)(l+k-1))\/ ~(v=(w:num->real^3)(l+k-1))`)
2736 MATCH_DICH_TAC (46-24)
2737 THEN ASM_REWRITE_TAC[];
2739 MP_TAC(SET_RULE`(v=(w:num->real^3)(SUC l))\/ ~(v=(w:num->real^3)(SUC l))`)
2742 MATCH_DICH_TAC (47-26)
2743 THEN ASM_REWRITE_TAC[];
2745 MP_TAC(SET_RULE`(v=(w:num->real^3)(l))\/ ~(v=(w:num->real^3)( l))`)
2748 MATCH_DICH_TAC (48-22)
2749 THEN ASM_REWRITE_TAC[];
2751 MATCH_DICH_TAC (48-28)
2752 THEN ASM_REWRITE_TAC[]]);;
2755 let DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_AT_ALL_MK=prove(`scs_k_v39 s = k /\
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) /\
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 /\
2774 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
2778 --e < t /\ t < e /\ v IN V
2779 ==> interior_angle1 (vec 0)
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)
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]);;
2790 let DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_LE_PI_AT_ALL_MK=prove(`scs_k_v39 s = k /\
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) /\
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 /\
2809 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
2813 --e < t /\ t < e /\ v IN V /\ interior_angle1 (vec 0) FF v= pi
2814 ==> interior_angle1 (vec 0)
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)
2819 (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v t) <= pi
2822 THEN MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_AT_ALL_MK
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);;
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]);;
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
2837 ==> ?e. &0< e /\ deformation (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2) V (--e,e)`,
2839 REWRITE_TAC[deformation;real_interval;IN_ELIM_THM;REAL_ARITH`(-- &1 < &0 /\ &0 < &1)`]
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`)
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)`)
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
2861 MATCH_MP_TAC REAL_CONTINUOUS_SUB
2862 THEN ASM_SIMP_TAC[REAL_CONTINUOUS_CONST;REAL_CONTINUOUS_AT_ID];
2865 MATCH_MP_TAC CONTINUOUS_ATREAL_WITHINREAL
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]
2874 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`;CONTINUOUS_CONST];
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)`)
2881 THEN VECTOR_ARITH_TAC]);;
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 +
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]
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)
2900 (:num) = IMAGE (IMAGE (\v. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v t)) (IMAGE (\i. {w i, w (SUC i)}) (:num))`,
2902 REWRITE_TAC[EXTENSION]
2903 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;v3_defor_v5]
2907 THEN EXISTS_TAC`{(w:num->real^3) x', w (SUC x')}`
2910 THEN ASM_REWRITE_TAC[];
2913 THEN EXISTS_TAC`x'':num`
2914 THEN ASM_REWRITE_TAC[]
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)
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]
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[];
2938 THEN EXISTS_TAC`x'':num`
2939 THEN ASM_REWRITE_TAC[]]);;
2943 let DEFORMATION_LUNAR_AFFINE_HULL_MK=prove_by_refinement(
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) /\
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 /\
2963 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
2964 IMAGE w (:num) = V /\
2966 /\ IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)=E
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})`,
2974 THEN REPEAT RESA_TAC
2975 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK
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]
2983 THEN REWRITE_TAC[GSYM dist]
2984 THEN DICH_TAC (30-4)
2986 THEN DICH_TAC (30-4)
2988 THEN DICH_TAC (30-4)
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[]
2997 THEN REPLICATE_TAC (32-3)(POP_ASSUM MP_TAC)
2998 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3000 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;IN_REAL_INTERVAL]
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
3008 THEN MP_TAC EXPAND_PERIODIC
3010 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
3011 THEN MP_TAC WL_IN_FF
3015 MP_TAC Local_lemmas.CVLF_LF_F
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}`)
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}`)
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;
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]
3060 let V3_DEFOR_CONVEX_LOCAL_FAN_MK_concl =`!s k w l j.
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
3078 V = IMAGE w (:num) /\
3079 E = IMAGE (\i. {w i, w (SUC i)}) (:num) ==>
3080 ~(lunar (v,(w l)) V E )) ==>
3082 (!t. --e < t /\ t < e
3085 (IMAGE (\i. v3_defor_v4 a x1 x5 x2 (--v1) (v2 - v1) (w i - v1) t + v1)
3088 (\i. {v3_defor_v4 a x1 x5 x2 (--v1) (v2 - v1) (w i - v1) t + v1, v3_defor_v4
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)
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))),
3110 REPLICATE_TAC (22-5)(POP_ASSUM MP_TAC)
3111 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3112 THEN POP_ASSUM MP_TAC
3114 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
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)`)
3124 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
3127 REPLICATE_TAC (40-21)(POP_ASSUM MP_TAC)
3128 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3130 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3131 THEN REPEAT 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
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
3143 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`];
3145 MP_TAC Local_lemmas.CVLF_LF_F
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}`]
3152 THEN MP_TAC DEFORMATION_MK_DEFOR_IN_BALL_ANNULUS
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
3159 MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_LE_PI_AT_ALL_MK
3161 THEN MP_TAC V3_DEFOR_DEFORMATION_V5
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`)
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.
3173 t IN real_interval (--e1,e1) /\
3174 interior_angle1 (vec 0) FF v = pi
3175 ==> interior_angle1 (vec 0)
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)
3180 (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v t) <=
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`)
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]
3196 THEN POP_ASSUM(fun th-> STRIP_TAC
3197 THEN MRESA_TAC th[`t:real`]);
3200 (*********LUNAR*******)
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]
3209 THEN SUBGOAL_THEN`~(v2=v:real^3)`ASSUME_TAC;
3211 POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`w':real^3`])
3213 THEN POP_ASSUM(fun th->
3215 THEN REWRITE_TAC[th]
3216 THEN REPEAT RESA_TAC)
3217 THEN ASM_REWRITE_TAC[Local_lemmas.LUNAR_COMM];
3220 SUBGOAL_THEN`~(v2=w':real^3)`ASSUME_TAC;
3223 THEN POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v:real^3`])
3225 THEN POP_ASSUM(fun th->
3227 THEN REWRITE_TAC[th]
3228 THEN REPEAT RESA_TAC);
3233 THEN POP_ASSUM MP_TAC
3234 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3236 THEN ABBREV_TAC`w1=w':real^3`
3237 THEN MP_TAC DEFORMATION_LUNAR_AFFINE_HULL_MK
3239 THEN MP_TAC V3_DEFOR_DEFORMATION_V5
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`)
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;
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;
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;
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`)
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;
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]
3279 THEN POP_ASSUM(fun th-> STRIP_TAC
3280 THEN MRESA_TAC th[`t:real`])]);;
3285 let CARD_FF_EQ_V3_DEFOR_DEFORMATION_MK=prove(`scs_k_v39 s =k /\
3286 IMAGE (w:num->real^3) (:num)=V/\
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==>
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)
3295 =CARD(IMAGE (\i. w i,w (SUC i)) (:num)))`,
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)`)
3304 THEN POP_ASSUM(fun th-> ASM_TAC
3306 THEN REPEAT RESA_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`]);;
3320 let DSV_V3_DEFOR_EQ_MK=prove_by_refinement(
3324 (!i. ~(scs_J_v39 s l i))
3326 dsv_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 (w l) (w i) t) = dsv_v39 s w`,
3328 REWRITE_TAC[dsv_v39]
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)`)
3333 THEN MATCH_MP_TAC(REAL_ARITH`a=b==> #0.1*a= #0.1*b`);
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)`)
3342 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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)`)
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`]);
3361 MP_TAC(SET_RULE`(w:num->real^3) l= w (SUC x)\/ ~(w l =w (SUC x))`)
3364 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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)`)
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])
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]);
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`];
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)`)
3400 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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)`)
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`]);
3419 MP_TAC(SET_RULE`(w:num->real^3) l= w (SUC x)\/ ~(w l =w (SUC x))`)
3422 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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)`)
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])
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]);
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`]]);;
3454 let INTERIOR_ANGLE_SAME_V3_DEFOR1_MK=prove(`scs_k_v39 s = k /\
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) /\
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 /\
3473 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
3475 /\(!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t))/\
3481 interior_angle1 (vec 0)
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)
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)
3492 (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (l MOD k)) t))
3494 interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) (w (l MOD k)))))`,
3496 THEN MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_AT_ALL_MK
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`)
3501 THEN EXISTS_TAC`e2:real`
3502 THEN ASM_REWRITE_TAC[]
3503 THEN REPEAT RESA_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)`)
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`)
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]
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`)
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)`]);;
3533 let TAUSTAR_V3_DEFOR_MK_concl = `!s k w l.
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) /\
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 /\
3553 /\(!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t))/\
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
3565 let TAUSTAR_V3_DEFOR_MK=prove_by_refinement(( TAUSTAR_V3_DEFOR_MK_concl),
3569 REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
3570 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3571 THEN POP_ASSUM MP_TAC
3573 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
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)`)
3583 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
3585 REPLICATE_TAC (41-22)(POP_ASSUM MP_TAC)
3586 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3588 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3589 THEN REPEAT RESA_TAC);
3591 ASM_REWRITE_TAC[taustar_v39;LET_DEF;LET_END_DEF;tau_fun]
3593 THEN MP_TAC INTERIOR_ANGLE_SAME_V3_DEFOR1_MK
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]
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`)
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'
3612 ==> t< e1/\ t<e/\ t<e'`)
3614 THEN MP_TAC CARD_FF_EQ_V3_DEFOR_DEFORMATION_MK
3616 THEN POP_ASSUM(fun th->MRESA1_TAC th`t:real`)
3617 THEN MP_TAC DSV_V3_DEFOR_EQ_MK
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]);
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]);
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`)
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]
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`)
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)`)
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`)
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];
3657 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
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)`,
3663 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`scs_k_v39 s`;`w:num->real^3`]
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)`)
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`]);;
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]);;
3684 (***************************)
3686 (**********TWO CASES********)
3688 (***************************)
3691 let DEFORMATION_DIST_LE_MK_A_TWO_CASES=prove(`is_scs_v39 s /\
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
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)))`,
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]
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`]);;
3717 let DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK_TWO_CASES=prove_by_refinement(
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
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))
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))`,
3728 THEN MP_TAC DEFORMATION_DIST_LE_MK_A_TWO_CASES
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]
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;
3738 MATCH_MP_TAC FINITE_SUBSET
3739 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
3742 MATCH_MP_TAC FINITE_IMAGE
3743 THEN REWRITE_TAC[FINITE_NUMSEG];
3745 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_ELIM_THM]
3748 THEN EXISTS_TAC`i:num`
3749 THEN ASM_REWRITE_TAC[IN_NUMSEG]
3750 THEN REPLICATE_TAC (16-12)(POP_ASSUM MP_TAC)
3753 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)} = {})`ASSUME_TAC;
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)`)
3759 EXISTS_TAC`(e:num->real)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)`)
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`];
3769 MP_TAC(SET_RULE`l MOD k=1\/ ~(l MOD k= 1 )`)
3772 EXISTS_TAC`(e:num->real)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`)
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`];
3783 EXISTS_TAC`(e:num->real)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)`)
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`];
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`];
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;
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`)
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];
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`)
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`)
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`])]);;
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 /\
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)) `,
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]
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[]
3866 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)`)
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;
3872 REWRITE_TAC[IN_ELIM_THM;IMAGE]
3873 THEN EXISTS_TAC`l:num`
3874 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
3876 SUBGOAL_THEN`w i IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
3878 REWRITE_TAC[IN_ELIM_THM;IMAGE]
3879 THEN EXISTS_TAC`i:num`
3880 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
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]);;
3903 let DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK1_TWO_CASES=prove(`is_scs_v39 s /\
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)
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))`,
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]
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
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[]);;
3941 let DEFORMATION_DIST_LE_V3_DEFOR_AA_COM_MK_TWO_CASES=prove(`is_scs_v39 s /\
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))
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))`,
3953 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK_TWO_CASES
3955 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_COM_MK1_TWO_CASES
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'`)
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)`)
3968 MP_TAC(REAL_ARITH`t<e1/\ e1<e'==> t< e'`)
3970 THEN MP_TAC MMS_IMP_BBS
3972 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
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`]
3979 THEN ASM_REWRITE_TAC[];
3981 MP_TAC(REAL_ARITH`t<e1/\ e1<e/\ &0<t==> t< e/\ --e< t`)
3983 THEN THAYTHE_TAC (28-16) [`t:real`;`i:num`]]);;
3989 let DEFORMATION_DIST_LE_V3_DEFOR_EDGE_SUB_TWO_CASES=prove(` 3<k /\ is_scs_v39 s /\
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)
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))`,
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]
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
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`]
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);;
4032 let DIST_V3_DEFOR_EDGE_SUC_TWO_CASES=prove(` scs_k_v39 s =k/\
4033 3<k /\ is_scs_v39 s /\
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
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) `,
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]
4049 THEN REWRITE_TAC[GSYM dist]
4050 THEN ONCE_REWRITE_TAC[DIST_SYM]
4051 THEN REPEAT STRIP_TAC);;
4056 let DEFORMATION_DIST_LE_V3_DEFOR_B_COM_MK1_TWO_CASES=prove(
4057 ` 3<k /\ is_scs_v39 s /\
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))`,
4069 THEN MP_TAC DIST_V3_DEFOR_EDGE_SUC_TWO_CASES
4071 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_EDGE_SUB_TWO_CASES
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]
4077 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_B_MK_TWO_CASES
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]
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)`)
4089 THEN ASM_REWRITE_TAC[]
4090 THEN REPEAT STRIP_TAC
4091 THEN MP_TAC(REAL_ARITH`&0< t/\ t< e==> --e< t`)
4093 THEN THAYTHE_TAC (23-16)[`t:real`]
4094 THEN MP_TAC MMS_IMP_BBS
4096 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
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`];
4103 MP_TAC(SET_RULE`(SUC l MOD k = i MOD k)\/ ~(SUC l MOD k = i MOD k)`)
4107 THAYTHE_TAC (21-17)[`i:num`]
4108 THEN EXISTS_TAC`(e':num->real) i`
4109 THEN ASM_REWRITE_TAC[];
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]]);;
4123 let DEFORMATION_DIST_LE_V3_DEFOR_B_COM_MK_TWO_CASES=prove_by_refinement(` 3<k /\ is_scs_v39 s /\
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)
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)`,
4136 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_B_COM_MK1_TWO_CASES
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]
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;
4148 MATCH_MP_TAC FINITE_SUBSET
4149 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
4153 MATCH_MP_TAC FINITE_IMAGE
4154 THEN REWRITE_TAC[FINITE_NUMSEG];
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
4166 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
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 )`)
4175 EXISTS_TAC`(e:num->real)1`
4177 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
4178 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
4183 EXISTS_TAC`(e:num->real)0`
4185 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
4186 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
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`]);
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;
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)`)
4214 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
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)`)
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`)
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`]);
4238 let DEFORMATION_V3_DEFOR_NOT_IN_V_MK_TWO_CASES=prove(
4239 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
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))))`,
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]
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`]
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`])
4274 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v2:real^3`;`(w:num->real^3) i`;]);;
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 /\
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))`,
4287 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_MK_TWO_CASES
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]
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;
4297 MATCH_MP_TAC FINITE_SUBSET
4298 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
4301 MATCH_MP_TAC FINITE_IMAGE
4302 THEN REWRITE_TAC[FINITE_NUMSEG];
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
4312 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
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 )`)
4318 EXISTS_TAC`(e:num->real)1`
4320 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
4321 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
4324 EXISTS_TAC`(e:num->real)0`
4326 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
4327 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
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`]);
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;
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)`)
4350 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
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)`)
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)`)
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`)
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`]);]);;
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 /\
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))`,
4386 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_MK_TWO_CASES
4388 THEN EXISTS_TAC`e:real`
4389 THEN ASM_REWRITE_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
4396 THEN POP_ASSUM MP_TAC
4397 THEN REWRITE_TAC[DIST_REFL])
4398 THEN REAL_ARITH_TAC);;
4402 let V3_DEFOR_EQ_IN_FF_MK_TWO_CASES=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
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
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
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)
4419 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
4420 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4422 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
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)`)
4430 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4432 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
4433 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4435 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4436 THEN REPEAT RESA_TAC);
4438 MP_TAC Local_lemmas.CVLF_LF_F
4440 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
4445 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
4448 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
4450 THEN REMOVE_ASSUM_TAC
4451 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th;VECTOR_ARITH`a-b+b=a:real^3`]);
4453 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4456 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
4457 THEN REPEAT RESA_TAC
4460 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4462 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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)
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)`)
4478 THEN THAYTHE_TAC (70-34)[`t:real`;`x':num`]
4479 THEN DICH_TAC (70-61)
4482 THEN ASM_REWRITE_TAC[];
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]);;
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 /\
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
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
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)
4509 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
4510 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4512 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
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)`)
4520 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4522 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
4523 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4525 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4526 THEN REPEAT RESA_TAC);
4528 MP_TAC Local_lemmas.CVLF_LF_F
4530 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
4535 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
4538 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
4540 THEN REMOVE_ASSUM_TAC
4541 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th;VECTOR_ARITH`a-b+b=a:real^3`]);
4543 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4546 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
4547 THEN REPEAT RESA_TAC
4550 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4552 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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)
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)`)
4568 THEN THAYTHE_TAC (70-34)[`t:real`;`SUC x':num`];
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]);;
4579 let DEFORMATION_AZIM_V3_DEFOR_V1_MK_TWO_CASES=prove_by_refinement(
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) /\
4595 norm v1 pow 2 = x1 /\
4596 norm v2 pow 2 = x2 /\
4597 norm (v2 - v1) pow 2 = x5 /\
4599 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
4604 ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v2 t)
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)
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
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)
4616 azim (vec 0) v2 (rho_node1 FF v2) (@a. a,v2 IN FF)))`,
4619 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK_TWO_CASES
4622 THEN REPEAT RESA_TAC
4623 THEN DICH_TAC (22-5)
4625 THEN DICH_TAC (22-5)
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]
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[]
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'`)
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
4651 THEN MP_TAC V3_DEFOR_EQ_IN_FF_MK_SYM_TWO_CASES
4653 THEN REWRITE_TAC[rho_node1]
4654 THEN MP_TAC V3_DEFOR_EQ_IN_FF_MK_TWO_CASES
4656 THEN REWRITE_TAC[v3_defor_v5;v3_defor_v4]
4657 THEN MP_TAC MMS_IMP_BBS
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)`)
4661 THEN MP_TAC EXPAND_PERIODIC
4663 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
4664 THEN MP_TAC WL_IN_FF
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;
4670 REPLICATE_TAC (50-3)(POP_ASSUM MP_TAC)
4671 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4673 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
4674 THEN REPEAT RESA_TAC);
4676 MP_TAC Local_lemmas.CVLF_LF_F
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)
4683 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e' /\ --e1<t
4684 ==> t< e'/\ --e'<t`)
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)`]
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[];
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[];]);;
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 /\
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
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
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)
4727 = v3_defor_v1 (-- &1) (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1`,
4730 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
4731 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4733 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
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)`)
4741 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4743 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
4744 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4746 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4747 THEN REPEAT RESA_TAC);
4749 MP_TAC Local_lemmas.CVLF_LF_F
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
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
4761 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`];
4766 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
4769 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
4773 THEN MP_TAC EXPAND_PERIODIC
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
4779 THEN THAYTHE_TAC 0[`l:num`]
4780 THEN THAYTHE_TAC(48-15)[`t:real`;`SUC l`];
4784 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
4785 THEN MP_TAC EXPAND_PERIODIC
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`]
4791 THEN SUBGOAL_THEN`a',v1 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
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`;]]);;
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 /\
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
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
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)
4819 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
4820 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4822 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
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)`)
4830 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4832 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
4833 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4835 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4836 THEN REPEAT RESA_TAC);
4838 MP_TAC Local_lemmas.CVLF_LF_F
4840 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
4845 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
4848 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
4851 THEN MP_TAC EXPAND_PERIODIC
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
4857 THEN THAYTHE_TAC 0[`l:num`]
4858 THEN THAYTHE_TAC(48-15)[`t:real`;`SUC l`];
4860 MP_TAC(SET_RULE`v2=SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
4864 THEN ASM_REWRITE_TAC[]
4865 THEN MP_TAC EXPAND_PERIODIC
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`]
4871 THEN SUBGOAL_THEN`v1,v2 IN FF:real^3#real^3->bool`ASSUME_TAC;
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
4883 THEN POP_ASSUM(fun th-> MRESA_TAC th[`SND(x:real^3#real^3)`]);
4887 THEN ASM_REWRITE_TAC[]
4888 THEN MP_TAC EXPAND_PERIODIC
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;
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)`)
4901 THEN MP_TAC EXPAND_PERIODIC
4903 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`];
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
4912 THEN POP_ASSUM(fun th-> MRESA_TAC th[`v1:real^3`]);
4914 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
4919 let DEFORMATION_AZIM_V3_DEFOR_SUB_MK_TWO_CASES=prove_by_refinement(
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) /\
4935 norm v1 pow 2 = x1 /\
4936 norm v2 pow 2 = x2 /\
4937 norm (v2 - v1) pow 2 = x5 /\
4939 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
4944 ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v1 t)
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)
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
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)
4956 azim (vec 0) v1 (rho_node1 FF v1) (@a. a,v1 IN FF)))`,
4959 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK_TWO_CASES
4962 THEN REPEAT RESA_TAC
4963 THEN DICH_TAC (22-5)
4965 THEN DICH_TAC (22-5)
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]
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[]
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'`)
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
4991 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SUB_MK_SYM_TWO_CASES
4993 THEN REWRITE_TAC[rho_node1]
4994 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SUB_MK_TWO_CASES
4996 THEN MP_TAC MMS_IMP_BBS
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)`)
5000 THEN MP_TAC EXPAND_PERIODIC
5002 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
5003 THEN MP_TAC WL_IN_FF
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;
5010 REPLICATE_TAC (50-3)(POP_ASSUM MP_TAC)
5011 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5013 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
5014 THEN REPEAT RESA_TAC);
5016 MP_TAC Local_lemmas.CVLF_LF_F
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`)
5026 THEN THAYTHE_TAC (57-27)[`t:real`]
5027 THEN ONCE_REWRITE_TAC[Rogers.AZIM_EQ_SYM];
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}`]
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[]
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
5046 THEN ASM_REWRITE_TAC[];
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];
5053 ONCE_REWRITE_TAC[SET_RULE`{C,A,B}={C,B,A}`]
5054 THEN ASM_REWRITE_TAC[];
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[]]);;
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 /\
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
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
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)
5080 <=> a, w(l+k-1) IN FF)`,
5083 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
5084 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5086 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
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)`)
5094 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
5096 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
5097 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5099 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
5100 THEN REPEAT RESA_TAC);
5102 MP_TAC Local_lemmas.CVLF_LF_F
5104 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
5109 MP_TAC(SET_RULE`v2=SND(x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
5112 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
5116 THEN ASM_REWRITE_TAC[]
5117 THEN MP_TAC EXPAND_PERIODIC
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`]
5122 THEN MP_TAC Imjxphr.MOD_ADD_SUB_1
5124 THEN THAYTHE_TAC (48-15)[`t:real`;`l+k-1`];
5127 MP_TAC(SET_RULE`v2=FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
5132 THEN ASM_REWRITE_TAC[]
5133 THEN MP_TAC EXPAND_PERIODIC
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;
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)`]
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
5151 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3)(l+k-1)`]);
5155 THEN ASM_REWRITE_TAC[]
5156 THEN MP_TAC EXPAND_PERIODIC
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;
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)`)
5170 THEN MP_TAC EXPAND_PERIODIC
5172 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1:num`;`w:num->real^3`];
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`]
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
5183 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3)(l+k-1)`]);
5186 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
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 /\
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
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
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)
5206 ) = v3_defor_v1 (-- &1) (--v1) (v2 - v1) x1 x5 x2 x2 (x5 - t) + v1`,
5209 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
5210 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5212 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
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)`)
5220 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
5222 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
5223 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5225 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
5226 THEN REPEAT RESA_TAC);
5228 MP_TAC Local_lemmas.CVLF_LF_F
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
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
5240 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1:num`;`w:num->real^3`];
5245 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
5248 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
5252 THEN MP_TAC EXPAND_PERIODIC
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
5258 THEN THAYTHE_TAC (48-15)[`t:real`;`l+k-1`];
5262 THEN MP_TAC EXPAND_PERIODIC
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`]
5268 THEN SUBGOAL_THEN`w(l+k-1),a' IN (FF:real^3#real^3->bool)`ASSUME_TAC;
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`;]]);;
5278 let DEFORMATION_AZIM_V3_DEFOR_SUC_MK_TWO_CASES=prove_by_refinement(
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) /\
5294 norm v1 pow 2 = x1 /\
5295 norm v2 pow 2 = x2 /\
5296 norm (v2 - v1) pow 2 = x5 /\
5298 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
5303 ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (l+k-1)) t)
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)
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
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)
5315 azim (vec 0) (w (l+k-1)) (rho_node1 FF (w (l+k-1))) (@a. a,w (l+k-1) IN FF)))`,
5318 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK_TWO_CASES
5321 THEN REPEAT RESA_TAC
5322 THEN DICH_TAC (22-5)
5324 THEN DICH_TAC (22-5)
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]
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[]
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'`)
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
5350 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SUC_MK_SYM_TWO_CASES
5352 THEN REWRITE_TAC[rho_node1]
5353 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SUC_MK_TWO_CASES
5355 THEN MP_TAC MMS_IMP_BBS
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)`)
5359 THEN MP_TAC EXPAND_PERIODIC
5361 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
5362 THEN MP_TAC WL_IN_FF
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;
5368 REPLICATE_TAC (50-3)(POP_ASSUM MP_TAC)
5369 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5371 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
5372 THEN REPEAT RESA_TAC);
5374 MP_TAC Local_lemmas.CVLF_LF_F
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`)
5384 THEN THAYTHE_TAC (57-27)[`t:real`];
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}`]
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[]
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
5403 THEN ASM_REWRITE_TAC[];
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];
5409 ONCE_REWRITE_TAC[SET_RULE`{C,A,B}={C,B,A}`]
5410 THEN ASM_REWRITE_TAC[];
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}`]]);;
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 /\
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
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)
5429 ==> (!a. v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t,a IN
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)
5436 THEN REPLICATE_TAC (23-3)(POP_ASSUM MP_TAC)
5437 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5439 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
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)`)
5447 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
5449 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
5450 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5452 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
5453 THEN REPEAT RESA_TAC);
5455 MP_TAC Local_lemmas.CVLF_LF_F
5457 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
5462 MP_TAC(SET_RULE`v2=SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
5465 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
5469 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
5471 THEN SUBGOAL_THEN`v,v2 IN FF:real^3#real^3->bool`ASSUME_TAC;
5475 MP_TAC EXPAND_PERIODIC
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)
5482 MP_TAC(SET_RULE`v2=FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
5487 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
5488 THEN DICH_TAC(47-22)
5490 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
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)`)
5497 MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`x':num`;`w:num->real^3`;`l:num`];
5503 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
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)`)
5513 THEN MP_TAC EXPAND_PERIODIC
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)
5520 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
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 /\
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
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)
5538 ==> (!a. a, v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t IN
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)
5545 THEN REPLICATE_TAC (23-3)(POP_ASSUM MP_TAC)
5546 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5548 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;v3_defor_v5;v3_defor_v4]
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)`)
5556 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
5558 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
5559 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5561 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
5562 THEN REPEAT RESA_TAC);
5564 MP_TAC Local_lemmas.CVLF_LF_F
5566 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ;VECTOR_ARITH`a-b=c-b<=> a=c:real^3`]
5571 MP_TAC(SET_RULE`v2=FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
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)`]
5578 THEN MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
5580 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
5583 THEN SUBGOAL_THEN`v2,v IN FF:real^3#real^3->bool`ASSUME_TAC;
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)
5592 MP_TAC(SET_RULE`v2=SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
5598 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
5599 THEN DICH_TAC(47-22)
5601 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
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)`)
5608 MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`x':num`;`w:num->real^3`;`l:num`];
5614 THEN ASM_REWRITE_TAC[VECTOR_ARITH`b-a+a=b:real^3`]
5615 THEN REPEAT RESA_TAC;
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)`)
5623 MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`]
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)`];
5628 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
5634 let DEFORMATION_AZIM_V3_DEFOR_NOT_MK_TWO_CASES=prove_by_refinement(`scs_k_v39 s = k /\
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) /\
5649 norm v1 pow 2 = x1 /\
5650 norm v2 pow 2 = x2 /\
5651 norm (v2 - v1) pow 2 = x5 /\
5653 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
5657 --e < t /\ t < e /\ ~(v= w(l+k-1))/\ ~(v=v2)/\ ~(v=v1)
5659 ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t)
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)
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
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)
5671 azim (vec 0) (v) (rho_node1 FF (v)) (@a. a,v IN FF)))`,
5674 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK_TWO_CASES
5677 THEN REPEAT RESA_TAC
5678 THEN DICH_TAC (22-5)
5680 THEN DICH_TAC (22-5)
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]
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[]
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'`)
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
5706 THEN MP_TAC V3_DEFOR_EQ_IN_FF_NOT_MK_SYM_TWO_CASES
5708 THEN REWRITE_TAC[rho_node1]
5709 THEN MP_TAC V3_DEFOR_EQ_IN_FF_NOT_MK_TWO_CASES
5711 THEN MP_TAC MMS_IMP_BBS
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)`)
5715 THEN MP_TAC EXPAND_PERIODIC
5717 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
5718 THEN MP_TAC WL_IN_FF
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;
5725 REPLICATE_TAC (54-3)(POP_ASSUM MP_TAC)
5726 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5728 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
5729 THEN REPEAT RESA_TAC);
5731 MP_TAC Local_lemmas.CVLF_LF_F
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`]]);;
5740 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_MK_TWO_CASES=prove_by_refinement(`scs_k_v39 s = k /\
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) /\
5755 norm v1 pow 2 = x1 /\
5756 norm v2 pow 2 = x2 /\
5757 norm (v2 - v1) pow 2 = x5 /\
5759 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
5763 --e < t /\ t < e /\ v IN V
5764 ==> azim (vec 0) (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (v) t)
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)
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
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)
5776 azim (vec 0) (v) (rho_node1 FF (v)) (@a. a,v IN FF)))`,
5778 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_MK_TWO_CASES
5780 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_SUC_MK_TWO_CASES
5782 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_SUB_MK_TWO_CASES
5784 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_NOT_MK_TWO_CASES
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'''`)
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`)
5795 THEN MP_TAC(SET_RULE`(v=(w:num->real^3)(l+k-1))\/ ~(v=(w:num->real^3)(l+k-1))`)
5798 MATCH_DICH_TAC (46-24)
5799 THEN ASM_REWRITE_TAC[];
5801 MP_TAC(SET_RULE`(v=(w:num->real^3)(SUC l))\/ ~(v=(w:num->real^3)(SUC l))`)
5804 MATCH_DICH_TAC (47-26)
5805 THEN ASM_REWRITE_TAC[];
5807 MP_TAC(SET_RULE`(v=(w:num->real^3)(l))\/ ~(v=(w:num->real^3)( l))`)
5810 MATCH_DICH_TAC (48-22)
5811 THEN ASM_REWRITE_TAC[];
5813 MATCH_DICH_TAC (48-28)
5814 THEN ASM_REWRITE_TAC[]]);;
5817 let DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_AT_ALL_MK_TWO_CASES=prove(
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) /\
5833 norm v1 pow 2 = x1 /\
5834 norm v2 pow 2 = x2 /\
5835 norm (v2 - v1) pow 2 = x5 /\
5837 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
5841 --e < t /\ t < e /\ v IN V
5842 ==> interior_angle1 (vec 0)
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)
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]);;
5858 let DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_LE_PI_AT_ALL_MK_TWO_CASES=prove(`scs_k_v39 s = k /\
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) /\
5873 norm v1 pow 2 = x1 /\
5874 norm v2 pow 2 = x2 /\
5875 norm (v2 - v1) pow 2 = x5 /\
5877 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
5881 --e < t /\ t < e /\ v IN V /\ interior_angle1 (vec 0) FF v= pi
5882 ==> interior_angle1 (vec 0)
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)
5887 (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v t) <= pi
5890 THEN MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_AT_ALL_MK_TWO_CASES
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);;
5901 let DEFORMATION_LUNAR_AFFINE_HULL_MK_TWO_CASES=prove_by_refinement(`scs_k_v39 s = k /\
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) /\
5916 norm v1 pow 2 = x1 /\
5917 norm v2 pow 2 = x2 /\
5918 norm (v2 - v1) pow 2 = x5 /\
5920 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
5921 IMAGE w (:num) = V /\
5923 /\ IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)=E
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})`,
5931 THEN REPEAT RESA_TAC
5932 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_MK_TWO_CASES
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]
5940 THEN REWRITE_TAC[GSYM dist]
5941 THEN DICH_TAC (30-4)
5943 THEN DICH_TAC (30-4)
5945 THEN DICH_TAC (30-4)
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[]
5954 THEN REPLICATE_TAC (32-3)(POP_ASSUM MP_TAC)
5955 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5957 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;IN_REAL_INTERVAL]
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
5965 THEN MP_TAC EXPAND_PERIODIC
5967 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
5968 THEN MP_TAC WL_IN_FF
5971 MP_TAC Local_lemmas.CVLF_LF_F
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}`)
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}`)
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;
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]]);;
6015 let V3_DEFOR_CONVEX_LOCAL_FAN_MK_TWO_CASES_concl =`!s k w l j.
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
6033 V = IMAGE w (:num) /\
6034 E = IMAGE (\i. {w i, w (SUC i)}) (:num) ==>
6035 ~(lunar (v,(w l)) V E )) ==>
6037 (!t. --e < t /\ t < e
6040 (IMAGE (\i. v3_defor_v4 a x1 x5 x2 (--v1) (v2 - v1) (w i - v1) t + v1)
6043 (\i. {v3_defor_v4 a x1 x5 x2 (--v1) (v2 - v1) (w i - v1) t + v1, v3_defor_v4
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)
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))),
6066 REPLICATE_TAC (22-5)(POP_ASSUM MP_TAC)
6067 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6068 THEN POP_ASSUM MP_TAC
6070 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
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)`)
6080 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
6082 REPLICATE_TAC (40-21)(POP_ASSUM MP_TAC)
6083 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6085 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6086 THEN REPEAT 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
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
6098 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l:num`;`w:num->real^3`];
6100 MP_TAC Local_lemmas.CVLF_LF_F
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}`]
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}`]
6110 THEN MP_TAC DEFORMATION_MK_DEFOR_IN_BALL_ANNULUS
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
6118 MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_LE_PI_AT_ALL_MK_TWO_CASES
6120 THEN MP_TAC V3_DEFOR_DEFORMATION_V5
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`)
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.
6132 t IN real_interval (--e1,e1) /\
6133 interior_angle1 (vec 0) FF v = pi
6134 ==> interior_angle1 (vec 0)
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)
6139 (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 v t) <=
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`)
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]
6155 THEN POP_ASSUM(fun th-> STRIP_TAC
6156 THEN MRESA_TAC th[`t:real`]);
6159 (*********LUNAR*******)
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]
6168 THEN SUBGOAL_THEN`~(v2=v:real^3)`ASSUME_TAC;
6170 POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`w':real^3`])
6172 THEN POP_ASSUM(fun th->
6174 THEN REWRITE_TAC[th]
6175 THEN REPEAT RESA_TAC)
6176 THEN ASM_REWRITE_TAC[Local_lemmas.LUNAR_COMM];
6178 SUBGOAL_THEN`~(v2=w':real^3)`ASSUME_TAC;
6181 THEN POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v:real^3`])
6183 THEN POP_ASSUM(fun th->
6185 THEN REWRITE_TAC[th]
6186 THEN REPEAT RESA_TAC);
6190 THEN POP_ASSUM MP_TAC
6191 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6193 THEN ABBREV_TAC`w1=w':real^3`
6194 THEN MP_TAC DEFORMATION_LUNAR_AFFINE_HULL_MK_TWO_CASES
6196 THEN MP_TAC V3_DEFOR_DEFORMATION_V5
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`)
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;
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;
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;
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`)
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;
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]
6236 THEN POP_ASSUM(fun th-> STRIP_TAC
6237 THEN MRESA_TAC th[`t:real`])]);;
6242 let INTERIOR_ANGLE_SAME_V3_DEFOR1_MK_TWO_CASES=prove(
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) /\
6258 norm v1 pow 2 = x1 /\
6259 norm v2 pow 2 = x2 /\
6260 norm (v2 - v1) pow 2 = x5 /\
6262 IMAGE (\i. w i,w (SUC i)) (:num) = FF /\
6264 /\(!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t))/\
6270 interior_angle1 (vec 0)
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)
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)
6281 (v3_defor_v5 (-- &1) x1 x5 x2 v1 v2 (w (l MOD k)) t))
6283 interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) (w (l MOD k)))))`,
6286 THEN MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_AT_ALL_MK_TWO_CASES
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`)
6291 THEN EXISTS_TAC`e2:real`
6292 THEN ASM_REWRITE_TAC[]
6293 THEN REPEAT RESA_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)`)
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`)
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]
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`)
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)`]);;
6325 let TAUSTAR_V3_DEFOR_MK_TWO_CASES_concl = `!s k w l.
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) /\
6341 norm v1 pow 2 = x1 /\
6342 norm v2 pow 2 = x2 /\
6343 norm (v2 - v1) pow 2 = x5 /\
6345 /\(!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v5 a x1 x5 x2 v1 v2 (w i) t))/\
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
6357 let TAUSTAR_V3_DEFOR_MK_TWO_CASES=prove_by_refinement(
6358 ( TAUSTAR_V3_DEFOR_MK_TWO_CASES_concl),
6362 REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
6363 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6364 THEN POP_ASSUM MP_TAC
6366 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
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)`)
6376 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
6378 REPLICATE_TAC (41-22)(POP_ASSUM MP_TAC)
6379 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6381 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6382 THEN REPEAT RESA_TAC);
6384 ASM_REWRITE_TAC[taustar_v39;LET_DEF;LET_END_DEF;tau_fun]
6386 THEN MP_TAC INTERIOR_ANGLE_SAME_V3_DEFOR1_MK_TWO_CASES
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]
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`)
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'
6405 ==> t< e1/\ t<e/\ t<e'`)
6407 THEN MP_TAC CARD_FF_EQ_V3_DEFOR_DEFORMATION_MK
6409 THEN POP_ASSUM(fun th->MRESA1_TAC th`t:real`)
6410 THEN MP_TAC DSV_V3_DEFOR_EQ_MK
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]);
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]);
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`)
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]
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`)
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)`)
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`)
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];
6450 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]]);;
6457 let NUXCOEA_concl = `!s k w l j.
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)) /\
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)))))`;;
6483 let NUXCOEA=prove_by_refinement( (mk_imp(ZLZTHIC_concl, mk_imp (MHAEYJN_concl, NUXCOEA_concl))),
6489 THEN POP_ASSUM MP_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
6496 THEN MP_TAC(REAL_ARITH`&2 <= norm ((w:num->real^3) l) ==> ~(&2 = norm (w l)) \/ &2= norm (w l) `)
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)
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
6516 THEN ASM_REWRITE_TAC[is_scs_v39;periodic2]
6520 THEN ONCE_REWRITE_TAC[DIST_SYM]
6521 THEN ASM_REWRITE_TAC[]
6522 THEN ONCE_REWRITE_TAC[DIST_SYM]
6526 REPLICATE_TAC (39-4)(POP_ASSUM MP_TAC)
6527 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6528 THEN POP_ASSUM MP_TAC
6530 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
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)`)
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;
6544 REPLICATE_TAC (59-14)(POP_ASSUM MP_TAC)
6545 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6547 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6548 THEN REPEAT RESA_TAC)
6552 MP_TAC WL_IN_BALL_ANNULUS
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`]
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
6562 THEN MP_TAC EXPAND_PERIODIC
6564 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
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))`)
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;
6581 THEN MP_TAC(SET_RULE`(l MOD k = SUC i MOD k)\/ ~(l MOD k = SUC i MOD k)`)
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`];
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]);
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`
6610 MP_TAC Local_lemmas.CVLF_LF_F
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}`]
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}`]
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}`]
6625 THEN MP_TAC DEFORMATION_MK_DEFOR_IN_BALL_ANNULUS
6627 THEN POP_ASSUM MP_TAC
6628 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
6630 THEN MRESA_TAC DIST_SYM[`v3:real^3`;`v2:real^3`]
6631 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_AA_COM_MK
6633 THEN DICH_TAC (94-8)
6635 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_B_COM_MK
6637 THEN MP_TAC V3_DEFOR_CONVEX_LOCAL_FAN_MK
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)
6643 THEN MATCH_MP_TAC(SET_RULE`(B==> A==>C)==>((A==>B)==> A==>C)`)
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'''`)
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
6655 REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6656 THEN REPEAT STRIP_TAC;
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)`)
6666 MP_TAC(REAL_ARITH`t< e1/\ e1< e/\ &0<t==> t< e/\ --e<t`)
6670 THAYTHE_TAC (111-89)[`t:real`];
6673 ASM_REWRITE_TAC[v3_defor_v4];
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[]
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)`];
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;
6701 ASM_REWRITE_TAC[v3_defor_v4]
6702 THEN MP_TAC(SET_RULE`(w:num->real^3) i =w l \/ ~(w i = w l)`)
6704 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b=c-b<=> a=c:real^3`];
6708 MP_TAC(SET_RULE`(w:num->real^3) j' =w l \/ ~(w j' = w l)`)
6710 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b=c-b<=> a=c:real^3`];
6714 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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`]
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]);
6733 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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`]
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)`)
6752 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
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`])
6768 MP_TAC(SET_RULE`(w:num->real^3) j' =w l \/ ~(w j' = w l)`)
6774 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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`]
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)`)
6793 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
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`])
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;
6814 (**************scs_b_v39************)
6817 ASM_REWRITE_TAC[v3_defor_v4]
6818 THEN MP_TAC(SET_RULE`(w:num->real^3) i =w l \/ ~(w i = w l)`)
6820 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b=c-b<=> a=c:real^3`];
6824 MP_TAC(SET_RULE`(w:num->real^3) j' =w l \/ ~(w j' = w l)`)
6826 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b=c-b<=> a=c:real^3`];
6830 REWRITE_TAC[DIST_REFL]
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;
6836 THAYTHEL_TAC (109-14) [`i:num`;`j':num`][DIST_REFL];
6840 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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`]
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)`)
6859 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''==> t< e''`)
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`])
6875 MP_TAC(SET_RULE`(w:num->real^3) j' =w l \/ ~(w j' = w l)`)
6881 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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`]
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)`)
6900 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''==> t< e''`)
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`])
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;
6922 (*************convex_local_fan**************)
6927 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'''/\ &0< t/\ &0< e'''==> t< e'''/\ --e'''< t`)
6929 THEN THAYTHE_TAC (108-98)[`t:real`;]
6935 THEN REWRITE_TAC[GSYM v3_defor_v5]
6937 THEN MP_TAC TAUSTAR_V3_DEFOR_MK
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
6942 THEN ABBREV_TAC`e3=e''''':real`;
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''''
6948 ==> &0< e2/\ e2< e1/\ e2< e''''/\ e2< e'/\ e2< e3`)
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
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''''
6960 ==> t< e1/\ t< e''''`)
6962 THEN THAYTHE_TAC (120-105)[`t:real`]
6963 THEN THAYTHE_TAC (120-106)[`t:real`];
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
6975 REWRITE_TAC[BBindex_v39]
6976 THEN REPEAT RESA_TAC
6977 THEN MATCH_MP_TAC CARD_PSUBSET
6981 REWRITE_TAC[PSUBSET_ALT]
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)`)
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)`)
6999 REWRITE_TAC[DIST_REFL];
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`]
7009 MP_TAC(SET_RULE`(w:num->real^3) (SUC x)=v2 \/ ~(w (SUC x)= v2)`)
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''''
7022 THEN MP_TAC Imjxphr.MOD_ADD_SUB_1
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
7031 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
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''''
7052 THEN THAYTHE_TAC (131-109)[`t:real`]
7053 THEN POP_ASSUM MP_TAC
7054 THEN REAL_ARITH_TAC;
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]
7064 THEN REMOVE_ASSUM_TAC
7065 THEN DICH_TAC (118-40)
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
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;
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`)
7082 THEN THAYTHE_TAC (123-117)[`e2/ &3`]
7083 THEN POP_ASSUM MP_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;
7100 (*************************************)
7102 (*************TWO_CASES***************)
7104 (*************************************)
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
7116 THEN ASM_REWRITE_TAC[is_scs_v39;periodic2]
7120 THEN ONCE_REWRITE_TAC[DIST_SYM]
7121 THEN ASM_REWRITE_TAC[]
7122 THEN ONCE_REWRITE_TAC[DIST_SYM]
7126 REPLICATE_TAC (39-4)(POP_ASSUM MP_TAC)
7127 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7128 THEN POP_ASSUM MP_TAC
7130 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
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)`)
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;
7144 REPLICATE_TAC (59-14)(POP_ASSUM MP_TAC)
7145 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7147 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
7148 THEN REPEAT RESA_TAC)
7152 MP_TAC WL_IN_BALL_ANNULUS
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`]
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
7162 THEN MP_TAC EXPAND_PERIODIC
7164 THEN MRESA_TAC (GEN_ALL WL_IN_FF)[`l+k-1`;`w:num->real^3`]
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 ))`)
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;
7181 THEN MP_TAC(SET_RULE`(SUC l MOD k = i MOD k)\/ ~(SUC l MOD k = i MOD k)`)
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`];
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]);
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`
7208 MP_TAC Local_lemmas.CVLF_LF_F
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}`]
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}`]
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}`]
7223 THEN MP_TAC DEFORMATION_MK_DEFOR_IN_BALL_ANNULUS
7225 THEN POP_ASSUM MP_TAC
7226 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
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
7231 THEN DICH_TAC (94-8)
7233 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_B_COM_MK_TWO_CASES
7235 THEN MP_TAC V3_DEFOR_CONVEX_LOCAL_FAN_MK_TWO_CASES
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)
7241 THEN MATCH_MP_TAC(SET_RULE`(B==> A==>C)==>((A==>B)==> A==>C)`)
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'''`)
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
7253 REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
7254 THEN REPEAT STRIP_TAC;
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)`)
7264 MP_TAC(REAL_ARITH`t< e1/\ e1< e/\ &0<t==> t< e/\ --e<t`)
7268 THAYTHE_TAC (111-89)[`t:real`];
7271 ASM_REWRITE_TAC[v3_defor_v4];
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[]
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)`];
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;
7299 ASM_REWRITE_TAC[v3_defor_v4]
7300 THEN MP_TAC(SET_RULE`(w:num->real^3) i =w l \/ ~(w i = w l)`)
7302 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b=c-b<=> a=c:real^3`];
7306 MP_TAC(SET_RULE`(w:num->real^3) j' =w l \/ ~(w j' = w l)`)
7308 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b=c-b<=> a=c:real^3`];
7312 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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`]
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]);
7331 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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`]
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)`)
7350 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
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`])
7366 MP_TAC(SET_RULE`(w:num->real^3) j' =w l \/ ~(w j' = w l)`)
7372 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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`]
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)`)
7391 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
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`])
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;
7412 (**************scs_b_v39************)
7415 ASM_REWRITE_TAC[v3_defor_v4]
7416 THEN MP_TAC(SET_RULE`(w:num->real^3) i =w l \/ ~(w i = w l)`)
7418 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b=c-b<=> a=c:real^3`];
7422 MP_TAC(SET_RULE`(w:num->real^3) j' =w l \/ ~(w j' = w l)`)
7424 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b=c-b<=> a=c:real^3`];
7428 REWRITE_TAC[DIST_REFL]
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;
7434 THAYTHEL_TAC (109-14) [`i:num`;`j':num`][DIST_REFL];
7438 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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`]
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)`)
7457 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''==> t< e''`)
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`])
7473 MP_TAC(SET_RULE`(w:num->real^3) j' =w l \/ ~(w j' = w l)`)
7479 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
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`]
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)`)
7498 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''==> t< e''`)
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`])
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;
7520 (*************convex_local_fan**************)
7525 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'''/\ &0< t/\ &0< e'''==> t< e'''/\ --e'''< t`)
7527 THEN THAYTHE_TAC (108-98)[`t:real`;]
7533 THEN REWRITE_TAC[GSYM v3_defor_v5]
7535 THEN MP_TAC TAUSTAR_V3_DEFOR_MK_TWO_CASES
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
7540 THEN ABBREV_TAC`e3=e''''':real`;
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''''
7546 ==> &0< e2/\ e2< e1/\ e2< e''''/\ e2< e'/\ e2< e3`)
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
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''''
7558 ==> t< e1/\ t< e''''`)
7560 THEN THAYTHE_TAC (120-105)[`t:real`]
7561 THEN THAYTHE_TAC (120-106)[`t:real`];
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
7573 REWRITE_TAC[BBindex_v39]
7574 THEN REPEAT RESA_TAC
7575 THEN MATCH_MP_TAC CARD_PSUBSET
7579 REWRITE_TAC[PSUBSET_ALT]
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)`)
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)`)
7597 REWRITE_TAC[DIST_REFL];
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''''
7610 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
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
7619 MP_TAC(SET_RULE`(w:num->real^3) (SUC x)=v2 \/ ~(w (SUC x)= v2)`)
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`]
7633 REWRITE_TAC[VECTOR_ARITH`a-b+b=a:real^3`]
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''''
7660 THEN THAYTHE_TAC (136-109)[`t:real`]
7661 THEN POP_ASSUM MP_TAC
7662 THEN REAL_ARITH_TAC;
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]
7674 THEN REMOVE_ASSUM_TAC
7675 THEN DICH_TAC (118-40)
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
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;
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`)
7692 THEN THAYTHE_TAC (123-117)[`e2/ &3`]
7693 THEN POP_ASSUM MP_TAC
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
7707 THEN REMOVE_ASSUM_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;
7725 let NUXCOEAv2=prove((NUXCOEA_concl),
7727 THEN ASM_REWRITE_TAC[Lunar_deform.MHAEYJN;Zlzthic.ZLZTHIC]
7731 let IMJXPHRv2=prove((IMJXPHR_concl),
7733 THEN ASM_REWRITE_TAC[Lunar_deform.MHAEYJN;Zlzthic.ZLZTHIC]
7737 let ODXLSTCv2=prove((ODXLSTCv2_concl),
7739 THEN ASM_REWRITE_TAC[Lunar_deform.MHAEYJN;Zlzthic.ZLZTHIC]
7749 let check_completeness_claimA_concl =
7750 Ineq.mk_tplate `\x. scs_arrow_v13 (set_of_list x)