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 Imjxphr = struct
27 open Wrgcvdr_cizmrrh;;
35 open Flyspeck_constants;;
51 open Wrgcvdr_cizmrrh;;
53 open Flyspeck_constants;;
87 let v3_defor_v4=new_definition`v3_defor_v4 a x1 x2 x6 v1 w v t=
88 if v= w then (v3_defor_v1 a v1 w x1 x2 x6 x6 (x2-t)) else v`;;
91 let FUN_V3_DEFOR=prove(`v3_defor_v4 a x1 x2 x6 v1 w v = (\t. v3_defor_v4 a x1 x2 x6 v1 w v t)`,REWRITE_TAC[FUN_EQ_THM]);;
97 let BBS_IMP_CONVEX_LOCAL_FAN=prove(` 3<k/\ scs_k_v39 s =k /\ BBs_v39 s w ==> convex_local_fan (IMAGE w (:num),IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num),IMAGE (\i. w i,w (SUC i)) (:num))`,
100 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
102 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
106 let MOD_ADD_SUB_1=prove(`1<k==> ~((l+k-1) MOD k= l MOD k)`,
108 THEN MP_TAC(ARITH_RULE`1<k==> ~(k=0)/\ 1 + l + k - 1=1*k+l/\ 1+l= SUC(l)`)
110 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
111 THEN MRESA_TAC (Ocbicby.MOD_EQ_MOD_SHIFT)[`k:num`;`l+k-1`;`l:num`;`1`]
112 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
113 THEN ASM_SIMP_TAC[Qknvmlb.SUC_MOD_NOT_EQ]);;
118 let UPS_X_POS_SEG=prove(`~(collinear{vec 0,v1,v2:real^3}) /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ &0< x2
119 ==> ?e. &0< e/\ (!t. -- e< t/\ t< e ==> &0< ups_x x1 (x2-t) x6/\ &0< x2-t)`,
121 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`v2:real^3`]
122 THEN MRESAL_TAC (GEN_ALL Trigonometry1.DIST_UPS_X_POS)[`vec 0:real^3`;`v1:real^3`;`v2:real^3`][dist;VECTOR_ARITH`vec 0- A= --A/\ A- vec 0=A:real^3`;GSYM DOT_SQUARE_NORM;NORM_NEG]
123 THEN MRESAL_TAC Collect_geom.FHFMKIY[`vec 0:real^3`;`v1:real^3`;`v2:real^3`;`x1:real`;`x2:real`;`x6:real`][dist;VECTOR_ARITH`vec 0- A= --A/\ A- vec 0=A:real^3`;GSYM DOT_SQUARE_NORM;NORM_NEG]
124 THEN MP_TAC LIFT_UPS_CONTINUOUS
126 THEN POP_ASSUM MP_TAC
127 THEN REWRITE_TAC[continuous_atreal;o_DEF;DIST_LIFT]
128 THEN ABBREV_TAC`a=ups_x x1 x2 x6`
129 THEN ABBREV_TAC`b= min a x2`
130 THEN MP_TAC(REAL_ARITH`&0<= a/\ ~(a= &0)/\ &0<x2/\ b=min a x2 ==> &0<b/ &2/\ &0< a- b/ &2`)
133 THEN POP_ASSUM(fun th-> MRESA_TAC th[`b/ &2`])
134 THEN EXISTS_TAC`min d x2:real`
135 THEN ASM_REWRITE_TAC[]
136 THEN MP_TAC(REAL_ARITH`&0<d/\ &0< x2==> &0< min d x2`)
139 THEN POP_ASSUM MP_TAC
140 THEN POP_ASSUM(fun th-> STRIP_TAC THEN STRIP_TAC THEN MRESA_TAC th[`x2-t:real`])
141 THEN POP_ASSUM MP_TAC
142 THEN ASM_REWRITE_TAC[GSYM REAL_ABS_BETWEEN;REAL_ARITH`x2 - d < x2 - t<=> t<d`;
143 REAL_ARITH`x2 - t < x2 + d<=> --d<t`;REAL_ARITH`a- a/ &2=a/ &2`]
144 THEN MP_TAC(REAL_ARITH`--min d x2<t /\ t< min d x2/\ &0<x2 ==> t < d /\ --d < t/\ &0< x2-t`)
147 THEN REAL_ARITH_TAC);;
152 let UPS_X_POS_SEG_C=prove(`~(collinear{vec 0,v1,v2:real^3}) /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ &0< x2/\ &0<c
153 ==> ?e. &0< e/\ (!t. -- e< t/\ t< e ==> &0< ups_x x1 (x2-t) x6/\ &0< x2-t/\ t<c)`,
155 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`v2:real^3`]
156 THEN MRESAL_TAC (GEN_ALL Trigonometry1.DIST_UPS_X_POS)[`vec 0:real^3`;`v1:real^3`;`v2:real^3`][dist;VECTOR_ARITH`vec 0- A= --A/\ A- vec 0=A:real^3`;GSYM DOT_SQUARE_NORM;NORM_NEG]
157 THEN MRESAL_TAC Collect_geom.FHFMKIY[`vec 0:real^3`;`v1:real^3`;`v2:real^3`;`x1:real`;`x2:real`;`x6:real`][dist;VECTOR_ARITH`vec 0- A= --A/\ A- vec 0=A:real^3`;GSYM DOT_SQUARE_NORM;NORM_NEG]
158 THEN MP_TAC LIFT_UPS_CONTINUOUS
160 THEN POP_ASSUM MP_TAC
161 THEN REWRITE_TAC[continuous_atreal;o_DEF;DIST_LIFT]
162 THEN ABBREV_TAC`a=ups_x x1 x2 x6`
163 THEN ABBREV_TAC`b= (min a x2) `
164 THEN MP_TAC(REAL_ARITH`&0<= a/\ ~(a= &0)/\ &0<x2/\ b=(min a x2) ==> &0<b/ &2/\ &0< a- b/ &2`)
167 THEN POP_ASSUM(fun th-> MRESA_TAC th[`b/ &2`])
168 THEN ABBREV_TAC`e1=min (min d x2) c/ &2`
169 THEN EXISTS_TAC`e1:real`
170 THEN ASM_REWRITE_TAC[]
171 THEN MP_TAC(REAL_ARITH`&0<d/\ &0< x2/\ &0< c/\ e1=min (min d x2) c/ &2 ==> &0<e1/\ e1<c/\ e1<d/\ e1<x2`)
174 THEN REPLICATE_TAC (24-19) (POP_ASSUM MP_TAC)
175 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC THEN MRESA_TAC th[`x2-t:real`])
176 THEN POP_ASSUM MP_TAC
177 THEN ASM_REWRITE_TAC[GSYM REAL_ABS_BETWEEN;REAL_ARITH`x2 - d < x2 - t<=> t<d`;
178 REAL_ARITH`x2 - t < x2 + d<=> --d<t`;REAL_ARITH`a- a/ &2=a/ &2`]
179 THEN MP_TAC(REAL_ARITH`--e1<t /\ t<e1/\ &0<d/\ &0<e1/\ e1<d/\ e1<x2/\ e1<c==> t < d /\ --d < t/\ &0< x2-t/\ t<c`)
182 THEN REAL_ARITH_TAC);;
190 let V3_DEFOR_V1_O_DEF=prove(`(\t. v3_defor_v1 a v1 w x1 x2 x6 x6 (x2 - t)) = (\x3. v3_defor_v1 a v1 w x1 x2 x6 x6 x3) o (\t. x2-t)`,
191 REWRITE_TAC[o_DEF]);;
194 let V3_DEFOR_ID=prove(`&0< x1/\ ~(collinear{vec 0,v1,w:real^3})/\ norm v1 pow 2 = x1/\ norm w pow 2 =x2/\ norm(v1-w) pow 2=x6
196 ==> v3_defor_v1 a v1 w x1 x2 x6 x6 (x2 - &0) = w`,
198 THEN ASM_REWRITE_TAC[v3_defor_v1;CROSS_LAGRANGE;REAL_ARITH`A- &0=A`]
199 THEN ASM_REWRITE_TAC[DOT_LADD;DOT_RADD;DOT_LMUL; DOT_RMUL;DOT_CROSS_SELF;REAL_ARITH`A* &0= &0/\ A+ &0=A/\ &0 +A=A`;DOT_CROSS;REAL_INV_MUL;CROSS_LAGRANGE;CROSS_LADD;VECTOR_ARITH`A-B=A+(--B):real^3/\ a % vec 0= vec 0 /\ vec 0 +A=A`;CROSS_LMUL;CROSS_REFL;CROSS_LADD;CROSS_LNEG;DOT_SQUARE_NORM;o_DEF]
200 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`w:real^3`]
201 THEN MRESAL_TAC (GEN_ALL Trigonometry1.DIST_UPS_X_POS)[`vec 0:real^3`;`v1:real^3`;`w:real^3`][dist;VECTOR_ARITH`vec 0- A= --A/\ A- vec 0=A:real^3`;GSYM DOT_SQUARE_NORM;NORM_NEG]
202 THEN MRESAL_TAC Collect_geom.FHFMKIY[`vec 0:real^3`;`v1:real^3`;`w:real^3`;`x1:real`;`x2:real`;`x6:real`][dist;VECTOR_ARITH`vec 0- A= --A/\ A- vec 0=A:real^3`;GSYM DOT_SQUARE_NORM;NORM_NEG]
204 THEN REWRITE_TAC[GSYM DOT_SQUARE_NORM]
205 THEN ASM_REWRITE_TAC[DOT_LSUB;DOT_RSUB;DOT_LMUL; DOT_RMUL;DOT_CROSS_SELF;REAL_ARITH`A* &0= &0/\ A+ &0=A/\ &0 +A=A`;DOT_CROSS;REAL_INV_MUL;]
207 THEN MRESA_TAC DOT_SYM[`w:real^3`;`v1:real^3`]
208 THEN REPLICATE_TAC (13-3)(POP_ASSUM MP_TAC)
209 THEN POP_ASSUM(fun th->
212 THEN ASM_REWRITE_TAC[]
213 THEN ASM_REWRITE_TAC[REAL_ARITH`x1 - v1 dot v2 - (v1 dot v2 - x2) = x6
214 <=> v1 dot v2 = (x1 + x2 - x6)/ &2`;REAL_ARITH`a*a *b=a pow 2 *b/\ A- &0=A/\ (a*b) pow 2=a pow 2 * b pow 2`;REAL_INV_MUL]
216 THEN MRESA_TAC REAL_MUL_LINV[`ups_x x1 x2 x6`]
217 THEN MRESAL_TAC SQRT_UNIQUE[`&1`;`&1`][REAL_ARITH`&0<= &1/\ &1 pow 2= &1`]
218 THEN REWRITE_TAC[VECTOR_ARITH`((inv (&2) * inv x1) * (x1 + x2 - x6)) % v1 +
219 (inv x1 * -- &1 * &1) % ((x1 + x2 - x6) / &2 % v1 + --(x1 % w))
222 THEN MP_TAC(REAL_ARITH`&0< x1==> ~(x1= &0)`)
224 THEN MRESA_TAC REAL_MUL_LINV[`x1:real`]
225 THEN VECTOR_ARITH_TAC);;
228 let V3_DEFOR_DEFORMATION=prove_by_refinement(`
229 &0< x1 /\ &0<x2 /\ &0<x4 /\ &0<x5 /\ &0< x6 /\
230 ~(collinear{vec 0,v1,w:real^3})/\ norm v1 pow 2 = x1/\ norm w pow 2 =x2/\ norm(v1-w) pow 2=x6
233 (?e. &0<e /\ deformation (v3_defor_v4 a x1 x2 x6 v1 w) V (-- e,e))`,
234 [REWRITE_TAC[deformation;real_interval;IN_ELIM_THM;REAL_ARITH`(-- &1 < &0 /\ &0 < &1)`]
236 THEN MRESA_TAC(GEN_ALL UPS_X_POS_SEG)[`v1:real^3`;`w:real^3`;`x1:real`;`x6:real`;`x2:real`]
237 THEN EXISTS_TAC`e:real`
238 THEN ASM_REWRITE_TAC[]
239 THEN MP_TAC(REAL_ARITH`&0< e==> -- e< &0`)
244 THEN ONCE_REWRITE_TAC[FUN_V3_DEFOR]
245 THEN REWRITE_TAC[v3_defor_v4]
246 THEN MP_TAC(SET_RULE`v=w:real^3\/ ~(v=w)`)
249 REWRITE_TAC[V3_DEFOR_V1_O_DEF]
250 THEN MATCH_MP_TAC CONTINUOUS_REAL_CONTINUOUS_ATREAL_COMPOSE
253 MATCH_MP_TAC REAL_CONTINUOUS_SUB
254 THEN ASM_SIMP_TAC[REAL_CONTINUOUS_CONST;REAL_CONTINUOUS_AT_ID];
256 MATCH_MP_TAC CONTINUOUS_ATREAL_WITHINREAL
258 THEN MATCH_MP_TAC EYYPQDW_CONTINUOUS_AT_X
259 THEN ASM_REWRITE_TAC[]
260 THEN REPLICATE_TAC (16-11) (POP_ASSUM MP_TAC)
261 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
262 THEN MRESA_TAC th[`r:real`])
263 THEN REWRITE_TAC[SET_RULE`a IN{a,b}`];
265 ASM_SIMP_TAC[CONTINUOUS_CONST;REAL_CONTINUOUS_AT_ID];
268 THEN ONCE_REWRITE_TAC[FUN_V3_DEFOR]
269 THEN REWRITE_TAC[v3_defor_v4]
270 THEN MP_TAC(SET_RULE`v=w:real^3\/ ~(v=w)`)
273 MATCH_MP_TAC V3_DEFOR_ID
274 THEN ASM_REWRITE_TAC[]]);;
279 let V3_DEFOR_IN_BALL_ANNULUS_DEFORMATION=prove_by_refinement(`&0< x1 /\ &0<x2 /\ &0< x6 /\
280 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1/\ v2 IN ball_annulus/\ ~(norm v2 = &2)
281 ==> ?e. &0< e/\ (!t. &0<t/\ t< e==> v3_defor_v4 a x1 x2 x6 v1 v2 v2 t IN ball_annulus)`,
283 REWRITE_TAC[ball_annulus;cball;DIFF;ball;IN_ELIM_THM;dist; VECTOR_ARITH`vec 0 -A= --A`;NORM_NEG;NORM_MUL;REAL_ARITH`~(a<b)<=> b<= a`]
285 THEN MRESAL_TAC (GEN_ALL NORM_GE_SQUARE)[`&2`;`v2:real^3`][REAL_ARITH`~(&2<= &0)/\ (a>=b<=> b<=a)`]
286 THEN POP_ASSUM MP_TAC
287 THEN ASM_REWRITE_TAC[DOT_SQUARE_NORM]
288 THEN MRESAL_TAC (GEN_ALL NORM_EQ_SQUARE)[`&2`;`v2:real^3`][REAL_ARITH`(&0<= &2)/\ (a>=b<=> b<=a)`]
289 THEN POP_ASSUM MP_TAC
290 THEN ASM_REWRITE_TAC[DOT_SQUARE_NORM]
291 THEN REPEAT STRIP_TAC
292 THEN MP_TAC(REAL_ARITH`&2 pow 2 <= x2 /\ ~(x2= &2 pow 2)==> &0 < (x2- &4)/ &2 `)
294 THEN MRESA_TAC (GEN_ALL UPS_X_POS_SEG_C)[`v1:real^3`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`(x2- &4)/ &2`]
295 THEN EXISTS_TAC`e:real`
296 THEN ASM_REWRITE_TAC[v3_defor_v4]
298 THEN POP_ASSUM(fun th-> STRIP_TAC
299 THEN MP_TAC(REAL_ARITH`&0< e/\ &0<t==> --e<t`)
301 THEN MRESA_TAC th[`t:real`])
302 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORMV3)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`x2-t:real`][SET_RULE`a IN{a,b}`;v3_defor_v1]
303 THEN POP_ASSUM MP_TAC
304 THEN REWRITE_TAC[GSYM v3_defor_v1]
306 THEN REWRITE_TAC[NORM_LE_SQUARE;NORM_GE_SQUARE]
307 THEN ASM_REWRITE_TAC[DOT_SQUARE_NORM]
308 THEN REPEAT RESA_TAC;
314 THEN REWRITE_TAC[REAL_ARITH`~(&2<= &0)/\ (a<=b<=> b>=a)`;NORM_GE_SQUARE]
316 THEN ASM_REWRITE_TAC[DOT_SQUARE_NORM]
318 THEN REAL_ARITH_TAC]);;
321 let NORM_POS_COLLINEAR=prove(`~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6
322 ==> &0< x1 /\ &0<x2 /\ &0< x6`,
324 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`v2:real^3`]
325 THEN MP_TAC(REAL_ARITH`&0<= norm (v1:real^3) pow 2==> norm v1 pow 2 = &0 \/ &0<norm v1 pow 2`)
326 THEN REWRITE_TAC[REAL_LE_POW_2]
327 THEN REWRITE_TAC[GSYM DOT_SQUARE_NORM]
329 THEN MRESAL_TAC (GEN_ALL NORM_EQ_SQUARE)[`&0`;`v1:real^3`][REAL_ARITH`&0<= &0/\ &0 pow 2= &0`;NORM_EQ_0]
330 THEN POP_ASSUM MP_TAC
331 THEN POP_ASSUM MP_TAC
332 THEN ASM_REWRITE_TAC[DOT_SQUARE_NORM]
334 THEN MP_TAC(REAL_ARITH`&0<= norm (v2:real^3) pow 2==> norm v2 pow 2 = &0 \/ &0<norm v2 pow 2`)
335 THEN REWRITE_TAC[REAL_LE_POW_2]
336 THEN REWRITE_TAC[GSYM DOT_SQUARE_NORM]
338 THEN MRESAL_TAC (GEN_ALL NORM_EQ_SQUARE)[`&0`;`v2:real^3`][REAL_ARITH`&0<= &0/\ &0 pow 2= &0`;NORM_EQ_0]
339 THEN POP_ASSUM MP_TAC
340 THEN POP_ASSUM MP_TAC
341 THEN ASM_REWRITE_TAC[DOT_SQUARE_NORM]
343 THEN MP_TAC(REAL_ARITH`&0<= norm (v1-v2:real^3) pow 2==> norm (v1-v2) pow 2 = &0 \/ &0<norm (v1-v2) pow 2`)
344 THEN REWRITE_TAC[REAL_LE_POW_2]
345 THEN REWRITE_TAC[GSYM DOT_SQUARE_NORM]
347 THEN MRESAL_TAC (GEN_ALL NORM_EQ_SQUARE)[`&0`;`v1-v2:real^3`][REAL_ARITH`&0<= &0/\ &0 pow 2= &0`;NORM_EQ_0]
348 THEN POP_ASSUM MP_TAC
349 THEN ASM_REWRITE_TAC[VECTOR_ARITH`a-b= vec 0<=> a=b`]
351 MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
352 THEN POP_ASSUM MP_TAC
353 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
354 THEN ASM_REWRITE_TAC[]
358 THEN ASM_REWRITE_TAC[DOT_SQUARE_NORM]
363 let HYPER_MM_COLLINEAR=prove_by_refinement(`scs_k_v39 s =k/\is_scs_v39 s /\
365 3<k/\ w l=v2/\ w (SUC l) =v1
366 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6
368 &0< x1 /\ &0<x2 /\ &0< x6 /\
369 ~(collinear{vec 0,v1,v2:real^3}) `,
370 [REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;]
372 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
373 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
374 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
377 THEN REPEAT DISCH_TAC;
382 SUBGOAL_THEN`((v2,v1):real^3#real^3) IN FF`ASSUME_TAC;
385 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
386 THEN EXISTS_TAC`l:num`
387 THEN ASM_REWRITE_TAC[SET_RULE`(a:num) IN (:num)`];
389 MP_TAC Local_lemmas.CVLF_LF_F
391 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,v1):real^3#real^3`]
392 THEN POP_ASSUM MP_TAC
393 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
395 THEN MP_TAC NORM_POS_COLLINEAR
397 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
398 THEN ASM_REWRITE_TAC[]]);;
404 let EYYPQDW_CONTINUOUS_LIFT_DIST=prove(`&0< x1 /\ &0<x2 /\ &0< x3 /\ &0<x4 /\ &0<x5 /\ &0< x6 /\
405 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6
407 /\ &0< ups_x x1 x3 x5
409 lift o (\x3. dist(v3_defor_v1 a v1 v2 x1 x2 x5 x6 x3,v)) continuous atreal (x3)`,
411 THEN SUBGOAL_THEN`lift o(\x3. dist(v3_defor_v1 a v1 v2 x1 x2 x5 x6 x3,v))= (lift o (\x. dist(x,v))) o(\x3. v3_defor_v1 a v1 v2 x1 x2 x5 x6 x3)`ASSUME_TAC
415 THEN MATCH_MP_TAC CONTINUOUS_ATREAL_COMPOSE
416 THEN MP_TAC EYYPQDW_CONTINUOUS_AT_X
417 THEN ASM_REWRITE_TAC[]
419 THEN MATCH_MP_TAC CONTINUOUS_AT_WITHIN
420 THEN ONCE_REWRITE_TAC[DIST_SYM]
421 THEN ASM_SIMP_TAC[CONTINUOUS_AT_LIFT_DIST]]);;
427 let EXISTS_SMALL_LE_CONST=prove(`&0< x1 /\ &0<x2 /\ &0< x6 /\
428 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a = -- &1 /\ c< dist(v2,w)
430 ?e. &0< e /\ (!t. &0<t /\ t<e ==> c<dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w))`,
432 THEN MP_TAC UPS_X_POS_SEG
434 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(--a< &0<=> &0<a)/\ a- &0=a`]
436 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_ID)[`a:real`;`v1:real^3`;`x1:real`;`x6:real`;`x2:real`;`v2:real^3`][REAL_ARITH`(--a< &0<=> &0<a)/\ a- &0=a`]
437 THEN MP_TAC(REAL_ARITH`c< dist(v2,w:real^3)==> &0< (dist(v2,w:real^3)- c )/ &2/\ c< dist (v2,w) - (dist (v2,w) - c) / &2`)
439 THEN MRESAL_TAC (GEN_ALL EYYPQDW_CONTINUOUS_LIFT_DIST)[`x2:real`;`a:real`;`v1:real^3`;`v2:real^3`;`x1:real`;`x2:real`;`x6:real`;`x6:real`;`w:real^3`;`x2:real`][SET_RULE`A IN {A, B}`;continuous_atreal;DIST_LIFT;o_DEF;GSYM REAL_ABS_BETWEEN]
440 THEN POP_ASSUM (fun th-> MRESA_TAC th[`(dist(v2,w:real^3)- c )/ &2`])
441 THEN POP_ASSUM MP_TAC
443 THEN EXISTS_TAC`d:real`
444 THEN ASM_REWRITE_TAC[]
446 THEN POP_ASSUM(fun th-> STRIP_TAC
447 THEN MP_TAC(REAL_ARITH` &0< d/\ &0<t ==> --d<t`)
449 THEN MRESAL_TAC th[`x2-t:real`][REAL_ARITH`x2 - d < x2 - t /\ x2 - t < x2 + d <=> --d<t/\ t<d`])
451 THEN REAL_ARITH_TAC);;
456 let EXISTS_SMALL_LE_CONST_V1=prove(`&0< x1 /\ &0<x2 /\ &0< x6 /\
457 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a = -- &1 /\ c< dist(v2,w)
459 ?e. &0< e /\ (!t. --e<t /\ t<e ==> c<dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w))`,
461 THEN MP_TAC UPS_X_POS_SEG
463 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(--a< &0<=> &0<a)/\ a- &0=a`]
465 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_ID)[`a:real`;`v1:real^3`;`x1:real`;`x6:real`;`x2:real`;`v2:real^3`][REAL_ARITH`(--a< &0<=> &0<a)/\ a- &0=a`]
466 THEN MP_TAC(REAL_ARITH`c< dist(v2,w:real^3)==> &0< (dist(v2,w:real^3)- c )/ &2/\ c< dist (v2,w) - (dist (v2,w) - c) / &2`)
468 THEN MRESAL_TAC (GEN_ALL EYYPQDW_CONTINUOUS_LIFT_DIST)[`x2:real`;`a:real`;`v1:real^3`;`v2:real^3`;`x1:real`;`x2:real`;`x6:real`;`x6:real`;`w:real^3`;`x2:real`][SET_RULE`A IN {A, B}`;continuous_atreal;DIST_LIFT;o_DEF;GSYM REAL_ABS_BETWEEN]
469 THEN POP_ASSUM (fun th-> MRESA_TAC th[`(dist(v2,w:real^3)- c )/ &2`])
470 THEN POP_ASSUM MP_TAC
472 THEN EXISTS_TAC`d:real`
473 THEN ASM_REWRITE_TAC[]
475 THEN POP_ASSUM(fun th-> STRIP_TAC
476 THEN MRESAL_TAC th[`x2-t:real`][REAL_ARITH`x2 - d < x2 - t /\ x2 - t < x2 + d <=> --d<t/\ t<d`])
478 THEN REAL_ARITH_TAC);;
482 let DEFORMATION_DIST_LE_V3_DEFOR_A=prove(`is_scs_v39 s /\
485 3<k /\ w l=v2/\ w (SUC l) =v1
486 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
488 (!i. ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k) ==> scs_a_v39 s l i < dist (v2,w i))
489 ==> (!i. ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k) ==> ?e. &0< e/\
490 (!t. &0< t/\ t< e ==> scs_a_v39 s l i < dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)))`,
492 THEN MP_TAC HYPER_MM_COLLINEAR
494 THEN REPEAT STRIP_TAC
495 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST
496 THEN ASM_REWRITE_TAC[]
497 THEN REPLICATE_TAC (16-10)(POP_ASSUM MP_TAC)
498 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
499 THEN MRESA_TAC th[`i:num`]));;
503 let DEFORMATION_DIST_LE_V3_DEFOR_A_COM=prove_by_refinement(`is_scs_v39 s /\
506 3<k /\ w l=v2/\ w (SUC l) =v1
507 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
509 (!i. ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k) ==> scs_a_v39 s l i < dist (v2,w i))
511 (!t i. &0< t/\ t< e /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k) ==> scs_a_v39 s l i < dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))`,
514 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A
516 THEN POP_ASSUM MP_TAC
517 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
518 THEN REWRITE_TAC[SKOLEM_THM]
520 THEN ABBREV_TAC`e1= inf {(e:num->real) i| i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`
521 THEN EXISTS_TAC`e1:real`
522 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`ASSUME_TAC;
524 MATCH_MP_TAC FINITE_SUBSET
525 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
528 MATCH_MP_TAC FINITE_IMAGE
529 THEN REWRITE_TAC[FINITE_NUMSEG];
531 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_ELIM_THM]
534 THEN EXISTS_TAC`i:num`
535 THEN ASM_REWRITE_TAC[IN_NUMSEG]
536 THEN REPLICATE_TAC (16-12)(POP_ASSUM MP_TAC)
539 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)} = {})`ASSUME_TAC;
541 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
542 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(l MOD k =0)`)
545 EXISTS_TAC`(e:num->real)1`
547 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
548 THEN MP_TAC(ARITH_RULE`3<k==> 1<k/\ 2<k /\ ~(k=0)/\ SUC 1=2/\ ~(0=1)/\ ~(0=2)`)
550 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
551 THEN MRESA_TAC MOD_LT[`2`;`k:num`];
553 MP_TAC(SET_RULE`l MOD k=1\/ ~(l MOD k= 1 )`)
556 EXISTS_TAC`(e:num->real)2`
558 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
559 THEN MP_TAC(ARITH_RULE`3<k==> 1<k/\ 2<k /\ ~(k=0)/\ SUC 1=2/\ ~(1=2)/\ ~(1=3)/\ SUC 2=3`)
561 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
562 THEN MRESA_TAC MOD_LT[`3`;`k:num`];
564 EXISTS_TAC`(e:num->real)0`
566 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
567 THEN MP_TAC(ARITH_RULE`3<k==> 0<k/\ 1<k /\ ~(k=0)/\ SUC 1=2/\ ~(1=2)/\ ~(1=3)/\ SUC 0=1`)
569 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
570 THEN MRESA_TAC MOD_LT[`1`;`k:num`];
574 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i| i < k/\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`;`&0`]
575 THEN REWRITE_TAC[IN_ELIM_THM]
577 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
578 THEN REPLICATE_TAC (20-11) (POP_ASSUM MP_TAC)
579 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
580 THEN MRESA_TAC th[`i:num`]);
583 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i| i < k/\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`;`t:real`]
584 THEN POP_ASSUM MP_TAC
585 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`ASSUME_TAC;
587 REWRITE_TAC[IN_ELIM_THM]
588 THEN EXISTS_TAC`i MOD k`
589 THEN ASM_REWRITE_TAC[]
590 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
592 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
593 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
594 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
595 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1];
598 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
599 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
601 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
602 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
603 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
604 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1]
605 THEN REPLICATE_TAC (27-11) (POP_ASSUM MP_TAC)
606 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
607 THEN MRESA_TAC th[`i:num MOD k`])
608 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
610 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
612 THEN POP_ASSUM MP_TAC
613 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
614 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
615 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
616 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])]);;
620 let DEFORMATION_DIST_LE_V3_DEFOR_A_SUC=prove(`is_scs_v39 s /\
623 3<k /\ w l=v2/\ w (SUC l) =v1
624 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
626 (!i. ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k) ==> scs_a_v39 s l i < dist (v2,w i))
627 ==> (!i. ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k) ==> ?e. &0< e/\
628 (!t. &0< t/\ t< e ==> scs_a_v39 s l i < dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)))`,
630 THEN MP_TAC HYPER_MM_COLLINEAR
632 THEN REPEAT STRIP_TAC
633 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST
634 THEN ASM_REWRITE_TAC[]
635 THEN REPLICATE_TAC (16-10)(POP_ASSUM MP_TAC)
636 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
637 THEN MRESA_TAC th[`i:num`]));;
641 let DEFORMATION_DIST_LE_V3_DEFOR_A_COM_SUC=prove_by_refinement(
645 3<k /\ w l=v2/\ w (SUC l) =v1
646 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
648 (!i. ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k) ==> scs_a_v39 s l i < dist (v2,w i))
650 (!t i. &0< t/\ t< e /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k) ==> scs_a_v39 s l i < dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))`,
653 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_SUC
655 THEN POP_ASSUM MP_TAC
656 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
657 THEN REWRITE_TAC[SKOLEM_THM]
659 THEN ABBREV_TAC`e1= inf {(e:num->real) i| i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`
660 THEN EXISTS_TAC`e1:real`
661 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`ASSUME_TAC;
663 MATCH_MP_TAC FINITE_SUBSET
664 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
667 MATCH_MP_TAC FINITE_IMAGE
668 THEN REWRITE_TAC[FINITE_NUMSEG];
670 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_ELIM_THM]
673 THEN EXISTS_TAC`i:num`
674 THEN ASM_REWRITE_TAC[IN_NUMSEG]
675 THEN REPLICATE_TAC (16-12)(POP_ASSUM MP_TAC)
678 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)} = {})`ASSUME_TAC;
680 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
681 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(l MOD k =0)`)
685 EXISTS_TAC`(e:num->real)2`
687 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
688 THEN MP_TAC(ARITH_RULE`3<k==> 0<k/\ 1<k/\ 2<k /\ ~(k=0)/\ SUC 1=2/\ ~(0=1)/\ ~(0=2)/\ SUC 0=1/\ ~(1=2)`)
690 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
691 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
692 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
693 THEN MRESA_TAC (GEN_ALL Zithlqn.IMP_SUC_MOD_EQ)[`l:num`;`0:num`;`k:num`];
695 MP_TAC(SET_RULE`l MOD k=1\/ ~(l MOD k= 1 )`)
698 EXISTS_TAC`(e:num->real)3`
700 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
701 THEN MP_TAC(ARITH_RULE`3<k==> 0<k/\ 1<k/\ 2<k/\ 3<k /\ ~(k=0)/\ SUC 1=2/\ ~(0=1)/\ ~(0=2)/\ SUC 0=1/\ ~(1=2)/\ ~(1=3)/\ ~(2=3)`)
703 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
704 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
705 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
706 THEN MRESA_TAC MOD_LT[`3`;`k:num`]
707 THEN MRESA_TAC (GEN_ALL Zithlqn.IMP_SUC_MOD_EQ)[`l:num`;`1:num`;`k:num`];
709 EXISTS_TAC`(e:num->real)1`
711 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
712 THEN MP_TAC(ARITH_RULE`3<k==> 0<k/\ 1<k/\ 2<k/\ 3<k /\ ~(k=0)/\ SUC 1=2/\ ~(0=1)/\ ~(0=2)/\ SUC 0=1/\ ~(1=2)/\ ~(1=3)/\ ~(2=3)`)
714 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
715 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
716 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
717 THEN MRESA_TAC MOD_LT[`3`;`k:num`]
718 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l:num`;`0:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`];
722 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i| i < k/\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`;`&0`]
723 THEN REWRITE_TAC[IN_ELIM_THM]
725 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
726 THEN REPLICATE_TAC (20-11) (POP_ASSUM MP_TAC)
727 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
728 THEN MRESA_TAC th[`i:num`]);
731 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i| i < k/\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`;`t:real`]
732 THEN POP_ASSUM MP_TAC
733 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`ASSUME_TAC;
735 REWRITE_TAC[IN_ELIM_THM]
736 THEN EXISTS_TAC`i MOD k`
737 THEN ASM_REWRITE_TAC[]
738 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
740 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
741 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
742 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
743 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1];
746 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
747 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
749 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
750 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
751 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
752 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1]
753 THEN REPLICATE_TAC (27-11) (POP_ASSUM MP_TAC)
754 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
755 THEN MRESA_TAC th[`i:num MOD k`])
756 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
758 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
760 THEN POP_ASSUM MP_TAC
761 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
762 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
763 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
764 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])]);;
769 let EXISTS_SMALL_LT_CONST=prove(`&0< x1 /\ &0<x2 /\ &0< x6 /\
770 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a = -- &1 /\ dist(v2,w)<c
772 ?e. &0< e /\ (!t. &0<t /\ t<e ==> dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w)<c)`,
774 THEN MP_TAC UPS_X_POS_SEG
776 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(--a< &0<=> &0<a)/\ a- &0=a`]
778 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_ID)[`a:real`;`v1:real^3`;`x1:real`;`x6:real`;`x2:real`;`v2:real^3`][REAL_ARITH`(--a< &0<=> &0<a)/\ a- &0=a`]
779 THEN MP_TAC(REAL_ARITH`dist(v2,w:real^3)<c==> &0< (c-dist(v2,w:real^3))/ &2/\ dist (v2,w) + (c-dist (v2,w) ) / &2<c`)
781 THEN MRESAL_TAC (GEN_ALL EYYPQDW_CONTINUOUS_LIFT_DIST)[`x2:real`;`a:real`;`v1:real^3`;`v2:real^3`;`x1:real`;`x2:real`;`x6:real`;`x6:real`;`w:real^3`;`x2:real`][SET_RULE`A IN {A, B}`;continuous_atreal;DIST_LIFT;o_DEF;GSYM REAL_ABS_BETWEEN]
782 THEN POP_ASSUM (fun th-> MRESA_TAC th[`(c-dist(v2,w:real^3))/ &2`])
783 THEN POP_ASSUM MP_TAC
785 THEN EXISTS_TAC`d:real`
786 THEN ASM_REWRITE_TAC[]
788 THEN POP_ASSUM(fun th-> STRIP_TAC
789 THEN MP_TAC(REAL_ARITH` &0< d/\ &0<t ==> --d<t`)
791 THEN MRESAL_TAC th[`x2-t:real`][REAL_ARITH`x2 - d < x2 - t /\ x2 - t < x2 + d <=> --d<t/\ t<d`])
793 THEN REAL_ARITH_TAC);;
796 let EXISTS_SMALL_LT_CONST_V1=prove(`&0< x1 /\ &0<x2 /\ &0< x6 /\
797 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a = -- &1 /\ dist(v2,w)<c
799 ?e. &0< e /\ (!t. --e <t /\ t<e ==> dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w)<c)`,
801 THEN MP_TAC UPS_X_POS_SEG
803 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(--a< &0<=> &0<a)/\ a- &0=a`]
805 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_ID)[`a:real`;`v1:real^3`;`x1:real`;`x6:real`;`x2:real`;`v2:real^3`][REAL_ARITH`(--a< &0<=> &0<a)/\ a- &0=a`]
806 THEN MP_TAC(REAL_ARITH`dist(v2,w:real^3)<c==> &0< (c-dist(v2,w:real^3))/ &2/\ dist (v2,w) + (c-dist (v2,w) ) / &2<c`)
808 THEN MRESAL_TAC (GEN_ALL EYYPQDW_CONTINUOUS_LIFT_DIST)[`x2:real`;`a:real`;`v1:real^3`;`v2:real^3`;`x1:real`;`x2:real`;`x6:real`;`x6:real`;`w:real^3`;`x2:real`][SET_RULE`A IN {A, B}`;continuous_atreal;DIST_LIFT;o_DEF;GSYM REAL_ABS_BETWEEN]
809 THEN POP_ASSUM (fun th-> MRESA_TAC th[`(c-dist(v2,w:real^3))/ &2`])
810 THEN POP_ASSUM MP_TAC
812 THEN EXISTS_TAC`d:real`
813 THEN ASM_REWRITE_TAC[]
815 THEN POP_ASSUM(fun th-> STRIP_TAC
816 THEN MRESAL_TAC th[`x2-t:real`][REAL_ARITH`x2 - d < x2 - t /\ x2 - t < x2 + d <=> --d<t/\ t<d`])
818 THEN REAL_ARITH_TAC);;
822 let DEFORMATION_DIST_LE_V3_DEFOR_B_SUC=prove_by_refinement(
824 3<k /\ is_scs_v39 s /\
826 w l=v2/\ w (SUC l) =v1
827 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
828 /\ (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
829 ==> (!i. scs_diag k l i ==> ?e. &0< e/\
830 (!t. &0< t/\ t< e ==> dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)<scs_b_v39 s l i)) `,
832 THEN MP_TAC HYPER_MM_COLLINEAR
834 THEN REPEAT STRIP_TAC
835 THEN MATCH_MP_TAC EXISTS_SMALL_LT_CONST
836 THEN ASM_REWRITE_TAC[]
840 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)`)
842 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
844 THEN SUBGOAL_THEN`v2 IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
846 REWRITE_TAC[IN_ELIM_THM;IMAGE]
847 THEN EXISTS_TAC`l:num`
848 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
850 SUBGOAL_THEN`w i IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
852 REWRITE_TAC[IN_ELIM_THM;IMAGE]
853 THEN EXISTS_TAC`i:num`
854 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
856 MP_TAC(SET_RULE`v2 IN IMAGE w (:num)/\ w i IN IMAGE w (:num)/\ IMAGE w (:num) SUBSET ball_annulus ==> v2 IN ball_annulus/\ w i IN ball_annulus`)
857 THEN ASM_REWRITE_TAC[]
858 THEN REWRITE_TAC[IN_ELIM_THM;DIFF;ball_annulus;cball;]
859 THEN REPEAT STRIP_TAC
860 THEN MRESA_TAC DIST_TRIANGLE[`v2:real^3`;`vec 0:real^3`;`(w:num->real^3) i`]
861 THEN MP_TAC(REAL_ARITH`dist (v2,vec 0) <= &2 * h0/\ dist (vec 0,w i) <= &2 * h0/\ dist (v2,w i) <= dist (v2,vec 0) + dist (vec 0,w i)
862 ==> dist (v2,(w:num->real^3) i)<= &4 *h0`)
863 THEN ASM_REWRITE_TAC[]
864 THEN ONCE_REWRITE_TAC[DIST_SYM]
865 THEN ASM_REWRITE_TAC[]
866 THEN ONCE_REWRITE_TAC[DIST_SYM]
867 THEN REPLICATE_TAC (53-41)(POP_ASSUM MP_TAC)
868 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
869 THEN MRESA_TAC th[`i:num`])
870 THEN REPLICATE_TAC (2)(POP_ASSUM MP_TAC)
871 THEN REAL_ARITH_TAC]);;
877 let xrr_decreasing_lt = prove_by_refinement(
878 `!y1 y1' y2 y6. &2 <= y1 /\ &2 <= y1' /\ &2 <= y2 /\ &2 <= y6 /\ y2 <= &2 * h0 /\ y1 < y1' ==>
879 xrr y1' y2 y6 < xrr y1 y2 y6`,
881 [ REPEAT WEAKER_STRIP_TAC;
882 INTRO_TAC REAL_MVT_SIMPLE [`(\q. xrr q y2 y6)`;`\q. ( -- &4 * ((q*q + y6*y6 - y2*y2)/ (q pow 2 * y2)))`;`y1`;`y1'`];
883 REWRITE_TAC[IN_REAL_INTERVAL];
886 BY(ASM_TAC THEN REAL_ARITH_TAC);
887 REPEAT WEAKER_STRIP_TAC;
888 MATCH_MP_TAC HAS_REAL_DERIVATIVE_ATREAL_WITHIN;
889 INTRO_TAC derived_form_xrr_wrt_y1 [`x`;`y2`;`y6`];
890 REWRITE_TAC[Calc_derivative.derived_form;WITHINREAL_UNIV];
891 DISCH_THEN MATCH_MP_TAC;
892 BY(ASM_TAC THEN REAL_ARITH_TAC);
893 REPEAT WEAKER_STRIP_TAC;
894 ONCE_REWRITE_TAC [arith `x < y <=> &0 < y - x`];
895 RULE_ASSUM_TAC(ONCE_REWRITE_RULE[arith `x' - x = (-- &4 * u/v) * z <=> x - x' = &4 * u/ v * z`]);
897 GMATCH_SIMP_TAC REAL_LT_MUL;
898 GMATCH_SIMP_TAC REAL_LT_MUL;
899 GMATCH_SIMP_TAC REAL_LT_DIV;
900 GMATCH_SIMP_TAC REAL_LT_MUL;
901 REWRITE_TAC[GSYM Trigonometry2.NOT_ZERO_EQ_POW2_LT];
902 ENOUGH_TO_SHOW_TAC ` &0 < x * x + y6 * y6 - y2 * y2`;
903 BY(ASM_TAC THEN REAL_ARITH_TAC);
904 MATCH_MP_TAC REAL_LT_TRANS;
905 TYPIFY `&2 * &2 + &2 * &2 - (&2 * h0) * (&2 * h0)` EXISTS_TAC;
907 BY(REWRITE_TAC[Sphere.h0] THEN REAL_ARITH_TAC);
908 MATCH_MP_TAC (arith `x < x' /\ y <= y' /\ z' <= z ==> x + y - z < x' + y' - z'`);
909 GMATCH_SIMP_TAC Misc_defs_and_lemmas.ABS_SQUARE_LE;
910 GMATCH_SIMP_TAC Misc_defs_and_lemmas.ABS_SQUARE_LE;
911 GMATCH_SIMP_TAC Misc_defs_and_lemmas.ABS_SQUARE;
912 BY(ASM_TAC THEN REAL_ARITH_TAC)
920 let exp_aff_gt_by_dot=prove_by_refinement(`!x:real^3 v:real^3 u:real^3.
922 ==> aff_gt {x,v} {u}={w:real^3| (w-x) dot (e2_fan x v u)= &0 /\ &0 < (w-x) dot (e1_fan x v u) }`,
923 let CROSS_LAGRANGE1 = prove
924 (`!x y z. (x cross y) cross z = (x dot z) % y - (z dot y) % x`,
926 [REPEAT STRIP_TAC THEN MP_TAC(ISPECL[`x:real^3`;`v:real^3`;`u:real^3`]th3) THEN RES_TAC
927 THEN MP_TAC(ISPECL[`x:real^3`;`v:real^3`;`u:real^3`]AFF_GT_2_1) THEN RESA_TAC
928 THEN MP_TAC(ISPECL[`x:real^3`;`v:real^3`;`u:real^3`]properties_coordinate) THEN RESA_TAC
929 THEN REWRITE_TAC[EXTENSION;IN_ELIM_THM] THEN GEN_TAC THEN EQ_TAC;
931 STRIP_TAC THEN ASM_REWRITE_TAC[VECTOR_ARITH`(a % x + b +c) -x= (a- &1)% x + b + c `] THEN
932 REMOVE_ASSUM_TAC THEN SYM_ASSUM_TAC THEN REWRITE_TAC[VECTOR_ARITH`((a-(a+b+c)) % x + b % v +c % u)= b % (v-x) + c % (u-x)`]
933 THEN ASM_REWRITE_TAC[DOT_LADD;DOT_LMUL]
934 THEN REDUCE_ARITH_TAC
935 THEN ASM_MESON_TAC[REAL_LT_MUL] ;
936 STRIP_TAC THEN POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC THEN DISCH_THEN(LABEL_TAC"a")
937 THEN DISCH_THEN(LABEL_TAC"b")
938 THEN MP_TAC(ISPECL[`e1_fan (x:real^3) (v:real^3) (u:real^3)`;`e2_fan (x:real^3)( v:real^3) (u:real^3)`;
939 `e3_fan (x:real^3) (v:real^3) (u:real^3)`;]ORTHONORMAL_IMP_SPANNING) THEN ASM_REWRITE_TAC[SPAN_3;EXTENSION]
940 THEN DISCH_TAC THEN POP_ASSUM(fun th-> MP_TAC(ISPEC`(x':real^3)-(x:real^3)`th)) THEN REWRITE_TAC[SET_RULE`(a:real^3) IN (:real^3)`;IN_ELIM_THM] THEN RES_TAC THEN REMOVE_THEN "a" MP_TAC THEN ASM_REWRITE_TAC[DOT_LADD;DOT_LMUL]
941 THEN POP_ASSUM MP_TAC THEN DISCH_THEN(LABEL_TAC"c")
942 THEN FIND_ASSUM(MP_TAC)`orthonormal (e1_fan (x:real^3) (v:real^3) (u:real^3)) (e2_fan x v u) (e3_fan x v u)`
943 THEN REWRITE_TAC[orthonormal] THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THEN ASM_REWRITE_TAC[DOT_SYM]
944 THEN REDUCE_ARITH_TAC
945 THEN DISCH_TAC THEN REMOVE_THEN "c" MP_TAC THEN ASM_REWRITE_TAC[] THEN REDUCE_VECTOR_TAC THEN DISCH_THEN (LABEL_TAC"a")
946 THEN REMOVE_THEN "b" MP_TAC THEN ASM_REWRITE_TAC[DOT_LADD;DOT_LMUL;] THEN REWRITE_TAC[DOT_SYM] THEN ASM_REWRITE_TAC[]
947 THEN REDUCE_ARITH_TAC
948 THEN DISCH_TAC THEN REMOVE_THEN "a" MP_TAC
949 THEN ASM_REWRITE_TAC[e1_fan;e2_fan;CROSS_LMUL;VECTOR_ARITH`a% b% v=(a*b)%v`;CROSS_LAGRANGE1]
950 THEN REDUCE_VECTOR_TAC THEN REWRITE_TAC[VECTOR_ARITH`a%(x- b % v)+ c % v=(c- a* b) % v+ a % x `;
951 e3_fan;VECTOR_ARITH`a% b% v=(a*b)%v`]
955 ((u':real) * inv (norm (inv (norm ((v:real^3) - (x:real^3))) % (v - x) cross ((u:real^3) - x)))) *
956 (inv (norm (v - x)) % (v - x) dot (u - x))) *
958 ((u':real) * inv (norm (e3_fan (x:real^3) (v:real^3) (u:real^3) cross (u - x)))))`
961 ((u':real) * inv (norm (inv (norm ((v:real^3) - (x:real^3))) % (v - x) cross ((u:real^3) - x)))) *
962 (inv (norm (v - x)) % (v - x) dot (u - x))) *
965 ` ((u':real) * inv (norm (e3_fan (x:real^3) (v:real^3) (u:real^3) cross (u - x))))`
969 SUBGOAL_THEN `~(collinear {vec 0, v-x, u-x})==> ~((e3_fan (x:real^3) (v:real^3) (u:real^3)) cross ((u:real^3)-(x:real^3))= vec 0)` ASSUME_TAC;
971 MATCH_MP_TAC MONO_NOT THEN REWRITE_TAC[e3_fan;CROSS_LMUL]
972 THEN DISCH_TAC THEN MP_TAC(ISPECL [`v:real^3`; `x:real^3`] imp_inv_norm_not_zero_fan)
973 THEN ASM_REWRITE_TAC[] THEN DISCH_TAC THEN
974 MP_TAC(ISPECL [`inv(norm((v:real^3)-(x:real^3)))`; `((v:real^3) -(x:real^3)) cross ((u:real^3)-(x:real^3))`; `(vec 0):real^3`] VECTOR_MUL_LCANCEL_IMP)
975 THEN ASM_REWRITE_TAC[VECTOR_MUL_RZERO;CROSS_EQ_0 ];
977 POP_ASSUM MP_TAC THEN REWRITE_TAC[GSYM COLLINEAR_3]
978 THEN GEN_REWRITE_TAC(LAND_CONV o LAND_CONV o RAND_CONV o ONCE_DEPTH_CONV)[SET_RULE`{a,b,c}={b,a,c}`] THEN RED_TAC
980 MP_TAC(ISPECL [`(e3_fan (x:real^3) (v:real^3) (u:real^3)) cross ((u:real^3)-(x:real^3))`; `((vec 0):real^3)`] imp_norm_gl_zero_fan)
981 THEN REDUCE_VECTOR_TAC THEN RES_TAC THEN
982 MP_TAC(ISPECL[`u':real`;`inv (norm ((e3_fan (x:real^3) (v:real^3) (u:real^3)) cross ((u:real^3)-(x:real^3))))`]
983 REAL_LT_MUL) THEN RES_TAC THEN POP_ASSUM MATCH_MP_TAC THEN POP_ASSUM MP_TAC
986 STRIP_TAC THENL[REAL_ARITH_TAC;
987 REWRITE_TAC[e3_fan] THEN POP_ASSUM MP_TAC THEN VECTOR_ARITH_TAC]
991 let exp_aff_by_dot=prove_by_refinement(
992 `!x:real^3 v:real^3 u:real^3.
994 ==> aff {x,v,u}={w:real^3| (w-x) dot (e2_fan x v u)= &0 }`,
995 let CROSS_LAGRANGE1 = prove
996 (`!x y z. (x cross y) cross z = (x dot z) % y - (z dot y) % x`,
999 REPEAT STRIP_TAC THEN MP_TAC(ISPECL[`x:real^3`;`v:real^3`;`u:real^3`]th3) THEN RES_TAC
1000 THEN ASM_SIMP_TAC[aff;aff;Collect_geom2.AFFINE_HULL_3]
1001 THEN MP_TAC(ISPECL[`x:real^3`;`v:real^3`;`u:real^3`]properties_coordinate) THEN RESA_TAC
1002 THEN REWRITE_TAC[EXTENSION;IN_ELIM_THM] THEN GEN_TAC THEN EQ_TAC;
1004 STRIP_TAC THEN ASM_REWRITE_TAC[VECTOR_ARITH`(a % x + b +c) -x= (a- &1)% x + b + c `] THEN
1005 REMOVE_ASSUM_TAC THEN SYM_ASSUM_TAC THEN REWRITE_TAC[VECTOR_ARITH`((a-(a+b+c)) % x + b % v +c % u)= b % (v-x) + c % (u-x)`]
1006 THEN ASM_REWRITE_TAC[DOT_LADD;DOT_LMUL]
1007 THEN REDUCE_ARITH_TAC
1008 THEN ASM_MESON_TAC[REAL_LT_MUL] ;
1010 STRIP_TAC THEN POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC THEN DISCH_THEN(LABEL_TAC"a")
1011 THEN DISCH_THEN(LABEL_TAC"b")
1012 THEN MP_TAC(ISPECL[`e1_fan (x:real^3) (v:real^3) (u:real^3)`;`e2_fan (x:real^3)( v:real^3) (u:real^3)`;
1013 `e3_fan (x:real^3) (v:real^3) (u:real^3)`;]ORTHONORMAL_IMP_SPANNING) THEN ASM_REWRITE_TAC[SPAN_3;EXTENSION]
1014 THEN DISCH_TAC THEN POP_ASSUM(fun th-> MP_TAC(ISPEC`(x':real^3)-(x:real^3)`th)) THEN REWRITE_TAC[SET_RULE`(a:real^3) IN (:real^3)`;IN_ELIM_THM] THEN RES_TAC THEN REMOVE_THEN "a" MP_TAC THEN ASM_REWRITE_TAC[DOT_LADD;DOT_LMUL]
1015 THEN POP_ASSUM MP_TAC THEN DISCH_THEN(LABEL_TAC"c")
1016 THEN FIND_ASSUM(MP_TAC)`orthonormal (e1_fan (x:real^3) (v:real^3) (u:real^3)) (e2_fan x v u) (e3_fan x v u)`
1017 THEN REWRITE_TAC[orthonormal] THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THEN ASM_REWRITE_TAC[DOT_SYM]
1018 THEN REDUCE_ARITH_TAC
1019 THEN DISCH_TAC THEN REMOVE_THEN "c" MP_TAC THEN ASM_REWRITE_TAC[] THEN REDUCE_VECTOR_TAC
1020 THEN DISCH_THEN (LABEL_TAC"a")
1021 THEN REMOVE_THEN "b" MP_TAC THEN ASM_REWRITE_TAC[DOT_LADD;DOT_LMUL;] THEN REWRITE_TAC[DOT_SYM] THEN ASM_REWRITE_TAC[]
1022 THEN REDUCE_ARITH_TAC
1023 THEN DISCH_TAC THEN REMOVE_THEN "a" MP_TAC
1024 THEN ASM_REWRITE_TAC[]
1025 THEN REDUCE_VECTOR_TAC
1026 THEN ASM_REWRITE_TAC[e1_fan;e2_fan;CROSS_LMUL;VECTOR_ARITH`a% b% v=(a*b)%v`;CROSS_LAGRANGE1]
1027 THEN REDUCE_VECTOR_TAC
1028 THEN REWRITE_TAC[VECTOR_ARITH`a%(x- b % v)+ c % v=(c- a* b) % v+ a % x `;
1029 e3_fan;VECTOR_ARITH`a% b% v=(a*b)%v`]
1034 ((u':real) * inv (norm (inv (norm ((v:real^3) - (x:real^3))) % (v - x) cross ((u:real^3) - x)))) *
1035 (inv (norm (v - x)) % (v - x) dot (u - x))) *
1036 inv (norm (v - x)))+
1037 ((u':real) * inv (norm (e3_fan (x:real^3) (v:real^3) (u:real^3) cross (u - x)))))`
1040 ((u':real) * inv (norm (inv (norm ((v:real^3) - (x:real^3))) % (v - x) cross ((u:real^3) - x)))) *
1041 (inv (norm (v - x)) % (v - x) dot (u - x))) *
1042 inv (norm (v - x)))`
1044 ` ((u':real) * inv (norm (e3_fan (x:real^3) (v:real^3) (u:real^3) cross (u - x))))`;
1051 THEN POP_ASSUM MP_TAC
1052 THEN VECTOR_ARITH_TAC;
1059 let IN_AFF_EQ_DOT_E2_FAN=prove(` ~collinear {vec 0,x,y}
1061 e2_fan (vec 0) x y dot z = &0 <=> z IN aff {vec 0, x, y}) `,
1063 THEN ONCE_REWRITE_TAC[DOT_SYM]
1064 THEN ASM_SIMP_TAC[exp_aff_by_dot;IN_ELIM_THM]
1065 THEN REDUCE_VECTOR_TAC);;
1070 let OPEN_RELA_AFF_GT=prove_by_refinement(` ~collinear {vec 0,z,x}/\ ~collinear {vec 0,x,y} /\ z IN aff_gt {vec 0} {x,y:real^3} ==> ?e. &0< e/\ ball(z,e) INTER aff{vec 0, x,z} SUBSET aff_gt {vec 0} {x,y}`,
1073 THEN POP_ASSUM MP_TAC
1074 THEN ASM_SIMP_TAC[Planarity.aff_gt_inter_aff_gt;exp_aff_gt_by_dot;]
1075 THEN POP_ASSUM MP_TAC
1076 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
1078 THEN ASM_SIMP_TAC[Planarity.aff_gt_inter_aff_gt;exp_aff_gt_by_dot;Conforming.aff_3_rep_cross_dot;INTER;IN_ELIM_THM;VECTOR_ARITH`a- vec 0=a`;exp_aff_by_dot]
1079 THEN ONCE_REWRITE_TAC[DOT_SYM]
1080 THEN REPEAT STRIP_TAC
1081 THEN MP_TAC(REAL_ARITH`&0< e1_fan (vec 0:real^3) y x dot z ==> &0<(e1_fan (vec 0) y x dot z)/ &2/\ &0< e1_fan (vec 0) y x dot z - (e1_fan (vec 0) y x dot z) / &2`)
1083 THEN MP_TAC(REAL_ARITH`&0< e1_fan (vec 0:real^3) x y dot z ==> &0<(e1_fan (vec 0) x y dot z)/ &2/\ &0< e1_fan (vec 0) x y dot z - (e1_fan (vec 0) x y dot z) / &2`)
1085 THEN MRESAL_TAC (GEN_ALL CONTINUOUS_AT_LIFT_DOT)[`e1_fan (vec 0:real^3) y x`;`z:real^3`][CONTINUOUS_AT_LIFT_RANGE;GSYM REAL_ABS_BETWEEN]
1086 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(e1_fan (vec 0) y x dot z) / &2`])
1087 THEN MRESAL_TAC (GEN_ALL CONTINUOUS_AT_LIFT_DOT)[`e1_fan (vec 0:real^3) x y`;`z:real^3`][CONTINUOUS_AT_LIFT_RANGE;GSYM REAL_ABS_BETWEEN;SUBSET;IN_ELIM_THM;ball;]
1088 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(e1_fan (vec 0) x y dot z) / &2`])
1089 THEN EXISTS_TAC`min d d'`
1090 THEN MP_TAC(REAL_ARITH`&0< d/\ &0< d' ==> &0< min d d'`)
1092 THEN ONCE_REWRITE_TAC[DIST_SYM]
1093 THEN REWRITE_TAC[dist]
1095 THEN POP_ASSUM MP_TAC
1096 THEN POP_ASSUM(fun th->
1098 THEN POP_ASSUM(fun th1-> STRIP_TAC THEN STRIP_TAC THEN STRIP_TAC
1100 THEN MP_TAC(REAL_ARITH`norm (x' - z) < min d d' /\ &0<d/\ &0< d' ==> norm(x'-z)< d/\ norm(x'-z:real^3)< d'`)
1102 THEN MRESA_TAC th1[`x':real^3`])
1103 THEN MRESA_TAC th[`x':real^3`])
1104 THEN MP_TAC(REAL_ARITH`e1_fan (vec 0) x y dot z - (e1_fan (vec 0) x y dot z) / &2 <
1105 e1_fan (vec 0) x y dot x'
1106 /\ &0 < e1_fan (vec 0) x y dot z - (e1_fan (vec 0) x y dot z) / &2
1107 ==> &0< e1_fan (vec 0:real^3) x y dot x'
1109 THEN MP_TAC(REAL_ARITH`e1_fan (vec 0) y x dot z - (e1_fan (vec 0) y x dot z) / &2 <
1110 e1_fan (vec 0) y x dot x'
1111 /\ &0 < e1_fan (vec 0) y x dot z - (e1_fan (vec 0) y x dot z) / &2
1112 ==> &0< e1_fan (vec 0:real^3) y x dot x'
1116 THEN REPLICATE_TAC (22-14) (POP_ASSUM MP_TAC)
1117 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1119 THEN REPLICATE_TAC (21-2) (POP_ASSUM MP_TAC)
1120 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1122 THEN POP_ASSUM MP_TAC
1123 THEN REDUCE_VECTOR_TAC
1124 THEN ASM_SIMP_TAC[IN_AFF_EQ_DOT_E2_FAN]
1126 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
1127 THEN REPEAT STRIP_TAC
1128 THEN REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
1129 THEN ASM_SIMP_TAC[IN_AFF_EQ_DOT_E2_FAN;aff;IN_ELIM_THM;Collect_geom2.AFFINE_HULL_3]
1132 THEN REDUCE_VECTOR_TAC
1133 THEN EXISTS_TAC`&1 - v - w * v' - w* w'`
1134 THEN EXISTS_TAC`v +w*v':real`
1135 THEN EXISTS_TAC`w*w':real`
1140 VECTOR_ARITH_TAC]);;
1145 let V3_DEFOR_IN_AFF_GT=prove(`&0< x1 /\ &0<x2 /\ &0< x6 /\
1146 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1 /\ ~collinear {vec 0,v1,w}/\v2 IN aff_gt {vec 0} {v1,w}
1147 ==> ?e. &0< e/\ (!t. &0< t/\ t< e ==> v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t) IN aff_gt {vec 0} {v1,w})`,
1149 THEN POP_ASSUM MP_TAC
1150 THEN MP_TAC UPS_X_POS_SEG
1152 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(-- e< &0<=> &0< e)/\ a- &0=a`]
1155 THEN MRESA_TAC (GEN_ALL OPEN_RELA_AFF_GT)[`v2:real^3`;`v1:real^3`;`w:real^3`]
1156 THEN POP_ASSUM MP_TAC
1157 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
1159 THEN MRESAL_TAC (GEN_ALL EXISTS_SMALL_LT_CONST)[`a:real`;`v1:real^3`;`v2:real^3`;` x1:real`;`x6:real`;`x2:real`;`v2:real^3`;`e':real`][DIST_REFL]
1160 THEN ABBREV_TAC`e1=(min (min e e') e'')/ &2`
1161 THEN MP_TAC(REAL_ARITH`e1=(min (min e e') e'')/ &2/\ &0< e/\ &0< e' /\ &0< e''
1162 ==> &0< e1/\ e1< e /\ e1< e'/\ e1< e''`)
1164 THEN EXISTS_TAC`e1:real`
1165 THEN ASM_REWRITE_TAC[]
1166 THEN REPEAT STRIP_TAC
1167 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`A SUBSET B/\ a IN A==> a IN B`))
1168 THEN EXISTS_TAC`ball (v2,e') INTER aff {vec 0, v2, v1:real^3}`
1169 THEN ASM_REWRITE_TAC[INTER;ball;IN_ELIM_THM]
1170 THEN ONCE_REWRITE_TAC[DIST_SYM]
1171 THEN REPLICATE_TAC (23-16) (POP_ASSUM MP_TAC)
1172 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1173 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''==> t< e''`)
1175 THEN MRESA_TAC th[`t:real`])
1176 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
1177 THEN ASM_SIMP_TAC[exp_aff_by_dot;IN_ELIM_THM]
1178 THEN REDUCE_VECTOR_TAC
1179 THEN REWRITE_TAC[e2_fan;e3_fan]
1180 THEN REDUCE_VECTOR_TAC
1181 THEN REWRITE_TAC[DOT_RMUL;CROSS_LMUL]
1182 THEN ONCE_REWRITE_TAC[DOT_SYM]
1183 THEN ONCE_REWRITE_TAC[CROSS_TRIPLE]
1184 THEN ONCE_REWRITE_TAC[CROSS_TRIPLE]
1185 THEN REPLICATE_TAC (24-11) (POP_ASSUM MP_TAC)
1186 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1187 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e/\ &0<t==> t< e/\ -- e< t`)
1189 THEN MRESA_TAC th[`t:real`])
1190 THEN MRESAL_TAC (GEN_ALL EYYPQDW_SCALAR_POS)[`x2:real`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`x6:real`;`v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)`;`a:real`;`v1:real^3`;`v2:real^3`][SET_RULE`a IN {a,b}`;GSYM v3_defor_v1;DOT_CROSS_SELF;DOT_LMUL]
1191 THEN REAL_ARITH_TAC);;
1194 let V3_DEFOR_IN_AFF_GT_V1=prove(`&0< x1 /\ &0<x2 /\ &0< x6 /\
1195 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1 /\ ~collinear {vec 0,v1,w}/\v2 IN aff_gt {vec 0} {v1,w}
1196 ==> ?e. &0< e/\ (!t. --e< t/\ t< e ==> v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t) IN aff_gt {vec 0} {v1,w})`,
1198 THEN POP_ASSUM MP_TAC
1199 THEN MP_TAC UPS_X_POS_SEG
1201 THEN POP_ASSUM (fun th-> MRESAL_TAC th[`&0`][REAL_ARITH`(-- e< &0<=> &0< e)/\ a- &0=a`]
1204 THEN MRESA_TAC (GEN_ALL OPEN_RELA_AFF_GT)[`v2:real^3`;`v1:real^3`;`w:real^3`]
1205 THEN POP_ASSUM MP_TAC
1206 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
1208 THEN MRESAL_TAC (GEN_ALL EXISTS_SMALL_LT_CONST_V1)[`a:real`;`v1:real^3`;`v2:real^3`;` x1:real`;`x6:real`;`x2:real`;`v2:real^3`;`e':real`][DIST_REFL]
1209 THEN ABBREV_TAC`e1=(min (min e e') e'')/ &2`
1210 THEN MP_TAC(REAL_ARITH`e1=(min (min e e') e'')/ &2/\ &0< e/\ &0< e' /\ &0< e''
1211 ==> &0< e1/\ e1< e /\ e1< e'/\ e1< e''`)
1213 THEN EXISTS_TAC`e1:real`
1214 THEN ASM_REWRITE_TAC[]
1215 THEN REPEAT STRIP_TAC
1216 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`A SUBSET B/\ a IN A==> a IN B`))
1217 THEN EXISTS_TAC`ball (v2,e') INTER aff {vec 0, v2, v1:real^3}`
1218 THEN ASM_REWRITE_TAC[INTER;ball;IN_ELIM_THM]
1219 THEN ONCE_REWRITE_TAC[DIST_SYM]
1220 THEN REPLICATE_TAC (23-16) (POP_ASSUM MP_TAC)
1221 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1222 THEN MP_TAC(REAL_ARITH`-- e1<t /\ t< e1/\ e1< e''==> t< e''/\ --e'' <t`)
1224 THEN MRESA_TAC th[`t:real`])
1225 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
1226 THEN ASM_SIMP_TAC[exp_aff_by_dot;IN_ELIM_THM]
1227 THEN REDUCE_VECTOR_TAC
1228 THEN REWRITE_TAC[e2_fan;e3_fan]
1229 THEN REDUCE_VECTOR_TAC
1230 THEN REWRITE_TAC[DOT_RMUL;CROSS_LMUL]
1231 THEN ONCE_REWRITE_TAC[DOT_SYM]
1232 THEN ONCE_REWRITE_TAC[CROSS_TRIPLE]
1233 THEN ONCE_REWRITE_TAC[CROSS_TRIPLE]
1234 THEN REPLICATE_TAC (25-11) (POP_ASSUM MP_TAC)
1235 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1236 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e/\ --e1<t==> t< e/\ -- e< t`)
1238 THEN MRESA_TAC th[`t:real`])
1239 THEN MRESAL_TAC (GEN_ALL EYYPQDW_SCALAR_POS)[`x2:real`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`x6:real`;`v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)`;`a:real`;`v1:real^3`;`v2:real^3`][SET_RULE`a IN {a,b}`;GSYM v3_defor_v1;DOT_CROSS_SELF;DOT_LMUL]
1240 THEN REAL_ARITH_TAC);;
1249 let xrr_increasing_le = prove_by_refinement(
1250 `!y1 y2 y6 y6'. &0 < y1 /\ &0 < y2 /\ &0 <= y6 /\ y6 <= y6' ==> xrr y1 y2 y6 <= xrr y1 y2 y6'`,
1253 REPEAT WEAKER_STRIP_TAC;
1254 TYPIFY `y6 = y6'` ASM_CASES_TAC;
1255 BY(ASM_REWRITE_TAC[arith `x <= x`]);
1256 MATCH_MP_TAC(REAL_ARITH`a<b==> a<=b`)
1257 THEN MATCH_MP_TAC xrr_increasing
1258 THEN ASM_TAC THEN REAL_ARITH_TAC;
1265 let EDGE_DOT_LE_NORM=prove_by_refinement(`is_scs_v39 s /\
1269 /\ l MOD k= SUC i MOD k
1271 (w i ) dot (w l)< norm (w l) pow 2 `,
1274 THEN REWRITE_TAC[dist;VECTOR_ARITH`(&1 - t) % w - w1 = --(t % w-(w-w1))`;NORM_NEG]
1275 THEN SUBGOAL_THEN`((w:num->real^3) l- w i) dot -- (w:num->real^3) l< &0` ASSUME_TAC;
1277 MRESAL_TAC DOT_NORM[`(w:num->real^3) l- w i`;`-- (w:num->real^3) l`][VECTOR_ARITH`wl - wi + (-- wl)= --wi:real^3`;NORM_NEG]
1279 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;IMAGE;SUBSET;IN_ELIM_THM;ball_annulus;cball;DIFF;ball]
1280 THEN REPEAT RESA_TAC
1281 THEN SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) l = w x) `ASSUME_TAC;
1284 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
1286 SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) i = w x) `ASSUME_TAC;
1289 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
1291 REPLICATE_TAC (37-20) (POP_ASSUM MP_TAC)
1292 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1293 THEN MRESA_TAC th[`(w:num->real^3) i`]
1294 THEN MRESA_TAC th[`(w:num->real^3) l`])
1295 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
1296 THEN REWRITE_TAC[dist;VECTOR_ARITH`vec 0- A= --A`;NORM_NEG]
1297 THEN REPEAT STRIP_TAC
1298 THEN REPLICATE_TAC (40-21) (POP_ASSUM MP_TAC)
1299 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1300 THEN MRESAL_TAC th[`l:num`;`i:num`][dist])
1301 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1< k`)
1303 THEN MRESA_TAC DIVISION[`SUC i`;`k:num`]
1304 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
1305 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
1307 THEN POP_ASSUM(fun th-> MRESA1_TAC th`i:num`)
1308 THEN REPLICATE_TAC (48-14) (POP_ASSUM MP_TAC)
1309 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1310 THEN MRESAL_TAC th[`l:num MOD k`;`i MOD k:num`][dist])
1311 THEN POP_ASSUM MP_TAC
1312 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
1313 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
1314 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
1315 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
1316 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
1317 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
1319 THEN MP_TAC(REAL_ARITH`&2 <= scs_a_v39 s i l
1320 /\ scs_a_v39 s i l <= norm (w l - (w:num->real^3)i)/\ ~(norm (w l) < &2)
1321 ==> &2<= norm (w l - (w:num->real^3)i) /\ &2<= norm (w l)`)
1323 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm ((w:num->real^3) l)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
1324 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (w l - (w:num->real^3)i)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
1326 THEN REWRITE_TAC[h0]
1327 THEN REPEAT RESA_TAC
1328 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`norm ((w:num->real^3) i)`;`&2* h0`;][ARITH_RULE`abs (&2 * #1.26)= &2 * #1.26`;REAL_ABS_NORM;h0]
1329 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
1330 THEN REAL_ARITH_TAC;
1333 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
1335 SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) i = w x) `ASSUME_TAC;
1338 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
1340 REPLICATE_TAC (37-20) (POP_ASSUM MP_TAC)
1341 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1342 THEN MRESA_TAC th[`(w:num->real^3) i`]
1343 THEN MRESA_TAC th[`(w:num->real^3) l`])
1344 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
1345 THEN REWRITE_TAC[dist;VECTOR_ARITH`vec 0- A= --A`;NORM_NEG]
1346 THEN REPEAT STRIP_TAC
1347 THEN REPLICATE_TAC (40-21) (POP_ASSUM MP_TAC)
1348 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1349 THEN MRESAL_TAC th[`l:num`;`i:num`][dist])
1350 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1< k`)
1352 THEN MRESA_TAC DIVISION[`SUC i`;`k:num`]
1353 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
1354 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
1356 THEN POP_ASSUM(fun th-> MRESA1_TAC th`i:num`)
1357 THEN REPLICATE_TAC (48-14) (POP_ASSUM MP_TAC)
1358 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1359 THEN MRESAL_TAC th[`l:num MOD k`;`i MOD k:num`][dist])
1360 THEN POP_ASSUM MP_TAC
1361 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
1362 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
1363 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
1364 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
1365 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
1366 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
1368 THEN MP_TAC(REAL_ARITH`&2 <= scs_a_v39 s i l
1369 /\ scs_a_v39 s i l <= norm (w l - (w:num->real^3)i)/\ ~(norm (w l) < &2)
1370 ==> &2<= norm (w l - (w:num->real^3)i) /\ &2<= norm (w l)`)
1372 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm ((w:num->real^3) l)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
1373 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (w l - (w:num->real^3)i)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
1375 THEN REWRITE_TAC[h0]
1376 THEN REPEAT RESA_TAC
1377 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`norm ((w:num->real^3) i)`;`&2* h0`;][ARITH_RULE`abs (&2 * #1.26)= &2 * #1.26`;REAL_ABS_NORM;h0]
1378 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
1379 THEN REAL_ARITH_TAC;
1382 THEN REWRITE_TAC[DOT_RNEG;REAL_ARITH`-- a< &0 <=> a> &0`;]
1383 THEN REWRITE_TAC[DOT_LSUB;DOT_SQUARE_NORM]
1384 THEN REAL_ARITH_TAC]);;
1389 let DEFORMATION_DIST_LE_2=prove(` 3<k /\
1393 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
1394 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
1395 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
1396 w l=v2/\ w (SUC l) =v1/\ ~(norm v2 = &2)/\ scs_a_v39 s l i < dist (v2,w i)
1397 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
1398 /\ l MOD k= SUC i MOD k
1401 (!t. &0< t/\ t< e ==> &2<dist (v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i) ) `,
1403 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST
1404 THEN ASM_REWRITE_TAC[]
1405 THEN MP_TAC HYPER_MM_COLLINEAR
1410 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)/\ ~(k=0)/\ 1<k`)
1412 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
1413 THEN REPEAT RESA_TAC
1414 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
1415 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
1416 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
1418 THEN POP_ASSUM(fun th-> MRESA1_TAC th`i:num`)
1419 THEN REPLICATE_TAC (56-18) (POP_ASSUM MP_TAC)
1420 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1421 THEN MRESA_TAC th[`i:num MOD k`;`l MOD k` ])
1422 THEN POP_ASSUM MP_TAC
1423 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
1424 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
1425 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
1426 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
1427 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
1428 THEN REPLICATE_TAC (59-42) (POP_ASSUM MP_TAC)
1429 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1431 THEN POP_ASSUM MP_TAC
1432 THEN ASM_REWRITE_TAC[]
1433 THEN REAL_ARITH_TAC);;
1436 let DEFORMATION_V3_DEFOR_EDGE=prove_by_refinement(` 3<k /\
1440 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
1441 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
1442 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
1443 w l=v2/\ w (SUC l) =v1/\ ~(norm v2 = &2)/\ scs_a_v39 s l i < dist (v2,w i)
1444 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
1445 /\ l MOD k= SUC i MOD k
1448 (!t. &0< t/\ t< e ==> dist (v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)<dist (v2,w i) ) `,
1454 THEN MP_TAC HYPER_MM_COLLINEAR
1456 THEN MP_TAC DEFORMATION_DIST_LE_2
1460 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
1461 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
1462 THEN REPEAT RESA_TAC
1463 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
1464 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
1465 THEN MP_TAC UPS_X_POS_SEG
1467 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
1468 THEN SUBGOAL_THEN`(w:num->real^3) l IN V` ASSUME_TAC;
1472 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
1473 THEN EXISTS_TAC`l:num`
1474 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
1477 SUBGOAL_THEN`(w:num->real^3) (SUC l) IN V` ASSUME_TAC;
1481 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
1482 THEN EXISTS_TAC`SUC l:num`
1483 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
1485 SUBGOAL_THEN`(w:num->real^3) l IN ball_annulus` ASSUME_TAC;
1488 MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
1489 THEN EXISTS_TAC`V:real^3->bool`
1490 THEN ASM_REWRITE_TAC[];
1494 SUBGOAL_THEN`(w:num->real^3) (SUC l) IN ball_annulus` ASSUME_TAC;
1497 MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
1498 THEN EXISTS_TAC`V:real^3->bool`
1499 THEN ASM_REWRITE_TAC[];
1501 REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
1502 THEN REPEAT RESA_TAC
1503 THEN MP_TAC V3_DEFOR_IN_BALL_ANNULUS_DEFORMATION
1505 THEN REPLICATE_TAC (68-41) (POP_ASSUM MP_TAC)
1506 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1508 THEN REPLICATE_TAC (67-41) (POP_ASSUM MP_TAC)
1509 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1511 THEN POP_ASSUM MP_TAC
1512 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
1513 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l+k-1:num`[ARITH_RULE`4 MOD 4=0`]
1514 THEN MRESA_TAC th[`i:num`])
1515 THEN REPEAT STRIP_TAC
1516 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
1517 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
1518 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) i`]
1519 THEN ABBREV_TAC`e1= (min (min (min e e') e'') e''')/ &2`
1520 THEN MP_TAC(REAL_ARITH`e1= (min (min (min e e') e'') e''')/ &2 /\ &0< e /\ &0< e'/\ &0< e''/\ &0< e''' ==> &0< e1/\ e1<= e/\ e1<=e'/\ e1< e''/\ e1< e'''`)
1522 THEN EXISTS_TAC`e1:real`
1523 THEN ASM_REWRITE_TAC[]
1524 THEN REPEAT STRIP_TAC
1525 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'') e''')/ &2 /\ &0< e /\ &0< e'/\ &0< e''/\ t<e1/\ &0<t/\ &0< e'''==> --e' < t/\ t< e'/\ t<e/\ t< e'''/\ t< e''`)
1527 THEN REPLICATE_TAC (87-59) (POP_ASSUM MP_TAC)
1528 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1529 THEN MRESA_TAC th[`t:real`])
1530 THEN REPLICATE_TAC (88-65) (POP_ASSUM MP_TAC)
1531 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1532 THEN MRESA_TAC th[`t:real`])
1533 THEN POP_ASSUM MP_TAC
1534 THEN REWRITE_TAC[v3_defor_v4]
1535 THEN REPLICATE_TAC (87-72) (POP_ASSUM MP_TAC)
1536 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1537 THEN POP_ASSUM MP_TAC
1538 THEN MRESA_TAC th[`t:real`])
1539 THEN ABBREV_TAC`v3=v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t) `
1540 THEN ASM_REWRITE_TAC[ball_annulus;IN_ELIM_THM;DIFF;ball;cball;dist;VECTOR_ARITH`vec 0-A= -- A`;NORM_NEG;REAL_ARITH`~(a<b)<=> b<=a`]
1542 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORMV3)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`x2-t:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
1543 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`v1:real^3`;`x6:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
1544 THEN MRESA_TAC DOT_NORM_SUB[`v1:real^3`;`v3:real^3`]
1545 THEN POP_ASSUM MP_TAC
1546 THEN REWRITE_TAC[GSYM dist]
1547 THEN ONCE_REWRITE_TAC[DIST_SYM]
1548 THEN ASM_REWRITE_TAC[dist]
1549 THEN ABBREV_TAC`v4= (w:num->real^3) i`
1550 THEN MRESA_TAC DOT_NORM_SUB[`v4:real^3`;`v2:real^3`]
1551 THEN MRESA_TAC DOT_NORM_SUB[`v4:real^3`;`v3:real^3`]
1552 THEN MRESA_TAC DOT_NORM_SUB[`v1:real^3`;`v2:real^3`]
1559 REPLICATE_TAC (97-63) (POP_ASSUM MP_TAC)
1560 THEN POP_ASSUM(fun th->
1561 POP_ASSUM(fun th1-> REPEAT STRIP_TAC
1564 THEN ASM_REWRITE_TAC[ball_annulus;IN_ELIM_THM;DIFF;ball;cball;dist;VECTOR_ARITH`vec 0-A= -- A`;NORM_NEG;REAL_ARITH`~(a<b)<=> b<=a`]
1565 THEN REPEAT STRIP_TAC
1566 THEN SUBGOAL_THEN`&2 <= norm (v1 - v2:real^3) ` ASSUME_TAC
1569 REPLICATE_TAC (99-30) (POP_ASSUM MP_TAC)
1570 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1571 THEN MRESA_TAC th[`SUC l:num`;`l:num`])
1572 THEN REMOVE_ASSUM_TAC
1573 THEN POP_ASSUM MP_TAC
1574 THEN REWRITE_TAC[dist]
1575 THEN MRESA_TAC DIVISION[`SUC l`;`k:num`]
1576 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
1577 THEN MRESA_TAC (GEN_ALL Qknvmlb.SUC_MOD_NOT_EQ)[`k:num`]
1578 THEN POP_ASSUM(fun th-> MRESA_TAC th[`l:num`])
1579 THEN REPLICATE_TAC (103-22) (POP_ASSUM MP_TAC)
1580 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1581 THEN MRESA_TAC th[`SUC l MOD k:num`;`l MOD k:num`])
1582 THEN POP_ASSUM MP_TAC
1583 THEN POP_ASSUM MP_TAC
1584 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
1585 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`SUC l:num`[ARITH_RULE`4 MOD 4=0`])
1586 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (SUC l MOD k)`][ARITH_RULE`~(4=0)`;periodic]
1587 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
1588 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
1589 THEN REAL_ARITH_TAC;
1595 MRESAL_TAC xrr_decreasing_lt[`norm (v3:real^3)`;`norm (v2:real^3)`;`norm(v1:real^3)`;`norm (v1-v2:real^3)`][xrr;REAL_ARITH`a*a= a pow 2`]
1596 THEN POP_ASSUM MP_TAC
1597 THEN ONCE_REWRITE_TAC[Pack1.norm_abs]
1598 THEN ASM_REWRITE_TAC[REAL_LT_SQUARE_ABS]
1599 THEN ASM_REWRITE_TAC[REAL_ABS_NORM;REAL_ARITH`a-b<a<=> &0<b`]
1600 THEN REWRITE_TAC[REAL_ARITH`&8*(&1-A)< &8*(&1-B) <=> B<A`]
1601 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`v2:real^3`]
1602 THEN MRESAL_TAC COS_ANGLE[`v1:real^3`;`vec 0:real^3`;`v2:real^3`][VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c*d=a*b*d*c`]
1603 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
1604 THEN SUBGOAL_THEN`~(v3 = vec 0:real^3)` ASSUME_TAC
1608 THEN POP_ASSUM(fun th-> ASM_TAC
1609 THEN REWRITE_TAC[th;NORM_0;REAL_ARITH`~(&2<= &0)`])
1614 MRESAL_TAC COS_ANGLE[`v1:real^3`;`vec 0:real^3`;`v3:real^3`][VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c*d=a*b*d*c`]
1615 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
1617 THEN MRESAL_TAC COS_MONO_LT_EQ[`angle (v1,vec 0,v3:real^3)`;`angle (v1,vec 0,v2:real^3)`][ANGLE_RANGE]
1618 THEN MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, v4}/\ v3 IN aff_gt {vec 0} {v1, v4} /\ aff_gt {vec 0} {v1,v4} SUBSET aff_ge {vec 0} {v1,v4}==> v2 IN aff_ge {vec 0} {v1, v4}/\ v3 IN aff_ge {vec 0} {v1, v4:real^3}`)
1619 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
1621 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`v4:real^3`]
1622 THEN MRESA_TAC Polar_fan.ANGLES_ADD_AFF_GE [`vec 0:real^3`;`v1:real^3`;`v4:real^3`;`v2:real^3`]
1623 THEN MRESA_TAC Polar_fan.ANGLES_ADD_AFF_GE [`vec 0:real^3`;`v1:real^3`;`v4:real^3`;`v3:real^3`]
1624 THEN MP_TAC(REAL_ARITH`angle (v1,vec 0,v2) < angle (v1,vec 0,v3)
1625 /\ angle (v1,vec 0,v2) + angle (v2,vec 0,v4) = angle (v1,vec 0,v4)
1626 /\ angle (v1,vec 0,v3) + angle (v3,vec 0,v4) = angle (v1,vec 0,v4)
1627 ==> angle (v3,vec 0,v4) <angle (v2,vec 0,v4:real^3)`)
1629 THEN MRESAL_TAC COS_MONO_LT_EQ[`angle (v2,vec 0,v4:real^3)`;`angle (v3,vec 0,v4:real^3)`][ANGLE_RANGE]
1630 THEN POP_ASSUM MP_TAC
1631 THEN ONCE_REWRITE_TAC[ANGLE_SYM]
1632 THEN MRESAL_TAC COS_ANGLE[`v4:real^3`;`vec 0:real^3`;`v3:real^3`][VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c*d=a*b*d*c`]
1633 THEN MRESAL_TAC COS_ANGLE[`v4:real^3`;`vec 0:real^3`;`v2:real^3`][VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c*d=a*b*d*c`]
1634 THEN REPLICATE_TAC (116-88) (POP_ASSUM MP_TAC)
1635 THEN POP_ASSUM(fun th->
1636 POP_ASSUM(fun th1-> REPEAT STRIP_TAC
1637 THEN POP_ASSUM MP_TAC
1640 THEN REWRITE_TAC[REAL_ARITH`(norm v4 pow 2 + x2) - norm (v4 - v2) pow 2
1641 =x2+norm v4 pow 2 - norm (v4 - v2) pow 2`;real_div;REAL_ARITH`a*b*c*d=(a*b)*c*d`]
1644 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th]
1645 THEN POP_ASSUM(fun th1-> REWRITE_TAC[SYM th1] THEN ASSUME_TAC (SYM th)
1646 THEN ASSUME_TAC (SYM th)))
1647 THEN SUBGOAL_THEN`(w:num->real^3) (l+k-1) IN V` ASSUME_TAC;
1651 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
1652 THEN EXISTS_TAC`l+k-1:num`
1653 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
1655 SUBGOAL_THEN`(w:num->real^3) (l+k-1) IN ball_annulus` ASSUME_TAC;
1658 MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
1659 THEN EXISTS_TAC`V:real^3->bool`
1660 THEN ASM_REWRITE_TAC[];
1667 THEN ASM_REWRITE_TAC[ball_annulus;IN_ELIM_THM;DIFF;ball;cball;dist;VECTOR_ARITH`vec 0-A= -- A`;NORM_NEG;REAL_ARITH`~(a<b)<=> b<=a`;real_div]
1669 THEN ABBREV_TAC`a1=(norm (v4:real^3) pow 2)`
1670 THEN ABBREV_TAC`a2=(norm (v4-v2:real^3) pow 2)`
1671 THEN ABBREV_TAC`a3= x2+a1- &2 *((v4:real^3) dot v3) * (inv (norm v3)) * (inv (norm v4)) * norm v4 * norm(v2:real^3)`
1672 THEN ABBREV_TAC`x= v4- v3_defor_v1 a (vec 0- v4) (v2- v4:real^3) a1 a2 x2 x2 (a3)`
1674 THEN MP_TAC(REAL_ARITH`&2<=norm (v4:real^3)/\ &2<=norm (v2:real^3)==> &0< norm v4/\ &0< norm v2`)
1678 MP_TAC(REAL_ARITH`norm (v4 - v2) pow 2 <= a3\/ a3< norm(v4-v2:real^3) pow 2`)
1683 MRESA_TAC REAL_LE_RSQRT[`norm(v4-v2:real^3)`;`a3:real`]
1684 THEN MP_TAC(REAL_ARITH`norm (v4 - v2) pow 2 <= a3/\ &0<= norm(v4-v2:real^3) pow 2
1686 THEN ASM_REWRITE_TAC[NORM_POS_LE;REAL_LE_POW_2]
1688 THEN MRESA_TAC SQRT_POW_2[`a3:real`]
1689 THEN MRESAL_TAC xrr_increasing_le[`norm(v4:real^3)`;`norm(v2:real^3)`;`norm(v4-v2:real^3)`;`sqrt(a3)`][NORM_POS_LE;xrr;REAL_ARITH`(&8 *( &1-a)<= &8 *( &1-b)<=> b<=a)/\ a*a= a pow 2`;real_div]
1690 THEN POP_ASSUM MP_TAC
1691 THEN REMOVE_ASSUM_TAC
1693 THEN REWRITE_TAC[REAL_ARITH`x+y-(y+x-a)=a`;REAL_INV_MUL]
1694 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v4:real^3`;`vec 0:real^3`]
1696 THEN REDUCE_VECTOR_TAC
1697 THEN REPEAT STRIP_TAC
1698 THEN POP_ASSUM MP_TAC
1699 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v2:real^3`;`vec 0:real^3`]
1701 THEN REDUCE_VECTOR_TAC
1702 THEN REPEAT STRIP_TAC
1703 THEN POP_ASSUM MP_TAC
1704 THEN ASM_REWRITE_TAC[REAL_ARITH`
1705 (&2 *a * inv (b) * inv (c) * c * d) *
1709 = (a * inv (b) * inv (c)) *
1711 (inv (d) * d)`;REAL_ARITH`a * &1=a`]
1712 THEN ASM_REWRITE_TAC[REAL_ARITH`a*b*c*d=(a*b)*d*c`]
1713 THEN ONCE_REWRITE_TAC[REAL_ARITH` a1 + x2 - a2= x2+a1-a2`]
1714 THEN ASM_REWRITE_TAC[REAL_ARITH`a<=b<=> ~(b<a)`]
1718 MRESA_TAC DOT_NORM_SUB[`v4:real^3`;`v3:real^3`]
1719 THEN SUBGOAL_THEN`norm (v4 - v3:real^3) pow 2 < a3`ASSUME_TAC;
1722 THEN REWRITE_TAC[REAL_ARITH`a=((a1+x2-t)-c)/ &2<=> c= a1+x2-t - &2 *a`]
1725 THEN REWRITE_TAC[REAL_ARITH`a1 + x2 - t - &2 * (v4 dot v3) <
1727 a1 - &2 * (v4 dot v3) * inv (norm v3) * inv (norm v4) * norm v4 * norm v2
1728 <=> (v4 dot v3) * inv (norm v3) * (inv (norm v4) * norm v4) * norm v2
1729 < (v4 dot v3)+ t/ &2 `]
1730 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v4:real^3`;`vec 0:real^3`]
1732 THEN REDUCE_VECTOR_TAC
1733 THEN REPEAT STRIP_TAC
1734 THEN ASM_REWRITE_TAC[]
1735 THEN ABBREV_TAC`g=(v4:real^3) dot v3`
1736 THEN MRESAL_TAC SQRT_UNIQUE[`x2:real`;`norm(v2:real^3)`][NORM_POS_LE]
1737 THEN MRESAL_TAC SQRT_UNIQUE[`x2-t:real`;`norm(v3:real^3)`][NORM_POS_LE]
1738 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
1739 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;REAL_ARITH`&1*a=a`])
1740 THEN MP_TAC(REAL_ARITH`&0< x2-t/\ &0< x2/\ &0<t==> &0<= x2-t/\ &0<= x2/\ x2-t<x2/\ ~(x2-t= &0)`)
1742 THEN MRESA_TAC SQRT_INV[`x2-t:real`]
1743 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;])
1744 THEN MRESA_TAC REAL_LE_INV[`x2-t:real`]
1745 THEN MRESA_TAC REAL_LT_INV[`x2-t:real`]
1746 THEN MRESA_TAC SQRT_MUL[`inv(x2-t):real`;`x2:real`]
1747 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;])
1748 THEN MRESA_TAC REAL_MUL_LINV[`x2-t:real`]
1749 THEN MRESA_TAC REAL_LT_LMUL[`inv(x2-t)`;`x2-t:real`;`x2:real`]
1750 THEN MRESAL_TAC SQRT_MONO_LT[`&1:real`;`inv(x2-t) *x2`][REAL_ARITH`&0<= &1`;SQRT_1]
1751 THEN MP_TAC(REAL_ARITH`(v4:real^3) dot v3 = &0\/ &0< --((v4:real^3) dot v3)\/ &0< (v4:real^3) dot v3 `)
1754 ASM_REWRITE_TAC[REAL_ARITH`&0 *a< &0 + t/ &2<=> &0< t`]
1759 MRESA_TAC REAL_LT_LMUL[`-- g`;`&1:real`;`sqrt (inv (x2 - t) * x2):real`]
1760 THEN POP_ASSUM MP_TAC
1761 THEN MP_TAC(REAL_ARITH`&0< t==> &0< t/ &2`)
1762 THEN ASM_REWRITE_TAC[]
1767 MP_TAC(REAL_ARITH`&0< g/\ &1 < inv (x2 - t) * x2 ==> ~(g= &0)/\ &0 <= inv (x2 - t) * x2`)
1769 THEN MRESA_TAC REAL_MUL_LINV[`g:real`]
1770 THEN MRESAL_TAC REAL_LT_LMUL[`g:real`;`sqrt (inv (x2 - t) * x2):real`;`(inv g)*(g+t/ &2)`][REAL_ARITH`a*b*c=(b*a)*c/\ &1*x=x`]
1771 THEN POP_ASSUM MATCH_MP_TAC
1772 THEN MATCH_MP_TAC REAL_LT_LSQRT
1773 THEN ASM_REWRITE_TAC[REAL_ARITH`a*(b+c)=a*b+a*c`]
1778 MATCH_MP_TAC(REAL_ARITH`&0< a*b ==> &0<= &1+a *b/ &2`)
1779 THEN MATCH_MP_TAC REAL_LT_MUL
1780 THEN ASM_REWRITE_TAC[]
1781 THEN MATCH_MP_TAC REAL_LT_INV
1782 THEN ASM_REWRITE_TAC[]
1785 REWRITE_TAC[REAL_ARITH`(&1+b) pow 2= &1+ &2*b+ b pow 2/\ &2 * inv g * t / &2= inv g * t `]
1786 THEN MATCH_MP_TAC(REAL_ARITH`&0<=d /\ a< b+c==> a< b+c+d`)
1787 THEN ASM_REWRITE_TAC[REAL_LE_POW_2]
1788 THEN MRESAL_TAC REAL_LT_LMUL[`inv(x2-t):real`;`x2:real`;`(x2-t)*(&1+ inv g *t)`][REAL_ARITH`a*b*c=(a*b)*c/\ &1*x=x`]
1789 THEN POP_ASSUM MATCH_MP_TAC
1790 THEN REWRITE_TAC[REAL_ARITH`x2 < (x2 - t) * (&1 + inv g * t)
1791 <=> t< t*(x2-t) * inv g`]
1792 THEN MRESAL_TAC REAL_LT_LMUL[`t:real`;`&1:real`;`(x2-t)*inv g `][REAL_ARITH`a*b*c=a*b*c/\ x* &1=x`]
1793 THEN POP_ASSUM MATCH_MP_TAC
1794 THEN MRESAL_TAC REAL_LT_LMUL[`inv g:real`;`g:real`;`(x2-t) `][REAL_ARITH`a*b*c=a*b*c/\ x* &1=x`]
1795 THEN ONCE_REWRITE_TAC[REAL_ARITH`a*b=b*a`]
1796 THEN POP_ASSUM MATCH_MP_TAC
1800 MATCH_MP_TAC REAL_LT_INV
1801 THEN ASM_REWRITE_TAC[]
1808 THEN REPLICATE_TAC (151-55) (POP_ASSUM MP_TAC)
1809 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1810 THEN MRESAL_TAC th[`t:real`][dist])
1811 THEN MP_TAC(REAL_ARITH`&2<norm(v3-v4)==> &2<=norm(v3-v4:real^3)`)
1813 THEN MRESAL_TAC DOT_NORM[`v3 - v4:real^3`;`-- v3:real^3`][VECTOR_ARITH`wl - wi + (-- wl)= --wi:real^3`;NORM_NEG]
1814 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (v3:real^3)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
1815 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (v3 - v4:real^3)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
1816 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`norm ((w:num->real^3) i)`;`&2* h0`;][ARITH_RULE`abs (&2 * #1.26)= &2 * #1.26`;REAL_ABS_NORM;h0]
1817 THEN POP_ASSUM MP_TAC
1818 THEN ASM_REWRITE_TAC[GSYM h0]
1819 THEN ASM_REWRITE_TAC[h0]
1821 THEN MP_TAC(REAL_ARITH`(v3 - v4) dot --v3 = (a1 - norm (v3 - v4) pow 2 - (x2 - t)) / &2 /\ &2 pow 2 <= x2 - t
1822 /\ &2 pow 2 <= norm (v3 - v4) pow 2 /\
1823 a1 <= (&2 * #1.26) pow 2
1824 ==> (v3 - v4:real^3) dot --v3< &0`)
1826 THEN POP_ASSUM MP_TAC
1827 THEN REMOVE_ASSUM_TAC
1828 THEN REMOVE_ASSUM_TAC
1829 THEN REMOVE_ASSUM_TAC
1830 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th;DOT_RNEG;DOT_LSUB;DOT_SQUARE_NORM])
1831 THEN REAL_ARITH_TAC;
1835 THEN REMOVE_ASSUM_TAC
1836 THEN POP_ASSUM MP_TAC
1837 THEN REAL_ARITH_TAC;
1844 let DEFORMATION_DIST_LE_BLL_V3_DEFOR_COM=prove_by_refinement(` 3<k /\
1848 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
1849 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
1850 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
1851 w l=v2/\ w (SUC l) =v1/\ ~(norm v2 = &2)/\ scs_a_v39 s l (l + k - 1) < dist (v2,w (l + k - 1))
1852 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
1853 /\ (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
1855 (!i. ~(i MOD k = l MOD k) ==>
1857 (!t. &0< t/\ t< e ==> dist (v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)<=scs_b_v39 s l i ))`,
1860 THEN MP_TAC(SET_RULE`l MOD k = SUC i MOD k \/ ~(SUC i MOD k= l MOD k)`)
1863 MP_TAC DEFORMATION_V3_DEFOR_EDGE
1867 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
1868 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
1869 THEN REPEAT RESA_TAC
1870 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
1871 THEN REPLICATE_TAC (55-46) (POP_ASSUM MP_TAC)
1872 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1874 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
1875 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
1876 THEN POP_ASSUM (fun th-> MRESA_TAC th[`l+k-1:num`] THEN MRESA_TAC th[`i:num`])
1877 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
1878 THEN POP_ASSUM (fun th-> MRESA_TAC th[`l+k-1:num`] THEN MRESA_TAC th[`i:num`])
1879 THEN REPLICATE_TAC (59-53) (POP_ASSUM MP_TAC)
1880 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1883 THEN EXISTS_TAC`e:real`
1884 THEN ASM_REWRITE_TAC[]
1886 THEN POP_ASSUM (fun th-> STRIP_TAC THEN MRESA_TAC th[`t:real`])
1887 THEN POP_ASSUM MP_TAC
1888 THEN REPLICATE_TAC (62-30) (POP_ASSUM MP_TAC)
1889 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1890 THEN MRESAL_TAC th[`l:num`;`i:num`][])
1891 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
1892 THEN REAL_ARITH_TAC;
1894 MP_TAC(SET_RULE`i MOD k= SUC l MOD k \/ ~(i MOD k= SUC l MOD k )`)
1897 MP_TAC HYPER_MM_COLLINEAR
1899 THEN MP_TAC UPS_X_POS_SEG
1901 THEN EXISTS_TAC`e:real`
1902 THEN ASM_REWRITE_TAC[]
1903 THEN ASM_REWRITE_TAC[]
1905 THEN POP_ASSUM (fun th-> STRIP_TAC
1906 THEN MP_TAC(REAL_ARITH`t<e/\ &0< t==> --e<t`)
1907 THEN RESA_TAC THEN MRESA_TAC th[`t:real`])
1908 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORMV3)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`x2-t:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
1909 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`v1:real^3`;`x6:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
1912 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
1913 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
1914 THEN REPEAT RESA_TAC
1915 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
1916 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i:num`] THEN MRESA_TAC th[` SUC l:num`])
1917 THEN REWRITE_TAC[dist]
1918 THEN REPLICATE_TAC (68-30) (POP_ASSUM MP_TAC)
1919 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1920 THEN MRESAL_TAC th[`l:num`;`SUC l:num`][])
1921 THEN POP_ASSUM MP_TAC
1922 THEN MRESAL_TAC REAL_EQ_SQUARE_ABS[`norm (v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t) - v1:real^3)`;`norm(v1-v2:real^3)`][REAL_ABS_NORM;GSYM dist]
1924 THEN ONCE_REWRITE_TAC[DIST_SYM]
1925 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
1926 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i:num`] THEN MRESA_TAC th[`SUC l:num`]);
1928 MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_B_SUC
1930 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`i:num`][scs_diag])
1931 THEN EXISTS_TAC`e:real`
1932 THEN ASM_REWRITE_TAC[]
1934 THEN POP_ASSUM (fun th-> STRIP_TAC
1935 THEN MP_TAC(REAL_ARITH`t<e/\ &0< t==> --e<t`)
1936 THEN RESA_TAC THEN MRESA_TAC th[`t:real`])
1937 THEN POP_ASSUM MP_TAC
1938 THEN REAL_ARITH_TAC]);;
1942 let DEFORMATION_DIST_LE_BLL_V3_DEFOR_COM=prove_by_refinement(` 3<k /\
1946 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
1947 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
1948 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
1949 w l=v2/\ w (SUC l) =v1/\ ~(norm v2 = &2)/\ scs_a_v39 s l (l + k - 1) < dist (v2,w (l + k - 1))
1950 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1/\(!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
1953 (!t i. &0< t/\ t< e/\ ~(i MOD k = l MOD k) ==> dist (v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)<=scs_b_v39 s l i )`,
1958 THEN MP_TAC DEFORMATION_DIST_LE_BLL_V3_DEFOR_COM
1960 THEN POP_ASSUM MP_TAC
1961 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
1962 THEN REWRITE_TAC[SKOLEM_THM]
1964 THEN ABBREV_TAC`e1= inf {(e:num->real) i| i < k/\ ~(i= l MOD k)}`
1965 THEN EXISTS_TAC`e1:real`
1966 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
1970 MATCH_MP_TAC FINITE_SUBSET
1971 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
1975 MATCH_MP_TAC FINITE_IMAGE
1976 THEN REWRITE_TAC[FINITE_NUMSEG];
1979 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
1980 THEN REPEAT RESA_TAC
1981 THEN EXISTS_TAC`i:num`
1982 THEN POP_ASSUM MP_TAC
1983 THEN POP_ASSUM MP_TAC
1984 THEN POP_ASSUM MP_TAC
1988 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
1991 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
1992 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(0=l MOD k )`)
1997 EXISTS_TAC`(e:num->real)1`
1999 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
2000 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
2005 EXISTS_TAC`(e:num->real)0`
2007 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
2008 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
2016 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i| i < k/\ ~(i= l MOD k)}`;`&0`]
2017 THEN REWRITE_TAC[IN_ELIM_THM]
2018 THEN REPEAT RESA_TAC
2019 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
2020 THEN REPLICATE_TAC (13-5) (POP_ASSUM MP_TAC)
2021 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2022 THEN MRESA_TAC th[`i:num`]);
2026 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i| i < k/\ ~(i= l MOD k)}`;`t:real`]
2027 THEN POP_ASSUM MP_TAC
2028 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
2031 REWRITE_TAC[IN_ELIM_THM]
2032 THEN EXISTS_TAC`i MOD k`
2033 THEN ASM_REWRITE_TAC[]
2034 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
2036 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
2040 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
2041 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
2043 THEN MRESA_TAC MOD_REFL[`i:num`;`k:num`]
2044 THEN REPLICATE_TAC (15-5) (POP_ASSUM MP_TAC)
2045 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2046 THEN MRESA_TAC th[`i:num MOD k`])
2047 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
2049 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2050 THEN REPEAT RESA_TAC
2051 THEN POP_ASSUM MP_TAC
2052 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
2053 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
2054 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2055 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]);
2060 (**************************)
2062 (***********BBs_V39********)
2064 (**************************)
2067 let DEFORMATION_SMALL_INTERVAL=prove(`deformation ff V (a,b) /\ a<= c/\ c< &0 /\ &0<d /\ d<=b
2068 ==> deformation ff V (c,d)`,
2069 REWRITE_TAC[deformation;IN_REAL_INTERVAL]
2071 THEN REPEAT STRIP_TAC
2072 THEN MP_TAC(REAL_ARITH`c < r /\ r < d /\ a <= c/\d <= b
2073 ==> a < r /\ r < b`)
2075 THEN REPLICATE_TAC (12-2)(POP_ASSUM MP_TAC)
2076 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2077 THEN MATCH_MP_TAC th)
2078 THEN ASM_REWRITE_TAC[]);;
2083 let DEFORMATION_V3_DEFOR_NOT_IN_V=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2085 w l=v2/\ w (SUC l) =v1
2086 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
2087 ==> (!i. ?e. &0< e /\ (!t. &0<t /\ t<e ==> &0<dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)))`,
2090 THEN MP_TAC(SET_RULE`i MOD k= l MOD k\/ ~(i MOD k= l MOD k)`)
2093 MP_TAC HYPER_MM_COLLINEAR
2095 THEN MP_TAC UPS_X_POS_SEG
2099 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2100 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2101 THEN REPEAT RESA_TAC
2102 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
2103 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
2104 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2105 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
2106 THEN MRESA_TAC th[`l:num`])
2107 THEN EXISTS_TAC`e:real`
2108 THEN ASM_REWRITE_TAC[]
2109 THEN ASM_REWRITE_TAC[]
2111 THEN REPLICATE_TAC (54-51) (POP_ASSUM MP_TAC)
2112 THEN POP_ASSUM (fun th-> REPEAT STRIP_TAC
2113 THEN MP_TAC(REAL_ARITH`t<e/\ &0< t==> --e<t`)
2115 THEN MRESA_TAC th[`t:real`])
2116 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORMV3)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`x2-t:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
2117 THEN POP_ASSUM MP_TAC
2118 THEN MP_TAC(SET_RULE`v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)= v2\/ ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=v2:real^3)`)
2121 REWRITE_TAC[REAL_ARITH`a=a-t<=> t= &0`]
2123 THEN POP_ASSUM (fun th-> ASM_TAC
2124 THEN REWRITE_TAC[th;REAL_ARITH`~(&0< &0)`]);
2127 THEN MATCH_MP_TAC(REAL_ARITH`&0<= a/\ ~(a= &0)==> &0 < a`)
2128 THEN ASM_REWRITE_TAC[dist;NORM_POS_LE]
2129 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t):real^3`;`v2:real^3`];
2131 MATCH_MP_TAC EXISTS_SMALL_LE_CONST
2132 THEN ASM_REWRITE_TAC[]
2133 THEN MP_TAC HYPER_MM_COLLINEAR
2135 THEN MATCH_MP_TAC(REAL_ARITH`&0<= a/\ ~(a= &0)==> &0 < a`)
2136 THEN ASM_REWRITE_TAC[dist;NORM_POS_LE]
2137 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
2140 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2141 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2142 THEN REPEAT RESA_TAC
2143 THEN POP_ASSUM MP_TAC
2144 THEN POP_ASSUM (fun th->
2145 MRESA_TAC DIVISION[`i:num`;`k:num`]
2146 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
2147 THEN MRESA_TAC th[`i MOD k`;`l MOD k`])
2148 THEN POP_ASSUM MP_TAC
2149 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2150 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
2151 THEN MRESA_TAC th[`l:num`])
2153 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v2:real^3`;`(w:num->real^3) i`;]]);;
2157 let DEFORMATION_V3_DEFOR_NOT_IN_V_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2159 w l=v2/\ w (SUC l) =v1
2160 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
2161 ==> (!i. ~(i MOD k= l MOD k) ==> (?e. &0< e /\ (!t. --e<t /\ t<e ==> &0<dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))))`,
2163 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST_V1
2164 THEN ASM_REWRITE_TAC[]
2165 THEN MP_TAC HYPER_MM_COLLINEAR
2167 THEN MATCH_MP_TAC(REAL_ARITH`&0<= a/\ ~(a= &0)==> &0 < a`)
2168 THEN ASM_REWRITE_TAC[dist;NORM_POS_LE]
2169 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
2172 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2173 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2174 THEN REPEAT RESA_TAC
2175 THEN POP_ASSUM MP_TAC
2176 THEN POP_ASSUM (fun th->
2177 MRESA_TAC DIVISION[`i:num`;`k:num`]
2178 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
2179 THEN MRESA_TAC th[`i MOD k`;`l MOD k`])
2180 THEN POP_ASSUM MP_TAC
2181 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2182 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
2183 THEN MRESA_TAC th[`l:num`])
2185 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v2:real^3`;`(w:num->real^3) i`;]
2192 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2194 w l=v2/\ w (SUC l) =v1
2195 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
2196 ==> ?e. &0< e /\ (!t i. &0<t /\ t<e ==> &0<dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))`,
2199 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V
2201 THEN POP_ASSUM MP_TAC
2202 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
2203 THEN REWRITE_TAC[SKOLEM_THM]
2205 THEN ABBREV_TAC`e1= inf {(e:num->real) i| i < k}`
2206 THEN EXISTS_TAC`e1:real`
2207 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k }`ASSUME_TAC;
2209 MATCH_MP_TAC FINITE_SUBSET
2210 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
2213 MATCH_MP_TAC FINITE_IMAGE
2214 THEN REWRITE_TAC[FINITE_NUMSEG];
2216 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
2217 THEN REPEAT RESA_TAC
2218 THEN EXISTS_TAC`i:num`
2219 THEN POP_ASSUM MP_TAC
2220 THEN POP_ASSUM MP_TAC
2221 THEN POP_ASSUM MP_TAC
2224 SUBGOAL_THEN`~({(e:num->real) i | i < k } = {})`ASSUME_TAC;
2227 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
2228 THEN EXISTS_TAC`(e:num->real)1`
2230 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
2231 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
2234 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i| i < k}`;`&0`]
2235 THEN REWRITE_TAC[IN_ELIM_THM]
2236 THEN REPEAT RESA_TAC;
2238 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i| i < k}`;`t:real`]
2239 THEN POP_ASSUM MP_TAC
2240 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k }`ASSUME_TAC;
2242 REWRITE_TAC[IN_ELIM_THM]
2243 THEN EXISTS_TAC`i MOD k`
2244 THEN ASM_REWRITE_TAC[]
2245 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
2247 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
2250 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
2251 THEN REPLICATE_TAC (18-10) (POP_ASSUM MP_TAC)
2252 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2253 THEN MRESA_TAC th[`i:num MOD k`])
2254 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
2257 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2258 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2259 THEN REPEAT RESA_TAC
2260 THEN (POP_ASSUM MP_TAC)
2261 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2262 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]);]);;
2266 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2268 w l=v2/\ w (SUC l) =v1
2269 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
2270 ==> ?e. &0< e /\ (!t i. --e<t /\ t<e/\ ~(i MOD k= l MOD k) ==> &0<dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))`,
2273 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_V1
2275 THEN POP_ASSUM MP_TAC
2276 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
2277 THEN REWRITE_TAC[SKOLEM_THM]
2279 THEN ABBREV_TAC`e1= inf {(e:num->real) i| i < k/\ ~(i= l MOD k)}`
2280 THEN EXISTS_TAC`e1:real`
2281 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
2283 MATCH_MP_TAC FINITE_SUBSET
2284 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
2287 MATCH_MP_TAC FINITE_IMAGE
2288 THEN REWRITE_TAC[FINITE_NUMSEG];
2290 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
2291 THEN REPEAT RESA_TAC
2292 THEN EXISTS_TAC`i:num`
2293 THEN POP_ASSUM MP_TAC
2294 THEN POP_ASSUM MP_TAC
2295 THEN POP_ASSUM MP_TAC
2298 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
2300 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
2301 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(0=l MOD k )`)
2304 EXISTS_TAC`(e:num->real)1`
2306 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
2307 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
2310 EXISTS_TAC`(e:num->real)0`
2312 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
2313 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
2318 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i| i < k/\ ~(i= l MOD k)}`;`&0`]
2319 THEN REWRITE_TAC[IN_ELIM_THM]
2320 THEN REPEAT RESA_TAC
2321 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
2322 THEN REPLICATE_TAC (13-5) (POP_ASSUM MP_TAC)
2323 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2324 THEN MRESA_TAC th[`i:num`]);
2327 THEN MRESAL_TAC REAL_LE_INF_FINITE[`{(e:num->real) i| i < k/\ ~(i= l MOD k)}`;`e1:real`][REAL_ARITH`a<=a`]
2328 THEN POP_ASSUM MP_TAC
2329 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
2331 REWRITE_TAC[IN_ELIM_THM]
2332 THEN EXISTS_TAC`i MOD k`
2333 THEN ASM_REWRITE_TAC[]
2334 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
2336 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
2339 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
2340 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
2342 THEN MRESA_TAC MOD_REFL[`i:num`;`k:num`]
2343 THEN MP_TAC(REAL_ARITH`-- e1<t/\t<e1/\ e1<= e(i MOD k)==> -- e(i MOD k)< t/\ t< e(i MOD k)`)
2345 THEN REPLICATE_TAC (12) (POP_ASSUM MP_TAC)
2346 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2347 THEN MRESA_TAC th[`i:num MOD k`])
2348 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
2350 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2351 THEN REPEAT RESA_TAC
2352 THEN POP_ASSUM MP_TAC
2353 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
2354 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
2355 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2356 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]);]);;
2361 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2363 w l=v2/\ w (SUC l) =v1
2364 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
2365 ==> ?e. &0< e /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))`,
2367 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM
2369 THEN EXISTS_TAC`e:real`
2370 THEN ASM_REWRITE_TAC[]
2372 THEN POP_ASSUM(fun th-> STRIP_TAC
2373 THEN MRESA_TAC th[`t:real`;`i:num`])
2374 THEN POP_ASSUM (fun th-> STRIP_TAC
2377 THEN POP_ASSUM MP_TAC
2378 THEN REWRITE_TAC[DIST_REFL])
2379 THEN REAL_ARITH_TAC);;
2382 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2384 w l=v2/\ w (SUC l) =v1
2385 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
2386 ==> ?e. &0< e /\ (!t i. -- e<t /\ t<e/\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))`,
2388 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_V1
2390 THEN EXISTS_TAC`e:real`
2391 THEN ASM_REWRITE_TAC[]
2393 THEN POP_ASSUM(fun th-> STRIP_TAC
2394 THEN MRESA_TAC th[`t:real`;`i:num`])
2395 THEN POP_ASSUM (fun th-> STRIP_TAC
2398 THEN POP_ASSUM MP_TAC
2399 THEN REWRITE_TAC[DIST_REFL])
2400 THEN REAL_ARITH_TAC);;
2404 let V3_DEFOR_EQ_IN_FF=prove_by_refinement(
2405 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2407 w l=v2/\ w (SUC l) =v1 /\
2408 &0< x1 /\ &0<x2 /\ &0< x6 /\
2409 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2411 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
2412 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2413 /\ IMAGE (w:num->real^3) (:num)=V
2414 ==> (!w. v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t),w IN
2416 (\uv. (if FST uv = v2
2417 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2420 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2422 FF <=> v2,w IN FF)`,
2424 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
2425 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2427 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2430 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2431 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
2432 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
2433 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2435 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2438 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
2439 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2441 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2442 THEN REPEAT RESA_TAC);
2444 MP_TAC Local_lemmas.CVLF_LF_F
2446 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
2451 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
2454 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
2456 THEN REMOVE_ASSUM_TAC
2457 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th]);
2459 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
2461 THEN REPEAT RESA_TAC
2462 THEN REPLICATE_TAC (47-44)(POP_ASSUM MP_TAC)
2463 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2466 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
2468 THEN REPLICATE_TAC (48-18)(POP_ASSUM MP_TAC)
2469 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2470 THEN MRESA_TAC th[`t:real`;`x':num`]);
2472 EXISTS_TAC`v2:real^3,w':real^3`
2473 THEN ASM_REWRITE_TAC[]
2474 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,w'):real^3#real^3`]]);;
2478 let V3_DEFOR_EQ_IN_FF_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2480 w l=v2/\ w (SUC l) =v1 /\
2481 &0< x1 /\ &0<x2 /\ &0< x6 /\
2482 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2484 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
2485 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2486 /\ IMAGE (w:num->real^3) (:num)=V
2487 ==> (!w. v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t),w IN
2489 (\uv. (if FST uv = v2
2490 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2493 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2495 FF <=> v2,w IN FF)`,
2498 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
2499 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2501 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2504 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2505 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
2506 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
2507 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2509 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2511 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
2512 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2514 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2515 THEN REPEAT RESA_TAC);
2517 MP_TAC Local_lemmas.CVLF_LF_F
2519 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
2524 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
2527 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
2529 THEN REMOVE_ASSUM_TAC
2530 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th]);
2532 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
2534 THEN REPEAT RESA_TAC
2535 THEN REPLICATE_TAC (47-44)(POP_ASSUM MP_TAC)
2536 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2539 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
2541 THEN REPLICATE_TAC (48-18)(POP_ASSUM MP_TAC)
2542 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2543 THEN MRESA_TAC th[`t:real`;`x':num`])
2545 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2546 THEN REPEAT RESA_TAC
2547 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2548 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`x':num`[ARITH_RULE`4 MOD 4=0`]
2549 THEN MRESA_TAC th[`l:num`])
2550 THEN REPLICATE_TAC (68-61)(POP_ASSUM MP_TAC)
2551 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2553 THEN ASM_REWRITE_TAC[];
2555 EXISTS_TAC`v2:real^3,w':real^3`
2556 THEN ASM_REWRITE_TAC[]
2557 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,w'):real^3#real^3`]]);;
2566 let V3_DEFOR_RHO_NODE=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2568 w l=v2/\ w (SUC l) =v1 /\
2569 &0< x1 /\ &0<x2 /\ &0< x6 /\
2570 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2572 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
2573 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2574 /\ IMAGE (w:num->real^3) (:num)=V
2577 (\uv. (if FST uv = v2
2578 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2581 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2584 (v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t))) = (rho_node1 FF v2)`,
2585 REWRITE_TAC[rho_node1]
2587 THEN MP_TAC V3_DEFOR_EQ_IN_FF
2591 let V3_DEFOR_RHO_NODE_V1=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2593 w l=v2/\ w (SUC l) =v1 /\
2594 &0< x1 /\ &0<x2 /\ &0< x6 /\
2595 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2597 /\ (!t i. --e<t /\ t<e/\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
2598 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2599 /\ IMAGE (w:num->real^3) (:num)=V
2602 (\uv. (if FST uv = v2
2603 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2606 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2609 (v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t))) = (rho_node1 FF v2)`,
2610 REWRITE_TAC[rho_node1]
2612 THEN MP_TAC V3_DEFOR_EQ_IN_FF_V1
2619 let V3_DEFOR_EQ_IN_FF_SYM=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2621 w l=v2/\ w (SUC l) =v1 /\
2622 &0< x1 /\ &0<x2 /\ &0< x6 /\
2623 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2625 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
2626 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2627 /\ IMAGE (w:num->real^3) (:num)=V
2628 ==> (!w. w,v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t) IN
2630 (\uv. (if FST uv = v2
2631 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2634 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2636 FF <=> w,v2 IN FF)`,
2639 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
2640 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2642 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2645 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2646 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
2647 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
2648 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2650 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2653 REPLICATE_TAC (40-23)(POP_ASSUM MP_TAC)
2654 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2656 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2657 THEN REPEAT RESA_TAC);
2659 MP_TAC Local_lemmas.CVLF_LF_F
2661 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
2666 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
2669 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
2671 THEN REMOVE_ASSUM_TAC
2672 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th]);
2674 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
2676 THEN REPEAT RESA_TAC
2677 THEN REPLICATE_TAC (47-44)(POP_ASSUM MP_TAC)
2678 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2681 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
2683 THEN REPLICATE_TAC (48-18)(POP_ASSUM MP_TAC)
2684 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2685 THEN MRESA_TAC th[`t:real`;`SUC x':num`]);
2687 EXISTS_TAC`w':real^3,v2:real^3`
2688 THEN ASM_REWRITE_TAC[]
2689 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w',v2):real^3#real^3`]]);;
2695 let V3_DEFOR_EQ_IN_FF_SYM_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2697 w l=v2/\ w (SUC l) =v1 /\
2698 &0< x1 /\ &0<x2 /\ &0< x6 /\
2699 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2701 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
2702 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2703 /\ IMAGE (w:num->real^3) (:num)=V
2704 ==> (!w. w,v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t) IN
2706 (\uv. (if FST uv = v2
2707 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2710 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2712 FF <=> w,v2 IN FF)`,
2714 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
2715 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2717 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2720 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2721 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
2722 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
2723 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2725 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2727 REPLICATE_TAC (40-23)(POP_ASSUM MP_TAC)
2728 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2730 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2731 THEN REPEAT RESA_TAC);
2733 MP_TAC Local_lemmas.CVLF_LF_F
2735 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
2740 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
2743 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
2745 THEN REMOVE_ASSUM_TAC
2746 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th]);
2748 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
2750 THEN REPEAT RESA_TAC
2751 THEN REPLICATE_TAC (47-44)(POP_ASSUM MP_TAC)
2752 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2755 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
2757 THEN REPLICATE_TAC (48-18)(POP_ASSUM MP_TAC)
2758 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2759 THEN MRESA_TAC th[`t:real`;`SUC x':num`])
2761 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2762 THEN REPEAT RESA_TAC
2763 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2764 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`SUC x':num`[ARITH_RULE`4 MOD 4=0`]
2765 THEN MRESA_TAC th[`l:num`])
2766 THEN REPLICATE_TAC (68-61)(POP_ASSUM MP_TAC)
2767 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2769 THEN ASM_REWRITE_TAC[];
2771 EXISTS_TAC`w':real^3,v2:real^3`
2772 THEN ASM_REWRITE_TAC[]
2773 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w',v2):real^3#real^3`]]);;
2781 let DEFORMATION_AZIM_V3_DEFOR_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2783 w l=v2/\ w (SUC l) =v1 /\
2784 &0< x1 /\ &0<x2 /\ &0< x6 /\
2785 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
2786 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
2787 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
2788 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2789 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2790 /\ IMAGE (w:num->real^3) (:num)=V
2792 (?e. &0< e/\ (!t. &0< t/\ t< e ==>
2793 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t)
2796 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
2797 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
2799 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t))
2800 (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
2802 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
2803 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
2805 azim (vec 0) v2 (rho_node1 FF v2) (@a. a,v2 IN FF)))`,
2808 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ
2811 THEN REPEAT RESA_TAC
2812 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) (l + k - 1)`]
2813 THEN ABBREV_TAC`e1=(min e e')/ &2`
2814 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
2815 ==> &0< e1/\ e1< e/\ e1<e'`)
2817 THEN EXISTS_TAC`e1:real`
2818 THEN ASM_REWRITE_TAC[]
2819 THEN REPEAT STRIP_TAC
2820 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e
2823 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SYM
2825 THEN ASM_SIMP_TAC[v3_defor_v4;]
2826 THEN MP_TAC V3_DEFOR_RHO_NODE
2828 THEN ASM_REWRITE_TAC[GSYM ivs_rho_node1]
2831 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2832 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2833 THEN REPEAT RESA_TAC
2834 THEN REPLICATE_TAC (67-31) (POP_ASSUM MP_TAC)
2835 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2838 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2839 THEN MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2840 THEN MP_TAC Local_lemmas.CVLF_LF_F
2842 THEN SUBGOAL_THEN`(w:num->real^3) (l) IN V` ASSUME_TAC;
2845 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
2846 THEN EXISTS_TAC`l:num`
2847 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
2849 MRESA_TAC (GEN_ALL Local_lemmas.ITER_CARD_MINUS1_EQ_IVS_RN1)[`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`]
2850 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3) (l)`])
2851 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)[`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l)`;`w:num->real^3`;`l:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;is_scs_v39;periodic2]
2852 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`SUC 0`][ITER] THEN MRESA_TAC th[`k-1`])
2853 THEN ASM_REWRITE_TAC[ARITH_RULE`SUC 0+l= SUC(l)/\ k-1+l= l+k-1`]
2854 THEN REPLICATE_TAC (75-57) (POP_ASSUM MP_TAC)
2855 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2856 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e'
2859 THEN MRESA_TAC th[`t:real`])
2860 THEN MATCH_MP_TAC Planarity.aff_gt2_subset_aff_ge
2861 THEN ASM_REWRITE_TAC[]
2862 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`(w:num->real^3)(l+k-1)`]
2865 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
2866 THEN EXISTS_TAC`v1:real^3`
2867 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
2868 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
2869 THEN ASM_REWRITE_TAC[];
2871 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
2872 THEN EXISTS_TAC`(w:num->real^3)(l+k-1)`
2873 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
2874 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
2875 THEN ASM_REWRITE_TAC[]]);;
2879 let DEFORMATION_AZIM_V3_DEFOR_V1_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2881 w l=v2/\ w (SUC l) =v1 /\
2882 &0< x1 /\ &0<x2 /\ &0< x6 /\
2883 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
2884 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
2885 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
2886 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2887 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2888 /\ IMAGE (w:num->real^3) (:num)=V
2890 (?e. &0< e/\ (!t. --e< t/\ t< e ==>
2891 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t)
2894 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
2895 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
2897 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t))
2898 (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
2900 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
2901 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
2903 azim (vec 0) v2 (rho_node1 FF v2) (@a. a,v2 IN FF)))`,
2906 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1
2909 THEN REPEAT RESA_TAC
2910 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) (l + k - 1)`]
2911 THEN ABBREV_TAC`e1=(min e e')/ &2`
2912 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
2913 ==> &0< e1/\ e1< e/\ e1<e'`)
2915 THEN EXISTS_TAC`e1:real`
2916 THEN ASM_REWRITE_TAC[]
2917 THEN REPEAT STRIP_TAC
2918 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
2921 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SYM_V1
2923 THEN ASM_SIMP_TAC[v3_defor_v4;]
2924 THEN MP_TAC V3_DEFOR_RHO_NODE_V1
2926 THEN ASM_REWRITE_TAC[GSYM ivs_rho_node1]
2929 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
2930 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2931 THEN REPEAT RESA_TAC
2932 THEN REPLICATE_TAC (68-31) (POP_ASSUM MP_TAC)
2933 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2936 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2937 THEN MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2938 THEN MP_TAC Local_lemmas.CVLF_LF_F
2940 THEN SUBGOAL_THEN`(w:num->real^3) (l) IN V` ASSUME_TAC;
2943 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
2944 THEN EXISTS_TAC`l:num`
2945 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
2947 MRESA_TAC (GEN_ALL Local_lemmas.ITER_CARD_MINUS1_EQ_IVS_RN1)[`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`]
2948 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3) (l)`])
2949 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)[`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l)`;`w:num->real^3`;`l:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;is_scs_v39;periodic2]
2950 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`SUC 0`][ITER] THEN MRESA_TAC th[`k-1`])
2951 THEN ASM_REWRITE_TAC[ARITH_RULE`SUC 0+l= SUC(l)/\ k-1+l= l+k-1`];
2953 REPLICATE_TAC (76-57) (POP_ASSUM MP_TAC)
2954 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2955 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e' /\ --e1<t
2956 ==> t< e'/\ --e'<t`)
2958 THEN MRESA_TAC th[`t:real`])
2959 THEN MATCH_MP_TAC Planarity.aff_gt2_subset_aff_ge
2960 THEN ASM_REWRITE_TAC[]
2961 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`(w:num->real^3)(l+k-1)`]
2964 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
2965 THEN EXISTS_TAC`v1:real^3`
2966 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
2967 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
2968 THEN ASM_REWRITE_TAC[];
2970 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
2971 THEN EXISTS_TAC`(w:num->real^3)(l+k-1)`
2972 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
2973 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
2974 THEN ASM_REWRITE_TAC[]]);;
2982 let V3_DEFOR_EQ_IN_FF_AT_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
2984 w l=v2/\ w (SUC l) =v1 /\
2985 &0< x1 /\ &0<x2 /\ &0< x6 /\
2986 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
2987 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
2989 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
2990 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
2991 /\ IMAGE (w:num->real^3) (:num)=V
2995 (\uv. (if FST uv = v2
2996 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
2999 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3005 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
3006 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3008 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3011 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3012 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
3013 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
3014 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3016 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
3019 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
3020 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3022 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3023 THEN REPEAT RESA_TAC);
3025 MP_TAC Local_lemmas.CVLF_LF_F
3027 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
3032 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
3036 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3038 THEN REPEAT RESA_TAC
3039 THEN REPLICATE_TAC (44-15)(POP_ASSUM MP_TAC)
3040 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3041 THEN MRESA_TAC th[`t:real`;`SUC l:num`])
3042 THEN POP_ASSUM MP_TAC
3043 THEN REMOVE_ASSUM_TAC
3044 THEN POP_ASSUM MP_TAC
3047 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3049 THEN REPEAT RESA_TAC
3050 THEN MP_TAC(SET_RULE`v2= SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
3053 SUBGOAL_THEN`v1,v2 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
3058 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3061 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3062 THEN EXISTS_TAC`l+k-1`
3063 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3064 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3067 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3068 THEN REPEAT RESA_TAC;
3070 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v1:real^3`;`(w:num->real^3) (l+k-1)`]
3071 THEN REPLICATE_TAC (49-8)(POP_ASSUM MP_TAC)
3072 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3075 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`(w:num->real^3) (l+k-1)`]
3076 THEN POP_ASSUM MP_TAC
3077 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3078 THEN ASM_REWRITE_TAC[];
3080 EXISTS_TAC`v1:real^3,w':real^3`
3081 THEN ASM_REWRITE_TAC[]
3082 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
3083 THEN POP_ASSUM MP_TAC
3084 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3086 THEN MP_TAC(SET_RULE`v2= w':real^3\/ ~(v2=w')`)
3089 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3092 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3093 THEN EXISTS_TAC`l+k-1`
3094 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3095 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3098 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3099 THEN REPEAT RESA_TAC;
3101 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v1:real^3`;`(w:num->real^3) (l+k-1)`]
3102 THEN REPLICATE_TAC (51-8)(POP_ASSUM MP_TAC)
3103 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3106 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`(w:num->real^3) (l+k-1)`]
3107 THEN POP_ASSUM MP_TAC
3108 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3109 THEN ASM_REWRITE_TAC[]]);;
3114 let V3_DEFOR_EQ_IN_FF_AT_V1_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3116 w l=v2/\ w (SUC l) =v1 /\
3117 &0< x1 /\ &0<x2 /\ &0< x6 /\
3118 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3119 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3121 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
3122 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3123 /\ IMAGE (w:num->real^3) (:num)=V
3127 (\uv. (if FST uv = v2
3128 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3131 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3137 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
3138 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3140 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3143 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3144 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
3145 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
3146 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3148 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
3150 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
3151 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3153 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3154 THEN REPEAT RESA_TAC);
3156 MP_TAC Local_lemmas.CVLF_LF_F
3158 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
3163 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
3166 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3168 THEN REPEAT RESA_TAC
3169 THEN REPLICATE_TAC (44-15)(POP_ASSUM MP_TAC)
3170 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3171 THEN MRESA_TAC th[`t:real`;`SUC l:num`])
3172 THEN POP_ASSUM MP_TAC
3173 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
3175 THEN POP_ASSUM(fun th-> MRESA_TAC th [`l:num`])
3176 THEN REMOVE_ASSUM_TAC
3177 THEN REMOVE_ASSUM_TAC
3178 THEN POP_ASSUM MP_TAC
3181 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3183 THEN REPEAT RESA_TAC
3184 THEN MP_TAC(SET_RULE`v2= SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
3187 SUBGOAL_THEN`v1,v2 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
3191 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3194 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3195 THEN EXISTS_TAC`l+k-1`
3196 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3197 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3200 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3201 THEN REPEAT RESA_TAC;
3203 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v1:real^3`;`(w:num->real^3) (l+k-1)`]
3204 THEN REPLICATE_TAC (49-8)(POP_ASSUM MP_TAC)
3205 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3208 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`(w:num->real^3) (l+k-1)`]
3209 THEN POP_ASSUM MP_TAC
3210 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3211 THEN ASM_REWRITE_TAC[];
3213 EXISTS_TAC`v1:real^3,w':real^3`
3214 THEN ASM_REWRITE_TAC[]
3215 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
3216 THEN POP_ASSUM MP_TAC
3217 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3219 THEN MP_TAC(SET_RULE`v2= w':real^3\/ ~(v2=w')`)
3222 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3225 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3226 THEN EXISTS_TAC`l+k-1`
3227 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3228 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3231 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3232 THEN REPEAT RESA_TAC;
3234 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v1:real^3`;`(w:num->real^3) (l+k-1)`]
3235 THEN REPLICATE_TAC (51-8)(POP_ASSUM MP_TAC)
3236 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3239 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`(w:num->real^3) (l+k-1)`]
3240 THEN POP_ASSUM MP_TAC
3241 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3242 THEN ASM_REWRITE_TAC[]]);;
3245 let V3_DEFOR_RHO_NODE_AT_V1=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3247 w l=v2/\ w (SUC l) =v1 /\
3248 &0< x1 /\ &0<x2 /\ &0< x6 /\
3249 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3250 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3252 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
3253 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3254 /\ IMAGE (w:num->real^3) (:num)=V
3258 (\uv. (if FST uv = v2
3259 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3262 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3266 =(rho_node1 FF v1)`,
3267 REWRITE_TAC[rho_node1]
3269 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V1
3274 let V3_DEFOR_RHO_NODE_AT_V1_V1=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3276 w l=v2/\ w (SUC l) =v1 /\
3277 &0< x1 /\ &0<x2 /\ &0< x6 /\
3278 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3279 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3281 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k)==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
3282 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3283 /\ IMAGE (w:num->real^3) (:num)=V
3287 (\uv. (if FST uv = v2
3288 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3291 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3295 =(rho_node1 FF v1)`,
3296 REWRITE_TAC[rho_node1]
3298 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V1_V1
3307 let V3_DEFOR_EQ_IN_FF_AT_V1_SYM=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3309 w l=v2/\ w (SUC l) =v1 /\
3310 &0< x1 /\ &0<x2 /\ &0< x6 /\
3311 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3312 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3314 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
3315 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3316 /\ IMAGE (w:num->real^3) (:num)=V
3320 (\uv. (if FST uv = v2
3321 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3324 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3327 v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)`,
3330 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
3331 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3333 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3336 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3337 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
3338 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
3339 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3341 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
3343 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
3344 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3346 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3347 THEN REPEAT RESA_TAC);
3349 MP_TAC Local_lemmas.CVLF_LF_F
3351 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
3354 EXISTS_TAC`v3_defor_v1 (-- &1) (v1) (v2) x1 x2 x6 x6 (x2 - t)`
3355 THEN ASM_REWRITE_TAC[IMAGE;IN_ELIM_THM]
3356 THEN EXISTS_TAC`v2:real^3,v1:real^3`
3357 THEN ASM_REWRITE_TAC[]
3358 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
3359 THEN POP_ASSUM MP_TAC
3360 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3363 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3364 THEN EXISTS_TAC`l:num`
3365 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3366 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3369 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3370 THEN REPEAT RESA_TAC;
3372 REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
3376 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
3379 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3381 THEN REPEAT RESA_TAC
3382 THEN REPLICATE_TAC (45-16)(POP_ASSUM MP_TAC)
3383 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3384 THEN MRESA_TAC th[`t:real`;`SUC l:num`])
3385 THEN POP_ASSUM MP_TAC
3386 THEN POP_ASSUM MP_TAC
3389 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3391 THEN REPEAT RESA_TAC
3392 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
3395 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3397 THEN REPEAT RESA_TAC;
3399 SUBGOAL_THEN`w',v1 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
3403 SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3406 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3407 THEN EXISTS_TAC`l:num`
3408 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3409 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3412 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3413 THEN REPEAT RESA_TAC;
3415 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v1:real^3`;`FF:real^3#real^3->bool`;`v2:real^3`;`(w':real^3) `]]);;
3419 let V3_DEFOR_EQ_IN_FF_AT_V1_SYM_V1=prove_by_refinement(
3420 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3422 w l=v2/\ w (SUC l) =v1 /\
3423 &0< x1 /\ &0<x2 /\ &0< x6 /\
3424 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3425 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3427 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
3428 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3429 /\ IMAGE (w:num->real^3) (:num)=V
3433 (\uv. (if FST uv = v2
3434 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3437 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3440 v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)`,
3443 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
3444 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3446 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3449 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3450 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
3451 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
3452 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3454 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
3456 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
3457 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3459 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3460 THEN REPEAT RESA_TAC);
3462 MP_TAC Local_lemmas.CVLF_LF_F
3464 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
3467 EXISTS_TAC`v3_defor_v1 (-- &1) (v1) (v2) x1 x2 x6 x6 (x2 - t)`
3468 THEN ASM_REWRITE_TAC[IMAGE;IN_ELIM_THM]
3469 THEN EXISTS_TAC`v2:real^3,v1:real^3`
3470 THEN ASM_REWRITE_TAC[]
3471 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
3472 THEN POP_ASSUM MP_TAC
3473 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3476 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3477 THEN EXISTS_TAC`l:num`
3478 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3479 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3482 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3483 THEN REPEAT RESA_TAC;
3485 REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
3489 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
3492 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3494 THEN REPEAT RESA_TAC
3495 THEN REPLICATE_TAC (45-16)(POP_ASSUM MP_TAC)
3496 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3497 THEN MRESA_TAC th[`t:real`;`SUC l:num`])
3498 THEN POP_ASSUM MP_TAC
3499 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
3501 THEN POP_ASSUM(fun th-> MRESA_TAC th [`l:num`])
3502 THEN POP_ASSUM MP_TAC
3503 THEN POP_ASSUM MP_TAC
3506 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3508 THEN REPEAT RESA_TAC
3509 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
3512 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3514 THEN REPEAT RESA_TAC;
3516 SUBGOAL_THEN`w',v1 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
3520 SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3523 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3524 THEN EXISTS_TAC`l:num`
3525 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3526 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3529 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3530 THEN REPEAT RESA_TAC;
3532 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v1:real^3`;`FF:real^3#real^3->bool`;`v2:real^3`;`(w':real^3) `]]);;
3537 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3539 w l=v2/\ w (SUC l) =v1 /\
3540 &0< x1 /\ &0<x2 /\ &0< x6 /\
3541 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
3542 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3543 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
3544 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3545 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3546 /\ IMAGE (w:num->real^3) (:num)=V
3548 (?e. &0< e/\ (!t. &0< t/\ t< e ==>
3549 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v1 t)
3552 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
3553 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
3555 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v1 t))
3556 (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v1 t IN
3558 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
3559 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
3561 azim (vec 0) v1 (rho_node1 FF v1) (@a. a,v1 IN FF)))`,
3564 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ
3567 THEN REPEAT RESA_TAC
3568 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) (l + k - 1)`]
3569 THEN ABBREV_TAC`e1=(min e e')/ &2`
3570 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
3571 ==> &0< e1/\ e1< e/\ e1<e'`)
3573 THEN EXISTS_TAC`e1:real`
3574 THEN ASM_REWRITE_TAC[]
3575 THEN REPEAT STRIP_TAC
3576 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e
3579 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
3580 THEN POP_ASSUM MP_TAC
3581 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3583 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V1_SYM
3585 THEN ASM_SIMP_TAC[v3_defor_v4;]
3586 THEN MP_TAC V3_DEFOR_RHO_NODE_AT_V1
3588 THEN ASM_REWRITE_TAC[GSYM ivs_rho_node1]
3591 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3592 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3593 THEN REPEAT RESA_TAC
3594 THEN REPLICATE_TAC (73-31) (POP_ASSUM MP_TAC)
3595 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3598 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3599 THEN MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3600 THEN MP_TAC Local_lemmas.CVLF_LF_F
3602 THEN SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3606 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3607 THEN EXISTS_TAC`l:num`
3608 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3609 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3612 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3613 THEN REPEAT RESA_TAC;
3615 MRESA_TAC (GEN_ALL Local_lemmas.IVS_RHO_NODE1_DETE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v1:real^3`;`v2:real^3`]
3616 THEN MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w (l + k - 1)}/\
3617 aff_gt {vec 0} {v1, w (l + k - 1)} SUBSET aff_ge {vec 0} {v1, w (l + k - 1)}
3618 ==> v2 IN aff_ge {vec 0} {v1:real^3, w (l + k - 1)}`)
3619 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
3621 THEN MRESA_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT[`vec 0:real^3`;`v1:real^3`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;`(rho_node1 FF v1)`;]
3622 THEN MATCH_MP_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT
3625 MATCH_MP_TAC(GEN_ALL (SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
3626 THEN EXISTS_TAC`aff_gt{vec 0:real^3} {v1,w(l+k-1)}`
3627 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
3628 THEN REPLICATE_TAC (81-57) (POP_ASSUM MP_TAC)
3629 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3630 THEN MATCH_MP_TAC th)
3631 THEN ASM_REWRITE_TAC[]
3632 THEN MATCH_MP_TAC(REAL_ARITH`t<e1/\ e1<e'==> t< e'`)
3633 THEN ASM_REWRITE_TAC[];
3636 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
3637 THEN MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
3638 THEN EXISTS_TAC`(w:num->real^3) (l+k-1)`
3639 THEN ASM_REWRITE_TAC[]
3640 THEN REPLICATE_TAC (81-57) (POP_ASSUM MP_TAC)
3641 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3642 THEN MATCH_MP_TAC th)
3643 THEN ASM_REWRITE_TAC[]
3644 THEN MATCH_MP_TAC(REAL_ARITH`t<e1/\ e1<e'==> t< e'`)
3645 THEN ASM_REWRITE_TAC[]]);;
3648 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_V1_V1=prove_by_refinement(
3649 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3651 w l=v2/\ w (SUC l) =v1 /\
3652 &0< x1 /\ &0<x2 /\ &0< x6 /\
3653 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
3654 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3655 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
3656 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3657 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3658 /\ IMAGE (w:num->real^3) (:num)=V
3660 (?e. &0< e/\ (!t. --e< t/\ t< e ==>
3661 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v1 t)
3664 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
3665 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
3667 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v1 t))
3668 (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v1 t IN
3670 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
3671 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
3673 azim (vec 0) v1 (rho_node1 FF v1) (@a. a,v1 IN FF)))`,
3676 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1
3679 THEN REPEAT RESA_TAC
3680 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) (l + k - 1)`]
3681 THEN ABBREV_TAC`e1=(min e e')/ &2`
3682 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
3683 ==> &0< e1/\ e1< e/\ e1<e'`)
3685 THEN EXISTS_TAC`e1:real`
3686 THEN ASM_REWRITE_TAC[]
3687 THEN REPEAT STRIP_TAC
3688 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
3691 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
3692 THEN POP_ASSUM MP_TAC
3693 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
3695 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V1_SYM_V1
3697 THEN ASM_SIMP_TAC[v3_defor_v4;]
3698 THEN MP_TAC V3_DEFOR_RHO_NODE_AT_V1_V1
3700 THEN ASM_REWRITE_TAC[GSYM ivs_rho_node1]
3703 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3704 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3705 THEN REPEAT RESA_TAC;
3707 REPLICATE_TAC (74-31) (POP_ASSUM MP_TAC)
3708 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3711 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3712 THEN MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3713 THEN MP_TAC Local_lemmas.CVLF_LF_F
3715 THEN SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3718 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3719 THEN EXISTS_TAC`l:num`
3720 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3721 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3724 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3725 THEN REPEAT RESA_TAC;
3727 MRESA_TAC (GEN_ALL Local_lemmas.IVS_RHO_NODE1_DETE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v1:real^3`;`v2:real^3`]
3728 THEN MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w (l + k - 1)}/\
3729 aff_gt {vec 0} {v1, w (l + k - 1)} SUBSET aff_ge {vec 0} {v1, w (l + k - 1)}
3730 ==> v2 IN aff_ge {vec 0} {v1:real^3, w (l + k - 1)}`)
3731 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
3733 THEN MRESA_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT[`vec 0:real^3`;`v1:real^3`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;`(rho_node1 FF v1)`;]
3734 THEN MATCH_MP_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT
3737 MATCH_MP_TAC(GEN_ALL (SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
3738 THEN EXISTS_TAC`aff_gt{vec 0:real^3} {v1,w(l+k-1)}`
3739 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE];
3741 REPLICATE_TAC (82-57) (POP_ASSUM MP_TAC)
3742 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3743 THEN MATCH_MP_TAC th)
3744 THEN ASM_REWRITE_TAC[]
3745 THEN MP_TAC(REAL_ARITH`t<e1/\ e1<e'/\ --e1<t ==> t< e'/\ --e'<t`)
3747 THEN ASM_REWRITE_TAC[];
3750 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
3751 THEN MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
3752 THEN EXISTS_TAC`(w:num->real^3) (l+k-1)`
3753 THEN ASM_REWRITE_TAC[]
3754 THEN REPLICATE_TAC (82-57) (POP_ASSUM MP_TAC)
3755 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3756 THEN MATCH_MP_TAC th)
3757 THEN ASM_REWRITE_TAC[]
3758 THEN MP_TAC(REAL_ARITH`t<e1/\ e1<e'/\ --e1<t ==> t< e'/\ --e'<t`)
3760 THEN ASM_REWRITE_TAC[]]);;
3765 let V3_DEFOR_EQ_IN_FF_AT_W=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3767 w l=v2/\ w (SUC l) =v1 /\
3768 &0< x1 /\ &0<x2 /\ &0< x6 /\
3769 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3770 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3772 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
3773 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3774 /\ IMAGE (w:num->real^3) (:num)=V
3776 (!v. v,w (l + (scs_k_v39 s - 1)) IN
3778 (\uv. (if FST uv = v2
3779 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3782 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3785 v,w (l + (scs_k_v39 s - 1)) IN FF)`,
3788 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
3789 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3791 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3794 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3795 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
3796 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
3797 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3799 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
3801 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
3802 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3804 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3805 THEN REPEAT RESA_TAC);
3807 MP_TAC Local_lemmas.CVLF_LF_F
3809 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
3814 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
3817 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3819 THEN REPEAT RESA_TAC
3820 THEN REPLICATE_TAC (44-15)(POP_ASSUM MP_TAC)
3821 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3822 THEN MRESA_TAC th[`t:real`;`l+k-1:num`])
3823 THEN POP_ASSUM MP_TAC;
3825 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3827 THEN REPEAT RESA_TAC
3828 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
3831 SUBGOAL_THEN`v2, w(l+k-1) IN (FF:real^3#real^3->bool)`ASSUME_TAC;
3835 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3838 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3839 THEN EXISTS_TAC`l+k-1`
3840 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3841 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3844 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3845 THEN REPEAT RESA_TAC;
3847 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
3848 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;]
3849 THEN POP_ASSUM MP_TAC
3850 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
3852 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v2:real^3,(w:num->real^3)(l+k-1)`;`V:real^3->bool`;]
3853 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
3855 THEN POP_ASSUM(fun th-> MRESA_TAC th[`SND(x:real^3#real^3)`]);
3857 EXISTS_TAC`v:real^3,(w:num->real^3) (l + k - 1)`
3858 THEN ASM_REWRITE_TAC[]
3859 THEN SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3862 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3863 THEN EXISTS_TAC`l+k-1`
3864 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3865 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3868 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3869 THEN REPEAT RESA_TAC;
3871 MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(l+k-1),v2:real^3`;];
3873 MP_TAC(SET_RULE`v2=v:real^3\/ ~(v=v2)`)
3876 SUBGOAL_THEN`v2, w(l+k-1) IN (FF:real^3#real^3->bool)`ASSUME_TAC;
3880 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
3881 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;]
3882 THEN POP_ASSUM MP_TAC
3883 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
3885 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v2:real^3,(w:num->real^3)(l+k-1)`;`V:real^3->bool`;]
3886 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
3888 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3)(l+k-1)`]);]);;
3892 let V3_DEFOR_EQ_IN_FF_AT_W_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
3894 w l=v2/\ w (SUC l) =v1 /\
3895 &0< x1 /\ &0<x2 /\ &0< x6 /\
3896 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
3897 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
3899 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
3900 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
3901 /\ IMAGE (w:num->real^3) (:num)=V
3903 (!v. v,w (l + (scs_k_v39 s - 1)) IN
3905 (\uv. (if FST uv = v2
3906 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3909 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
3912 v,w (l + (scs_k_v39 s - 1)) IN FF)`,
3915 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
3916 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3918 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3921 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3922 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
3923 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
3924 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
3926 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
3929 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
3930 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3932 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3933 THEN REPEAT RESA_TAC);
3935 MP_TAC Local_lemmas.CVLF_LF_F
3937 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
3942 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
3945 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3947 THEN REPEAT RESA_TAC
3948 THEN REPLICATE_TAC (44-15)(POP_ASSUM MP_TAC)
3949 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3950 THEN MRESA_TAC th[`t:real`;`l+k-1:num`])
3951 THEN POP_ASSUM MP_TAC
3952 THEN MP_TAC MOD_ADD_SUB_1
3955 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
3957 THEN REPEAT RESA_TAC
3958 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
3961 SUBGOAL_THEN`v2, w(l+k-1) IN (FF:real^3#real^3->bool)`ASSUME_TAC;
3965 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3968 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3969 THEN EXISTS_TAC`l+k-1`
3970 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3971 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3974 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3975 THEN REPEAT RESA_TAC;
3977 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
3978 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;]
3979 THEN POP_ASSUM MP_TAC
3980 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
3982 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v2:real^3,(w:num->real^3)(l+k-1)`;`V:real^3->bool`;]
3983 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
3985 THEN POP_ASSUM(fun th-> MRESA_TAC th[`SND(x:real^3#real^3)`]);
3987 EXISTS_TAC`v:real^3,(w:num->real^3) (l + k - 1)`
3988 THEN ASM_REWRITE_TAC[]
3989 THEN SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
3992 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
3993 THEN EXISTS_TAC`l+k-1`
3994 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
3995 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
3998 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
3999 THEN REPEAT RESA_TAC;
4001 MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(l+k-1),v2:real^3`;];
4003 MP_TAC(SET_RULE`v2=v:real^3\/ ~(v=v2)`)
4006 SUBGOAL_THEN`v2, w(l+k-1) IN (FF:real^3#real^3->bool)`ASSUME_TAC;
4010 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
4011 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;]
4012 THEN POP_ASSUM MP_TAC
4013 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
4015 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v2:real^3,(w:num->real^3)(l+k-1)`;`V:real^3->bool`;]
4016 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
4018 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3)(l+k-1)`])]);;
4023 let V3_DEFOR_EQ_IN_FF_AT_W_SYM=prove_by_refinement(
4024 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4026 w l=v2/\ w (SUC l) =v1 /\
4027 &0< x1 /\ &0<x2 /\ &0< x6 /\
4028 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
4029 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
4031 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
4032 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4033 /\ IMAGE (w:num->real^3) (:num)=V
4037 (\uv. (if FST uv = v2
4038 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4041 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4044 v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)`,
4047 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
4048 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4050 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4053 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4054 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
4055 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
4056 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4058 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4060 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
4061 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4063 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4064 THEN REPEAT RESA_TAC);
4066 MP_TAC Local_lemmas.CVLF_LF_F
4068 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
4071 EXISTS_TAC`v3_defor_v1 (-- &1) (v1) (v2) x1 x2 x6 x6 (x2 - t)`
4072 THEN ASM_REWRITE_TAC[IMAGE;IN_ELIM_THM]
4073 THEN EXISTS_TAC`(w:num->real^3) (l + k - 1),v2:real^3`
4074 THEN ASM_REWRITE_TAC[]
4075 THEN SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4078 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4079 THEN EXISTS_TAC`l+k-1`
4080 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4081 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4084 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4085 THEN REPEAT RESA_TAC;
4087 MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(l+k-1),v2:real^3`;];
4089 REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
4093 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
4096 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4098 THEN REPEAT RESA_TAC
4099 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
4102 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4104 THEN REPEAT RESA_TAC
4105 THEN REPLICATE_TAC (46-16)(POP_ASSUM MP_TAC)
4106 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4107 THEN MRESA_TAC th[`t:real`;`l+k-1:num`])
4108 THEN POP_ASSUM MP_TAC
4109 THEN POP_ASSUM MP_TAC;
4111 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4113 THEN REPEAT RESA_TAC;
4115 SUBGOAL_THEN`(w:num->real^3)(l+k-1),v IN (FF:real^3#real^3->bool)`ASSUME_TAC;
4119 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4122 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4123 THEN EXISTS_TAC`l+k-1`
4124 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4125 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4128 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4129 THEN REPEAT RESA_TAC;
4131 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
4132 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v:real^3`;]]);;
4137 let V3_DEFOR_EQ_IN_FF_AT_W_SYM_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4139 w l=v2/\ w (SUC l) =v1 /\
4140 &0< x1 /\ &0<x2 /\ &0< x6 /\
4141 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
4142 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
4144 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
4145 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4146 /\ IMAGE (w:num->real^3) (:num)=V
4150 (\uv. (if FST uv = v2
4151 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4154 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4157 v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)`,
4160 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
4161 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4163 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4166 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4167 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
4168 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
4169 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4171 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4173 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
4174 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4176 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4177 THEN REPEAT RESA_TAC);
4179 MP_TAC Local_lemmas.CVLF_LF_F
4181 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
4184 EXISTS_TAC`v3_defor_v1 (-- &1) (v1) (v2) x1 x2 x6 x6 (x2 - t)`
4185 THEN ASM_REWRITE_TAC[IMAGE;IN_ELIM_THM]
4186 THEN EXISTS_TAC`(w:num->real^3) (l + k - 1),v2:real^3`
4187 THEN ASM_REWRITE_TAC[]
4188 THEN SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4191 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4192 THEN EXISTS_TAC`l+k-1`
4193 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4194 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4197 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4198 THEN REPEAT RESA_TAC;
4200 MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(l+k-1),v2:real^3`;];
4202 REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
4206 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
4209 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4211 THEN REPEAT RESA_TAC
4212 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
4215 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4217 THEN REPEAT RESA_TAC
4218 THEN REPLICATE_TAC (46-16)(POP_ASSUM MP_TAC)
4219 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4220 THEN MRESA_TAC th[`t:real`;`l+k-1:num`])
4221 THEN POP_ASSUM MP_TAC
4222 THEN POP_ASSUM MP_TAC
4223 THEN MP_TAC MOD_ADD_SUB_1
4226 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4228 THEN REPEAT RESA_TAC;
4230 SUBGOAL_THEN`(w:num->real^3)(l+k-1),v IN (FF:real^3#real^3->bool)`ASSUME_TAC;
4234 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4237 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4238 THEN EXISTS_TAC`l+k-1`
4239 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4240 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4243 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4244 THEN REPEAT RESA_TAC;
4246 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
4247 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v:real^3`;]
4260 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_W=prove_by_refinement(
4261 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4263 w l=v2/\ w (SUC l) =v1 /\
4264 &0< x1 /\ &0<x2 /\ &0< x6 /\
4265 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
4266 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
4267 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
4268 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
4269 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4270 /\ IMAGE (w:num->real^3) (:num)=V
4272 (?e. &0< e/\ (!t. &0< t/\ t< e ==>
4273 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t)
4276 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
4277 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
4279 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t))
4280 (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t IN
4282 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
4283 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
4285 azim (vec 0) (w (l + k - 1)) (rho_node1 FF (w (l + k - 1)))
4286 (@a. a,w (l + k - 1) IN FF)))`,
4289 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ
4292 THEN REPEAT RESA_TAC
4293 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) (l + k - 1)`]
4294 THEN ABBREV_TAC`e1=(min e e')/ &2`
4295 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
4296 ==> &0< e1/\ e1< e/\ e1<e'`)
4298 THEN EXISTS_TAC`e1:real`
4299 THEN ASM_REWRITE_TAC[]
4300 THEN REPEAT STRIP_TAC
4301 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e
4304 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
4305 THEN POP_ASSUM MP_TAC
4306 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
4308 THEN SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4312 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4313 THEN EXISTS_TAC`l+k-1`
4314 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4315 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4318 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
4319 THEN REPEAT RESA_TAC;
4321 ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4322 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4324 REPLICATE_TAC (37-3)(POP_ASSUM MP_TAC)
4325 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4326 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4329 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
4330 THEN REPEAT RESA_TAC);
4332 MP_TAC Local_lemmas.CVLF_LF_F
4334 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(l+k-1),v2:real^3`;]
4335 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_W_SYM
4337 THEN ASM_SIMP_TAC[v3_defor_v4;]
4338 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_W
4340 THEN ASM_REWRITE_TAC[rho_node1]
4341 THEN ASM_REWRITE_TAC[GSYM rho_node1;GSYM ivs_rho_node1]
4342 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
4343 THEN ONCE_REWRITE_TAC[Rogers.AZIM_EQ_SYM];
4345 MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w (l + k - 1)}/\
4346 aff_gt {vec 0} {v1, w (l + k - 1)} SUBSET aff_ge {vec 0} {v1, w (l + k - 1)}
4347 ==> v2 IN aff_ge {vec 0} {v1:real^3, w (l + k - 1)}`)
4348 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
4349 THEN POP_ASSUM MP_TAC
4350 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
4351 THEN ASM_REWRITE_TAC[]
4352 THEN MRESA_TAC(GEN_ALL Planarity.properties_of_collinear4_points_fan)
4353 [`vec 0:real^3`;`(w:num->real^3)(l+k-1)`;`v1:real^3`;`v2:real^3`]
4354 THEN POP_ASSUM MP_TAC
4355 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4356 THEN ASM_REWRITE_TAC[]
4357 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
4358 THEN ASM_REWRITE_TAC[]
4362 THEN MRESA_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT[`vec 0:real^3`;`(w:num->real^3)(l+k-1)`;`v2:real^3`;`v1:real^3`;`(ivs_rho_node1 FF (w(l+k-1)))`;]
4363 THEN POP_ASSUM MP_TAC
4364 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
4365 THEN ASM_REWRITE_TAC[]
4367 THEN MATCH_MP_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT
4370 ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
4371 THEN MATCH_MP_TAC(GEN_ALL (SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
4372 THEN EXISTS_TAC`aff_gt{vec 0:real^3} {v1,w(l+k-1)}`
4373 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
4374 THEN REPLICATE_TAC (47-22) (POP_ASSUM MP_TAC)
4375 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
4376 THEN MATCH_MP_TAC th)
4377 THEN ASM_REWRITE_TAC[]
4378 THEN MATCH_MP_TAC(REAL_ARITH`t<e1/\ e1<e'==> t< e'`)
4379 THEN ASM_REWRITE_TAC[];
4382 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4383 THEN ASM_REWRITE_TAC[]
4384 THEN MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
4385 THEN EXISTS_TAC`v1:real^3`
4386 THEN ASM_REWRITE_TAC[]
4387 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4388 THEN ASM_REWRITE_TAC[]
4389 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
4390 THEN ASM_REWRITE_TAC[]
4391 THEN REPLICATE_TAC (47-22) (POP_ASSUM MP_TAC)
4392 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
4393 THEN MATCH_MP_TAC th)
4394 THEN ASM_REWRITE_TAC[]
4395 THEN MATCH_MP_TAC(REAL_ARITH`t<e1/\ e1<e'==> t< e'`)
4396 THEN ASM_REWRITE_TAC[]]);;
4400 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_W_V1=prove_by_refinement(
4401 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4403 w l=v2/\ w (SUC l) =v1 /\
4404 &0< x1 /\ &0<x2 /\ &0< x6 /\
4405 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
4406 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
4407 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
4408 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
4409 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4410 /\ IMAGE (w:num->real^3) (:num)=V
4412 (?e. &0< e/\ (!t. --e< t/\ t< e ==>
4413 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t)
4416 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
4417 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
4419 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t))
4420 (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t IN
4422 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
4423 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
4425 azim (vec 0) (w (l + k - 1)) (rho_node1 FF (w (l + k - 1)))
4426 (@a. a,w (l + k - 1) IN FF)))`,
4429 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1
4432 THEN REPEAT RESA_TAC
4433 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) (l + k - 1)`]
4434 THEN ABBREV_TAC`e1=(min e e')/ &2`
4435 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
4436 ==> &0< e1/\ e1< e/\ e1<e'`)
4438 THEN EXISTS_TAC`e1:real`
4439 THEN ASM_REWRITE_TAC[]
4440 THEN REPEAT STRIP_TAC
4441 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
4444 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
4445 THEN POP_ASSUM MP_TAC
4446 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
4448 THEN SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4451 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4452 THEN EXISTS_TAC`l+k-1`
4453 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4454 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4457 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
4458 THEN REPEAT RESA_TAC;
4460 ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4461 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4463 REPLICATE_TAC (38-3)(POP_ASSUM MP_TAC)
4464 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4465 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4468 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
4469 THEN REPEAT RESA_TAC);
4471 MP_TAC Local_lemmas.CVLF_LF_F
4473 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(l+k-1),v2:real^3`;]
4474 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_W_SYM_V1
4476 THEN ASM_SIMP_TAC[v3_defor_v4;]
4477 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_W_V1
4479 THEN ASM_REWRITE_TAC[rho_node1]
4480 THEN ASM_REWRITE_TAC[GSYM rho_node1;GSYM ivs_rho_node1]
4481 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
4482 THEN ONCE_REWRITE_TAC[Rogers.AZIM_EQ_SYM];
4484 MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w (l + k - 1)}/\
4485 aff_gt {vec 0} {v1, w (l + k - 1)} SUBSET aff_ge {vec 0} {v1, w (l + k - 1)}
4486 ==> v2 IN aff_ge {vec 0} {v1:real^3, w (l + k - 1)}`)
4487 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
4488 THEN POP_ASSUM MP_TAC
4489 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
4490 THEN ASM_REWRITE_TAC[]
4491 THEN MRESA_TAC(GEN_ALL Planarity.properties_of_collinear4_points_fan)
4492 [`vec 0:real^3`;`(w:num->real^3)(l+k-1)`;`v1:real^3`;`v2:real^3`]
4493 THEN POP_ASSUM MP_TAC
4494 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4495 THEN ASM_REWRITE_TAC[]
4496 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
4497 THEN ASM_REWRITE_TAC[]
4501 THEN MRESA_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT[`vec 0:real^3`;`(w:num->real^3)(l+k-1)`;`v2:real^3`;`v1:real^3`;`(ivs_rho_node1 FF (w(l+k-1)))`;]
4502 THEN POP_ASSUM MP_TAC
4503 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
4504 THEN ASM_REWRITE_TAC[]
4506 THEN MATCH_MP_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT
4509 ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
4510 THEN MATCH_MP_TAC(GEN_ALL (SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
4511 THEN EXISTS_TAC`aff_gt{vec 0:real^3} {v1,w(l+k-1)}`
4512 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
4513 THEN REPLICATE_TAC (48-22) (POP_ASSUM MP_TAC)
4514 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
4515 THEN MATCH_MP_TAC th)
4516 THEN ASM_REWRITE_TAC[]
4517 THEN MP_TAC(REAL_ARITH`t<e1/\ e1<e'/\ --e1<t ==> t< e'/\ --e'<t`)
4519 THEN ASM_REWRITE_TAC[];
4522 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4523 THEN ASM_REWRITE_TAC[]
4524 THEN MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
4525 THEN EXISTS_TAC`v1:real^3`
4526 THEN ASM_REWRITE_TAC[]
4527 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
4528 THEN ASM_REWRITE_TAC[]
4529 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
4530 THEN ASM_REWRITE_TAC[]
4531 THEN REPLICATE_TAC (48-22) (POP_ASSUM MP_TAC)
4532 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
4533 THEN MATCH_MP_TAC th)
4534 THEN ASM_REWRITE_TAC[]
4535 THEN MP_TAC(REAL_ARITH`t<e1/\ e1<e'/\ --e1<t==> t< e'/\ --e'<t`)
4537 THEN ASM_REWRITE_TAC[]]);;
4542 let V3_DEFOR_EQ_IN_FF_AT_V_ANY=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4544 w l=v2/\ w (SUC l) =v1 /\
4545 &0< x1 /\ &0<x2 /\ &0< x6 /\
4546 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
4547 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
4549 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
4550 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4551 /\ IMAGE (w:num->real^3) (:num)=V
4552 /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(l+k-1))
4557 (\uv. (if FST uv = v2
4558 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4561 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4567 THEN REPLICATE_TAC (24-3)(POP_ASSUM MP_TAC)
4568 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4570 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4573 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4574 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
4575 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
4576 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4578 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4580 REPLICATE_TAC (42-25)(POP_ASSUM MP_TAC)
4581 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4583 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4584 THEN REPEAT RESA_TAC);
4586 MP_TAC Local_lemmas.CVLF_LF_F
4588 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
4593 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
4596 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4598 THEN REPEAT RESA_TAC
4599 THEN REPLICATE_TAC (49-23)(POP_ASSUM MP_TAC)
4600 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4603 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4605 THEN REPLICATE_TAC (50-16)(POP_ASSUM MP_TAC)
4606 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4607 THEN MRESA_TAC th[`t:real`;`x':num`])
4608 THEN REPLICATE_TAC (50-46)(POP_ASSUM MP_TAC)
4609 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4611 THEN POP_ASSUM MP_TAC
4614 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4616 THEN REPEAT RESA_TAC
4617 THEN MP_TAC(SET_RULE`v2= SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
4620 SUBGOAL_THEN`v,v2 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
4624 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4627 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4628 THEN EXISTS_TAC`l+k-1`
4629 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4630 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4633 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4634 THEN REPEAT RESA_TAC;
4636 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v:real^3`;`(w:num->real^3) (l+k-1)`];
4638 EXISTS_TAC`v:real^3,w':real^3`
4639 THEN ASM_REWRITE_TAC[]
4640 THEN MP_TAC(SET_RULE`v2= w':real^3\/ ~(v2=w')`)
4643 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4646 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4647 THEN EXISTS_TAC`l+k-1`
4648 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4649 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4652 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4653 THEN REPEAT RESA_TAC;
4655 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v:real^3`;`(w:num->real^3) (l+k-1)`]]);;
4659 let V3_DEFOR_EQ_IN_FF_AT_V_ANY_V1=prove_by_refinement(
4660 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4662 w l=v2/\ w (SUC l) =v1 /\
4663 &0< x1 /\ &0<x2 /\ &0< x6 /\
4664 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
4665 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
4667 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
4668 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4669 /\ IMAGE (w:num->real^3) (:num)=V
4670 /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(l+k-1))
4675 (\uv. (if FST uv = v2
4676 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4679 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4685 THEN REPLICATE_TAC (24-3)(POP_ASSUM MP_TAC)
4686 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4688 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4691 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4692 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
4693 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
4694 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4696 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4699 REPLICATE_TAC (42-25)(POP_ASSUM MP_TAC)
4700 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4702 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4703 THEN REPEAT RESA_TAC);
4706 MP_TAC Local_lemmas.CVLF_LF_F
4708 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
4713 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
4716 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4718 THEN REPEAT RESA_TAC
4719 THEN REPLICATE_TAC (49-23)(POP_ASSUM MP_TAC)
4720 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4723 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4725 THEN REPLICATE_TAC (50-16)(POP_ASSUM MP_TAC)
4726 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4727 THEN MRESA_TAC th[`t:real`;`x':num`])
4728 THEN REPLICATE_TAC (50-46)(POP_ASSUM MP_TAC)
4729 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4731 THEN POP_ASSUM MP_TAC
4732 THEN MRESA_TAC DIVISION[`x':num`;`k:num`]
4733 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
4734 THEN MP_TAC(SET_RULE`x' MOD k = l MOD k \/ ~(x' MOD k = l MOD k)`)
4739 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
4740 THEN REPEAT RESA_TAC
4741 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
4742 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`x':num`[ARITH_RULE`4 MOD 4=0`]
4743 THEN MRESA_TAC th[`l:num`])
4744 THEN REPLICATE_TAC (77-39)(POP_ASSUM MP_TAC)
4745 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4747 THEN ASM_REWRITE_TAC[];
4753 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4755 THEN REPEAT RESA_TAC
4756 THEN MP_TAC(SET_RULE`v2= SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
4759 SUBGOAL_THEN`v,v2 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
4763 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4766 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4767 THEN EXISTS_TAC`l+k-1`
4768 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4769 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4772 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4773 THEN REPEAT RESA_TAC;
4776 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v:real^3`;`(w:num->real^3) (l+k-1)`];
4778 EXISTS_TAC`v:real^3,w':real^3`
4779 THEN ASM_REWRITE_TAC[]
4780 THEN MP_TAC(SET_RULE`v2= w':real^3\/ ~(v2=w')`)
4783 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4786 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4787 THEN EXISTS_TAC`l+k-1`
4788 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4789 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4792 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4793 THEN REPEAT RESA_TAC;
4795 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v:real^3`;`(w:num->real^3) (l+k-1)`]]);;
4803 let V3_DEFOR_EQ_IN_FF_AT_V_ANY_SYM=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4805 w l=v2/\ w (SUC l) =v1 /\
4806 &0< x1 /\ &0<x2 /\ &0< x6 /\
4807 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
4808 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
4810 /\ (!t i. &0<t /\ t<e ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
4811 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4812 /\ IMAGE (w:num->real^3) (:num)=V
4813 /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(l+k-1))
4818 (\uv. (if FST uv = v2
4819 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4822 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4828 THEN REPLICATE_TAC (24-3)(POP_ASSUM MP_TAC)
4829 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4831 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4834 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4835 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
4836 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
4837 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4839 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4841 REPLICATE_TAC (42-25)(POP_ASSUM MP_TAC)
4842 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4844 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4845 THEN REPEAT RESA_TAC);
4847 MP_TAC Local_lemmas.CVLF_LF_F
4849 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
4854 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
4858 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4860 THEN REPEAT RESA_TAC
4861 THEN REPLICATE_TAC (49-23)(POP_ASSUM MP_TAC)
4862 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4865 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4867 THEN REPLICATE_TAC (50-16)(POP_ASSUM MP_TAC)
4868 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4869 THEN MRESA_TAC th[`t:real`;`x':num`])
4870 THEN REPLICATE_TAC (50-47)(POP_ASSUM MP_TAC)
4871 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4873 THEN POP_ASSUM MP_TAC
4876 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4878 THEN REPEAT RESA_TAC
4879 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
4882 SUBGOAL_THEN`v2,v IN (FF:real^3#real^3->bool)`ASSUME_TAC;
4886 SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4889 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4890 THEN EXISTS_TAC`l:num`
4891 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4892 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4895 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4896 THEN REPEAT RESA_TAC;
4898 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`v:real^3`]
4899 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`v1:real^3`;]
4900 THEN REPLICATE_TAC (54-20)(POP_ASSUM MP_TAC)
4901 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4903 THEN ASM_REWRITE_TAC[];
4905 EXISTS_TAC`w':real^3,v:real^3`
4906 THEN ASM_REWRITE_TAC[]
4907 THEN MP_TAC(SET_RULE`v2= w':real^3\/ ~(v2=w')`)
4910 SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
4913 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4914 THEN EXISTS_TAC`l:num`
4915 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
4916 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
4919 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
4920 THEN REPEAT RESA_TAC;
4922 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`v:real^3`]
4923 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`v1:real^3`;]
4924 THEN REPLICATE_TAC (54-20)(POP_ASSUM MP_TAC)
4925 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4927 THEN ASM_REWRITE_TAC[]]);;
4930 let V3_DEFOR_EQ_IN_FF_AT_V_ANY_SYM_V1=prove_by_refinement(
4931 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
4933 w l=v2/\ w (SUC l) =v1 /\
4934 &0< x1 /\ &0<x2 /\ &0< x6 /\
4935 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
4936 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
4938 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
4939 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
4940 /\ IMAGE (w:num->real^3) (:num)=V
4941 /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(l+k-1))
4946 (\uv. (if FST uv = v2
4947 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4950 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
4956 THEN REPLICATE_TAC (24-3)(POP_ASSUM MP_TAC)
4957 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4959 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4962 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
4963 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
4964 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
4965 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
4967 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
4970 REPLICATE_TAC (42-25)(POP_ASSUM MP_TAC)
4971 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4973 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
4974 THEN REPEAT RESA_TAC);
4976 MP_TAC Local_lemmas.CVLF_LF_F
4978 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
4983 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
4986 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
4988 THEN REPEAT RESA_TAC
4989 THEN REPLICATE_TAC (49-23)(POP_ASSUM MP_TAC)
4990 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4993 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
4995 THEN REPLICATE_TAC (50-16)(POP_ASSUM MP_TAC)
4996 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
4997 THEN MRESA_TAC th[`t:real`;`x':num`])
4998 THEN REPLICATE_TAC (50-47)(POP_ASSUM MP_TAC)
4999 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5001 THEN POP_ASSUM MP_TAC
5002 THEN MRESA_TAC DIVISION[`x':num`;`k:num`]
5003 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
5004 THEN MP_TAC(SET_RULE`x' MOD k = l MOD k \/ ~(x' MOD k = l MOD k)`)
5008 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
5009 THEN REPEAT RESA_TAC
5010 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
5011 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`x':num`[ARITH_RULE`4 MOD 4=0`]
5012 THEN MRESA_TAC th[`l:num`])
5013 THEN REPLICATE_TAC (77-39)(POP_ASSUM MP_TAC)
5014 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5016 THEN ASM_REWRITE_TAC[];
5020 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
5022 THEN REPEAT RESA_TAC
5023 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
5026 SUBGOAL_THEN`v2,v IN (FF:real^3#real^3->bool)`ASSUME_TAC;
5030 SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
5033 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5034 THEN EXISTS_TAC`l:num`
5035 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
5036 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
5039 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
5040 THEN REPEAT RESA_TAC;
5042 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`v:real^3`]
5043 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`v1:real^3`;]
5044 THEN REPLICATE_TAC (54-20)(POP_ASSUM MP_TAC)
5045 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5047 THEN ASM_REWRITE_TAC[];
5049 EXISTS_TAC`w':real^3,v:real^3`
5050 THEN ASM_REWRITE_TAC[]
5051 THEN MP_TAC(SET_RULE`v2= w':real^3\/ ~(v2=w')`)
5054 SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
5057 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5058 THEN EXISTS_TAC`l:num`
5059 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
5060 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
5063 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
5064 THEN REPEAT RESA_TAC;
5066 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`v:real^3`]
5067 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`v1:real^3`;]
5068 THEN REPLICATE_TAC (54-20)(POP_ASSUM MP_TAC)
5069 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5071 THEN ASM_REWRITE_TAC[]]);;
5075 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_V_ANY=prove(
5076 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
5078 w l=v2/\ w (SUC l) =v1 /\
5079 &0< x1 /\ &0<x2 /\ &0< x6 /\
5080 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
5081 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5082 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5083 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
5084 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5085 /\ IMAGE (w:num->real^3) (:num)=V
5087 (?e. &0< e/\ (!t v. &0< t/\ t< e /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(l+k-1))
5090 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t)
5093 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5094 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5096 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t))
5097 (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t IN
5099 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5100 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5102 azim (vec 0) v (rho_node1 FF v) (@a. a,v IN FF)))`,
5104 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ
5107 THEN REPEAT RESA_TAC
5108 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) (l + k - 1)`]
5109 THEN ABBREV_TAC`e1=(min e e')/ &2`
5110 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
5111 ==> &0< e1/\ e1< e/\ e1<e'`)
5113 THEN EXISTS_TAC`e1:real`
5114 THEN ASM_REWRITE_TAC[]
5115 THEN REPEAT STRIP_TAC
5116 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e
5119 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
5120 THEN POP_ASSUM MP_TAC
5121 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
5123 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V_ANY_SYM
5125 THEN ASM_SIMP_TAC[v3_defor_v4;]
5126 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V_ANY
5128 THEN ASM_SIMP_TAC[rho_node1;]);;
5133 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_V_ANY_V1=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
5135 w l=v2/\ w (SUC l) =v1 /\
5136 &0< x1 /\ &0<x2 /\ &0< x6 /\
5137 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
5138 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5139 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5140 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
5141 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5142 /\ IMAGE (w:num->real^3) (:num)=V
5144 (?e. &0< e/\ (!t v. --e< t/\ t< e /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(l+k-1))
5147 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t)
5150 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5151 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5153 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t))
5154 (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t IN
5156 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5157 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5159 azim (vec 0) v (rho_node1 FF v) (@a. a,v IN FF)))`,
5161 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1
5164 THEN REPEAT RESA_TAC
5165 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) (l + k - 1)`]
5166 THEN ABBREV_TAC`e1=(min e e')/ &2`
5167 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
5168 ==> &0< e1/\ e1< e/\ e1<e'`)
5170 THEN EXISTS_TAC`e1:real`
5171 THEN ASM_REWRITE_TAC[]
5172 THEN REPEAT STRIP_TAC
5173 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
5176 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
5177 THEN POP_ASSUM MP_TAC
5178 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
5180 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V_ANY_SYM_V1
5182 THEN ASM_SIMP_TAC[v3_defor_v4;]
5183 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V_ANY_V1
5185 THEN ASM_SIMP_TAC[rho_node1;]);;
5193 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL=prove_by_refinement(
5194 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
5196 w l=v2/\ w (SUC l) =v1 /\
5197 &0< x1 /\ &0<x2 /\ &0< x6 /\
5198 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
5199 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5200 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5201 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
5202 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5203 /\ IMAGE (w:num->real^3) (:num)=V
5205 (?e. &0< e/\ (!t v. &0< t/\ t< e /\ v IN V ==>
5206 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t)
5209 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5210 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5212 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t))
5213 (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t IN
5215 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5216 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5218 azim (vec 0) (v) (rho_node1 FF (v))
5222 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_W
5224 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_V1
5226 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1
5228 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_V_ANY
5230 THEN ABBREV_TAC`e1=(min (min (min e e') e'')e''')/ &2`
5231 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'')e''')/ &2/\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''==> &0< e1/\ e1<e/\ e1<e'/\ e1< e''/\ e1< e'''`)
5233 THEN EXISTS_TAC`e1:real`
5234 THEN ASM_REWRITE_TAC[]
5235 THEN REPEAT RESA_TAC
5236 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'')e''')/ &2/\ &0< e/\ &0< e'/\ &0< e''/\ t<e1/\ &0<t/\ &0< e'''==> t<e/\ t<e'/\ t< e''/\ t < e'''`)
5238 THEN MP_TAC(SET_RULE`(v=(w:num->real^3)(l+k-1))\/ ~(v=(w:num->real^3)(l+k-1))`)
5241 REPLICATE_TAC (40-20) (POP_ASSUM MP_TAC)
5242 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5243 THEN MATCH_MP_TAC th)
5244 THEN ASM_REWRITE_TAC[];
5246 MP_TAC(SET_RULE`(v=(v1:real^3))\/ ~(v=v1)`)
5249 REPLICATE_TAC (41-22) (POP_ASSUM MP_TAC)
5250 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5251 THEN MATCH_MP_TAC th)
5252 THEN ASM_REWRITE_TAC[];
5254 MP_TAC(SET_RULE`(v=(v2:real^3))\/ ~(v=v2)`)
5257 REPLICATE_TAC (42-24) (POP_ASSUM MP_TAC)
5258 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5259 THEN MATCH_MP_TAC th)
5260 THEN ASM_REWRITE_TAC[];
5262 REPLICATE_TAC (42-26) (POP_ASSUM MP_TAC)
5263 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5264 THEN MATCH_MP_TAC th)
5265 THEN ASM_REWRITE_TAC[]]);;
5268 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_V1=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
5270 w l=v2/\ w (SUC l) =v1 /\
5271 &0< x1 /\ &0<x2 /\ &0< x6 /\
5272 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
5273 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5274 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5275 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
5276 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5277 /\ IMAGE (w:num->real^3) (:num)=V
5279 (?e. &0< e/\ (!t v. --e< t/\ t< e /\ v IN V ==>
5280 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t)
5283 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5284 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5286 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t))
5287 (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t IN
5289 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5290 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5292 azim (vec 0) (v) (rho_node1 FF (v))
5296 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_W_V1
5298 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_V1_V1
5300 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_V1
5302 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_V_ANY_V1
5304 THEN ABBREV_TAC`e1=(min (min (min e e') e'')e''')/ &2`
5305 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'')e''')/ &2/\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''==> &0< e1/\ e1<e/\ e1<e'/\ e1< e''/\ e1< e'''`)
5307 THEN EXISTS_TAC`e1:real`
5308 THEN ASM_REWRITE_TAC[]
5309 THEN REPEAT RESA_TAC
5310 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'')e''')/ &2/\ &0< e/\ &0< e'/\ &0< e''/\ t<e1/\ --e1<t/\ &0< e'''==> t<e/\ t<e'/\ t< e''/\ t < e'''
5311 /\ --e< t/\ --e'<t /\ --e''<t/\ --e'''<t`)
5313 THEN MP_TAC(SET_RULE`(v=(w:num->real^3)(l+k-1))\/ ~(v=(w:num->real^3)(l+k-1))`)
5316 REPLICATE_TAC (44-20) (POP_ASSUM MP_TAC)
5317 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5318 THEN MATCH_MP_TAC th)
5319 THEN ASM_REWRITE_TAC[];
5321 MP_TAC(SET_RULE`(v=(v1:real^3))\/ ~(v=v1)`)
5324 REPLICATE_TAC (45-22) (POP_ASSUM MP_TAC)
5325 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5326 THEN MATCH_MP_TAC th)
5327 THEN ASM_REWRITE_TAC[];
5329 MP_TAC(SET_RULE`(v=(v2:real^3))\/ ~(v=v2)`)
5332 REPLICATE_TAC (46-24) (POP_ASSUM MP_TAC)
5333 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5334 THEN MATCH_MP_TAC th)
5335 THEN ASM_REWRITE_TAC[];
5337 REPLICATE_TAC (46-26) (POP_ASSUM MP_TAC)
5338 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5339 THEN MATCH_MP_TAC th)
5340 THEN ASM_REWRITE_TAC[]]);;
5352 let DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
5354 w l=v2/\ w (SUC l) =v1 /\
5355 &0< x1 /\ &0<x2 /\ &0< x6 /\
5356 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
5357 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5358 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5359 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
5360 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5361 /\ IMAGE (w:num->real^3) (:num)=V
5366 interior_angle1 (vec 0) FF v = pi
5367 ==> interior_angle1 (vec 0)
5369 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5370 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5372 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) <=
5375 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL
5377 THEN EXISTS_TAC`e:real`
5378 THEN ASM_REWRITE_TAC[interior_angle1]
5379 THEN REPEAT RESA_TAC
5380 THEN REPLICATE_TAC (24-20) (POP_ASSUM MP_TAC)
5381 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5382 THEN MRESA_TAC th[`t:real`;`v:real^3`])
5383 THEN REAL_ARITH_TAC);;
5387 let DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
5389 w l=v2/\ w (SUC l) =v1 /\
5390 &0< x1 /\ &0<x2 /\ &0< x6 /\
5391 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
5392 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5393 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5394 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
5395 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5396 /\ IMAGE (w:num->real^3) (:num)=V
5401 interior_angle1 (vec 0) FF v = pi
5402 ==> interior_angle1 (vec 0)
5404 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5405 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5407 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) <=
5410 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_V1
5412 THEN EXISTS_TAC`e:real`
5413 THEN ASM_REWRITE_TAC[interior_angle1]
5414 THEN REPEAT RESA_TAC
5415 THEN REPLICATE_TAC (24-20) (POP_ASSUM MP_TAC)
5416 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5417 THEN MRESA_TAC th[`t:real`;`v:real^3`])
5418 THEN REAL_ARITH_TAC);;
5421 let V_DEFORMATION_V3_DEFOR=prove(`
5422 IMAGE (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w i) t) (:num) =IMAGE (\v. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) (IMAGE w (:num))`,
5423 REWRITE_TAC[IMAGE;IN_ELIM_THM;EXTENSION]
5427 let E_DEFORMATION_V3_DEFOR=prove_by_refinement(`IMAGE
5428 (\i. {v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w i) t, v3_defor_v4
5437 (:num) = IMAGE (IMAGE (\v. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t)) (IMAGE (\i. {w i, w (SUC i)}) (:num))`,
5438 [REWRITE_TAC[EXTENSION]
5439 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5443 THEN EXISTS_TAC`{(w:num->real^3) x', w (SUC x')}`
5446 THEN ASM_REWRITE_TAC[];
5449 THEN EXISTS_TAC`x'':num`
5450 THEN ASM_REWRITE_TAC[]
5457 let F_DEFORMATION_V3_DEFOR=prove(`IMAGE
5458 (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w i) t,
5459 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC i)) t)
5462 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5463 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t) (IMAGE (\i. w i,w (SUC i)) (:num))`,
5464 REWRITE_TAC[EXTENSION;IMAGE;IN_ELIM_THM]
5469 THEN EXISTS_TAC`(w:num->real^3) x',w (SUC x')`
5470 THEN ASM_REWRITE_TAC[]
5471 THEN EXISTS_TAC`x':num`
5472 THEN ASM_REWRITE_TAC[];
5474 THEN EXISTS_TAC`x'':num`
5475 THEN ASM_REWRITE_TAC[]]);;
5479 let DEFORMATION_LUNAR_AFFINE_HULL=prove_by_refinement(
5484 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
5485 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5486 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5487 w l=v2/\ w (SUC l) =v1/\ ~(norm v2 = &2)
5488 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
5489 /\ ~(v=v2)/\ ~(w1=v2) /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5490 /\ IMAGE (w:num->real^3) (:num)=V
5491 /\ IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)=E
5494 ?e. &0<e /\ (!t. &0 < t /\ t < e
5495 ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
5496 affine hull {vec 0, v, w1, v2})`,
5499 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ
5501 THEN MP_TAC HYPER_MM_COLLINEAR
5503 THEN REPLICATE_TAC (25-6)(POP_ASSUM MP_TAC)
5504 THEN POP_ASSUM(fun th->
5507 THEN MP_TAC th THEN MP_TAC th1))
5508 THEN REPEAT RESA_TAC
5509 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) (l + k - 1)`]
5510 THEN REPLICATE_TAC (27-3)(POP_ASSUM MP_TAC)
5511 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5513 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;]
5515 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
5516 THEN REPEAT RESA_TAC)
5517 THEN MP_TAC BBS_IMP_CONVEX_LOCAL_FAN
5519 THEN SUBGOAL_THEN`(v2:real^3) IN V` ASSUME_TAC;
5522 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5523 THEN EXISTS_TAC`l:num`
5524 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
5526 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
5529 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5530 THEN EXISTS_TAC`l+k-1`
5531 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
5532 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
5535 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
5536 THEN REPEAT RESA_TAC;
5538 SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
5541 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5542 THEN EXISTS_TAC`l:num`
5543 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
5544 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
5547 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
5548 THEN REPEAT RESA_TAC;
5550 MP_TAC Local_lemmas.CVLF_LF_F
5552 THEN MRESA_TAC (GEN_ALL Local_lemmas.IVS_RHO_NODE1_DETE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`]
5553 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`v1:real^3`;]
5554 THEN MRESAL_TAC (GEN_ALL LUNAR_IMP_INTERIOR_ANGLE1_EQ_PI)
5555 [`E:(real^3->bool)->bool`;`V:real^3->bool`;`FF:real^3#real^3->bool`;`v:real^3`;`w1:real^3`;][DIFF;IN_ELIM_THM;SET_RULE`~(a IN {b,c}) <=> (~(a=b)/\ ~(a=c))`]
5556 THEN POP_ASSUM(fun th-> MRESA_TAC th[`v2:real^3`])
5557 THEN MRESA_TAC (GEN_ALL Collect_geom2.THREE_GEN_POINTS_IN_AFF3)[`v2:real^3`;`v:real^3`;`w1:real^3`]
5558 THEN MRESA_TAC (GEN_ALL Local_lemmas.CONV02_SUBSET_AFF2)[`v:real^3`;`w1:real^3`]
5559 THEN MP_TAC(SET_RULE`v IN aff {v2, v, w1}/\ w1 IN aff {v2, v, w1}
5560 ==> {v, w1} SUBSET aff {v2, v, w1:real^3}`)
5562 THEN MRESA_TAC(GEN_ALL Local_lemmas.S_SUBSET_IMP_AFF_S_TOO)[`{v, w1:real^3}`;` {v2, v, w1:real^3}`]
5563 THEN MP_TAC(SET_RULE`v1 IN aff {v2, v, w1}/\ w (l + k - 1) IN aff {v2, v, w1}
5564 /\ vec 0 IN conv0 {v, w1} /\ conv0 {v, w1} SUBSET aff {v, w1}
5565 /\ aff {v, w1} SUBSET aff {v2, v, w1}
5566 ==> {vec 0, v1, w (l + k - 1)} SUBSET aff {v2, v, w1:real^3}`)
5568 THEN MRESA_TAC(GEN_ALL Local_lemmas.S_SUBSET_IMP_AFF_S_TOO)[`{vec 0, v1, w (l + k - 1):real^3}`;` {v2, v, w1:real^3}`]
5569 THEN MRESAL_TAC (GEN_ALL Local_lemmas.AFF_GT_SUB_AFF_UNION)[`{vec 0:real^3}`;`{ v1, w (l + k - 1):real^3}`][SET_RULE`{A}UNION {B,C}={A,B,C}`]
5570 THEN EXISTS_TAC`e':real`
5571 THEN ASM_REWRITE_TAC[]
5572 THEN REPEAT RESA_TAC
5573 THEN REPLICATE_TAC (66-27)(POP_ASSUM MP_TAC)
5574 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5575 THEN MRESA_TAC th[`t:real`])
5576 THEN REWRITE_TAC[GSYM aff]
5577 THEN MRESAL_TAC Marchal_cells_2_new.AFFINE_SUBSET_KY_LEMMA[`{v2, v, w1:real^3}`;`{vec 0,v, w1,v2:real^3}`][SET_RULE`{A,B,C} SUBSET {D,B,C,A}`;GSYM aff]
5578 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
5579 THEN EXISTS_TAC`aff {v2, v, w1:real^3}`
5580 THEN ASM_REWRITE_TAC[]
5581 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
5582 THEN EXISTS_TAC`aff {vec 0, v1, w (l + k - 1):real^3}`
5583 THEN ASM_REWRITE_TAC[]
5584 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
5585 THEN EXISTS_TAC`aff_gt {vec 0} {v1, w (l + k - 1):real^3}`
5586 THEN ASM_REWRITE_TAC[v3_defor_v4]]);;
5589 let DEFORMATION_LUNAR_AFFINE_HULL_V1=prove_by_refinement(`3<k /\
5593 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
5594 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5595 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5596 w l=v2/\ w (SUC l) =v1/\ ~(norm v2 = &2)
5597 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
5598 /\ ~(v=v2)/\ ~(w1=v2) /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
5599 /\ IMAGE (w:num->real^3) (:num)=V
5600 /\ IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)=E
5603 ?e. &0<e /\ (!t. t IN real_interval (--e,e)
5604 ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
5605 affine hull {vec 0, v, w1, v2})`,
5608 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1
5610 THEN MP_TAC HYPER_MM_COLLINEAR
5612 THEN REPLICATE_TAC (25-6)(POP_ASSUM MP_TAC)
5613 THEN POP_ASSUM(fun th->
5616 THEN MP_TAC th THEN MP_TAC th1))
5617 THEN REPEAT RESA_TAC
5618 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) (l + k - 1)`]
5619 THEN REPLICATE_TAC (27-3)(POP_ASSUM MP_TAC)
5620 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5622 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;IN_REAL_INTERVAL]
5624 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
5625 THEN REPEAT RESA_TAC)
5626 THEN MP_TAC BBS_IMP_CONVEX_LOCAL_FAN
5628 THEN SUBGOAL_THEN`(v2:real^3) IN V` ASSUME_TAC;
5631 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5632 THEN EXISTS_TAC`l:num`
5633 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
5635 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
5638 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5639 THEN EXISTS_TAC`l+k-1`
5640 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
5641 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
5644 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
5645 THEN REPEAT RESA_TAC;
5647 SUBGOAL_THEN`v2,v1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
5650 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5651 THEN EXISTS_TAC`l:num`
5652 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
5653 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
5656 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
5657 THEN REPEAT RESA_TAC;
5659 MP_TAC Local_lemmas.CVLF_LF_F
5661 THEN MRESA_TAC (GEN_ALL Local_lemmas.IVS_RHO_NODE1_DETE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`]
5662 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`v1:real^3`;]
5663 THEN MRESAL_TAC (GEN_ALL LUNAR_IMP_INTERIOR_ANGLE1_EQ_PI)
5664 [`E:(real^3->bool)->bool`;`V:real^3->bool`;`FF:real^3#real^3->bool`;`v:real^3`;`w1:real^3`;][DIFF;IN_ELIM_THM;SET_RULE`~(a IN {b,c}) <=> (~(a=b)/\ ~(a=c))`]
5665 THEN POP_ASSUM(fun th-> MRESA_TAC th[`v2:real^3`])
5666 THEN MRESA_TAC (GEN_ALL Collect_geom2.THREE_GEN_POINTS_IN_AFF3)[`v2:real^3`;`v:real^3`;`w1:real^3`]
5667 THEN MRESA_TAC (GEN_ALL Local_lemmas.CONV02_SUBSET_AFF2)[`v:real^3`;`w1:real^3`]
5668 THEN MP_TAC(SET_RULE`v IN aff {v2, v, w1}/\ w1 IN aff {v2, v, w1}
5669 ==> {v, w1} SUBSET aff {v2, v, w1:real^3}`)
5671 THEN MRESA_TAC(GEN_ALL Local_lemmas.S_SUBSET_IMP_AFF_S_TOO)[`{v, w1:real^3}`;` {v2, v, w1:real^3}`]
5672 THEN MP_TAC(SET_RULE`v1 IN aff {v2, v, w1}/\ w (l + k - 1) IN aff {v2, v, w1}
5673 /\ vec 0 IN conv0 {v, w1} /\ conv0 {v, w1} SUBSET aff {v, w1}
5674 /\ aff {v, w1} SUBSET aff {v2, v, w1}
5675 ==> {vec 0, v1, w (l + k - 1)} SUBSET aff {v2, v, w1:real^3}`)
5677 THEN MRESA_TAC(GEN_ALL Local_lemmas.S_SUBSET_IMP_AFF_S_TOO)[`{vec 0, v1, w (l + k - 1):real^3}`;` {v2, v, w1:real^3}`]
5678 THEN MRESAL_TAC (GEN_ALL Local_lemmas.AFF_GT_SUB_AFF_UNION)[`{vec 0:real^3}`;`{ v1, w (l + k - 1):real^3}`][SET_RULE`{A}UNION {B,C}={A,B,C}`]
5679 THEN EXISTS_TAC`e':real`
5680 THEN ASM_REWRITE_TAC[]
5681 THEN REPEAT RESA_TAC
5682 THEN REPLICATE_TAC (66-27)(POP_ASSUM MP_TAC)
5683 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5684 THEN MRESA_TAC th[`t:real`])
5685 THEN REWRITE_TAC[GSYM aff]
5686 THEN MRESAL_TAC Marchal_cells_2_new.AFFINE_SUBSET_KY_LEMMA[`{v2, v, w1:real^3}`;`{vec 0,v, w1,v2:real^3}`][SET_RULE`{A,B,C} SUBSET {D,B,C,A}`;GSYM aff]
5687 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
5688 THEN EXISTS_TAC`aff {v2, v, w1:real^3}`
5689 THEN ASM_REWRITE_TAC[]
5690 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
5691 THEN EXISTS_TAC`aff {vec 0, v1, w (l + k - 1):real^3}`
5692 THEN ASM_REWRITE_TAC[]
5693 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
5694 THEN EXISTS_TAC`aff_gt {vec 0} {v1, w (l + k - 1):real^3}`
5695 THEN ASM_REWRITE_TAC[v3_defor_v4];]);;
5706 (******************************)
5710 let MHAEYJNv1_concl =
5711 `!a b V E FF f v w u.
5712 convex_local_fan (V,E,FF) /\
5714 deformation f V (a,b) /\
5715 interior_angle1 (vec 0) FF v < pi /\
5719 (!u' t. u' IN V /\ ~(u = u') /\ t IN real_interval (a,b) ==> f u' t = u') /\
5720 (!t. &0< t/\ t<b ==> f u t IN affine hull {vec 0, v, w, u})
5722 (!t. --e < t /\ t < e
5723 ==> convex_local_fan
5724 (IMAGE (\v. f v t) V,
5725 IMAGE (IMAGE (\v. f v t)) E,
5726 IMAGE (\uv. f (FST uv) t,f (SND uv) t) FF) /\
5727 lunar (v,w) (IMAGE (\v. f v t) V)
5728 (IMAGE (IMAGE (\v. f v t)) E)))`;;
5729 let ZLZTHICv1_concl =
5731 convex_local_fan (V,E,FF) /\
5733 deformation f V (a,b) /\
5734 (!v t. v IN V /\ &0<t/\ t<b /\ interior_angle1 (vec 0) FF v = pi ==> interior_angle1 (vec 0) ( IMAGE (\uv. f (FST uv) t,f (SND uv) t) FF) (f v t) <= pi)
5736 (!t. --e < t /\ t < e
5737 ==> convex_local_fan
5738 (IMAGE (\v. f v t) V,
5739 IMAGE (IMAGE (\v. f v t)) E,
5740 IMAGE (\uv. f (FST uv) t,f (SND uv) t) FF) /\
5741 generic (IMAGE (\v. f v t) V)
5742 (IMAGE (IMAGE (\v. f v t)) E)))`;;
5746 let V3_DEFOR_CONVEX_LOCAL_FAN_concl =`!s k w l.
5750 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
5752 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
5753 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
5755 ~(&2 = norm (v2)) /\
5757 (!i. ~(scs_J_v39 s l i)) /\
5758 w l=v2/\ w (SUC l) =v1/\
5759 norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1/\
5761 V = IMAGE w (:num) /\
5762 E = IMAGE (\i. {w i, w (SUC i)}) (:num) ==>
5763 ~(lunar (v,(w l)) V E ))
5766 (!t. --e < t /\ t < e
5769 (IMAGE (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t) (:num),
5771 (\i. {v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t, v3_defor_v4 a x1 x2 x6 v1 v2
5776 (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t,
5777 v3_defor_v4 a x1 x2 x6 v1 v2 (w (SUC i)) t)
5782 let V3_DEFOR_DEFORMATION_CONVEX_LOCAL_FAN=prove_by_refinement((mk_imp(ZLZTHICv1_concl, mk_imp (MHAEYJNv1_concl, V3_DEFOR_CONVEX_LOCAL_FAN_concl))),
5787 REPLICATE_TAC (19-4)(POP_ASSUM MP_TAC)
5788 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5789 THEN POP_ASSUM MP_TAC
5791 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
5794 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
5795 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
5796 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
5797 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
5798 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
5799 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
5801 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
5804 REPLICATE_TAC (38-19)(POP_ASSUM MP_TAC)
5805 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5807 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
5808 THEN REPEAT RESA_TAC)
5811 SUBGOAL_THEN`(v2:real^3) IN V` ASSUME_TAC;
5815 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5816 THEN EXISTS_TAC`l:num`
5817 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
5820 SUBGOAL_THEN`(v1:real^3) IN V` ASSUME_TAC;
5824 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5825 THEN EXISTS_TAC`SUC l:num`
5826 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
5828 SUBGOAL_THEN`(v2:real^3) IN ball_annulus` ASSUME_TAC;
5831 REPLICATE_TAC (41-19)(POP_ASSUM MP_TAC)
5832 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5834 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
5835 THEN REPEAT RESA_TAC)
5836 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
5837 THEN EXISTS_TAC`V:real^3->bool`
5838 THEN ASM_REWRITE_TAC[];
5842 SUBGOAL_THEN`(v1:real^3) IN ball_annulus` ASSUME_TAC;
5845 REPLICATE_TAC (42-19)(POP_ASSUM MP_TAC)
5846 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5848 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
5849 THEN REPEAT RESA_TAC)
5850 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
5851 THEN EXISTS_TAC`V:real^3->bool`
5852 THEN ASM_REWRITE_TAC[];
5856 SUBGOAL_THEN`((v2,v1):real^3#real^3) IN FF`ASSUME_TAC
5861 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
5862 THEN EXISTS_TAC`l:num`
5863 THEN ASM_REWRITE_TAC[SET_RULE`(a:num) IN (:num)`];
5865 MP_TAC Local_lemmas.CVLF_LF_F
5867 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,v1):real^3#real^3`]
5868 THEN POP_ASSUM MP_TAC
5869 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
5871 THEN MP_TAC NORM_POS_COLLINEAR
5873 THEN MP_TAC V3_DEFOR_IN_BALL_ANNULUS_DEFORMATION
5875 THEN MP_TAC UPS_X_POS_SEG
5881 MRESA_TAC Deformation.XRECQNS[`-- &1`;`&1`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`ww_defor ((w:num->real^3) l)`]
5882 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_DEFORMATION)[`x2:real`;`x6:real`;`a:real`;`x1:real`;`x2:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`V:real^3->bool`][REAL_ARITH`&0< &1`]
5883 THEN MP_TAC Wrgcvdr_cizmrrh.CIZMRRH
5887 MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR
5892 ABBREV_TAC`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2`
5893 THEN MP_TAC(REAL_ARITH`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''/\ &0< e'''' ==> &0< e1/\ e1< &1/\ e1< e /\ e1< e' /\ e1< e'' /\ e1<= e'''/\ -- e'''<= --e1/\ --e1< &0/\ e1< e''''`)
5898 MRESA_TAC (GEN_ALL DEFORMATION_SMALL_INTERVAL)[`-- e''':real`;`e''':real`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`V:real^3->bool`;`--e1:real`;`e1:real`]
5899 THEN REPLICATE_TAC (73-0) (POP_ASSUM MP_TAC)
5900 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5901 THEN POP_ASSUM MP_TAC
5902 THEN MRESA_TAC th[`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`])
5903 THEN POP_ASSUM MP_TAC
5904 THEN SUBGOAL_THEN`(!v t.
5907 interior_angle1 (vec 0) FF v = pi
5908 ==> interior_angle1 (vec 0)
5910 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
5911 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
5913 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) <=
5918 THEN REPLICATE_TAC (76-61)(POP_ASSUM MP_TAC)
5919 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
5920 THEN MATCH_MP_TAC th)
5921 THEN ASM_REWRITE_TAC[]
5922 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''''==> t<e''''`)
5927 THEN REMOVE_ASSUM_TAC
5928 THEN EXISTS_TAC`e''''':real`
5929 THEN ASM_REWRITE_TAC[V_DEFORMATION_V3_DEFOR;E_DEFORMATION_V3_DEFOR;F_DEFORMATION_V3_DEFOR]
5931 THEN POP_ASSUM(fun th-> STRIP_TAC
5932 THEN MRESA_TAC th[`t:real`]);
5936 (***********lunar**********)
5939 MRESAL_TAC JKQEWGV3[`s:scs_v39`;`w:num->real^3`;`v:real^3`;`w':real^3`][LET_DEF;LET_END_DEF;]
5940 THEN MP_TAC(REAL_ARITH`interior_angle1 (vec 0) FF v < pi / &2/\ &0< pi
5941 ==> interior_angle1 (vec 0) FF v < pi`)
5942 THEN ASM_REWRITE_TAC[PI_WORKS]
5945 THEN SUBGOAL_THEN`~(v2=v:real^3)`ASSUME_TAC;
5948 POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`w':real^3`])
5950 THEN POP_ASSUM(fun th->
5952 THEN REWRITE_TAC[th]
5953 THEN REPEAT RESA_TAC)
5954 THEN ASM_REWRITE_TAC[Local_lemmas.LUNAR_COMM];
5957 SUBGOAL_THEN`~(v2=w':real^3)`ASSUME_TAC;
5961 THEN POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v:real^3`])
5963 THEN POP_ASSUM(fun th->
5965 THEN REWRITE_TAC[th]
5966 THEN REPEAT RESA_TAC);
5970 THEN POP_ASSUM MP_TAC
5971 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
5973 THEN ABBREV_TAC`w1=w':real^3`
5974 THEN MP_TAC DEFORMATION_LUNAR_AFFINE_HULL
5976 THEN ABBREV_TAC`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2`
5977 THEN MP_TAC(REAL_ARITH`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''/\ &0< e'''' ==> &0< e1/\ e1< &1/\ e1< e /\ e1< e' /\ e1< e'' /\ e1<= e'''/\ -- e'''<= --e1/\ --e1< &0/\ e1< e''''`)
5979 THEN SUBGOAL_THEN`(!u' t.
5980 u' IN V /\ ~(v2 = u':real^3) /\ t IN real_interval (--e1,e1)
5981 ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 u' t = u')`ASSUME_TAC;
5985 THEN REWRITE_TAC[v3_defor_v4]
5986 THEN REMOVE_ASSUM_TAC
5987 THEN POP_ASSUM(fun th-> REWRITE_TAC[th]);
5991 SUBGOAL_THEN`(!t. &0< t/\ t< e1
5992 ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
5993 affine hull {vec 0, v, w1, v2})`ASSUME_TAC
5998 THEN REPLICATE_TAC (80-67)(POP_ASSUM MP_TAC)
5999 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6000 THEN MATCH_MP_TAC th)
6001 THEN ASM_REWRITE_TAC[]
6002 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''''==> t<e''''`)
6005 MRESA_TAC (GEN_ALL DEFORMATION_SMALL_INTERVAL)[`-- e''':real`;`e''':real`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`V:real^3->bool`;`--e1:real`;`e1:real`]
6006 THEN REPLICATE_TAC (80-1) (POP_ASSUM MP_TAC)
6007 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6008 THEN POP_ASSUM MP_TAC
6009 THEN MRESA_TAC th[`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`v:real^3`;`w':real^3`;`v2:real^3`])
6010 THEN POP_ASSUM MP_TAC
6016 THEN REMOVE_ASSUM_TAC
6017 THEN EXISTS_TAC`e''''':real`
6018 THEN ASM_REWRITE_TAC[V_DEFORMATION_V3_DEFOR;E_DEFORMATION_V3_DEFOR;F_DEFORMATION_V3_DEFOR]
6020 THEN POP_ASSUM(fun th-> STRIP_TAC
6021 THEN MRESA_TAC th[`t:real`]);
6033 let V3_DEFOR_DEFORMATION_CONVEX_LOCAL_FAN_V1=prove_by_refinement((mk_imp(ZLZTHIC_concl, mk_imp (MHAEYJN_concl, V3_DEFOR_CONVEX_LOCAL_FAN_concl))),
6039 REPLICATE_TAC (19-4)(POP_ASSUM MP_TAC)
6040 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6041 THEN POP_ASSUM MP_TAC
6043 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6046 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
6047 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
6048 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
6049 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
6050 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
6051 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
6053 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
6057 REPLICATE_TAC (38-19)(POP_ASSUM MP_TAC)
6058 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6060 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6061 THEN REPEAT RESA_TAC);
6064 SUBGOAL_THEN`(v2:real^3) IN V` ASSUME_TAC;
6069 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
6070 THEN EXISTS_TAC`l:num`
6071 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
6075 SUBGOAL_THEN`(v1:real^3) IN V` ASSUME_TAC;
6080 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
6081 THEN EXISTS_TAC`SUC l:num`
6082 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
6085 SUBGOAL_THEN`(v2:real^3) IN ball_annulus` ASSUME_TAC;
6089 REPLICATE_TAC (41-19)(POP_ASSUM MP_TAC)
6090 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6092 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6093 THEN REPEAT RESA_TAC)
6094 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
6095 THEN EXISTS_TAC`V:real^3->bool`
6096 THEN ASM_REWRITE_TAC[];
6101 SUBGOAL_THEN`(v1:real^3) IN ball_annulus` ASSUME_TAC;
6105 REPLICATE_TAC (42-19)(POP_ASSUM MP_TAC)
6106 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6108 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6109 THEN REPEAT RESA_TAC)
6110 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
6111 THEN EXISTS_TAC`V:real^3->bool`
6112 THEN ASM_REWRITE_TAC[];
6117 SUBGOAL_THEN`((v2,v1):real^3#real^3) IN FF`ASSUME_TAC;
6122 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
6123 THEN EXISTS_TAC`l:num`
6124 THEN ASM_REWRITE_TAC[SET_RULE`(a:num) IN (:num)`];
6127 MP_TAC Local_lemmas.CVLF_LF_F
6129 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,v1):real^3#real^3`]
6130 THEN POP_ASSUM MP_TAC
6131 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
6133 THEN MP_TAC NORM_POS_COLLINEAR
6135 THEN MP_TAC V3_DEFOR_IN_BALL_ANNULUS_DEFORMATION
6137 THEN MP_TAC UPS_X_POS_SEG
6143 MRESA_TAC Deformation.XRECQNS[`-- &1`;`&1`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`ww_defor ((w:num->real^3) l)`]
6144 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_DEFORMATION)[`x2:real`;`x6:real`;`a:real`;`x1:real`;`x2:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`V:real^3->bool`][REAL_ARITH`&0< &1`]
6145 THEN MP_TAC Wrgcvdr_cizmrrh.CIZMRRH
6150 MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1
6155 ABBREV_TAC`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2`
6156 THEN MP_TAC(REAL_ARITH`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''/\ &0< e'''' ==> &0< e1/\ e1< &1/\ e1< e /\ e1< e' /\ e1< e'' /\ e1<= e'''/\ -- e'''<= --e1/\ --e1< &0/\ e1< e''''`)
6161 MRESA_TAC (GEN_ALL DEFORMATION_SMALL_INTERVAL)[`-- e''':real`;`e''':real`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`V:real^3->bool`;`--e1:real`;`e1:real`]
6162 THEN REPLICATE_TAC (73-0) (POP_ASSUM MP_TAC)
6163 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6164 THEN POP_ASSUM MP_TAC
6165 THEN MRESA_TAC th[`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`])
6166 THEN POP_ASSUM MP_TAC
6167 THEN SUBGOAL_THEN`(!v t.
6169 t IN real_interval (--e1,e1) /\
6170 interior_angle1 (vec 0) FF v = pi
6171 ==> interior_angle1 (vec 0)
6173 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
6174 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
6176 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) <=
6180 ASM_REWRITE_TAC[IN_REAL_INTERVAL]
6181 THEN REPEAT RESA_TAC
6182 THEN REPLICATE_TAC (76-61)(POP_ASSUM MP_TAC)
6183 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6184 THEN MATCH_MP_TAC th)
6185 THEN ASM_REWRITE_TAC[IN_REAL_INTERVAL]
6186 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''''/\ --e1 <t ==> t<e''''/\ --e''''<t`)
6192 THEN REMOVE_ASSUM_TAC
6193 THEN EXISTS_TAC`e''''':real`
6194 THEN ASM_REWRITE_TAC[V_DEFORMATION_V3_DEFOR;E_DEFORMATION_V3_DEFOR;F_DEFORMATION_V3_DEFOR]
6196 THEN POP_ASSUM(fun th-> STRIP_TAC
6197 THEN MRESA_TAC th[`t:real`]);
6202 (***********lunar**********)
6205 MRESAL_TAC JKQEWGV3[`s:scs_v39`;`w:num->real^3`;`v:real^3`;`w':real^3`][LET_DEF;LET_END_DEF;]
6206 THEN MP_TAC(REAL_ARITH`interior_angle1 (vec 0) FF v < pi / &2/\ &0< pi
6207 ==> interior_angle1 (vec 0) FF v < pi`)
6208 THEN ASM_REWRITE_TAC[PI_WORKS]
6211 THEN SUBGOAL_THEN`~(v2=v:real^3)`ASSUME_TAC;
6215 POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`w':real^3`])
6217 THEN POP_ASSUM(fun th->
6219 THEN REWRITE_TAC[th]
6220 THEN REPEAT RESA_TAC)
6221 THEN ASM_REWRITE_TAC[Local_lemmas.LUNAR_COMM];
6225 SUBGOAL_THEN`~(v2=w':real^3)`ASSUME_TAC;
6230 THEN POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v:real^3`])
6232 THEN POP_ASSUM(fun th->
6234 THEN REWRITE_TAC[th]
6235 THEN REPEAT RESA_TAC);
6240 THEN POP_ASSUM MP_TAC
6241 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6243 THEN ABBREV_TAC`w1=w':real^3`
6244 THEN MP_TAC DEFORMATION_LUNAR_AFFINE_HULL_V1
6246 THEN ABBREV_TAC`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2`
6247 THEN MP_TAC(REAL_ARITH`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''/\ &0< e'''' ==> &0< e1/\ e1< &1/\ e1< e /\ e1< e' /\ e1< e'' /\ e1<= e'''/\ -- e'''<= --e1/\ --e1< &0/\ e1< e''''`)
6249 THEN SUBGOAL_THEN`(!u' t.
6250 u' IN V /\ ~(v2 = u':real^3) /\ t IN real_interval (--e1,e1)
6251 ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 u' t = u')`ASSUME_TAC;
6256 THEN REWRITE_TAC[v3_defor_v4]
6257 THEN REMOVE_ASSUM_TAC
6258 THEN POP_ASSUM(fun th-> REWRITE_TAC[th]);
6263 SUBGOAL_THEN`(!t. t IN real_interval (--e1,e1)
6264 ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
6265 affine hull {vec 0, v, w1, v2})`ASSUME_TAC;
6267 ASM_REWRITE_TAC[IN_REAL_INTERVAL]
6268 THEN REPEAT RESA_TAC
6269 THEN REPLICATE_TAC (80-67)(POP_ASSUM MP_TAC)
6270 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6271 THEN MATCH_MP_TAC th)
6272 THEN ASM_REWRITE_TAC[IN_REAL_INTERVAL]
6273 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''''/\ --e1<t==> t<e''''/\ --e''''<t`)
6277 MRESA_TAC (GEN_ALL DEFORMATION_SMALL_INTERVAL)[`-- e''':real`;`e''':real`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`V:real^3->bool`;`--e1:real`;`e1:real`]
6278 THEN REPLICATE_TAC (80-1) (POP_ASSUM MP_TAC)
6279 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6280 THEN POP_ASSUM MP_TAC
6281 THEN MRESA_TAC th[`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`v:real^3`;`w':real^3`;`v2:real^3`])
6282 THEN POP_ASSUM MP_TAC
6288 THEN REMOVE_ASSUM_TAC
6289 THEN EXISTS_TAC`e''''':real`
6290 THEN ASM_REWRITE_TAC[V_DEFORMATION_V3_DEFOR;E_DEFORMATION_V3_DEFOR;F_DEFORMATION_V3_DEFOR]
6292 THEN POP_ASSUM(fun th-> STRIP_TAC
6293 THEN MRESA_TAC th[`t:real`]);
6306 let CARD_FF_EQ_V3_DEFOR_DEFORMATION=prove(`scs_k_v39 s =k /\
6307 IMAGE (w:num->real^3) (:num)=V/\
6310 BBs_v39 s w /\(!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t))
6311 ==> (!t. &0< t/\ t< e1==>
6313 (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t,
6314 v3_defor_v4 a x1 x2 x6 v1 v2 (w (SUC i)) t)
6316 =CARD(IMAGE (\i. w i,w (SUC i)) (:num)))`,
6319 THEN POP_ASSUM(fun th-> STRIP_TAC
6320 THEN MRESA_TAC th[`t:real`])
6321 THEN MRESA_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`]
6322 THEN MRESA_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`(\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t)`;`IMAGE ((\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t)) (:num)`;`k:num`]
6323 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<= 3)`)
6325 THEN POP_ASSUM(fun th-> ASM_TAC
6327 THEN REPEAT RESA_TAC)
6329 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;convex_local_fan]
6330 THEN REPEAT RESA_TAC
6331 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOFA_IMP_CARD_FF_V_EQ)
6332 [`IMAGE (\i. { v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t, v3_defor_v4 a x1 x2 x6 v1 v2 (w (SUC i)) t})
6333 (:num)`;`IMAGE (\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t,v3_defor_v4 a x1 x2 x6 v1 v2 (w (SUC i)) t) (:num)`;`IMAGE (\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (:num)`]
6334 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOFA_IMP_CARD_FF_V_EQ)
6335 [`IMAGE (\i. {w i, (w:num->real^3) (SUC i)}) (:num)`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`V:real^3->bool`]);;
6340 let DSV_V3_DEFOR_EQ=prove_by_refinement(
6344 (!i. ~(scs_J_v39 s l i))
6346 dsv_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 (w l) (w i) t) = dsv_v39 s w`,
6348 REWRITE_TAC[dsv_v39]
6350 THEN MATCH_MP_TAC(REAL_ARITH`a=b==> c+a=c+b`)
6351 THEN MP_TAC(SET_RULE`is_ear_v39 s\/ ~(is_ear_v39 s)`)
6353 THEN MATCH_MP_TAC(REAL_ARITH`a=b==> #0.1*a= #0.1*b`);
6355 REWRITE_TAC[REAL_ARITH`&1 *a=a`]
6356 THEN MATCH_MP_TAC SUM_EQ
6357 THEN REWRITE_TAC[IN_ELIM_THM]
6358 THEN REPEAT STRIP_TAC
6359 THEN MP_TAC(SET_RULE`(w:num->real^3) l= w x\/ ~(w l =w x)`)
6362 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
6364 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
6365 THEN REPEAT RESA_TAC
6366 THEN MP_TAC(ARITH_RULE`3<=k ==> ~(k=0)`)
6368 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6369 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6370 THEN MRESA_TAC DIVISION[`l:num`;`scs_k_v39 s`]
6371 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
6372 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6373 THEN MRESA_TAC th[`l MOD k:num`;`x:num`])
6374 THEN REPLICATE_TAC (34-25) (POP_ASSUM MP_TAC)
6375 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6376 THEN MRESA_TAC th[`SUC x:num`;])
6377 THEN POP_ASSUM MP_TAC
6378 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_J_v39 s (SUC x)`][ARITH_RULE`~(4=0)`;periodic]
6379 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]);
6381 MP_TAC(SET_RULE`(w:num->real^3) l= w (SUC x)\/ ~(w l =w (SUC x))`)
6384 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
6386 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
6387 THEN REPEAT RESA_TAC
6388 THEN MP_TAC(ARITH_RULE`3<=k ==> ~(k=0)`)
6390 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6391 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
6392 THEN POP_ASSUM MP_TAC
6393 THEN MRESAL1_TAC th`SUC x:num`[ARITH_RULE`4 MOD 4=0`])
6394 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
6396 THEN MRESA_TAC DIVISION[`l:num`;`scs_k_v39 s`]
6397 THEN MRESA_TAC DIVISION[`SUC x:num`;`scs_k_v39 s`]
6398 THEN REPLICATE_TAC (6) (POP_ASSUM MP_TAC)
6399 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6400 THEN MRESA_TAC th[`l MOD k:num`;`SUC x MOD k:num`])
6401 THEN REPLICATE_TAC (37-25) (POP_ASSUM MP_TAC)
6402 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6403 THEN MRESA_TAC th[`x:num`;])
6404 THEN POP_ASSUM MP_TAC
6405 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_J_v39 s (x)`][ARITH_RULE`~(4=0)`;periodic]
6406 THEN POP_ASSUM (fun th->
6407 MRESAL1_TAC th`SUC x:num`[ARITH_RULE`4 MOD 4=0`]
6408 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6409 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th]);
6411 ASM_REWRITE_TAC[v3_defor_v4];
6413 REWRITE_TAC[REAL_ARITH`-- &1 *a= -- &1 * b<=> a=b`]
6414 THEN MATCH_MP_TAC SUM_EQ
6415 THEN REWRITE_TAC[IN_ELIM_THM]
6416 THEN REPEAT STRIP_TAC
6417 THEN MP_TAC(SET_RULE`(w:num->real^3) l= w x\/ ~(w l =w x)`)
6420 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
6422 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
6423 THEN REPEAT RESA_TAC
6424 THEN MP_TAC(ARITH_RULE`3<=k ==> ~(k=0)`)
6426 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6427 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6428 THEN MRESA_TAC DIVISION[`l:num`;`scs_k_v39 s`]
6429 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
6430 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6431 THEN MRESA_TAC th[`l MOD k:num`;`x:num`])
6432 THEN REPLICATE_TAC (34-25) (POP_ASSUM MP_TAC)
6433 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6434 THEN MRESA_TAC th[`SUC x:num`;])
6435 THEN POP_ASSUM MP_TAC
6436 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_J_v39 s (SUC x)`][ARITH_RULE`~(4=0)`;periodic]
6437 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]);
6439 MP_TAC(SET_RULE`(w:num->real^3) l= w (SUC x)\/ ~(w l =w (SUC x))`)
6442 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
6444 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
6445 THEN REPEAT RESA_TAC
6446 THEN MP_TAC(ARITH_RULE`3<=k ==> ~(k=0)`)
6448 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6449 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
6450 THEN POP_ASSUM MP_TAC
6451 THEN MRESAL1_TAC th`SUC x:num`[ARITH_RULE`4 MOD 4=0`])
6452 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
6454 THEN MRESA_TAC DIVISION[`l:num`;`scs_k_v39 s`]
6455 THEN MRESA_TAC DIVISION[`SUC x:num`;`scs_k_v39 s`]
6456 THEN REPLICATE_TAC (6) (POP_ASSUM MP_TAC)
6457 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6458 THEN MRESA_TAC th[`l MOD k:num`;`SUC x MOD k:num`])
6459 THEN REPLICATE_TAC (37-25) (POP_ASSUM MP_TAC)
6460 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6461 THEN MRESA_TAC th[`x:num`;])
6462 THEN POP_ASSUM MP_TAC
6463 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_J_v39 s (x)`][ARITH_RULE`~(4=0)`;periodic]
6464 THEN POP_ASSUM (fun th->
6465 MRESAL1_TAC th`SUC x:num`[ARITH_RULE`4 MOD 4=0`]
6466 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6467 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th]);
6469 ASM_REWRITE_TAC[v3_defor_v4]]);;
6473 let DEFORMATION_INTERIOR_ANGLE1_EQ_V3_DEFOR_V1=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
6475 w l=v2/\ w (SUC l) =v1 /\
6476 &0< x1 /\ &0<x2 /\ &0< x6 /\
6477 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
6478 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
6479 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
6480 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
6481 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
6482 /\ IMAGE (w:num->real^3) (:num)=V
6487 ==> interior_angle1 (vec 0)
6489 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
6490 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
6492 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) =
6493 interior_angle1 (vec 0) FF v))`,
6495 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_V1
6497 THEN EXISTS_TAC`e:real`
6498 THEN ASM_REWRITE_TAC[interior_angle1]
6499 THEN REPEAT RESA_TAC
6500 THEN REPLICATE_TAC (23-20) (POP_ASSUM MP_TAC)
6501 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6502 THEN MRESA_TAC th[`t:real`;`v:real^3`])
6503 THEN REAL_ARITH_TAC);;
6507 let RHO_FUN_DEFORMATION_V3_DEFOR=prove_by_refinement(` &0< x1 /\ &0<x2 /\ &0< x6 /\
6508 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a = -- &1
6509 ==> ?e. &0< e /\ (!t. &0<t /\ t<e ==> rho_fun (norm(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)))
6510 < rho_fun (norm (v2)))`,
6513 THEN MP_TAC UPS_X_POS_SEG
6515 THEN EXISTS_TAC`e:real`
6516 THEN ASM_REWRITE_TAC[]
6518 THEN POP_ASSUM(fun th-> STRIP_TAC THEN
6519 MP_TAC(REAL_ARITH`&0<t/\ t<e==> --e<t`)
6521 THEN MRESA_TAC th[`t:real`])
6522 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORMV3)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`x2-t:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
6523 THEN REWRITE_TAC[rho_fun;h0;]
6524 THEN MATCH_MP_TAC(REAL_ARITH`a<b==> c+a<c+ b`)
6525 THEN MATCH_MP_TAC REAL_LT_LMUL
6528 MATCH_MP_TAC REAL_LT_INV
6529 THEN REAL_ARITH_TAC;
6531 MATCH_MP_TAC REAL_LT_LMUL
6534 MATCH_MP_TAC REAL_LT_INV
6535 THEN REWRITE_TAC[PI_WORKS];
6537 MATCH_MP_TAC REAL_LT_LMUL
6538 THEN REWRITE_TAC[Gbycpxs.SOL0_POS]
6539 THEN MATCH_MP_TAC(REAL_ARITH`a<b==> a-c<b-c`)
6540 THEN REWRITE_TAC[ww_defor;NORM_MUL]
6541 THEN MP_TAC(REAL_ARITH`t< &1==> &0<= &1- t`)
6543 THEN MRESA_TAC REAL_ABS_REFL[`&1-t`]
6544 THEN ASM_REWRITE_TAC[NORM_LT;DOT_SQUARE_NORM;REAL_ARITH`a-b<a<=> &0<b`]]);;
6549 let INTERIOR_ANGLE_SAME_V3_DEFOR1=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
6551 w l=v2/\ w (SUC l) =v1 /\
6552 &0< x1 /\ &0<x2 /\ &0< x6 /\
6553 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
6554 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
6555 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
6556 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
6557 /\(!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t))/\
6560 IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
6561 /\ IMAGE (w:num->real^3) (:num)=V
6566 interior_angle1 (vec 0)
6568 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
6569 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
6574 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
6575 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
6577 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l MOD k)) t))
6579 interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) (w (l MOD k)))))`,
6581 THEN MP_TAC DEFORMATION_INTERIOR_ANGLE1_EQ_V3_DEFOR_V1
6583 THEN ABBREV_TAC`e2=(min e e1)/ &2`
6584 THEN MP_TAC(REAL_ARITH`e2=(min e e1)/ &2 /\ &0< e/\ &0<e1==> &0<e2/\ e2<e/\ e2<e1`)
6586 THEN EXISTS_TAC`e2:real`
6587 THEN ASM_REWRITE_TAC[]
6588 THEN REPEAT RESA_TAC
6590 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;]
6591 THEN REPEAT STRIP_TAC
6592 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
6594 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)[`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l MOD k)`;`w:num->real^3`;`l MOD k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;]
6595 THEN REPLICATE_TAC (43-25)(POP_ASSUM MP_TAC)
6596 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6597 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e1==> t<e1`)
6599 THEN MRESA_TAC th[`t:real`])
6600 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)
6601 [`IMAGE (\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (:num)`;`IMAGE (\i. { v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t, v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) (SUC i)) t}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t, v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) (SUC i)) t) (:num)`;`(\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (l MOD k)`;`(\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t)`;`l MOD k`]
6602 [MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;F_DEFORMATION_V3_DEFOR]
6603 THEN REPLICATE_TAC (45-29)(POP_ASSUM MP_TAC)
6604 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6605 THEN MATCH_MP_TAC th)
6606 THEN ASM_REWRITE_TAC[]
6607 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e/\ &0<t==> t<e/\ --e<t`)
6610 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
6611 THEN EXISTS_TAC`i + l MOD k`
6612 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`]);;
6617 let TAUSTAR_V3_DEFOR_concl = `!s k w l.
6618 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
6620 w l=v2/\ w (SUC l) =v1 /\
6621 &0< x1 /\ &0<x2 /\ &0< x6 /\
6622 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
6623 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
6624 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
6625 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1/\
6626 ~(&2 = norm (w l)) /\
6627 (!i. ~(scs_J_v39 s l i)) /\
6628 (!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t))/\
6632 (!t. &0 < t /\ t < e
6633 ==> taustar_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t)< taustar_v39 s w
6638 let TAUSTAR_V3_DEFOR=prove_by_refinement( TAUSTAR_V3_DEFOR_concl,
6642 REPLICATE_TAC (22-5)(POP_ASSUM MP_TAC)
6643 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6644 THEN POP_ASSUM MP_TAC
6646 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6649 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
6650 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
6651 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
6652 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
6653 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
6654 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
6656 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
6658 REPLICATE_TAC (41-22)(POP_ASSUM MP_TAC)
6659 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6661 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
6662 THEN REPEAT RESA_TAC);
6664 ASM_REWRITE_TAC[taustar_v39;LET_DEF;LET_END_DEF;tau_fun]
6666 THEN MP_TAC INTERIOR_ANGLE_SAME_V3_DEFOR1
6668 THEN MP_TAC RHO_FUN_DEFORMATION_V3_DEFOR
6670 THEN ABBREV_TAC`e2=(min (min e1 e) e')/ &2`
6671 THEN MP_TAC(REAL_ARITH`e2=(min(min e1 e) e')/ &2/\ &0< e1/\ &0< e/\ &0<e'
6672 ==> &0< e2/\ e2< e1/\ e2<e/\ e2< e'`)
6674 THEN EXISTS_TAC`e2:real`
6675 THEN ASM_REWRITE_TAC[]
6676 THEN REPEAT STRIP_TAC
6677 THEN MP_TAC(REAL_ARITH`e2=(min(min e1 e) e')/ &2/\ &0< e1/\ &0< e/\ &0<e'
6679 ==> t< e1/\ t<e/\ t< e'`)
6681 THEN MP_TAC CARD_FF_EQ_V3_DEFOR_DEFORMATION
6683 THEN POP_ASSUM(fun th->MRESA1_TAC th`t:real`)
6684 THEN MP_TAC DSV_V3_DEFOR_EQ
6686 THEN MATCH_MP_TAC(REAL_ARITH`a<b==> a-c< b-c`)
6687 THEN MATCH_MP_TAC(REAL_ARITH`a<b==> a-c< b-c`)
6688 THEN MRESA_TAC(GEN_ALL Qknvmlb.SUM_AZIM_EQ_ANGLE_LE4)[`V:real^3->bool`;`w:num->real^3`;`l:num`;`s:scs_v39`;`(w:num->real^3) (l MOD scs_k_v39 s)`;`FF:real^3#real^3->bool`;`E:(real^3->bool)->bool`]
6689 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
6690 THEN REPLICATE_TAC (59-20)(POP_ASSUM MP_TAC)
6691 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6692 THEN MRESA_TAC th[`t:real`])
6693 THEN MRESA_TAC(GEN_ALL Qknvmlb.SUM_AZIM_EQ_ANGLE_LE4)[`IMAGE (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (:num)`;` (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) i) t)`;`l:num`;`s:scs_v39`;` (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (l MOD scs_k_v39 s)`;`IMAGE (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) i) t, v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC i)) t) (:num)`;`IMAGE (\i. { v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w i) t, v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) (SUC i)) t}) (:num)`]
6694 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
6695 THEN SUBGOAL_THEN`{i|i<k:num}= 0..(k-1)`ASSUME_TAC;
6697 REWRITE_TAC[IN_ELIM_THM;IN_NUMSEG;EXTENSION]
6698 THEN REPLICATE_TAC (59-2)(POP_ASSUM MP_TAC)
6699 THEN POP_ASSUM (fun th-> REPEAT STRIP_TAC
6704 THEN MRESAL_TAC SUM_ADD_SPLIT[`(\i. rho_fun (norm (w (i + l MOD k))) *
6705 interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) (w (l MOD k))))`;`0`;`0`;`k-1`][ARITH_RULE`0<=0+1/\ 0+A=A`]
6706 THEN MRESAL_TAC SUM_ADD_SPLIT[`(\i. rho_fun (norm (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (i + l MOD k)) t)) *
6707 interior_angle1 (vec 0)
6708 (IMAGE (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w i) t,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC i)) t)
6712 (IMAGE (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (i)) t,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC i )) t)
6714 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w ( l MOD k)) t)))`;`0`;`0`;`k-1`][ARITH_RULE`0<=0+1/\ 0+A=A`]
6715 THEN MATCH_MP_TAC(REAL_ARITH`a<b/\ c=d==> a+c<b+d`)
6716 THEN REWRITE_TAC[SUM_SING_NUMSEG;ITER]
6719 REWRITE_TAC[ARITH_RULE`0+A=A`]
6720 THEN REPLICATE_TAC (62-40)(POP_ASSUM MP_TAC)
6721 THEN POP_ASSUM (fun th-> ASM_TAC
6723 THEN REPEAT RESA_TAC
6725 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39;convex_local_fan]
6726 THEN REPEAT RESA_TAC
6727 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6728 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6729 THEN SUBGOAL_THEN`(v2:real^3) IN V`ASSUME_TAC;
6732 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
6733 THEN EXISTS_TAC`l:num`
6734 THEN ASM_REWRITE_TAC[SET_RULE`(l:num)IN(:num)`];
6736 REPLICATE_TAC (91-67)(POP_ASSUM MP_TAC)
6737 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6738 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e/\ &0<t ==> --e<t`)
6740 THEN MRESAL_TAC th[`t:real`;`0`][F_DEFORMATION_V3_DEFOR;ITER])
6741 THEN MP_TAC Local_lemmas.LOFA_IMP_V_DIFF
6743 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3) l`])
6744 THEN MATCH_MP_TAC REAL_LT_RMUL
6747 REPLICATE_TAC (93-68)(POP_ASSUM MP_TAC)
6748 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6749 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e'/\ &0<t ==> --e'<t`)
6751 THEN MRESAL_TAC th[`t:real`][v3_defor_v4]);
6753 MRESA_TAC (GEN_ALL Local_lemmas.INTERIOR_ANGLE1_POS)[`E:(real^3->bool)->bool`;`V:real^3->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3) (l MOD scs_k_v39 s)`];
6756 THEN REWRITE_TAC[IN_NUMSEG;F_DEFORMATION_V3_DEFOR]
6757 THEN REPEAT STRIP_TAC
6758 THEN MP_TAC(ARITH_RULE`x<=k-1/\ 3< k==> x< k`)
6760 THEN REPLICATE_TAC (65-44)(POP_ASSUM MP_TAC)
6761 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6762 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e/\ &0<t ==> --e<t`)
6764 THEN MRESAL_TAC th[`t:real`;`x:num`][F_DEFORMATION_V3_DEFOR;ITER])
6765 THEN REWRITE_TAC[REAL_EQ_MUL_RCANCEL]
6766 THEN MATCH_MP_TAC (SET_RULE`A==> A\/ B`)
6768 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39;convex_local_fan]
6769 THEN REPEAT RESA_TAC
6770 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6771 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
6772 THEN SUBGOAL_THEN`(v2:real^3) IN V`ASSUME_TAC;
6775 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
6776 THEN EXISTS_TAC`l:num`
6777 THEN ASM_REWRITE_TAC[SET_RULE`(l:num)IN(:num)`];
6779 MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;convex_local_fan;is_scs_v39;periodic2]
6780 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)[`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l MOD k)`;`w:num->real^3`;`l MOD k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;convex_local_fan;is_scs_v39;periodic2]
6781 THEN POP_ASSUM(fun th-> MRESA_TAC th[`x:num`] )
6782 THEN MP_TAC(ARITH_RULE`1<=x==> 0<x`)
6785 MRESA_TAC (GEN_ALL Local_lemmas.LOFA_IMP_DIS_ELMS23)
6786 [`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l MOD k)`]
6787 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`0:num`;`x:num`][ITER;v3_defor_v4] )]);;
6794 (**********TWO ***************)
6797 let EQ_W_L_IN_BBS=prove(`3<k/\ scs_k_v39 s=k/\ BBs_v39 s w ==> w (SUC(l+k-1))= w l`,
6798 REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF]
6799 THEN REPEAT STRIP_TAC
6802 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)/\ SUC(l+k-1)=1*k+l`)
6804 THEN REPEAT RESA_TAC
6805 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
6806 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6807 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
6808 THEN MRESAL1_TAC th`1*k+l:num`[ARITH_RULE`4 MOD 4=0`]));;
6814 let HYPER_MM_COLLINEAR_TWO_CASES=prove_by_refinement(`scs_k_v39 s =k/\is_scs_v39 s /\
6816 3<k/\ w l=v2/\ w (l+k-1) =v1
6817 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6
6819 &0< x1 /\ &0<x2 /\ &0< x6 /\
6820 ~(collinear{vec 0,v1,v2:real^3}) `,
6822 REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;]
6824 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
6825 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
6826 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
6829 THEN REPEAT DISCH_TAC;
6834 SUBGOAL_THEN`((v1,v2):real^3#real^3) IN FF`ASSUME_TAC;
6837 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
6838 THEN EXISTS_TAC`l+k-1:num`
6839 THEN ASM_REWRITE_TAC[SET_RULE`(a:num) IN (:num)`]
6840 THEN MP_TAC EQ_W_L_IN_BBS
6841 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF]
6844 MP_TAC Local_lemmas.CVLF_LF_F
6846 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v1,v2):real^3#real^3`]
6847 THEN MP_TAC NORM_POS_COLLINEAR
6852 let DEFORMATION_DIST_LE_V3_DEFOR_A_TWO_CASES=prove(`is_scs_v39 s /\
6855 3<k /\ w l=v2/\ w (l+k-1) =v1
6856 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
6858 (!i. ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k) ==> scs_a_v39 s l i < dist (v2,w i))
6859 ==> (!i. ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k) ==> ?e. &0< e/\
6860 (!t. &0< t/\ t< e ==> scs_a_v39 s l i < dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)))`,
6862 THEN MP_TAC HYPER_MM_COLLINEAR_TWO_CASES
6864 THEN REPEAT STRIP_TAC
6865 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST
6866 THEN ASM_REWRITE_TAC[]
6867 THEN REPLICATE_TAC (16-10)(POP_ASSUM MP_TAC)
6868 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
6869 THEN MRESA_TAC th[`i:num`]));;
6874 let DEFORMATION_DIST_LE_V3_DEFOR_A_COM_TWO_CASES=prove_by_refinement(
6878 3<k /\ w l=v2/\ w (l+k-1) =v1
6879 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
6881 (!i. ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k) ==> scs_a_v39 s l i < dist (v2,w i))
6883 (!t i. &0< t/\ t< e /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k) ==> scs_a_v39 s l i < dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))`,
6886 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_TWO_CASES
6888 THEN POP_ASSUM MP_TAC
6889 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
6890 THEN REWRITE_TAC[SKOLEM_THM]
6892 THEN ABBREV_TAC`e1= inf {(e:num->real) i| i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`
6893 THEN EXISTS_TAC`e1:real`
6894 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`ASSUME_TAC;
6896 MATCH_MP_TAC FINITE_SUBSET
6897 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
6900 MATCH_MP_TAC FINITE_IMAGE
6901 THEN REWRITE_TAC[FINITE_NUMSEG];
6903 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_ELIM_THM]
6906 THEN EXISTS_TAC`i:num`
6907 THEN ASM_REWRITE_TAC[IN_NUMSEG]
6908 THEN REPLICATE_TAC (16-12)(POP_ASSUM MP_TAC)
6911 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)} = {})`ASSUME_TAC;
6913 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
6914 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(l MOD k =0)`)
6917 EXISTS_TAC`(e:num->real)2`
6919 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
6920 THEN MP_TAC(ARITH_RULE`3<k==> 0<k /\ 1<k/\ 2<k /\ ~(k=0)/\ SUC 1=2/\ ~(0=1)/\ ~(0=2)/\ SUC 0=1/\ ~(1=2)`)
6922 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
6923 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
6924 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
6925 THEN MRESA_TAC MOD_LT[`3`;`k:num`]
6926 THEN MRESA_TAC(GEN_ALL Zithlqn.IMP_SUC_MOD_EQ)[`l:num`;`0:num`;`k:num`];
6929 MP_TAC(SET_RULE`l MOD k=1\/ ~(l MOD k= 1 )`)
6932 EXISTS_TAC`(e:num->real)3`
6934 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
6935 THEN MP_TAC(ARITH_RULE`3<k==> 0<k /\ 1<k/\ 2<k /\ ~(k=0)/\ SUC 1=2/\ ~(0=1)/\ ~(0=2)/\ SUC 0=1/\ ~(1=2)/\ ~(1=3)/\ ~(2=3)`)
6937 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
6938 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
6939 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
6940 THEN MRESA_TAC MOD_LT[`3`;`k:num`]
6941 THEN MRESA_TAC(GEN_ALL Zithlqn.IMP_SUC_MOD_EQ)[`l:num`;`1:num`;`k:num`];
6943 EXISTS_TAC`(e:num->real)1`
6945 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
6946 THEN MP_TAC(ARITH_RULE`3<k==> 0<k /\ 1<k/\ 2<k /\ ~(k=0)/\ SUC 1=2/\ ~(0=1)/\ ~(0=2)/\ SUC 0=1/\ ~(1=2)/\ ~(1=3)/\ ~(2=3)`)
6948 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
6949 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
6950 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
6951 THEN MRESA_TAC MOD_LT[`3`;`k:num`]
6952 THEN MRESAL_TAC(Hdplygy.MOD_EQ_MOD1)[`l:num`;`0`;`1:num`;`k:num`][ARITH_RULE`0<=a/\ 1+a= SUC a`];
6956 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i| i < k/\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`;`&0`]
6957 THEN REWRITE_TAC[IN_ELIM_THM]
6958 THEN REPEAT RESA_TAC
6959 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
6960 THEN REPLICATE_TAC (20-11) (POP_ASSUM MP_TAC)
6961 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6962 THEN MRESA_TAC th[`i:num`]);
6965 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i| i < k/\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`;`t:real`]
6966 THEN POP_ASSUM MP_TAC
6967 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(SUC l MOD k = i MOD k)}`ASSUME_TAC;
6969 REWRITE_TAC[IN_ELIM_THM]
6970 THEN EXISTS_TAC`i MOD k`
6971 THEN ASM_REWRITE_TAC[]
6972 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
6974 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
6975 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
6976 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
6977 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1];
6980 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
6981 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
6983 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
6984 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
6985 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
6986 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1]
6987 THEN REPLICATE_TAC (27-11) (POP_ASSUM MP_TAC)
6988 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
6989 THEN MRESA_TAC th[`i:num MOD k`])
6990 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
6992 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
6993 THEN REPEAT RESA_TAC
6994 THEN POP_ASSUM MP_TAC
6995 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
6996 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
6997 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
6998 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])]);;
7003 let DEFORMATION_DIST_LE_V3_DEFOR_A_SUC_TWO_CASES=prove(`is_scs_v39 s /\
7006 3<k /\ w l=v2/\ w (l+k-1) =v1
7007 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
7009 (!i. ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k) ==> scs_a_v39 s l i < dist (v2,w i))
7010 ==> (!i. ~(l MOD k = i MOD k) /\ ~(l MOD k =SUC i MOD k) ==> ?e. &0< e/\
7011 (!t. &0< t/\ t< e ==> scs_a_v39 s l i < dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)))`,
7013 THEN MP_TAC HYPER_MM_COLLINEAR_TWO_CASES
7015 THEN REPEAT STRIP_TAC
7016 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST
7017 THEN ASM_REWRITE_TAC[]
7018 THEN REPLICATE_TAC (16-10)(POP_ASSUM MP_TAC)
7019 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7020 THEN MRESA_TAC th[`i:num`]));;
7023 let DEFORMATION_DIST_LE_V3_DEFOR_A_COM_SUC_TWO_CASES=prove_by_refinement(`is_scs_v39 s /\
7026 3<k /\ w l=v2/\ w (l+k-1) =v1
7027 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
7029 (!i. ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k) ==> scs_a_v39 s l i < dist (v2,w i))
7031 (!t i. &0< t/\ t< e /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k) ==> scs_a_v39 s l i < dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))`,
7034 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_SUC_TWO_CASES
7036 THEN POP_ASSUM MP_TAC
7037 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
7038 THEN REWRITE_TAC[SKOLEM_THM]
7040 THEN ABBREV_TAC`e1= inf {(e:num->real) i| i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`
7041 THEN EXISTS_TAC`e1:real`
7042 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`ASSUME_TAC;
7045 MATCH_MP_TAC FINITE_SUBSET
7046 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
7049 MATCH_MP_TAC FINITE_IMAGE
7050 THEN REWRITE_TAC[FINITE_NUMSEG];
7052 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_ELIM_THM]
7055 THEN EXISTS_TAC`i:num`
7056 THEN ASM_REWRITE_TAC[IN_NUMSEG]
7057 THEN REPLICATE_TAC (16-12)(POP_ASSUM MP_TAC)
7060 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)} = {})`ASSUME_TAC;
7062 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
7063 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(l MOD k =0)`)
7066 EXISTS_TAC`(e:num->real)1`
7068 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
7069 THEN MP_TAC(ARITH_RULE`3<k==> 1<k/\ 2<k /\ ~(k=0)/\ SUC 1=2/\ ~(0=1)/\ ~(0=2)`)
7071 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
7072 THEN MRESA_TAC MOD_LT[`2`;`k:num`];
7074 MP_TAC(SET_RULE`l MOD k=1\/ ~(l MOD k= 1 )`)
7077 EXISTS_TAC`(e:num->real)2`
7079 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
7080 THEN MP_TAC(ARITH_RULE`3<k==> 1<k/\ 2<k /\ ~(k=0)/\ SUC 1=2/\ ~(1=2)/\ ~(1=3)/\ SUC 2=3`)
7082 THEN MRESA_TAC MOD_LT[`2`;`k:num`]
7083 THEN MRESA_TAC MOD_LT[`3`;`k:num`];
7085 EXISTS_TAC`(e:num->real)0`
7087 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
7088 THEN MP_TAC(ARITH_RULE`3<k==> 0<k/\ 1<k /\ ~(k=0)/\ SUC 1=2/\ ~(1=2)/\ ~(1=3)/\ SUC 0=1`)
7090 THEN MRESA_TAC MOD_LT[`0`;`k:num`]
7091 THEN MRESA_TAC MOD_LT[`1`;`k:num`];
7095 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i| i < k/\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`;`&0`]
7096 THEN REWRITE_TAC[IN_ELIM_THM]
7097 THEN REPEAT RESA_TAC
7098 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
7099 THEN REPLICATE_TAC (20-11) (POP_ASSUM MP_TAC)
7100 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7101 THEN MRESA_TAC th[`i:num`]);
7104 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i| i < k/\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`;`t:real`]
7105 THEN POP_ASSUM MP_TAC
7106 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(l MOD k = i MOD k) /\ ~(l MOD k = SUC i MOD k)}`ASSUME_TAC;
7108 REWRITE_TAC[IN_ELIM_THM]
7109 THEN EXISTS_TAC`i MOD k`
7110 THEN ASM_REWRITE_TAC[]
7111 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
7113 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
7114 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
7115 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
7116 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1];
7119 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
7120 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1<k`)
7122 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
7123 THEN MRESA_TAC MOD_LT[`i MOD k`;`k:num`]
7124 THEN MRESA_TAC MOD_LT[`1`;`k:num`]
7125 THEN MRESAL_TAC MOD_ADD_MOD[`i:num`;`1:num`;`k:num`][GSYM ADD1]
7126 THEN REPLICATE_TAC (27-11) (POP_ASSUM MP_TAC)
7127 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7128 THEN MRESA_TAC th[`i:num MOD k`])
7129 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
7131 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7132 THEN REPEAT RESA_TAC
7133 THEN POP_ASSUM MP_TAC
7134 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
7135 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
7136 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7137 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])]);;
7141 let DEFORMATION_DIST_LE_V3_DEFOR_B_SUC_TWO_CASES=prove_by_refinement(` scs_k_v39 s =k/\
7142 3<k /\ is_scs_v39 s /\
7144 w l=v2/\ w (l+k-1) =v1
7145 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
7146 /\ (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
7147 ==> (!i. scs_diag k l i ==> ?e. &0< e/\
7148 (!t. &0< t/\ t< e ==> dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)<scs_b_v39 s l i)) `,
7150 THEN MP_TAC HYPER_MM_COLLINEAR_TWO_CASES
7152 THEN REPEAT STRIP_TAC
7153 THEN MATCH_MP_TAC EXISTS_SMALL_LT_CONST
7154 THEN ASM_REWRITE_TAC[]
7158 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)`)
7160 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7161 THEN REPEAT RESA_TAC
7162 THEN SUBGOAL_THEN`v2 IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
7164 REWRITE_TAC[IN_ELIM_THM;IMAGE]
7165 THEN EXISTS_TAC`l:num`
7166 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
7168 SUBGOAL_THEN`w i IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
7170 REWRITE_TAC[IN_ELIM_THM;IMAGE]
7171 THEN EXISTS_TAC`i:num`
7172 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
7174 MP_TAC(SET_RULE`v2 IN IMAGE w (:num)/\ w i IN IMAGE w (:num)/\ IMAGE w (:num) SUBSET ball_annulus ==> v2 IN ball_annulus/\ w i IN ball_annulus`)
7175 THEN ASM_REWRITE_TAC[]
7176 THEN REWRITE_TAC[IN_ELIM_THM;DIFF;ball_annulus;cball;]
7177 THEN REPEAT STRIP_TAC
7178 THEN MRESA_TAC DIST_TRIANGLE[`v2:real^3`;`vec 0:real^3`;`(w:num->real^3) i`]
7179 THEN MP_TAC(REAL_ARITH`dist (v2,vec 0) <= &2 * h0/\ dist (vec 0,w i) <= &2 * h0/\ dist (v2,w i) <= dist (v2,vec 0) + dist (vec 0,w i)
7180 ==> dist (v2,(w:num->real^3) i)<= &4 *h0`)
7181 THEN ASM_REWRITE_TAC[]
7182 THEN ONCE_REWRITE_TAC[DIST_SYM]
7183 THEN ASM_REWRITE_TAC[]
7184 THEN ONCE_REWRITE_TAC[DIST_SYM]
7185 THEN REPLICATE_TAC (53-41)(POP_ASSUM MP_TAC)
7186 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7187 THEN MRESA_TAC th[`i:num`])
7188 THEN REPLICATE_TAC (2)(POP_ASSUM MP_TAC)
7189 THEN REAL_ARITH_TAC]);;
7192 let DEFORMATION_DIST_LE_2_TWO_CASES=prove(` 3<k /\
7196 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
7197 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
7198 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
7199 w l=v2/\ w (l+k-1) =v1/\ ~(norm v2 = &2)/\ scs_a_v39 s l i < dist (v2,w i)
7200 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
7201 /\ SUC l MOD k= i MOD k
7204 (!t. &0< t/\ t< e ==> &2<dist (v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i) ) `,
7206 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST
7207 THEN ASM_REWRITE_TAC[]
7208 THEN MP_TAC HYPER_MM_COLLINEAR_TWO_CASES
7213 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)/\ ~(k=0)/\ 1<k`)
7215 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7216 THEN REPEAT RESA_TAC
7217 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
7218 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
7219 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
7221 THEN POP_ASSUM(fun th-> MRESA1_TAC th`l:num`)
7222 THEN REPLICATE_TAC (56-18) (POP_ASSUM MP_TAC)
7223 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7224 THEN MRESA_TAC th[`i:num MOD k`;`l MOD k` ])
7225 THEN POP_ASSUM MP_TAC
7226 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
7227 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
7228 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
7229 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
7230 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
7231 THEN REPLICATE_TAC (59-42) (POP_ASSUM MP_TAC)
7232 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7234 THEN POP_ASSUM MP_TAC
7235 THEN ASM_REWRITE_TAC[]
7236 THEN REAL_ARITH_TAC);;
7242 let DEFORMATION_V3_DEFOR_EDGE_TWO_CASES=prove_by_refinement(` 3<k /\
7246 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
7247 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
7248 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
7249 w l=v2/\ w (l+k-1) =v1/\ ~(norm v2 = &2)/\ scs_a_v39 s l i < dist (v2,w i)
7250 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
7251 /\ SUC l MOD k= i MOD k
7254 (!t. &0< t/\ t< e ==> dist (v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)<dist (v2,w i) ) `,
7258 THEN MP_TAC HYPER_MM_COLLINEAR_TWO_CASES
7260 THEN MP_TAC DEFORMATION_DIST_LE_2_TWO_CASES
7264 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
7265 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7266 THEN REPEAT RESA_TAC
7267 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
7268 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
7269 THEN MP_TAC UPS_X_POS_SEG
7271 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
7272 THEN SUBGOAL_THEN`(w:num->real^3) l IN V` ASSUME_TAC;
7277 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
7278 THEN EXISTS_TAC`l:num`
7279 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
7283 SUBGOAL_THEN`(w:num->real^3) (l+k-1) IN V` ASSUME_TAC;
7288 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
7289 THEN EXISTS_TAC`l+k-1:num`
7290 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
7293 SUBGOAL_THEN`(w:num->real^3) l IN ball_annulus` ASSUME_TAC;
7297 MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
7298 THEN EXISTS_TAC`V:real^3->bool`
7299 THEN ASM_REWRITE_TAC[];
7304 SUBGOAL_THEN`(w:num->real^3) (l+k-1) IN ball_annulus` ASSUME_TAC;
7308 MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
7309 THEN EXISTS_TAC`V:real^3->bool`
7310 THEN ASM_REWRITE_TAC[];
7313 REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
7314 THEN REPEAT RESA_TAC
7315 THEN MP_TAC V3_DEFOR_IN_BALL_ANNULUS_DEFORMATION
7317 THEN REPLICATE_TAC (68-41) (POP_ASSUM MP_TAC)
7318 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7320 THEN REPLICATE_TAC (67-41) (POP_ASSUM MP_TAC)
7321 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7323 THEN POP_ASSUM MP_TAC
7324 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7325 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`SUC l:num`[ARITH_RULE`4 MOD 4=0`]
7326 THEN MRESA_TAC th[`i:num`])
7327 THEN REPEAT STRIP_TAC
7328 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
7329 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
7330 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) i`]
7331 THEN POP_ASSUM MP_TAC
7332 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
7333 THEN ASM_REWRITE_TAC[]
7334 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
7336 THEN ABBREV_TAC`e1= (min (min (min e e') e'') e''')/ &2`
7337 THEN MP_TAC(REAL_ARITH`e1= (min (min (min e e') e'') e''')/ &2 /\ &0< e /\ &0< e'/\ &0< e''/\ &0< e''' ==> &0< e1/\ e1<= e/\ e1<=e'/\ e1< e''/\ e1< e'''`)
7339 THEN EXISTS_TAC`e1:real`
7340 THEN ASM_REWRITE_TAC[]
7341 THEN REPEAT STRIP_TAC
7342 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'') e''')/ &2 /\ &0< e /\ &0< e'/\ &0< e''/\ t<e1/\ &0<t/\ &0< e'''==> --e' < t/\ t< e'/\ t<e/\ t< e'''/\ t< e''`)
7344 THEN REPLICATE_TAC (87-59) (POP_ASSUM MP_TAC)
7345 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7346 THEN MRESA_TAC th[`t:real`])
7347 THEN REPLICATE_TAC (88-65) (POP_ASSUM MP_TAC)
7348 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7349 THEN MRESA_TAC th[`t:real`])
7350 THEN POP_ASSUM MP_TAC
7351 THEN REWRITE_TAC[v3_defor_v4]
7352 THEN REPLICATE_TAC (87-72) (POP_ASSUM MP_TAC)
7353 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7354 THEN POP_ASSUM MP_TAC
7355 THEN MRESA_TAC th[`t:real`])
7356 THEN ABBREV_TAC`v3=v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t) `
7357 THEN ASM_REWRITE_TAC[ball_annulus;IN_ELIM_THM;DIFF;ball;cball;dist;VECTOR_ARITH`vec 0-A= -- A`;NORM_NEG;REAL_ARITH`~(a<b)<=> b<=a`]
7359 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORMV3)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`x2-t:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
7360 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`v1:real^3`;`x6:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
7361 THEN MRESA_TAC DOT_NORM_SUB[`v1:real^3`;`v3:real^3`]
7362 THEN POP_ASSUM MP_TAC
7363 THEN REWRITE_TAC[GSYM dist]
7364 THEN ONCE_REWRITE_TAC[DIST_SYM]
7365 THEN ASM_REWRITE_TAC[dist]
7366 THEN ABBREV_TAC`v4= (w:num->real^3) i`
7367 THEN MRESA_TAC DOT_NORM_SUB[`v4:real^3`;`v2:real^3`]
7368 THEN MRESA_TAC DOT_NORM_SUB[`v4:real^3`;`v3:real^3`]
7369 THEN MRESA_TAC DOT_NORM_SUB[`v1:real^3`;`v2:real^3`]
7376 REPLICATE_TAC (97-63) (POP_ASSUM MP_TAC)
7377 THEN POP_ASSUM(fun th->
7378 POP_ASSUM(fun th1-> REPEAT STRIP_TAC
7381 THEN ASM_REWRITE_TAC[ball_annulus;IN_ELIM_THM;DIFF;ball;cball;dist;VECTOR_ARITH`vec 0-A= -- A`;NORM_NEG;REAL_ARITH`~(a<b)<=> b<=a`]
7382 THEN REPEAT STRIP_TAC
7383 THEN SUBGOAL_THEN`&2 <= norm (v1 - v2:real^3) ` ASSUME_TAC;
7385 REPLICATE_TAC (99-30) (POP_ASSUM MP_TAC)
7386 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7387 THEN MRESA_TAC th[`l+k-1:num`;`l:num`])
7388 THEN REMOVE_ASSUM_TAC
7389 THEN POP_ASSUM MP_TAC
7390 THEN REWRITE_TAC[dist]
7391 THEN MRESA_TAC DIVISION[`l+k-1`;`k:num`]
7392 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
7393 THEN MRESA_TAC (GEN_ALL Qknvmlb.SUC_MOD_NOT_EQ)[`k:num`]
7394 THEN POP_ASSUM(fun th-> MRESA_TAC th[`i:num`])
7395 THEN REPLICATE_TAC (103-22) (POP_ASSUM MP_TAC)
7396 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7397 THEN MRESA_TAC th[`(l+k-1) MOD k:num`;`l MOD k:num`])
7398 THEN POP_ASSUM MP_TAC
7399 THEN POP_ASSUM MP_TAC
7400 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
7401 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`(l+k-1):num`[ARITH_RULE`4 MOD 4=0`])
7402 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s ((l+k-1) MOD k)`][ARITH_RULE`~(4=0)`;periodic]
7403 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
7404 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
7405 THEN MP_TAC MOD_ADD_SUB_1
7407 THEN REAL_ARITH_TAC;
7412 MRESAL_TAC xrr_decreasing_lt[`norm (v3:real^3)`;`norm (v2:real^3)`;`norm(v1:real^3)`;`norm (v1-v2:real^3)`][xrr;REAL_ARITH`a*a= a pow 2`]
7413 THEN POP_ASSUM MP_TAC
7414 THEN ONCE_REWRITE_TAC[Pack1.norm_abs]
7415 THEN ASM_REWRITE_TAC[REAL_LT_SQUARE_ABS]
7416 THEN ASM_REWRITE_TAC[REAL_ABS_NORM;REAL_ARITH`a-b<a<=> &0<b`]
7417 THEN REWRITE_TAC[REAL_ARITH`&8*(&1-A)< &8*(&1-B) <=> B<A`]
7418 THEN MRESA_TAC th3[`vec 0:real^3`;`v1:real^3`;`v2:real^3`]
7419 THEN MRESAL_TAC COS_ANGLE[`v1:real^3`;`vec 0:real^3`;`v2:real^3`][VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c*d=a*b*d*c`]
7420 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
7421 THEN SUBGOAL_THEN`~(v3 = vec 0:real^3)` ASSUME_TAC;
7425 THEN POP_ASSUM(fun th-> ASM_TAC
7426 THEN REWRITE_TAC[th;NORM_0;REAL_ARITH`~(&2<= &0)`]);
7430 MRESAL_TAC COS_ANGLE[`v1:real^3`;`vec 0:real^3`;`v3:real^3`][VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c*d=a*b*d*c`]
7431 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
7433 THEN MRESAL_TAC COS_MONO_LT_EQ[`angle (v1,vec 0,v3:real^3)`;`angle (v1,vec 0,v2:real^3)`][ANGLE_RANGE]
7434 THEN MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, v4}/\ v3 IN aff_gt {vec 0} {v1, v4} /\ aff_gt {vec 0} {v1,v4} SUBSET aff_ge {vec 0} {v1,v4}==> v2 IN aff_ge {vec 0} {v1, v4}/\ v3 IN aff_ge {vec 0} {v1, v4:real^3}`)
7435 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
7436 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
7438 THEN MRESA_TAC th3[`vec 0:real^3`;`v4:real^3`;`v1:real^3`]
7439 THEN MRESA_TAC Polar_fan.ANGLES_ADD_AFF_GE [`vec 0:real^3`;`v1:real^3`;`v4:real^3`;`v2:real^3`]
7440 THEN POP_ASSUM MP_TAC
7441 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
7443 THEN MRESA_TAC Polar_fan.ANGLES_ADD_AFF_GE [`vec 0:real^3`;`v1:real^3`;`v4:real^3`;`v3:real^3`]
7444 THEN POP_ASSUM MP_TAC
7445 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
7447 THEN MP_TAC(REAL_ARITH`angle (v1,vec 0,v2) < angle (v1,vec 0,v3)
7448 /\ angle (v1,vec 0,v2) + angle (v2,vec 0,v4) = angle (v1,vec 0,v4)
7449 /\ angle (v1,vec 0,v3) + angle (v3,vec 0,v4) = angle (v1,vec 0,v4)
7450 ==> angle (v3,vec 0,v4) <angle (v2,vec 0,v4:real^3)`)
7452 THEN MRESAL_TAC COS_MONO_LT_EQ[`angle (v2,vec 0,v4:real^3)`;`angle (v3,vec 0,v4:real^3)`][ANGLE_RANGE]
7453 THEN POP_ASSUM MP_TAC
7454 THEN ONCE_REWRITE_TAC[ANGLE_SYM]
7455 THEN MRESAL_TAC COS_ANGLE[`v4:real^3`;`vec 0:real^3`;`v3:real^3`][VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c*d=a*b*d*c`]
7456 THEN MRESAL_TAC COS_ANGLE[`v4:real^3`;`vec 0:real^3`;`v2:real^3`][VECTOR_ARITH`A- vec 0=A`;real_div;REAL_INV_MUL;REAL_ARITH`(x1 + x2) - x6= x2+x1-x6/\ (a*b)*c*d=a*b*d*c`]
7457 THEN REPLICATE_TAC (116-88) (POP_ASSUM MP_TAC)
7458 THEN POP_ASSUM(fun th->
7459 POP_ASSUM(fun th1-> REPEAT STRIP_TAC
7460 THEN POP_ASSUM MP_TAC
7463 THEN REWRITE_TAC[REAL_ARITH`(norm v4 pow 2 + x2) - norm (v4 - v2) pow 2
7464 =x2+norm v4 pow 2 - norm (v4 - v2) pow 2`;real_div;REAL_ARITH`a*b*c*d=(a*b)*c*d`]
7467 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th]
7468 THEN POP_ASSUM(fun th1-> REWRITE_TAC[SYM th1] THEN ASSUME_TAC (SYM th)
7469 THEN ASSUME_TAC (SYM th)))
7470 THEN SUBGOAL_THEN`(w:num->real^3) (SUC l) IN V` ASSUME_TAC;
7475 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
7476 THEN EXISTS_TAC`SUC l:num`
7477 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
7480 SUBGOAL_THEN`(w:num->real^3) (SUC l) IN ball_annulus` ASSUME_TAC;
7484 MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
7485 THEN EXISTS_TAC`V:real^3->bool`
7486 THEN ASM_REWRITE_TAC[];
7494 THEN ASM_REWRITE_TAC[ball_annulus;IN_ELIM_THM;DIFF;ball;cball;dist;VECTOR_ARITH`vec 0-A= -- A`;NORM_NEG;REAL_ARITH`~(a<b)<=> b<=a`;real_div]
7496 THEN ABBREV_TAC`a1=(norm (v4:real^3) pow 2)`
7497 THEN ABBREV_TAC`a2=(norm (v4-v2:real^3) pow 2)`
7498 THEN ABBREV_TAC`a3= x2+a1- &2 *((v4:real^3) dot v3) * (inv (norm v3)) * (inv (norm v4)) * norm v4 * norm(v2:real^3)`
7499 THEN ABBREV_TAC`x= v4- v3_defor_v1 a (vec 0- v4) (v2- v4:real^3) a1 a2 x2 x2 (a3)`
7501 THEN MP_TAC(REAL_ARITH`&2<=norm (v4:real^3)/\ &2<=norm (v2:real^3)==> &0< norm v4/\ &0< norm v2`)
7505 MP_TAC(REAL_ARITH`norm (v4 - v2) pow 2 <= a3\/ a3< norm(v4-v2:real^3) pow 2`)
7510 MRESA_TAC REAL_LE_RSQRT[`norm(v4-v2:real^3)`;`a3:real`]
7511 THEN MP_TAC(REAL_ARITH`norm (v4 - v2) pow 2 <= a3/\ &0<= norm(v4-v2:real^3) pow 2
7513 THEN ASM_REWRITE_TAC[NORM_POS_LE;REAL_LE_POW_2]
7515 THEN MRESA_TAC SQRT_POW_2[`a3:real`]
7516 THEN MRESAL_TAC xrr_increasing_le[`norm(v4:real^3)`;`norm(v2:real^3)`;`norm(v4-v2:real^3)`;`sqrt(a3)`][NORM_POS_LE;xrr;REAL_ARITH`(&8 *( &1-a)<= &8 *( &1-b)<=> b<=a)/\ a*a= a pow 2`;real_div]
7517 THEN POP_ASSUM MP_TAC
7518 THEN REMOVE_ASSUM_TAC
7520 THEN REWRITE_TAC[REAL_ARITH`x+y-(y+x-a)=a`;REAL_INV_MUL]
7521 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v4:real^3`;`vec 0:real^3`]
7523 THEN REDUCE_VECTOR_TAC
7524 THEN REPEAT STRIP_TAC
7525 THEN POP_ASSUM MP_TAC
7526 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v2:real^3`;`vec 0:real^3`]
7528 THEN REDUCE_VECTOR_TAC
7529 THEN REPEAT STRIP_TAC
7530 THEN POP_ASSUM MP_TAC
7531 THEN ASM_REWRITE_TAC[REAL_ARITH`
7532 (&2 *a * inv (b) * inv (c) * c * d) *
7536 = (a * inv (b) * inv (c)) *
7538 (inv (d) * d)`;REAL_ARITH`a * &1=a`]
7539 THEN ASM_REWRITE_TAC[REAL_ARITH`a*b*c*d=(a*b)*d*c`]
7540 THEN ONCE_REWRITE_TAC[REAL_ARITH` a1 + x2 - a2= x2+a1-a2`]
7541 THEN ASM_REWRITE_TAC[REAL_ARITH`a<=b<=> ~(b<a)`];
7544 MRESA_TAC DOT_NORM_SUB[`v4:real^3`;`v3:real^3`]
7545 THEN SUBGOAL_THEN`norm (v4 - v3:real^3) pow 2 < a3`ASSUME_TAC;
7549 THEN REWRITE_TAC[REAL_ARITH`a=((a1+x2-t)-c)/ &2<=> c= a1+x2-t - &2 *a`]
7552 THEN REWRITE_TAC[REAL_ARITH`a1 + x2 - t - &2 * (v4 dot v3) <
7554 a1 - &2 * (v4 dot v3) * inv (norm v3) * inv (norm v4) * norm v4 * norm v2
7555 <=> (v4 dot v3) * inv (norm v3) * (inv (norm v4) * norm v4) * norm v2
7556 < (v4 dot v3)+ t/ &2 `]
7557 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v4:real^3`;`vec 0:real^3`]
7559 THEN REDUCE_VECTOR_TAC
7560 THEN REPEAT STRIP_TAC
7561 THEN ASM_REWRITE_TAC[]
7562 THEN ABBREV_TAC`g=(v4:real^3) dot v3`
7563 THEN MRESAL_TAC SQRT_UNIQUE[`x2:real`;`norm(v2:real^3)`][NORM_POS_LE]
7564 THEN MRESAL_TAC SQRT_UNIQUE[`x2-t:real`;`norm(v3:real^3)`][NORM_POS_LE]
7565 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
7566 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;REAL_ARITH`&1*a=a`])
7567 THEN MP_TAC(REAL_ARITH`&0< x2-t/\ &0< x2/\ &0<t==> &0<= x2-t/\ &0<= x2/\ x2-t<x2/\ ~(x2-t= &0)`)
7569 THEN MRESA_TAC SQRT_INV[`x2-t:real`]
7570 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;])
7571 THEN MRESA_TAC REAL_LE_INV[`x2-t:real`]
7572 THEN MRESA_TAC REAL_LT_INV[`x2-t:real`]
7573 THEN MRESA_TAC SQRT_MUL[`inv(x2-t):real`;`x2:real`]
7574 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;])
7575 THEN MRESA_TAC REAL_MUL_LINV[`x2-t:real`]
7576 THEN MRESA_TAC REAL_LT_LMUL[`inv(x2-t)`;`x2-t:real`;`x2:real`]
7577 THEN MRESAL_TAC SQRT_MONO_LT[`&1:real`;`inv(x2-t) *x2`][REAL_ARITH`&0<= &1`;SQRT_1]
7578 THEN MP_TAC(REAL_ARITH`(v4:real^3) dot v3 = &0\/ &0< --((v4:real^3) dot v3)\/ &0< (v4:real^3) dot v3 `)
7582 ASM_REWRITE_TAC[REAL_ARITH`&0 *a< &0 + t/ &2<=> &0< t`];
7587 MRESA_TAC REAL_LT_LMUL[`-- g`;`&1:real`;`sqrt (inv (x2 - t) * x2):real`]
7588 THEN POP_ASSUM MP_TAC
7589 THEN MP_TAC(REAL_ARITH`&0< t==> &0< t/ &2`)
7590 THEN ASM_REWRITE_TAC[]
7591 THEN REAL_ARITH_TAC;
7595 MP_TAC(REAL_ARITH`&0< g/\ &1 < inv (x2 - t) * x2 ==> ~(g= &0)/\ &0 <= inv (x2 - t) * x2`)
7597 THEN MRESA_TAC REAL_MUL_LINV[`g:real`]
7598 THEN MRESAL_TAC REAL_LT_LMUL[`g:real`;`sqrt (inv (x2 - t) * x2):real`;`(inv g)*(g+t/ &2)`][REAL_ARITH`a*b*c=(b*a)*c/\ &1*x=x`]
7599 THEN POP_ASSUM MATCH_MP_TAC
7600 THEN MATCH_MP_TAC REAL_LT_LSQRT
7601 THEN ASM_REWRITE_TAC[REAL_ARITH`a*(b+c)=a*b+a*c`]
7606 MATCH_MP_TAC(REAL_ARITH`&0< a*b ==> &0<= &1+a *b/ &2`)
7607 THEN MATCH_MP_TAC REAL_LT_MUL
7608 THEN ASM_REWRITE_TAC[]
7609 THEN MATCH_MP_TAC REAL_LT_INV
7610 THEN ASM_REWRITE_TAC[];
7613 REWRITE_TAC[REAL_ARITH`(&1+b) pow 2= &1+ &2*b+ b pow 2/\ &2 * inv g * t / &2= inv g * t `]
7614 THEN MATCH_MP_TAC(REAL_ARITH`&0<=d /\ a< b+c==> a< b+c+d`)
7615 THEN ASM_REWRITE_TAC[REAL_LE_POW_2]
7616 THEN MRESAL_TAC REAL_LT_LMUL[`inv(x2-t):real`;`x2:real`;`(x2-t)*(&1+ inv g *t)`][REAL_ARITH`a*b*c=(a*b)*c/\ &1*x=x`]
7617 THEN POP_ASSUM MATCH_MP_TAC
7618 THEN REWRITE_TAC[REAL_ARITH`x2 < (x2 - t) * (&1 + inv g * t)
7619 <=> t< t*(x2-t) * inv g`]
7620 THEN MRESAL_TAC REAL_LT_LMUL[`t:real`;`&1:real`;`(x2-t)*inv g `][REAL_ARITH`a*b*c=a*b*c/\ x* &1=x`]
7621 THEN POP_ASSUM MATCH_MP_TAC
7622 THEN MRESAL_TAC REAL_LT_LMUL[`inv g:real`;`g:real`;`(x2-t) `][REAL_ARITH`a*b*c=a*b*c/\ x* &1=x`]
7623 THEN ONCE_REWRITE_TAC[REAL_ARITH`a*b=b*a`]
7624 THEN POP_ASSUM MATCH_MP_TAC
7628 MATCH_MP_TAC REAL_LT_INV
7629 THEN ASM_REWRITE_TAC[];
7636 THEN REPLICATE_TAC (151-55) (POP_ASSUM MP_TAC)
7637 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7638 THEN MRESAL_TAC th[`t:real`][dist])
7639 THEN MP_TAC(REAL_ARITH`&2<norm(v3-v4)==> &2<=norm(v3-v4:real^3)`)
7641 THEN MRESAL_TAC DOT_NORM[`v3 - v4:real^3`;`-- v3:real^3`][VECTOR_ARITH`wl - wi + (-- wl)= --wi:real^3`;NORM_NEG]
7642 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (v3:real^3)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
7643 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (v3 - v4:real^3)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
7644 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`norm ((w:num->real^3) i)`;`&2* h0`;][ARITH_RULE`abs (&2 * #1.26)= &2 * #1.26`;REAL_ABS_NORM;h0]
7645 THEN POP_ASSUM MP_TAC
7646 THEN ASM_REWRITE_TAC[GSYM h0]
7647 THEN ASM_REWRITE_TAC[h0]
7649 THEN MP_TAC(REAL_ARITH`(v3 - v4) dot --v3 = (a1 - norm (v3 - v4) pow 2 - (x2 - t)) / &2 /\ &2 pow 2 <= x2 - t
7650 /\ &2 pow 2 <= norm (v3 - v4) pow 2 /\
7651 a1 <= (&2 * #1.26) pow 2
7652 ==> (v3 - v4:real^3) dot --v3< &0`)
7654 THEN POP_ASSUM MP_TAC
7655 THEN REMOVE_ASSUM_TAC
7656 THEN REMOVE_ASSUM_TAC
7657 THEN REMOVE_ASSUM_TAC
7658 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th;DOT_RNEG;DOT_LSUB;DOT_SQUARE_NORM])
7659 THEN REAL_ARITH_TAC;
7664 THEN REMOVE_ASSUM_TAC
7665 THEN POP_ASSUM MP_TAC
7666 THEN REAL_ARITH_TAC;
7671 let DEFORMATION_DIST_LE_BLL_V3_DEFOR_COM_TWO_CASES=prove_by_refinement(
7676 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
7677 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
7678 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
7679 w l=v2/\ w (l+k-1) =v1/\ ~(norm v2 = &2)/\ scs_a_v39 s l (SUC l ) < dist (v2,w (SUC l))
7680 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
7681 /\ (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
7683 (!i. ~(i MOD k = l MOD k) ==>
7685 (!t. &0< t/\ t< e ==> dist (v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)<=scs_b_v39 s l i ))`,
7688 THEN MP_TAC(SET_RULE`SUC l MOD k = i MOD k \/ ~(i MOD k= SUC l MOD k)`)
7691 MP_TAC DEFORMATION_V3_DEFOR_EDGE_TWO_CASES
7695 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
7696 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7697 THEN REPEAT RESA_TAC
7698 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
7699 THEN REPLICATE_TAC (55-46) (POP_ASSUM MP_TAC)
7700 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7702 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
7703 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7704 THEN POP_ASSUM (fun th-> MRESA_TAC th[`SUC l:num`] THEN MRESA_TAC th[`i:num`])
7705 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
7706 THEN POP_ASSUM (fun th-> MRESA_TAC th[`SUC l:num`] THEN MRESA_TAC th[`i:num`])
7707 THEN REPLICATE_TAC (59-53) (POP_ASSUM MP_TAC)
7708 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7711 THEN EXISTS_TAC`e:real`
7712 THEN ASM_REWRITE_TAC[]
7714 THEN POP_ASSUM (fun th-> STRIP_TAC THEN MRESA_TAC th[`t:real`])
7715 THEN POP_ASSUM MP_TAC
7716 THEN REPLICATE_TAC (62-30) (POP_ASSUM MP_TAC)
7717 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7718 THEN MRESAL_TAC th[`l:num`;`i:num`][])
7719 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
7720 THEN REAL_ARITH_TAC;
7722 MP_TAC(SET_RULE`SUC i MOD k= l MOD k \/ ~(SUC i MOD k= l MOD k )`)
7725 MP_TAC HYPER_MM_COLLINEAR_TWO_CASES
7727 THEN MP_TAC UPS_X_POS_SEG
7729 THEN EXISTS_TAC`e:real`
7730 THEN ASM_REWRITE_TAC[]
7731 THEN ASM_REWRITE_TAC[]
7733 THEN POP_ASSUM (fun th-> STRIP_TAC
7734 THEN MP_TAC(REAL_ARITH`t<e/\ &0< t==> --e<t`)
7735 THEN RESA_TAC THEN MRESA_TAC th[`t:real`])
7736 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORMV3)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`x2-t:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
7737 THEN MRESAL_TAC (GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`-- &1`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`v2:real^3`;`v3_defor_v1 (-- &1) v1 (v2:real^3) x1 x2 x6 x6 (x2 - t)`;`v1:real^3`;`x6:real`][SET_RULE`a IN{a,b}`;GSYM v3_defor_v1]
7740 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
7741 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7742 THEN REPEAT RESA_TAC
7743 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7744 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i:num`] THEN MRESA_TAC th[` l+k-1:num`])
7745 THEN REWRITE_TAC[dist]
7746 THEN REPLICATE_TAC (68-30) (POP_ASSUM MP_TAC)
7747 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
7748 THEN MRESAL_TAC th[`l:num`;`l+k-1:num`][])
7749 THEN POP_ASSUM MP_TAC
7750 THEN MRESAL_TAC REAL_EQ_SQUARE_ABS[`norm (v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t) - v1:real^3)`;`norm(v1-v2:real^3)`][REAL_ABS_NORM;GSYM dist]
7751 THEN ONCE_REWRITE_TAC[DIST_SYM]
7752 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
7753 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
7754 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
7755 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
7756 THEN REPEAT RESA_TAC
7757 THEN ONCE_REWRITE_TAC[DIST_SYM]
7758 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
7759 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i:num`] THEN MRESA_TAC th[`l+k-1:num`]);
7761 MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_B_SUC_TWO_CASES
7763 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`i:num`][scs_diag])
7764 THEN EXISTS_TAC`e:real`
7765 THEN ASM_REWRITE_TAC[]
7767 THEN POP_ASSUM (fun th-> STRIP_TAC
7768 THEN MP_TAC(REAL_ARITH`t<e/\ &0< t==> --e<t`)
7769 THEN RESA_TAC THEN MRESA_TAC th[`t:real`])
7770 THEN POP_ASSUM MP_TAC
7771 THEN REAL_ARITH_TAC]);;
7775 let DEFORMATION_DIST_LE_BLL_V3_DEFOR_COM_TWO_CASES=prove_by_refinement(` 3<k /\
7779 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
7780 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
7781 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
7782 w l=v2/\ w (l+k-1) =v1/\ ~(norm v2 = &2)/\ scs_a_v39 s l (SUC l) < dist (v2,w (SUC l ))
7783 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1/\(!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i)
7786 (!t i. &0< t/\ t< e/\ ~(i MOD k = l MOD k) ==> dist (v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i)<=scs_b_v39 s l i )`,
7791 THEN MP_TAC DEFORMATION_DIST_LE_BLL_V3_DEFOR_COM_TWO_CASES
7793 THEN POP_ASSUM MP_TAC
7794 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
7795 THEN REWRITE_TAC[SKOLEM_THM]
7797 THEN ABBREV_TAC`e1= inf {(e:num->real) i| i < k/\ ~(i= l MOD k)}`
7798 THEN EXISTS_TAC`e1:real`
7799 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
7803 MATCH_MP_TAC FINITE_SUBSET
7804 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
7808 MATCH_MP_TAC FINITE_IMAGE
7809 THEN REWRITE_TAC[FINITE_NUMSEG];
7812 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
7813 THEN REPEAT RESA_TAC
7814 THEN EXISTS_TAC`i:num`
7815 THEN POP_ASSUM MP_TAC
7816 THEN POP_ASSUM MP_TAC
7817 THEN POP_ASSUM MP_TAC
7821 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
7824 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
7825 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(0=l MOD k )`)
7830 EXISTS_TAC`(e:num->real)1`
7832 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
7833 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
7838 EXISTS_TAC`(e:num->real)0`
7840 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
7841 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
7849 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i| i < k/\ ~(i= l MOD k)}`;`&0`]
7850 THEN REWRITE_TAC[IN_ELIM_THM]
7851 THEN REPEAT RESA_TAC
7852 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
7853 THEN REPLICATE_TAC (13-5) (POP_ASSUM MP_TAC)
7854 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7855 THEN MRESA_TAC th[`i:num`]);
7859 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i| i < k/\ ~(i= l MOD k)}`;`t:real`]
7860 THEN POP_ASSUM MP_TAC
7861 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
7864 REWRITE_TAC[IN_ELIM_THM]
7865 THEN EXISTS_TAC`i MOD k`
7866 THEN ASM_REWRITE_TAC[]
7867 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
7869 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
7873 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
7874 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
7876 THEN MRESA_TAC MOD_REFL[`i:num`;`k:num`]
7877 THEN REPLICATE_TAC (15-5) (POP_ASSUM MP_TAC)
7878 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7879 THEN MRESA_TAC th[`i:num MOD k`])
7880 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
7882 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7883 THEN REPEAT RESA_TAC
7884 THEN POP_ASSUM MP_TAC
7885 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
7886 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
7887 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7888 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]);
7894 let DEFORMATION_V3_DEFOR_NOT_IN_V_V1_TWO_CASES=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
7896 w l=v2/\ w (l+k-1) =v1
7897 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
7898 ==> (!i. ~(i MOD k= l MOD k) ==> (?e. &0< e /\ (!t. --e<t /\ t<e ==> &0<dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))))`,
7901 THEN MATCH_MP_TAC EXISTS_SMALL_LE_CONST_V1
7902 THEN ASM_REWRITE_TAC[]
7903 THEN MP_TAC HYPER_MM_COLLINEAR_TWO_CASES
7905 THEN MATCH_MP_TAC(REAL_ARITH`&0<= a/\ ~(a= &0)==> &0 < a`)
7906 THEN ASM_REWRITE_TAC[dist;NORM_POS_LE]
7907 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
7910 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
7911 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
7912 THEN REPEAT RESA_TAC
7913 THEN POP_ASSUM MP_TAC
7914 THEN POP_ASSUM (fun th->
7915 MRESA_TAC DIVISION[`i:num`;`k:num`]
7916 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
7917 THEN MRESA_TAC th[`i MOD k`;`l MOD k`])
7918 THEN POP_ASSUM MP_TAC
7919 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
7920 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
7921 THEN MRESA_TAC th[`l:num`])
7923 THEN MRESA_TAC(Planarity.IMP_NORM_FAN)[`v2:real^3`;`(w:num->real^3) i`;]]);;
7928 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM_V1_TWO_CASES=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
7930 w l=v2/\ w (l+k-1) =v1
7931 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
7932 ==> ?e. &0< e /\ (!t i. --e<t /\ t<e/\ ~(i MOD k= l MOD k) ==> &0<dist(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t),w i))`,
7935 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_V1_TWO_CASES
7937 THEN POP_ASSUM MP_TAC
7938 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
7939 THEN REWRITE_TAC[SKOLEM_THM]
7941 THEN ABBREV_TAC`e1= inf {(e:num->real) i| i < k/\ ~(i= l MOD k)}`
7942 THEN EXISTS_TAC`e1:real`
7943 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
7945 MATCH_MP_TAC FINITE_SUBSET
7946 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
7949 MATCH_MP_TAC FINITE_IMAGE
7950 THEN REWRITE_TAC[FINITE_NUMSEG];
7952 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
7953 THEN REPEAT RESA_TAC
7954 THEN EXISTS_TAC`i:num`
7955 THEN POP_ASSUM MP_TAC
7956 THEN POP_ASSUM MP_TAC
7957 THEN POP_ASSUM MP_TAC
7960 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
7962 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
7963 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(0=l MOD k )`)
7966 EXISTS_TAC`(e:num->real)1`
7968 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
7969 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
7972 EXISTS_TAC`(e:num->real)0`
7974 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
7975 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
7980 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i| i < k/\ ~(i= l MOD k)}`;`&0`]
7981 THEN REWRITE_TAC[IN_ELIM_THM]
7982 THEN REPEAT RESA_TAC
7983 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
7984 THEN REPLICATE_TAC (13-5) (POP_ASSUM MP_TAC)
7985 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
7986 THEN MRESA_TAC th[`i:num`]);
7989 THEN MRESAL_TAC REAL_LE_INF_FINITE[`{(e:num->real) i| i < k/\ ~(i= l MOD k)}`;`e1:real`][REAL_ARITH`a<=a`]
7990 THEN POP_ASSUM MP_TAC
7991 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
7993 REWRITE_TAC[IN_ELIM_THM]
7994 THEN EXISTS_TAC`i MOD k`
7995 THEN ASM_REWRITE_TAC[]
7996 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
7998 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
8001 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
8002 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
8004 THEN MRESA_TAC MOD_REFL[`i:num`;`k:num`]
8005 THEN MP_TAC(REAL_ARITH`-- e1<t/\t<e1/\ e1<= e(i MOD k)==> -- e(i MOD k)< t/\ t< e(i MOD k)`)
8007 THEN REPLICATE_TAC (12) (POP_ASSUM MP_TAC)
8008 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
8009 THEN MRESA_TAC th[`i:num MOD k`])
8010 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
8012 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
8013 THEN REPEAT RESA_TAC
8014 THEN POP_ASSUM MP_TAC
8015 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
8016 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
8017 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
8018 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]);]);;
8023 let DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1_TWO_CASES=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8025 w l=v2/\ w (l+k-1) =v1
8026 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
8027 ==> ?e. &0< e /\ (!t i. -- e<t /\ t<e/\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))`,
8029 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_V1_TWO_CASES
8031 THEN EXISTS_TAC`e:real`
8032 THEN ASM_REWRITE_TAC[]
8034 THEN POP_ASSUM(fun th-> STRIP_TAC
8035 THEN MRESA_TAC th[`t:real`;`i:num`])
8036 THEN POP_ASSUM (fun th-> STRIP_TAC
8039 THEN POP_ASSUM MP_TAC
8040 THEN REWRITE_TAC[DIST_REFL])
8041 THEN REAL_ARITH_TAC);;
8046 let V3_DEFOR_EQ_IN_FF_V1_TWO_CASES=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8048 w l=v2/\ w (l+k-1) =v1 /\
8049 &0< x1 /\ &0<x2 /\ &0< x6 /\
8050 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8052 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
8053 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8054 /\ IMAGE (w:num->real^3) (:num)=V
8055 ==> (!w. v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t),w IN
8057 (\uv. (if FST uv = v2
8058 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8061 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8063 FF <=> v2,w IN FF)`,
8066 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
8067 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8069 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8072 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
8073 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
8074 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
8075 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
8077 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
8079 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
8080 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8082 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8083 THEN REPEAT RESA_TAC);
8085 MP_TAC Local_lemmas.CVLF_LF_F
8087 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
8092 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
8095 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
8097 THEN REMOVE_ASSUM_TAC
8098 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th]);
8100 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8102 THEN REPEAT RESA_TAC
8103 THEN REPLICATE_TAC (47-44)(POP_ASSUM MP_TAC)
8104 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8107 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8109 THEN REPLICATE_TAC (48-18)(POP_ASSUM MP_TAC)
8110 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8111 THEN MRESA_TAC th[`t:real`;`x':num`])
8113 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
8114 THEN REPEAT RESA_TAC
8115 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
8116 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`x':num`[ARITH_RULE`4 MOD 4=0`]
8117 THEN MRESA_TAC th[`l:num`])
8118 THEN REPLICATE_TAC (68-61)(POP_ASSUM MP_TAC)
8119 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8121 THEN ASM_REWRITE_TAC[];
8123 EXISTS_TAC`v2:real^3,w':real^3`
8124 THEN ASM_REWRITE_TAC[]
8125 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,w'):real^3#real^3`];]);;
8128 let V3_DEFOR_RHO_NODE_V1_TWO_CASES=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8130 w l=v2/\ w ( l+k-1) =v1 /\
8131 &0< x1 /\ &0<x2 /\ &0< x6 /\
8132 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8134 /\ (!t i. --e<t /\ t<e/\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
8135 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8136 /\ IMAGE (w:num->real^3) (:num)=V
8139 (\uv. (if FST uv = v2
8140 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8143 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8146 (v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t))) = (rho_node1 FF v2)`,
8147 REWRITE_TAC[rho_node1]
8149 THEN MP_TAC V3_DEFOR_EQ_IN_FF_V1_TWO_CASES
8155 let V3_DEFOR_EQ_IN_FF_SYM_V1_TWO_CASES=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8157 w l=v2/\ w (l+k-1) =v1 /\
8158 &0< x1 /\ &0<x2 /\ &0< x6 /\
8159 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8161 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
8162 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8163 /\ IMAGE (w:num->real^3) (:num)=V
8164 ==> (!w. w,v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t) IN
8166 (\uv. (if FST uv = v2
8167 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8170 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8172 FF <=> w,v2 IN FF)`,
8174 THEN REPLICATE_TAC (19-3)(POP_ASSUM MP_TAC)
8175 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8177 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8180 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
8181 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
8182 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
8183 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
8185 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
8187 REPLICATE_TAC (40-23)(POP_ASSUM MP_TAC)
8188 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8190 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8191 THEN REPEAT RESA_TAC);
8193 MP_TAC Local_lemmas.CVLF_LF_F
8195 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
8200 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
8203 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
8205 THEN REMOVE_ASSUM_TAC
8206 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th]);
8208 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8210 THEN REPEAT RESA_TAC
8211 THEN REPLICATE_TAC (47-44)(POP_ASSUM MP_TAC)
8212 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8215 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8217 THEN REPLICATE_TAC (48-18)(POP_ASSUM MP_TAC)
8218 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8219 THEN MRESA_TAC th[`t:real`;`SUC x':num`])
8221 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
8222 THEN REPEAT RESA_TAC
8223 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
8224 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`SUC x':num`[ARITH_RULE`4 MOD 4=0`]
8225 THEN MRESA_TAC th[`l:num`])
8226 THEN REPLICATE_TAC (68-61)(POP_ASSUM MP_TAC)
8227 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8229 THEN ASM_REWRITE_TAC[];
8231 EXISTS_TAC`w':real^3,v2:real^3`
8232 THEN ASM_REWRITE_TAC[]
8233 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w',v2):real^3#real^3`]]);;
8238 let DEFORMATION_AZIM_V3_DEFOR_V1_V1_TWO_CASES=prove_by_refinement(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8240 w l=v2/\ w (l+k-1) =v1 /\
8241 &0< x1 /\ &0<x2 /\ &0< x6 /\
8242 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
8243 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
8244 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
8245 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8246 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8247 /\ IMAGE (w:num->real^3) (:num)=V
8249 (?e. &0< e/\ (!t. --e< t/\ t< e ==>
8250 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t)
8253 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
8254 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
8256 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t))
8257 (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
8259 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
8260 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
8262 azim (vec 0) v2 (rho_node1 FF v2) (@a. a,v2 IN FF)))`,
8265 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1_TWO_CASES
8268 THEN REPEAT RESA_TAC
8269 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) (SUC l)`]
8270 THEN POP_ASSUM MP_TAC
8271 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
8272 THEN ASM_REWRITE_TAC[]
8273 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
8275 THEN ABBREV_TAC`e1=(min e e')/ &2`
8276 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
8277 ==> &0< e1/\ e1< e/\ e1<e'`)
8279 THEN EXISTS_TAC`e1:real`
8280 THEN ASM_REWRITE_TAC[]
8281 THEN REPEAT STRIP_TAC
8282 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
8285 THEN MP_TAC V3_DEFOR_EQ_IN_FF_SYM_V1_TWO_CASES
8287 THEN ASM_SIMP_TAC[v3_defor_v4;]
8288 THEN MP_TAC V3_DEFOR_RHO_NODE_V1_TWO_CASES
8290 THEN ASM_REWRITE_TAC[GSYM ivs_rho_node1]
8293 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
8294 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
8295 THEN REPEAT RESA_TAC
8296 THEN REPLICATE_TAC (68-31) (POP_ASSUM MP_TAC)
8297 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
8300 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
8301 THEN MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
8302 THEN MP_TAC Local_lemmas.CVLF_LF_F
8304 THEN SUBGOAL_THEN`(w:num->real^3) (l) IN V` ASSUME_TAC;
8307 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8308 THEN EXISTS_TAC`l:num`
8309 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
8311 MRESA_TAC (GEN_ALL Local_lemmas.ITER_CARD_MINUS1_EQ_IVS_RN1)[`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`]
8312 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3) (l)`])
8313 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)[`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l)`;`w:num->real^3`;`l:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;is_scs_v39;periodic2]
8314 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`SUC 0`][ITER] THEN MRESA_TAC th[`k-1`])
8315 THEN ASM_REWRITE_TAC[ARITH_RULE`SUC 0+l= SUC(l)/\ k-1+l= l+k-1`];
8317 REPLICATE_TAC (76-57) (POP_ASSUM MP_TAC)
8318 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
8319 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e' /\ --e1<t
8320 ==> t< e'/\ --e'<t`)
8322 THEN MRESA_TAC th[`t:real`])
8323 THEN MATCH_MP_TAC Planarity.aff_gt2_subset_aff_ge
8324 THEN ASM_REWRITE_TAC[]
8325 THEN MRESA_TAC th3[`vec 0:real^3`;`(w:num->real^3)(SUC l)`;`v1:real^3`]
8328 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
8329 THEN EXISTS_TAC`(w:num->real^3) (SUC l)`
8330 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
8331 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
8332 THEN ASM_REWRITE_TAC[];
8334 MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
8335 THEN EXISTS_TAC`(w:num->real^3)(l+k-1)`
8336 THEN ASM_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
8337 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
8338 THEN ASM_REWRITE_TAC[]]);;
8342 let V3_DEFOR_EQ_IN_FF_AT_V1_V1_TWO_CASES=prove_by_refinement(
8343 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8345 w l=v2/\ w (l+k-1) =v1 /\
8346 &0< x1 /\ &0<x2 /\ &0< x6 /\
8347 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
8348 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8350 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
8351 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8352 /\ IMAGE (w:num->real^3) (:num)=V
8356 (\uv. (if FST uv = v2
8357 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8360 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8366 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
8367 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8369 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8372 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
8373 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
8374 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
8375 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
8377 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
8379 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
8380 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8382 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8383 THEN REPEAT RESA_TAC);
8385 MP_TAC Local_lemmas.CVLF_LF_F
8387 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
8392 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
8395 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8397 THEN REPEAT RESA_TAC
8398 THEN REPLICATE_TAC (44-15)(POP_ASSUM MP_TAC)
8399 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8400 THEN MRESA_TAC th[`t:real`;`SUC l:num`])
8401 THEN POP_ASSUM MP_TAC
8402 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
8404 THEN POP_ASSUM(fun th-> MRESA_TAC th [`l:num`])
8405 THEN REMOVE_ASSUM_TAC
8406 THEN REMOVE_ASSUM_TAC
8407 THEN POP_ASSUM MP_TAC
8410 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8412 THEN REPEAT RESA_TAC
8413 THEN MP_TAC(SET_RULE`v2= SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
8416 SUBGOAL_THEN`(w:num->real^3) (SUC l),v2 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
8420 SUBGOAL_THEN`v1,v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8423 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8424 THEN EXISTS_TAC`l+k-1`
8425 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8426 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8429 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8430 THEN REPEAT RESA_TAC;
8432 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v1:real^3`;`(w:num->real^3) (SUC l)`]
8433 THEN REPLICATE_TAC (49-8)(POP_ASSUM MP_TAC)
8434 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8437 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`(w:num->real^3) (l+k-1)`]
8438 THEN POP_ASSUM MP_TAC
8439 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
8440 THEN ASM_REWRITE_TAC[];
8442 EXISTS_TAC`(w:num->real^3)(SUC l),a':real^3`
8443 THEN ASM_REWRITE_TAC[]
8444 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
8445 THEN POP_ASSUM MP_TAC
8446 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
8448 THEN MP_TAC(SET_RULE`v2= a':real^3\/ ~(v2=a')`)
8451 SUBGOAL_THEN`v1,v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8454 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8455 THEN EXISTS_TAC`l+k-1`
8456 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8457 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8460 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8461 THEN REPEAT RESA_TAC;
8463 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v1:real^3`;`(w:num->real^3) (SUC l)`]
8464 THEN REPLICATE_TAC (51-8)(POP_ASSUM MP_TAC)
8465 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8468 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`(w:num->real^3) (l+k-1)`]
8469 THEN POP_ASSUM MP_TAC
8470 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
8471 THEN ASM_REWRITE_TAC[];
8473 SUBGOAL_THEN`v2,(w:num->real^3) (SUC l) IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8477 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8478 THEN EXISTS_TAC`l:num`
8479 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8480 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8483 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8484 THEN REPEAT RESA_TAC;
8486 MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,w (SUC l)):real^3#real^3`]
8487 THEN MRESA_TAC th3[`v2:real^3`;`vec 0:real^3`;`(w:num->real^3) (SUC l)`]
8488 THEN POP_ASSUM MP_TAC
8489 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
8494 let V3_DEFOR_RHO_NODE_AT_V1_V1_TWO_CASES=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8496 w l=v2/\ w (l+k-1) =v1 /\
8497 &0< x1 /\ &0<x2 /\ &0< x6 /\
8498 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
8499 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8501 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k)==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
8502 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8503 /\ IMAGE (w:num->real^3) (:num)=V
8507 (\uv. (if FST uv = v2
8508 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8511 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8515 =(rho_node1 FF (w (SUC l)))`,
8516 REWRITE_TAC[rho_node1]
8518 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V1_V1_TWO_CASES
8524 let V3_DEFOR_EQ_IN_FF_AT_V1_SYM_V1_TWO_CASES=prove_by_refinement(
8525 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8527 w l=v2/\ w (l+k-1) =v1 /\
8528 &0< x1 /\ &0<x2 /\ &0< x6 /\
8529 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
8530 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8532 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
8533 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8534 /\ IMAGE (w:num->real^3) (:num)=V
8538 (\uv. (if FST uv = v2
8539 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8542 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8545 v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)`,
8548 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
8549 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8551 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8554 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
8555 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
8556 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
8557 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
8559 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
8561 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
8562 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8564 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8565 THEN REPEAT RESA_TAC);
8567 MP_TAC Local_lemmas.CVLF_LF_F
8569 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
8572 EXISTS_TAC`v3_defor_v1 (-- &1) (v1) (v2) x1 x2 x6 x6 (x2 - t)`
8573 THEN ASM_REWRITE_TAC[IMAGE;IN_ELIM_THM]
8574 THEN EXISTS_TAC`v2:real^3,(w:num->real^3)(SUC l)`
8575 THEN ASM_REWRITE_TAC[]
8576 THEN SUBGOAL_THEN`v2,(w:num->real^3) (SUC l) IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8580 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8581 THEN EXISTS_TAC`l:num`
8582 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8583 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8586 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8587 THEN REPEAT RESA_TAC;
8589 MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,w (SUC l)):real^3#real^3`]
8590 THEN MRESA_TAC th3[`v2:real^3`;`vec 0:real^3`;`(w:num->real^3) (SUC l)`]
8591 THEN POP_ASSUM MP_TAC
8592 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
8595 REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
8599 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
8602 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8604 THEN REPEAT RESA_TAC
8605 THEN REPLICATE_TAC (45-16)(POP_ASSUM MP_TAC)
8606 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8607 THEN MRESA_TAC th[`t:real`;`SUC l:num`])
8608 THEN POP_ASSUM MP_TAC
8609 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
8611 THEN POP_ASSUM(fun th-> MRESA_TAC th [`l:num`])
8612 THEN POP_ASSUM MP_TAC
8613 THEN POP_ASSUM MP_TAC;
8615 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8617 THEN REPEAT RESA_TAC
8618 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
8621 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8623 THEN REPEAT RESA_TAC;
8625 SUBGOAL_THEN`a',w(SUC l) IN (FF:real^3#real^3->bool)`ASSUME_TAC;
8629 SUBGOAL_THEN`v2,w(SUC l) IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8632 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8633 THEN EXISTS_TAC`l:num`
8634 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8635 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8638 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8639 THEN REPEAT RESA_TAC;
8641 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(w:num->real^3)(SUC l)`;`FF:real^3#real^3->bool`;`v2:real^3`;`(a':real^3) `]]);;
8646 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_V1_V1_TWO_CASES=prove_by_refinement(
8647 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8649 w l=v2/\ w (l+k-1) =v1 /\
8650 &0< x1 /\ &0<x2 /\ &0< x6 /\
8651 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
8652 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
8653 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
8654 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8655 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8656 /\ IMAGE (w:num->real^3) (:num)=V
8658 (?e. &0< e/\ (!t. --e< t/\ t< e ==>
8659 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC l)) t)
8662 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
8663 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
8665 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC l)) t))
8666 (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC l)) t IN
8668 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
8669 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
8671 azim (vec 0) (w (SUC l)) (rho_node1 FF (w (SUC l))) (@a. a,(w (SUC l)) IN FF)))`,
8674 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1_TWO_CASES
8677 THEN REPEAT RESA_TAC
8678 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) (SUC l )`]
8679 THEN POP_ASSUM MP_TAC
8680 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
8681 THEN ASM_REWRITE_TAC[]
8682 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
8684 THEN ABBREV_TAC`e1=(min e e')/ &2`
8685 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
8686 ==> &0< e1/\ e1< e/\ e1<e'`)
8688 THEN EXISTS_TAC`e1:real`
8689 THEN ASM_REWRITE_TAC[]
8690 THEN REPEAT STRIP_TAC
8691 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
8694 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
8695 THEN POP_ASSUM MP_TAC
8696 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
8698 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V1_SYM_V1_TWO_CASES
8700 THEN ASM_SIMP_TAC[v3_defor_v4;]
8701 THEN MP_TAC V3_DEFOR_RHO_NODE_AT_V1_V1_TWO_CASES
8705 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
8706 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
8707 THEN REPEAT RESA_TAC;
8709 REPLICATE_TAC (74-31) (POP_ASSUM MP_TAC)
8710 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
8713 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
8714 THEN MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
8715 THEN MP_TAC Local_lemmas.CVLF_LF_F
8717 THEN SUBGOAL_THEN`v2,(w:num->real^3) (SUC l) IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8720 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8721 THEN EXISTS_TAC`l:num`
8722 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8723 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8726 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8727 THEN REPEAT RESA_TAC;
8729 MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,w (SUC l)):real^3#real^3`]
8730 THEN MRESA_TAC th3[`v2:real^3`;`vec 0:real^3`;`(w:num->real^3) (SUC l)`]
8731 THEN POP_ASSUM MP_TAC
8732 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
8734 THEN ASM_REWRITE_TAC[GSYM ivs_rho_node1];
8736 MRESA_TAC (GEN_ALL Local_lemmas.IVS_RHO_NODE1_DETE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(SUC l)`;`v2:real^3`]
8737 THEN MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w (SUC l)}/\
8738 aff_gt {vec 0} {v1, w (SUC l)} SUBSET aff_ge {vec 0} {v1, w (SUC l)}
8739 ==> v2 IN aff_ge {vec 0} {v1:real^3, w (SUC l)}`)
8740 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
8741 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
8743 THEN MRESA_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT[`vec 0:real^3`;`(w:num->real^3)(SUC l)`;`v2:real^3`;`v1:real^3`;`(rho_node1 FF (w (SUC l)))`;]
8744 THEN POP_ASSUM MP_TAC
8745 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
8746 THEN ASM_REWRITE_TAC[]
8747 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
8749 THEN MATCH_MP_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT
8752 MATCH_MP_TAC(GEN_ALL (SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
8753 THEN EXISTS_TAC`aff_gt{vec 0:real^3} {w(SUC l),v1}`
8754 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE];
8756 REPLICATE_TAC (89-57) (POP_ASSUM MP_TAC)
8757 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
8758 THEN MATCH_MP_TAC th)
8759 THEN ASM_REWRITE_TAC[]
8760 THEN MP_TAC(REAL_ARITH`t<e1/\ e1<e'/\ --e1<t ==> t< e'/\ --e'<t`)
8762 THEN ASM_REWRITE_TAC[];
8765 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
8766 THEN MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
8767 THEN EXISTS_TAC`(w:num->real^3) (l+k-1)`
8768 THEN ASM_REWRITE_TAC[]
8769 THEN REPLICATE_TAC (89-57) (POP_ASSUM MP_TAC)
8770 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
8771 THEN MATCH_MP_TAC th)
8772 THEN ASM_REWRITE_TAC[]
8773 THEN MP_TAC(REAL_ARITH`t<e1/\ e1<e'/\ --e1<t ==> t< e'/\ --e'<t`)
8775 THEN ASM_REWRITE_TAC[]]);;
8781 let V3_DEFOR_EQ_IN_FF_AT_W_V1_TWO_CASES=prove_by_refinement(
8782 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8784 w l=v2/\ w (l+k-1) =v1 /\
8785 &0< x1 /\ &0<x2 /\ &0< x6 /\
8786 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
8787 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8789 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
8790 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8791 /\ IMAGE (w:num->real^3) (:num)=V
8793 (!v. v,w (l + (scs_k_v39 s - 1)) IN
8795 (\uv. (if FST uv = v2
8796 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8799 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8802 v,w (l + (scs_k_v39 s - 1)) IN FF)`,
8805 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
8806 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8808 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8811 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
8812 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
8813 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
8814 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
8816 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
8818 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
8819 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8821 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8822 THEN REPEAT RESA_TAC);
8824 MP_TAC Local_lemmas.CVLF_LF_F
8826 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
8831 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
8834 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8836 THEN REPEAT RESA_TAC
8837 THEN REPLICATE_TAC (44-15)(POP_ASSUM MP_TAC)
8838 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8839 THEN MRESA_TAC th[`t:real`;`l+k-1:num`])
8840 THEN POP_ASSUM MP_TAC
8841 THEN MP_TAC MOD_ADD_SUB_1
8843 THEN REMOVE_ASSUM_TAC
8844 THEN POP_ASSUM MP_TAC
8847 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8849 THEN REPEAT RESA_TAC
8850 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
8853 SUBGOAL_THEN`v2, w(l+k-1) IN (FF:real^3#real^3->bool)`ASSUME_TAC;
8857 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8860 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8861 THEN EXISTS_TAC`l+k-1`
8862 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8863 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8866 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8867 THEN REPEAT RESA_TAC;
8869 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
8870 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;]
8871 THEN POP_ASSUM MP_TAC
8872 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
8874 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v2:real^3,(w:num->real^3)(l+k-1)`;`V:real^3->bool`;]
8875 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
8877 THEN POP_ASSUM(fun th-> MRESA_TAC th[`SND(x:real^3#real^3)`]);
8879 EXISTS_TAC`v:real^3,(w:num->real^3) (l + k - 1)`
8880 THEN ASM_REWRITE_TAC[]
8881 THEN SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8884 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8885 THEN EXISTS_TAC`l+k-1`
8886 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8887 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8890 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8891 THEN REPEAT RESA_TAC;
8893 MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(l+k-1),v2:real^3`;];
8895 MP_TAC(SET_RULE`v2=v:real^3\/ ~(v=v2)`)
8898 SUBGOAL_THEN`v2, w(l+k-1) IN (FF:real^3#real^3->bool)`ASSUME_TAC;
8902 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
8903 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`(w:num->real^3)(l+k-1)`;]
8904 THEN POP_ASSUM MP_TAC
8905 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
8907 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v2:real^3,(w:num->real^3)(l+k-1)`;`V:real^3->bool`;]
8908 THEN MP_TAC Local_lemmas.LOCAL_FAN_IMP_NOT_SEMI_IDE
8910 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3)(l+k-1)`])]);;
8915 let V3_DEFOR_EQ_IN_FF_AT_W_SYM_V1_TWO_CASES=prove_by_refinement(
8916 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
8918 w l=v2/\ w (l+k-1) =v1 /\
8919 &0< x1 /\ &0<x2 /\ &0< x6 /\
8920 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
8921 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
8923 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
8924 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
8925 /\ IMAGE (w:num->real^3) (:num)=V
8929 (\uv. (if FST uv = v2
8930 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8933 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
8936 v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)`,
8939 THEN REPLICATE_TAC (20-3)(POP_ASSUM MP_TAC)
8940 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8942 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8945 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
8946 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
8947 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
8948 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
8950 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
8952 REPLICATE_TAC (37-20)(POP_ASSUM MP_TAC)
8953 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
8955 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
8956 THEN REPEAT RESA_TAC);
8958 MP_TAC Local_lemmas.CVLF_LF_F
8960 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
8963 EXISTS_TAC`v3_defor_v1 (-- &1) (v1) (v2) x1 x2 x6 x6 (x2 - t)`
8964 THEN ASM_REWRITE_TAC[IMAGE;IN_ELIM_THM]
8965 THEN EXISTS_TAC`(w:num->real^3) (l + k - 1),v2:real^3`
8966 THEN ASM_REWRITE_TAC[]
8967 THEN SUBGOAL_THEN`v1,v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
8970 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
8971 THEN EXISTS_TAC`l+k-1`
8972 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
8973 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
8976 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
8977 THEN REPEAT RESA_TAC;
8979 MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3)(l+k-1),v2:real^3`;];
8981 REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
8986 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
8989 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8991 THEN REPEAT RESA_TAC
8992 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
8995 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
8997 THEN REPEAT RESA_TAC
8998 THEN REPLICATE_TAC (46-16)(POP_ASSUM MP_TAC)
8999 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9000 THEN MRESA_TAC th[`t:real`;`l+k-1:num`])
9001 THEN POP_ASSUM MP_TAC
9002 THEN POP_ASSUM MP_TAC
9003 THEN MP_TAC MOD_ADD_SUB_1
9005 THEN REMOVE_ASSUM_TAC
9006 THEN POP_ASSUM MP_TAC
9009 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
9011 THEN REPEAT RESA_TAC;
9013 SUBGOAL_THEN`v1,v IN (FF:real^3#real^3->bool)`ASSUME_TAC;
9017 SUBGOAL_THEN`v1,v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
9020 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9021 THEN EXISTS_TAC`l+k-1`
9022 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
9023 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
9026 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
9027 THEN REPEAT RESA_TAC;
9029 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v1:real^3`;`v2:real^3`]
9030 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v:real^3`;]]);;
9035 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_W_V1_TWO_CASES=prove_by_refinement(
9036 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
9038 w l=v2/\ w (l+k-1) =v1 /\
9039 &0< x1 /\ &0<x2 /\ &0< x6 /\
9040 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
9041 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
9042 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
9043 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
9044 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
9045 /\ IMAGE (w:num->real^3) (:num)=V
9047 (?e. &0< e/\ (!t. --e< t/\ t< e ==>
9048 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t)
9051 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
9052 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
9054 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t))
9055 (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l + k - 1)) t IN
9057 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
9058 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
9060 azim (vec 0) (w (l + k - 1)) (rho_node1 FF (w (l + k - 1)))
9061 (@a. a,w (l + k - 1) IN FF)))`,
9064 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1_TWO_CASES
9067 THEN REPEAT RESA_TAC
9068 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) (SUC l)`]
9069 THEN POP_ASSUM MP_TAC
9070 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
9071 THEN ASM_REWRITE_TAC[]
9072 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
9074 THEN ABBREV_TAC`e1=(min e e')/ &2`
9075 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
9076 ==> &0< e1/\ e1< e/\ e1<e'`)
9078 THEN EXISTS_TAC`e1:real`
9079 THEN ASM_REWRITE_TAC[]
9080 THEN REPEAT STRIP_TAC
9081 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
9084 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
9085 THEN POP_ASSUM MP_TAC
9086 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
9088 THEN SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
9091 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9092 THEN EXISTS_TAC`l+k-1`
9093 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
9094 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
9097 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
9098 THEN REPEAT RESA_TAC;
9100 ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
9101 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
9103 REPLICATE_TAC (38-3)(POP_ASSUM MP_TAC)
9104 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9105 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
9108 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic;BBprime_v39;]
9109 THEN REPEAT RESA_TAC);
9111 MP_TAC Local_lemmas.CVLF_LF_F
9113 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_W_SYM_V1_TWO_CASES
9115 THEN ASM_SIMP_TAC[v3_defor_v4;]
9116 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_W_V1_TWO_CASES
9118 THEN ASM_REWRITE_TAC[rho_node1]
9119 THEN ASM_REWRITE_TAC[GSYM rho_node1;GSYM ivs_rho_node1]
9120 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(w:num->real^3)(l+k-1)`;`v2:real^3`]
9121 THEN ONCE_REWRITE_TAC[Rogers.AZIM_EQ_SYM];
9123 MP_TAC(SET_RULE`v2 IN aff_gt {vec 0} {v1, w (SUC l)}/\
9124 aff_gt {vec 0} {v1, w (SUC l)} SUBSET aff_ge {vec 0} {v1, w (SUC l)}
9125 ==> v2 IN aff_ge {vec 0} {v1:real^3, w (SUC l )}`)
9126 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
9127 THEN POP_ASSUM MP_TAC
9128 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
9129 THEN ASM_REWRITE_TAC[]
9130 THEN MRESA_TAC(GEN_ALL Planarity.properties_of_collinear4_points_fan)
9131 [`vec 0:real^3`;`(w:num->real^3)(SUC l)`;`v1:real^3`;`v2:real^3`]
9132 THEN POP_ASSUM MP_TAC
9133 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
9134 THEN ASM_REWRITE_TAC[]
9135 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
9136 THEN ASM_REWRITE_TAC[]
9140 THEN MRESA_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT[`vec 0:real^3`;`(w:num->real^3)(l+k-1)`;`v2:real^3`;`(w:num->real^3)(SUC l)`;`(ivs_rho_node1 FF (w(l+k-1)))`;]
9141 THEN POP_ASSUM MP_TAC
9142 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
9143 THEN ASM_REWRITE_TAC[]
9145 THEN MATCH_MP_TAC Polar_fan.AZIM_SAME_WITHIN_AFF_GE_ALT
9148 ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
9149 THEN MATCH_MP_TAC(GEN_ALL (SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
9150 THEN EXISTS_TAC`aff_gt{vec 0:real^3} {w(SUC l),v1}`
9151 THEN ASM_REWRITE_TAC[AFF_GT_SUBSET_AFF_GE]
9152 THEN REPLICATE_TAC (47-22) (POP_ASSUM MP_TAC)
9153 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9154 THEN MATCH_MP_TAC th)
9155 THEN ASM_REWRITE_TAC[]
9156 THEN MP_TAC(REAL_ARITH`t<e1/\ e1<e'/\ --e1<t ==> t< e'/\ --e'<t`)
9158 THEN ASM_REWRITE_TAC[];
9161 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
9162 THEN ASM_REWRITE_TAC[]
9163 THEN MATCH_MP_TAC Planarity.properties_of_collinear4_points_fan
9164 THEN EXISTS_TAC`(w:num->real^3)(SUC l)`
9165 THEN ASM_REWRITE_TAC[]
9166 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
9167 THEN ASM_REWRITE_TAC[]
9168 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
9169 THEN ASM_REWRITE_TAC[]
9170 THEN REPLICATE_TAC (47-22) (POP_ASSUM MP_TAC)
9171 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9172 THEN MATCH_MP_TAC th)
9173 THEN ASM_REWRITE_TAC[]
9174 THEN MP_TAC(REAL_ARITH`t<e1/\ e1<e'/\ --e1<t==> t< e'/\ --e'<t`)
9176 THEN ASM_REWRITE_TAC[]]);;
9180 let V3_DEFOR_EQ_IN_FF_AT_V_ANY_V1_TWO_CASES=prove_by_refinement(
9181 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
9183 w l=v2/\ w (l+k-1) =v1 /\
9184 &0< x1 /\ &0<x2 /\ &0< x6 /\
9185 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
9186 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
9188 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
9189 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
9190 /\ IMAGE (w:num->real^3) (:num)=V
9191 /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(SUC l))
9196 (\uv. (if FST uv = v2
9197 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
9200 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
9206 THEN REPLICATE_TAC (24-3)(POP_ASSUM MP_TAC)
9207 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9209 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
9212 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
9213 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
9214 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
9215 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
9217 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
9220 REPLICATE_TAC (42-25)(POP_ASSUM MP_TAC)
9221 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9223 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
9224 THEN REPEAT RESA_TAC);
9227 MP_TAC Local_lemmas.CVLF_LF_F
9229 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
9235 MP_TAC(SET_RULE`FST (x:real^3#real^3)=v2\/ ~(FST x = v2:real^3)`)
9238 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
9240 THEN REPEAT RESA_TAC
9241 THEN REPLICATE_TAC (49-23)(POP_ASSUM MP_TAC)
9242 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9245 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9247 THEN REPLICATE_TAC (50-16)(POP_ASSUM MP_TAC)
9248 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9249 THEN MRESA_TAC th[`t:real`;`x':num`])
9250 THEN REPLICATE_TAC (50-46)(POP_ASSUM MP_TAC)
9251 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9253 THEN POP_ASSUM MP_TAC
9254 THEN MRESA_TAC DIVISION[`x':num`;`k:num`]
9255 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
9256 THEN MP_TAC(SET_RULE`x' MOD k = l MOD k \/ ~(x' MOD k = l MOD k)`)
9260 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
9261 THEN REPEAT RESA_TAC
9262 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
9263 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`x':num`[ARITH_RULE`4 MOD 4=0`]
9264 THEN MRESA_TAC th[`l:num`])
9265 THEN REPLICATE_TAC (77-39)(POP_ASSUM MP_TAC)
9266 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9268 THEN ASM_REWRITE_TAC[];
9274 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
9276 THEN REPEAT RESA_TAC
9277 THEN MP_TAC(SET_RULE`v2= SND (x:real^3#real^3)\/ ~(SND x = v2:real^3)`)
9280 SUBGOAL_THEN`v,v2 IN (FF:real^3#real^3->bool)`ASSUME_TAC;
9284 SUBGOAL_THEN`v1,v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
9287 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9288 THEN EXISTS_TAC`l+k-1`
9289 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
9290 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
9293 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
9294 THEN REPEAT RESA_TAC;
9296 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v:real^3`;`v1:real^3`];
9298 EXISTS_TAC`v:real^3,w':real^3`
9299 THEN ASM_REWRITE_TAC[]
9300 THEN MP_TAC(SET_RULE`v2= w':real^3\/ ~(v2=w')`)
9303 SUBGOAL_THEN`w (l+k-1),v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
9306 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9307 THEN EXISTS_TAC`l+k-1`
9308 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
9309 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
9312 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
9313 THEN REPEAT RESA_TAC;
9315 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v2:real^3`;`FF:real^3#real^3->bool`;`v:real^3`;`(w:num->real^3) (l+k-1)`]]);;
9324 let V3_DEFOR_EQ_IN_FF_AT_V_ANY_SYM_V1_TWO_CASES=prove_by_refinement(
9325 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
9327 w l=v2/\ w (l+k-1) =v1 /\
9328 &0< x1 /\ &0<x2 /\ &0< x6 /\
9329 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
9330 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
9332 /\ (!t i. --e<t /\ t<e /\ ~(i MOD k= l MOD k) ==> ~(v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)=w i))
9333 /\ t <e /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
9334 /\ IMAGE (w:num->real^3) (:num)=V
9335 /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(SUC l))
9340 (\uv. (if FST uv = v2
9341 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
9344 then v3_defor_v1 (-- &1) v1 v2 x1 x2 x6 x6 (x2 - t)
9350 THEN REPLICATE_TAC (24-3)(POP_ASSUM MP_TAC)
9351 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9353 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
9356 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
9357 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
9358 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
9359 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
9361 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
9363 REPLICATE_TAC (42-25)(POP_ASSUM MP_TAC)
9364 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9366 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
9367 THEN REPEAT RESA_TAC);
9369 MP_TAC Local_lemmas.CVLF_LF_F
9371 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;PAIR_EQ]
9376 MP_TAC(SET_RULE`SND (x:real^3#real^3)=v2\/ ~(SND x = v2:real^3)`)
9380 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
9382 THEN REPEAT RESA_TAC
9383 THEN REPLICATE_TAC (49-23)(POP_ASSUM MP_TAC)
9384 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9387 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9389 THEN REPLICATE_TAC (50-16)(POP_ASSUM MP_TAC)
9390 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9391 THEN MRESA_TAC th[`t:real`;`x':num`])
9392 THEN REPLICATE_TAC (50-47)(POP_ASSUM MP_TAC)
9393 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9395 THEN POP_ASSUM MP_TAC
9396 THEN MRESA_TAC DIVISION[`x':num`;`k:num`]
9397 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
9398 THEN MP_TAC(SET_RULE`x' MOD k = l MOD k \/ ~(x' MOD k = l MOD k)`)
9402 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
9403 THEN REPEAT RESA_TAC
9404 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
9405 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`x':num`[ARITH_RULE`4 MOD 4=0`]
9406 THEN MRESA_TAC th[`l:num`])
9407 THEN REPLICATE_TAC (77-39)(POP_ASSUM MP_TAC)
9408 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9410 THEN ASM_REWRITE_TAC[];
9414 POP_ASSUM(fun th-> POP_ASSUM MP_TAC THEN POP_ASSUM MP_TAC
9416 THEN REPEAT RESA_TAC
9417 THEN MP_TAC(SET_RULE`v2= FST (x:real^3#real^3)\/ ~(FST x = v2:real^3)`)
9420 SUBGOAL_THEN`v2,v IN (FF:real^3#real^3->bool)`ASSUME_TAC;
9424 SUBGOAL_THEN`v2,w(SUC l) IN (FF:real^3#real^3->bool)` ASSUME_TAC;
9427 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9428 THEN EXISTS_TAC`l:num`
9429 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
9430 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
9433 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
9434 THEN REPEAT RESA_TAC;
9436 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`v:real^3`]
9437 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`(w:num->real^3)(SUC l)`;]
9438 THEN REPLICATE_TAC (54-22)(POP_ASSUM MP_TAC)
9439 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9441 THEN ASM_REWRITE_TAC[];
9443 EXISTS_TAC`w':real^3,v:real^3`
9444 THEN ASM_REWRITE_TAC[]
9445 THEN MP_TAC(SET_RULE`v2= w':real^3\/ ~(v2=w')`)
9448 SUBGOAL_THEN`v2,w(SUC l) IN (FF:real^3#real^3->bool)` ASSUME_TAC;
9451 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9452 THEN EXISTS_TAC`l:num`
9453 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
9454 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
9457 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
9458 THEN REPEAT RESA_TAC;
9460 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`v:real^3`]
9461 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`(w:num->real^3)(SUC l)`;]
9462 THEN REPLICATE_TAC (54-20)(POP_ASSUM MP_TAC)
9463 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9465 THEN ASM_REWRITE_TAC[]]);;
9467 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_V_ANY_V1_TWO_CASES=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
9469 w l=v2/\ w (l+k-1) =v1 /\
9470 &0< x1 /\ &0<x2 /\ &0< x6 /\
9471 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
9472 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
9473 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
9474 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
9475 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
9476 /\ IMAGE (w:num->real^3) (:num)=V
9478 (?e. &0< e/\ (!t v. --e< t/\ t< e /\ ~(v=v1)/\ ~(v=v2)/\ ~(v= w(SUC l))
9481 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t)
9484 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
9485 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
9487 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t))
9488 (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t IN
9490 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
9491 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
9493 azim (vec 0) v (rho_node1 FF v) (@a. a,v IN FF)))`,
9495 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1_TWO_CASES
9498 THEN REPEAT RESA_TAC
9499 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) (SUC l)`]
9500 THEN POP_ASSUM MP_TAC
9501 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
9502 THEN ASM_REWRITE_TAC[]
9503 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
9505 THEN ABBREV_TAC`e1=(min e e')/ &2`
9506 THEN MP_TAC(REAL_ARITH`e1=(min e e')/ &2 /\ &0< e/\ &0< e'
9507 ==> &0< e1/\ e1< e/\ e1<e'`)
9509 THEN EXISTS_TAC`e1:real`
9510 THEN ASM_REWRITE_TAC[]
9511 THEN REPEAT STRIP_TAC
9512 THEN MP_TAC(REAL_ARITH`t<e1 /\ e1< e/\ --e1<t
9515 THEN MRESA_TAC th3[`v1:real^3`;`vec 0:real^3`;`v2:real^3`]
9516 THEN POP_ASSUM MP_TAC
9517 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={B,A,C}`]
9519 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V_ANY_SYM_V1_TWO_CASES
9521 THEN ASM_SIMP_TAC[v3_defor_v4;]
9522 THEN MP_TAC V3_DEFOR_EQ_IN_FF_AT_V_ANY_V1_TWO_CASES
9524 THEN ASM_SIMP_TAC[rho_node1;]);;
9529 let DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_V1_TWO_CASES=prove_by_refinement(
9530 ` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
9532 w l=v2/\ w (l+k-1) =v1 /\
9533 &0< x1 /\ &0<x2 /\ &0< x6 /\
9534 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
9535 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
9536 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
9537 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
9538 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
9539 /\ IMAGE (w:num->real^3) (:num)=V
9541 (?e. &0< e/\ (!t v. --e< t/\ t< e /\ v IN V ==>
9542 azim (vec 0) (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t)
9545 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
9546 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
9548 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t))
9549 (@a. a,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (v) t IN
9551 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
9552 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
9554 azim (vec 0) (v) (rho_node1 FF (v))
9557 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_W_V1_TWO_CASES
9559 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_V1_V1_TWO_CASES
9561 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_V1_TWO_CASES
9563 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_V_ANY_V1_TWO_CASES
9565 THEN ABBREV_TAC`e1=(min (min (min e e') e'')e''')/ &2`
9566 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'')e''')/ &2/\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''==> &0< e1/\ e1<e/\ e1<e'/\ e1< e''/\ e1< e'''`)
9568 THEN EXISTS_TAC`e1:real`
9569 THEN ASM_REWRITE_TAC[]
9570 THEN REPEAT RESA_TAC
9571 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'')e''')/ &2/\ &0< e/\ &0< e'/\ &0< e''/\ t<e1/\ --e1<t/\ &0< e'''==> t<e/\ t<e'/\ t< e''/\ t < e'''
9572 /\ --e< t/\ --e'<t /\ --e''<t/\ --e'''<t`)
9574 THEN MP_TAC(SET_RULE`(v=(w:num->real^3)(l+k-1))\/ ~(v=(w:num->real^3)(l+k-1))`)
9577 REPLICATE_TAC (44-20) (POP_ASSUM MP_TAC)
9578 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9579 THEN MATCH_MP_TAC th)
9580 THEN ASM_REWRITE_TAC[];
9582 MP_TAC(SET_RULE`(v=(w:num->real^3) (SUC l))\/ ~(v=(w:num->real^3) (SUC l))`)
9585 REPLICATE_TAC (45-22) (POP_ASSUM MP_TAC)
9586 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9587 THEN MATCH_MP_TAC th)
9588 THEN ASM_REWRITE_TAC[];
9591 MP_TAC(SET_RULE`(v=(v2:real^3))\/ ~(v=v2)`)
9594 REPLICATE_TAC (46-24) (POP_ASSUM MP_TAC)
9595 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9596 THEN MATCH_MP_TAC th)
9597 THEN ASM_REWRITE_TAC[];
9599 REPLICATE_TAC (46-26) (POP_ASSUM MP_TAC)
9600 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9601 THEN MATCH_MP_TAC th)
9602 THEN ASM_REWRITE_TAC[]]);;
9606 let DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_TWO_CASES=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
9608 w l=v2/\ w (l+k-1) =v1 /\
9609 &0< x1 /\ &0<x2 /\ &0< x6 /\
9610 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
9611 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
9612 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
9613 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
9614 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
9615 /\ IMAGE (w:num->real^3) (:num)=V
9620 interior_angle1 (vec 0) FF v = pi
9621 ==> interior_angle1 (vec 0)
9623 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
9624 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
9626 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) <=
9629 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_V1_TWO_CASES
9631 THEN EXISTS_TAC`e:real`
9632 THEN ASM_REWRITE_TAC[interior_angle1]
9633 THEN REPEAT RESA_TAC
9634 THEN REPLICATE_TAC (24-20) (POP_ASSUM MP_TAC)
9635 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9636 THEN MRESA_TAC th[`t:real`;`v:real^3`])
9637 THEN REAL_ARITH_TAC);;
9642 let DEFORMATION_LUNAR_AFFINE_HULL_V1_TWO_CASES=prove_by_refinement(
9647 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
9648 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
9649 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
9650 w l=v2/\ w (l+k-1) =v1/\ ~(norm v2 = &2)
9651 /\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1
9652 /\ ~(v=v2)/\ ~(w1=v2) /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
9653 /\ IMAGE (w:num->real^3) (:num)=V
9654 /\ IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)=E
9657 ?e. &0<e /\ (!t. t IN real_interval (--e,e)
9658 ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
9659 affine hull {vec 0, v, w1, v2})`,
9662 THEN MP_TAC DEFORMATION_V3_DEFOR_NOT_IN_V_COM_EQ_V1_TWO_CASES
9664 THEN MP_TAC HYPER_MM_COLLINEAR_TWO_CASES
9666 THEN REPLICATE_TAC (25-6)(POP_ASSUM MP_TAC)
9667 THEN POP_ASSUM(fun th->
9670 THEN MP_TAC th THEN MP_TAC th1))
9671 THEN REPEAT RESA_TAC
9672 THEN MRESA_TAC (GEN_ALL V3_DEFOR_IN_AFF_GT_V1)[`a:real`;`v2:real^3`;`x1:real`;`x6:real`;`x2:real`;`v1:real^3`;`(w:num->real^3) (SUC l)`]
9673 THEN POP_ASSUM MP_TAC
9674 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
9675 THEN ASM_REWRITE_TAC[]
9676 THEN ONCE_REWRITE_TAC[SET_RULE`{B,C}={C,B}`]
9678 THEN REPLICATE_TAC (27-3)(POP_ASSUM MP_TAC)
9679 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9681 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;IN_REAL_INTERVAL]
9683 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
9684 THEN REPEAT RESA_TAC)
9685 THEN MP_TAC BBS_IMP_CONVEX_LOCAL_FAN
9687 THEN SUBGOAL_THEN`(v2:real^3) IN V` ASSUME_TAC;
9690 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9691 THEN EXISTS_TAC`l:num`
9692 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
9694 SUBGOAL_THEN`v1,v2 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
9698 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9699 THEN EXISTS_TAC`l+k-1`
9700 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
9701 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
9704 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
9705 THEN REPEAT RESA_TAC;
9707 SUBGOAL_THEN`v2,w (SUC l) IN (FF:real^3#real^3->bool)` ASSUME_TAC;
9710 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9711 THEN EXISTS_TAC`l:num`
9712 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
9713 THEN MP_TAC(ARITH_RULE`3<k==> SUC(l+k-1)= l+k`)
9716 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;periodic]
9717 THEN REPEAT RESA_TAC;
9719 MP_TAC Local_lemmas.CVLF_LF_F
9721 THEN MRESA_TAC (GEN_ALL Local_lemmas.IVS_RHO_NODE1_DETE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v2:real^3`;`v1:real^3`;]
9722 THEN MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`(v2:real^3)`;`(w:num->real^3)(SUC l)`]
9723 THEN MRESAL_TAC (GEN_ALL LUNAR_IMP_INTERIOR_ANGLE1_EQ_PI)
9724 [`E:(real^3->bool)->bool`;`V:real^3->bool`;`FF:real^3#real^3->bool`;`v:real^3`;`w1:real^3`;][DIFF;IN_ELIM_THM;SET_RULE`~(a IN {b,c}) <=> (~(a=b)/\ ~(a=c))`]
9725 THEN POP_ASSUM(fun th-> MRESA_TAC th[`v2:real^3`])
9726 THEN MRESA_TAC (GEN_ALL Collect_geom2.THREE_GEN_POINTS_IN_AFF3)[`v2:real^3`;`v:real^3`;`w1:real^3`]
9727 THEN MRESA_TAC (GEN_ALL Local_lemmas.CONV02_SUBSET_AFF2)[`v:real^3`;`w1:real^3`]
9728 THEN MP_TAC(SET_RULE`v IN aff {v2, v, w1}/\ w1 IN aff {v2, v, w1}
9729 ==> {v, w1} SUBSET aff {v2, v, w1:real^3}`)
9731 THEN MRESA_TAC(GEN_ALL Local_lemmas.S_SUBSET_IMP_AFF_S_TOO)[`{v, w1:real^3}`;` {v2, v, w1:real^3}`]
9732 THEN MP_TAC(SET_RULE`v1 IN aff {v2, v, w1}/\ w (SUC l) IN aff {v2, v, w1}
9733 /\ vec 0 IN conv0 {v, w1} /\ conv0 {v, w1} SUBSET aff {v, w1}
9734 /\ aff {v, w1} SUBSET aff {v2, v, w1}
9735 ==> {vec 0, v1, w (SUC l)} SUBSET aff {v2, v, w1:real^3}`)
9737 THEN MRESA_TAC(GEN_ALL Local_lemmas.S_SUBSET_IMP_AFF_S_TOO)[`{vec 0, v1, w (SUC l):real^3}`;` {v2, v, w1:real^3}`]
9738 THEN MRESAL_TAC (GEN_ALL Local_lemmas.AFF_GT_SUB_AFF_UNION)[`{vec 0:real^3}`;`{ v1, w (SUC l):real^3}`][SET_RULE`{A}UNION {B,C}={A,B,C}`]
9739 THEN EXISTS_TAC`e':real`
9740 THEN ASM_REWRITE_TAC[]
9741 THEN REPEAT RESA_TAC
9742 THEN REPLICATE_TAC (66-27)(POP_ASSUM MP_TAC)
9743 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9744 THEN MRESA_TAC th[`t:real`])
9745 THEN REWRITE_TAC[GSYM aff]
9746 THEN MRESAL_TAC Marchal_cells_2_new.AFFINE_SUBSET_KY_LEMMA[`{v2, v, w1:real^3}`;`{vec 0,v, w1,v2:real^3}`][SET_RULE`{A,B,C} SUBSET {D,B,C,A}`;GSYM aff]
9747 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
9748 THEN EXISTS_TAC`aff {v2, v, w1:real^3}`
9749 THEN ASM_REWRITE_TAC[]
9750 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
9751 THEN EXISTS_TAC`aff {vec 0, v1, w (SUC l):real^3}`
9752 THEN ASM_REWRITE_TAC[]
9753 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A /\ A SUBSET B==> a IN B`))
9754 THEN EXISTS_TAC`aff_gt {vec 0} {v1, w (SUC l):real^3}`
9755 THEN ASM_REWRITE_TAC[v3_defor_v4]
9756 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B}={B,A}`]
9757 THEN ASM_REWRITE_TAC[];]);;
9764 let V3_DEFOR_CONVEX_LOCAL_FAN_TWO_CASES_concl =`!s k w l.
9768 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
9770 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
9771 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
9773 ~(&2 = norm (v2)) /\
9775 (!i. ~(scs_J_v39 s l i)) /\
9776 w l=v2/\ w (l+k-1) =v1/\
9777 norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6/\ a= -- &1/\
9779 V = IMAGE w (:num) /\
9780 E = IMAGE (\i. {w i, w (SUC i)}) (:num) ==>
9781 ~(lunar (v,(w l)) V E ))
9784 (!t. --e < t /\ t < e
9787 (IMAGE (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t) (:num),
9789 (\i. {v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t, v3_defor_v4 a x1 x2 x6 v1 v2
9794 (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t,
9795 v3_defor_v4 a x1 x2 x6 v1 v2 (w (SUC i)) t)
9800 let V3_DEFOR_DEFORMATION_CONVEX_LOCAL_FAN_V1_TWO_CASES=prove_by_refinement(
9801 (mk_imp(ZLZTHIC_concl, mk_imp (MHAEYJN_concl, V3_DEFOR_CONVEX_LOCAL_FAN_TWO_CASES_concl))),
9806 REPLICATE_TAC (19-4)(POP_ASSUM MP_TAC)
9807 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9808 THEN POP_ASSUM MP_TAC
9810 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
9813 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
9814 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
9815 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
9816 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
9817 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
9818 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
9820 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
9823 REPLICATE_TAC (38-19)(POP_ASSUM MP_TAC)
9824 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9826 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
9827 THEN REPEAT RESA_TAC);
9829 SUBGOAL_THEN`(v2:real^3) IN V` ASSUME_TAC;
9833 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9834 THEN EXISTS_TAC`l:num`
9835 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
9838 SUBGOAL_THEN`(v1:real^3) IN V` ASSUME_TAC;
9842 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9843 THEN EXISTS_TAC`l+k-1:num`
9844 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
9846 SUBGOAL_THEN`(v2:real^3) IN ball_annulus` ASSUME_TAC;
9848 REPLICATE_TAC (41-19)(POP_ASSUM MP_TAC)
9849 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9851 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
9852 THEN REPEAT RESA_TAC)
9853 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
9854 THEN EXISTS_TAC`V:real^3->bool`
9855 THEN ASM_REWRITE_TAC[];
9859 SUBGOAL_THEN`(v1:real^3) IN ball_annulus` ASSUME_TAC;
9861 REPLICATE_TAC (42-19)(POP_ASSUM MP_TAC)
9862 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9864 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
9865 THEN REPEAT RESA_TAC)
9866 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
9867 THEN EXISTS_TAC`V:real^3->bool`
9868 THEN ASM_REWRITE_TAC[];
9872 SUBGOAL_THEN`((v1,v2):real^3#real^3) IN FF`ASSUME_TAC;
9875 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
9876 THEN EXISTS_TAC`l+k-1:num`
9877 THEN ASM_REWRITE_TAC[SET_RULE`(a:num) IN (:num)`]
9878 THEN MP_TAC EQ_W_L_IN_BBS
9881 MP_TAC Local_lemmas.CVLF_LF_F
9883 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v1,v2):real^3#real^3`]
9884 THEN MP_TAC NORM_POS_COLLINEAR
9886 THEN MP_TAC V3_DEFOR_IN_BALL_ANNULUS_DEFORMATION
9888 THEN MP_TAC UPS_X_POS_SEG
9892 MRESA_TAC Deformation.XRECQNS[`-- &1`;`&1`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`ww_defor ((w:num->real^3) l)`]
9893 THEN MRESAL_TAC (GEN_ALL V3_DEFOR_DEFORMATION)[`x2:real`;`x6:real`;`a:real`;`x1:real`;`x2:real`;`x6:real`;`v1:real^3`;`v2:real^3`;`V:real^3->bool`][REAL_ARITH`&0< &1`]
9894 THEN MP_TAC Wrgcvdr_cizmrrh.CIZMRRH
9897 MP_TAC DEFORMATION_INTERIOR_ANGLE1_V3_DEFOR_V1_TWO_CASES
9900 ABBREV_TAC`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2`
9901 THEN MP_TAC(REAL_ARITH`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''/\ &0< e'''' ==> &0< e1/\ e1< &1/\ e1< e /\ e1< e' /\ e1< e'' /\ e1<= e'''/\ -- e'''<= --e1/\ --e1< &0/\ e1< e''''`)
9905 MRESA_TAC (GEN_ALL DEFORMATION_SMALL_INTERVAL)[`-- e''':real`;`e''':real`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`V:real^3->bool`;`--e1:real`;`e1:real`]
9906 THEN REPLICATE_TAC (73-0) (POP_ASSUM MP_TAC)
9907 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9908 THEN POP_ASSUM MP_TAC
9909 THEN MRESA_TAC th[`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`])
9910 THEN POP_ASSUM MP_TAC
9911 THEN SUBGOAL_THEN`(!v t.
9913 t IN real_interval (--e1,e1) /\
9914 interior_angle1 (vec 0) FF v = pi
9915 ==> interior_angle1 (vec 0)
9917 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
9918 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
9920 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) <=
9923 ASM_REWRITE_TAC[IN_REAL_INTERVAL]
9924 THEN REPEAT RESA_TAC
9925 THEN REPLICATE_TAC (76-61)(POP_ASSUM MP_TAC)
9926 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
9927 THEN MATCH_MP_TAC th)
9928 THEN ASM_REWRITE_TAC[IN_REAL_INTERVAL]
9929 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''''/\ --e1 <t ==> t<e''''/\ --e''''<t`)
9935 THEN REMOVE_ASSUM_TAC
9936 THEN EXISTS_TAC`e''''':real`
9937 THEN ASM_REWRITE_TAC[V_DEFORMATION_V3_DEFOR;E_DEFORMATION_V3_DEFOR;F_DEFORMATION_V3_DEFOR]
9939 THEN POP_ASSUM(fun th-> STRIP_TAC
9940 THEN MRESA_TAC th[`t:real`]);
9944 (***********lunar**********)
9947 MRESAL_TAC JKQEWGV3[`s:scs_v39`;`w:num->real^3`;`v:real^3`;`w':real^3`][LET_DEF;LET_END_DEF;]
9948 THEN MP_TAC(REAL_ARITH`interior_angle1 (vec 0) FF v < pi / &2/\ &0< pi
9949 ==> interior_angle1 (vec 0) FF v < pi`)
9950 THEN ASM_REWRITE_TAC[PI_WORKS]
9953 THEN SUBGOAL_THEN`~(v2=v:real^3)`ASSUME_TAC;
9955 POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`w':real^3`])
9957 THEN POP_ASSUM(fun th->
9959 THEN REWRITE_TAC[th]
9960 THEN REPEAT RESA_TAC)
9961 THEN ASM_REWRITE_TAC[Local_lemmas.LUNAR_COMM];
9964 SUBGOAL_THEN`~(v2=w':real^3)`ASSUME_TAC;
9967 THEN POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v:real^3`])
9969 THEN POP_ASSUM(fun th->
9971 THEN REWRITE_TAC[th]
9972 THEN REPEAT RESA_TAC);
9975 THEN POP_ASSUM MP_TAC
9976 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
9978 THEN ABBREV_TAC`w1=w':real^3`
9979 THEN MP_TAC DEFORMATION_LUNAR_AFFINE_HULL_V1_TWO_CASES
9981 THEN ABBREV_TAC`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2`
9982 THEN MP_TAC(REAL_ARITH`e1= (min (min(min(min (min e (&1)) e') e'') e''')e'''')/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''/\ &0< e'''' ==> &0< e1/\ e1< &1/\ e1< e /\ e1< e' /\ e1< e'' /\ e1<= e'''/\ -- e'''<= --e1/\ --e1< &0/\ e1< e''''`)
9984 THEN SUBGOAL_THEN`(!u' t.
9985 u' IN V /\ ~(v2 = u':real^3) /\ t IN real_interval (--e1,e1)
9986 ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 u' t = u')`ASSUME_TAC;
9989 THEN REWRITE_TAC[v3_defor_v4]
9990 THEN REMOVE_ASSUM_TAC
9991 THEN POP_ASSUM(fun th-> REWRITE_TAC[th]);
9993 SUBGOAL_THEN`(!t. t IN real_interval (--e1,e1)
9994 ==> v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v2 t IN
9995 affine hull {vec 0, v, w1, v2})`ASSUME_TAC;
9997 ASM_REWRITE_TAC[IN_REAL_INTERVAL]
9998 THEN REPEAT RESA_TAC
9999 THEN REPLICATE_TAC (80-67)(POP_ASSUM MP_TAC)
10000 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10001 THEN MATCH_MP_TAC th)
10002 THEN ASM_REWRITE_TAC[IN_REAL_INTERVAL]
10003 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''''/\ --e1<t==> t<e''''/\ --e''''<t`)
10006 MRESA_TAC (GEN_ALL DEFORMATION_SMALL_INTERVAL)[`-- e''':real`;`e''':real`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`V:real^3->bool`;`--e1:real`;`e1:real`]
10007 THEN REPLICATE_TAC (80-1) (POP_ASSUM MP_TAC)
10008 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10009 THEN POP_ASSUM MP_TAC
10010 THEN MRESA_TAC th[`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v3_defor_v4 (-- &1) x1 x2 x6 v1 v2`;`v:real^3`;`w':real^3`;`v2:real^3`])
10011 THEN POP_ASSUM MP_TAC;
10015 THEN REMOVE_ASSUM_TAC
10016 THEN EXISTS_TAC`e''''':real`
10017 THEN ASM_REWRITE_TAC[V_DEFORMATION_V3_DEFOR;E_DEFORMATION_V3_DEFOR;F_DEFORMATION_V3_DEFOR]
10019 THEN POP_ASSUM(fun th-> STRIP_TAC
10020 THEN MRESA_TAC th[`t:real`]);]);;
10026 let DEFORMATION_INTERIOR_ANGLE1_EQ_V3_DEFOR_V1_TWO_CASES=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
10028 w l=v2/\ w (l+k-1) =v1 /\
10029 &0< x1 /\ &0<x2 /\ &0< x6 /\
10030 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
10031 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
10032 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
10033 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
10034 /\ IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
10035 /\ IMAGE (w:num->real^3) (:num)=V
10037 (?e. &0< e/\ (!v t.
10040 ==> interior_angle1 (vec 0)
10042 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
10043 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
10045 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 v t) =
10046 interior_angle1 (vec 0) FF v))`,
10048 THEN MP_TAC DEFORMATION_AZIM_V3_DEFOR_V1_AT_ALL_V1_TWO_CASES
10050 THEN EXISTS_TAC`e:real`
10051 THEN ASM_REWRITE_TAC[interior_angle1]
10052 THEN REPEAT RESA_TAC
10053 THEN REPLICATE_TAC (23-20) (POP_ASSUM MP_TAC)
10054 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10055 THEN MRESA_TAC th[`t:real`;`v:real^3`])
10056 THEN REAL_ARITH_TAC);;
10060 let INTERIOR_ANGLE_SAME_V3_DEFOR1_TWO_CASES=prove(` 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
10062 w l=v2/\ w (l+k-1) =v1 /\
10063 &0< x1 /\ &0<x2 /\ &0< x6 /\
10064 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
10065 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
10066 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
10067 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1
10068 /\(!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t))/\
10071 IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)=FF
10072 /\ IMAGE (w:num->real^3) (:num)=V
10074 (?e. &0< e/\ (!t i.
10077 interior_angle1 (vec 0)
10079 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
10080 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
10085 (\uv. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (FST uv) t,
10086 v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (SND uv) t)
10088 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (l MOD k)) t))
10090 interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) (w (l MOD k)))))`,
10092 THEN MP_TAC DEFORMATION_INTERIOR_ANGLE1_EQ_V3_DEFOR_V1_TWO_CASES
10094 THEN ABBREV_TAC`e2=(min e e1)/ &2`
10095 THEN MP_TAC(REAL_ARITH`e2=(min e e1)/ &2 /\ &0< e/\ &0<e1==> &0<e2/\ e2<e/\ e2<e1`)
10097 THEN EXISTS_TAC`e2:real`
10098 THEN ASM_REWRITE_TAC[]
10099 THEN REPEAT RESA_TAC
10101 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;]
10102 THEN REPEAT STRIP_TAC
10103 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
10105 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)[`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l MOD k)`;`w:num->real^3`;`l MOD k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;]
10106 THEN REPLICATE_TAC (43-25)(POP_ASSUM MP_TAC)
10107 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10108 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e1==> t<e1`)
10110 THEN MRESA_TAC th[`t:real`])
10111 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)
10112 [`IMAGE (\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (:num)`;`IMAGE (\i. { v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t, v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) (SUC i)) t}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t, v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) (SUC i)) t) (:num)`;`(\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (l MOD k)`;`(\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) t)`;`l MOD k`]
10113 [MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;F_DEFORMATION_V3_DEFOR]
10114 THEN REPLICATE_TAC (45-29)(POP_ASSUM MP_TAC)
10115 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10116 THEN MATCH_MP_TAC th)
10117 THEN ASM_REWRITE_TAC[]
10118 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e/\ &0<t==> t<e/\ --e<t`)
10121 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
10122 THEN EXISTS_TAC`i + l MOD k`
10123 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`]);;
10133 let TAUSTAR_V3_DEFOR_TWO_CASES_concl = `!s k w l.
10134 3<k/\ scs_k_v39 s =k/\is_scs_v39 s /\
10136 w l=v2/\ w (l+k-1) =v1 /\
10137 &0< x1 /\ &0<x2 /\ &0< x6 /\
10138 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
10139 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
10140 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
10141 ~(collinear{vec 0,v1,v2:real^3})/\ norm v1 pow 2 = x1/\ norm v2 pow 2 =x2/\ norm(v1-v2) pow 2=x6 /\ a= -- &1/\
10142 ~(&2 = norm (w l)) /\
10143 (!i. ~(scs_J_v39 s l i)) /\
10144 (!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t))/\
10148 (!t. &0 < t /\ t < e
10149 ==> taustar_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 (w i) t)< taustar_v39 s w
10156 let TAUSTAR_V3_DEFOR_TWO_CASES=prove_by_refinement(( TAUSTAR_V3_DEFOR_TWO_CASES_concl),
10160 REPLICATE_TAC (22-5)(POP_ASSUM MP_TAC)
10161 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10162 THEN POP_ASSUM MP_TAC
10164 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
10167 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
10168 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
10169 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
10170 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
10171 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
10172 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
10174 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
10176 REPLICATE_TAC (41-22)(POP_ASSUM MP_TAC)
10177 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10179 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
10180 THEN REPEAT RESA_TAC);
10182 ASM_REWRITE_TAC[taustar_v39;LET_DEF;LET_END_DEF;tau_fun]
10184 THEN MP_TAC INTERIOR_ANGLE_SAME_V3_DEFOR1_TWO_CASES
10186 THEN MP_TAC RHO_FUN_DEFORMATION_V3_DEFOR
10188 THEN ABBREV_TAC`e2=(min (min e1 e) e')/ &2`
10189 THEN MP_TAC(REAL_ARITH`e2=(min(min e1 e) e')/ &2/\ &0< e1/\ &0< e/\ &0<e'
10190 ==> &0< e2/\ e2< e1/\ e2<e/\ e2< e'`)
10192 THEN EXISTS_TAC`e2:real`
10193 THEN ASM_REWRITE_TAC[]
10194 THEN REPEAT STRIP_TAC
10195 THEN MP_TAC(REAL_ARITH`e2=(min(min e1 e) e')/ &2/\ &0< e1/\ &0< e/\ &0<e'
10197 ==> t< e1/\ t<e/\ t< e'`)
10199 THEN MP_TAC CARD_FF_EQ_V3_DEFOR_DEFORMATION
10201 THEN POP_ASSUM(fun th->MRESA1_TAC th`t:real`)
10202 THEN MP_TAC DSV_V3_DEFOR_EQ
10204 THEN MATCH_MP_TAC(REAL_ARITH`a<b==> a-c< b-c`)
10205 THEN MATCH_MP_TAC(REAL_ARITH`a<b==> a-c< b-c`)
10206 THEN MRESA_TAC(GEN_ALL Qknvmlb.SUM_AZIM_EQ_ANGLE_LE4)[`V:real^3->bool`;`w:num->real^3`;`l:num`;`s:scs_v39`;`(w:num->real^3) (l MOD scs_k_v39 s)`;`FF:real^3#real^3->bool`;`E:(real^3->bool)->bool`]
10207 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
10208 THEN REPLICATE_TAC (59-20)(POP_ASSUM MP_TAC)
10209 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10210 THEN MRESA_TAC th[`t:real`])
10211 THEN MRESA_TAC(GEN_ALL Qknvmlb.SUM_AZIM_EQ_ANGLE_LE4)[`IMAGE (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (:num)`;` (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) i) t)`;`l:num`;`s:scs_v39`;` (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) i) t) (l MOD scs_k_v39 s)`;`IMAGE (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) i) t, v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC i)) t) (:num)`;`IMAGE (\i. { v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w i) t, v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 ((w:num->real^3) (SUC i)) t}) (:num)`]
10212 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
10213 THEN SUBGOAL_THEN`{i|i<k:num}= 0..(k-1)`ASSUME_TAC;
10215 REWRITE_TAC[IN_ELIM_THM;IN_NUMSEG;EXTENSION]
10216 THEN REPLICATE_TAC (59-2)(POP_ASSUM MP_TAC)
10217 THEN POP_ASSUM (fun th-> REPEAT STRIP_TAC
10222 THEN MRESAL_TAC SUM_ADD_SPLIT[`(\i. rho_fun (norm (w (i + l MOD k))) *
10223 interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) (w (l MOD k))))`;`0`;`0`;`k-1`][ARITH_RULE`0<=0+1/\ 0+A=A`]
10224 THEN MRESAL_TAC SUM_ADD_SPLIT[`(\i. rho_fun (norm (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (i + l MOD k)) t)) *
10225 interior_angle1 (vec 0)
10226 (IMAGE (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w i) t,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC i)) t)
10230 (IMAGE (\i. v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (i)) t,v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w (SUC i )) t)
10232 (v3_defor_v4 (-- &1) x1 x2 x6 v1 v2 (w ( l MOD k)) t)))`;`0`;`0`;`k-1`][ARITH_RULE`0<=0+1/\ 0+A=A`]
10233 THEN MATCH_MP_TAC(REAL_ARITH`a<b/\ c=d==> a+c<b+d`)
10234 THEN REWRITE_TAC[SUM_SING_NUMSEG;ITER]
10237 REWRITE_TAC[ARITH_RULE`0+A=A`]
10238 THEN REPLICATE_TAC (62-40)(POP_ASSUM MP_TAC)
10239 THEN POP_ASSUM (fun th-> ASM_TAC
10241 THEN REPEAT RESA_TAC
10243 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39;convex_local_fan]
10244 THEN REPEAT RESA_TAC
10245 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10246 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10247 THEN SUBGOAL_THEN`(v2:real^3) IN V`ASSUME_TAC;
10250 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
10251 THEN EXISTS_TAC`l:num`
10252 THEN ASM_REWRITE_TAC[SET_RULE`(l:num)IN(:num)`];
10254 REPLICATE_TAC (91-67)(POP_ASSUM MP_TAC)
10255 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10256 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e/\ &0<t ==> --e<t`)
10258 THEN MRESAL_TAC th[`t:real`;`0`][F_DEFORMATION_V3_DEFOR;ITER])
10259 THEN MP_TAC Local_lemmas.LOFA_IMP_V_DIFF
10261 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3) l`])
10262 THEN MATCH_MP_TAC REAL_LT_RMUL
10265 REPLICATE_TAC (93-68)(POP_ASSUM MP_TAC)
10266 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10267 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e'/\ &0<t ==> --e'<t`)
10269 THEN MRESAL_TAC th[`t:real`][v3_defor_v4]);
10271 MRESA_TAC (GEN_ALL Local_lemmas.INTERIOR_ANGLE1_POS)[`E:(real^3->bool)->bool`;`V:real^3->bool`;`FF:real^3#real^3->bool`;`(w:num->real^3) (l MOD scs_k_v39 s)`];
10273 MATCH_MP_TAC SUM_EQ
10274 THEN REWRITE_TAC[IN_NUMSEG;F_DEFORMATION_V3_DEFOR]
10275 THEN REPEAT STRIP_TAC
10276 THEN MP_TAC(ARITH_RULE`x<=k-1/\ 3< k==> x< k`)
10278 THEN REPLICATE_TAC (65-44)(POP_ASSUM MP_TAC)
10279 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10280 THEN MP_TAC(REAL_ARITH`t<e2/\ e2<e/\ &0<t ==> --e<t`)
10282 THEN MRESAL_TAC th[`t:real`;`x:num`][F_DEFORMATION_V3_DEFOR;ITER])
10283 THEN REWRITE_TAC[REAL_EQ_MUL_RCANCEL]
10284 THEN MATCH_MP_TAC (SET_RULE`A==> A\/ B`)
10286 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39;convex_local_fan]
10287 THEN REPEAT RESA_TAC
10288 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10289 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10290 THEN SUBGOAL_THEN`(v2:real^3) IN V`ASSUME_TAC;
10293 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
10294 THEN EXISTS_TAC`l:num`
10295 THEN ASM_REWRITE_TAC[SET_RULE`(l:num)IN(:num)`];
10297 MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`w:num->real^3`;`IMAGE (w:num->real^3) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;convex_local_fan;is_scs_v39;periodic2]
10298 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)[`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l MOD k)`;`w:num->real^3`;`l MOD k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;convex_local_fan;is_scs_v39;periodic2]
10299 THEN POP_ASSUM(fun th-> MRESA_TAC th[`x:num`] )
10300 THEN MP_TAC(ARITH_RULE`1<=x==> 0<x`)
10303 MRESA_TAC (GEN_ALL Local_lemmas.LOFA_IMP_DIS_ELMS23)
10304 [`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`IMAGE (w:num->real^3) (:num)`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3) (l MOD k)`]
10305 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`0:num`;`x:num`][ITER;v3_defor_v4] )]);;
10311 let IMJXPHR_concl = `!s k w l.
10315 azim (vec 0) (w l) (w (SUC l)) (w (l + (scs_k_v39 s - 1)) ) = pi /\
10317 ~(collinear {vec 0,w (SUC l),w (l + (scs_k_v39 s - 1)) })/\
10318 (w l) IN aff_gt {vec 0} {w (SUC l),w (l + (scs_k_v39 s - 1)) }/\
10319 (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
10320 ~(&2 = norm (w l)) /\
10321 (!i. scs_diag k l i ==> scs_a_v39 s l i < dist(w l,w i)) /\
10322 (!i. ~(scs_J_v39 s l i)) /\
10324 V = IMAGE w (:num) /\
10325 E = IMAGE (\i. {w i, w (SUC i)}) (:num) ==>
10326 ~(lunar (v,(w l)) V E )) ==>
10327 (scs_a_v39 s l (SUC l) = dist (w l, w (SUC l)) /\
10328 (scs_a_v39 s l (l + (k-1)) = dist (w l, w (l + (k-1)))))`;;
10332 let IMJXPHR=prove_by_refinement((mk_imp(ZLZTHIC_concl, mk_imp (MHAEYJN_concl, IMJXPHR_concl))),
10337 THEN REPEAT GEN_TAC
10339 THEN POP_ASSUM MP_TAC
10340 THEN MP_TAC ODXLSTCv2
10342 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`])
10343 THEN POP_ASSUM (fun th-> STRIP_TAC
10345 THEN POP_ASSUM MP_TAC)
10346 THEN ASM_REWRITE_TAC[SET_RULE`(A==> ~(B/\ A)==>C)<=> A==> ~B==>C`]
10348 THEN POP_ASSUM(fun th-> STRIP_TAC THEN MP_TAC th)
10349 THEN REPLICATE_TAC (3)(POP_ASSUM MP_TAC)
10350 THEN REWRITE_TAC[scs_diag]
10351 THEN REPLICATE_TAC (2)STRIP_TAC
10352 THEN REWRITE_TAC[NOT_FORALL_THM;NOT_IMP]
10356 MP_TAC(SET_RULE`~(SUC l MOD k = i MOD k) /\
10357 ~(l MOD k = SUC i MOD k) \/
10358 (SUC l MOD k = i MOD k)\/ (l MOD k = SUC i MOD k)`)
10363 REPLICATE_TAC (14-9)(POP_ASSUM MP_TAC)
10364 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10365 THEN POP_ASSUM MP_TAC
10366 THEN MRESA_TAC th[`i:num`])
10369 MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
10371 THEN POP_ASSUM (fun th-> ASM_TAC
10373 THEN REPEAT DISCH_TAC
10374 THEN POP_ASSUM MP_TAC)
10375 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
10376 THEN SUBGOAL_THEN`scs_a_v39 s l (SUC l) = dist (w l,(w:num->real^3) (SUC l))`
10382 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10383 THEN REPEAT RESA_TAC
10384 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10385 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
10386 THEN MRESAL1_TAC th`SUC l:num`[ARITH_RULE`4 MOD 4=0`])
10387 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
10388 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
10389 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
10390 THEN MRESAL1_TAC th`SUC l:num`[ARITH_RULE`4 MOD 4=0`])
10391 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
10394 REPLICATE_TAC (54-26) (POP_ASSUM MP_TAC)
10395 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10396 THEN MRESA_TAC th[`l:num`;`i:num`])
10399 REPLICATE_TAC (55-44) (POP_ASSUM MP_TAC)
10400 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10402 THEN REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
10403 THEN REAL_ARITH_TAC
10409 REPLICATE_TAC (23-5)(POP_ASSUM MP_TAC)
10410 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10411 THEN POP_ASSUM MP_TAC
10413 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
10416 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
10417 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
10418 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
10419 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
10420 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
10421 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
10424 REPLICATE_TAC (35-22)(POP_ASSUM MP_TAC)
10425 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10427 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
10428 THEN REPEAT RESA_TAC)
10431 SUBGOAL_THEN`(w:num->real^3) l IN V` ASSUME_TAC;
10435 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
10436 THEN EXISTS_TAC`l:num`
10437 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
10440 SUBGOAL_THEN`(w:num->real^3) (SUC l) IN V` ASSUME_TAC;
10444 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
10445 THEN EXISTS_TAC`SUC l:num`
10446 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
10448 SUBGOAL_THEN`(w:num->real^3) l IN ball_annulus` ASSUME_TAC;
10451 REPLICATE_TAC (38-22)(POP_ASSUM MP_TAC)
10452 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10454 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
10455 THEN REPEAT RESA_TAC)
10456 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
10457 THEN EXISTS_TAC`V:real^3->bool`
10458 THEN ASM_REWRITE_TAC[];
10462 SUBGOAL_THEN`(w:num->real^3) (SUC l) IN ball_annulus` ASSUME_TAC;
10465 REPLICATE_TAC (39-22)(POP_ASSUM MP_TAC)
10466 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10468 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
10469 THEN REPEAT RESA_TAC)
10470 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
10471 THEN EXISTS_TAC`V:real^3->bool`
10472 THEN ASM_REWRITE_TAC[];
10475 MP_TAC(REAL_ARITH`scs_a_v39 s l (l + k - 1) < dist ((w:num->real^3) l,w (l + k - 1))\/ scs_a_v39 s l (l + k - 1) >= dist (w l,w (l + k - 1))`)
10479 SUBGOAL_THEN(`!i. ~(l MOD k = i MOD k) /\
10480 ~(SUC l MOD k = i MOD k)
10481 ==> scs_a_v39 s l i < dist ((w:num->real^3) l,(w:num->real^3) i)`)ASSUME_TAC;
10484 THEN MP_TAC(SET_RULE`(l MOD k = SUC i' MOD k)\/ ~(l MOD k = SUC i' MOD k)`)
10487 MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i':num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
10488 THEN POP_ASSUM(fun th-> ASSUME_TAC(SYM th))
10490 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10491 THEN REPEAT RESA_TAC
10492 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10493 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l+k-1:num`[ARITH_RULE`4 MOD 4=0`]
10494 THEN MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
10495 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
10496 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
10497 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l+k-1:num`[ARITH_RULE`4 MOD 4=0`]
10498 THEN MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
10499 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
10500 THEN ASM_REWRITE_TAC[]
10504 REPLICATE_TAC (42-9)(POP_ASSUM MP_TAC)
10505 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10506 THEN MRESA_TAC th[`i':num`])
10514 ABBREV_TAC`v2= (w:num->real^3) l`
10515 THEN ABBREV_TAC`v1= (w:num->real^3) (SUC l)`
10516 THEN ABBREV_TAC`x1=norm (v1:real^3) pow 2`
10517 THEN ABBREV_TAC`x2=norm (v2:real^3) pow 2`
10518 THEN ABBREV_TAC`x6=norm (v1-v2:real^3) pow 2`
10519 THEN ABBREV_TAC`a= -- &1`
10520 THEN SUBGOAL_THEN`((v2,v1):real^3#real^3) IN FF`ASSUME_TAC
10525 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
10526 THEN EXISTS_TAC`l:num`
10527 THEN ASM_REWRITE_TAC[SET_RULE`(a:num) IN (:num)`];
10529 MP_TAC Local_lemmas.CVLF_LF_F
10531 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v2,v1):real^3#real^3`]
10532 THEN POP_ASSUM MP_TAC
10533 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C}={A,C,B}`]
10535 THEN MP_TAC NORM_POS_COLLINEAR
10537 THEN MP_TAC V3_DEFOR_IN_BALL_ANNULUS_DEFORMATION
10539 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_COM_SUC
10541 THEN MP_TAC UPS_X_POS_SEG
10544 THEN REPLICATE_TAC (4)(STRIP_TAC)
10545 THEN ASM_REWRITE_TAC[]
10546 THEN REPEAT DISCH_TAC
10547 THEN POP_ASSUM MP_TAC
10548 THEN MP_TAC DEFORMATION_DIST_LE_BLL_V3_DEFOR_COM
10550 THEN MP_TAC V3_DEFOR_DEFORMATION_CONVEX_LOCAL_FAN_V1
10552 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`])
10553 THEN POP_ASSUM MP_TAC
10554 THEN MATCH_MP_TAC(SET_RULE`(B==> A==>C)==>((A==>B)==> A==>C)`)
10556 THEN ABBREV_TAC`e1=(min (min (min (min e e') e'') e''')e'''') / &2`
10557 THEN MP_TAC(REAL_ARITH`e1=(min (min (min (min e e') e'') e''')e'''') / &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''/\ &0< e''''==> &0<e1/\ e1< e/\ e1<e'/\ e1<e''/\ e1<e'''/\ e1<e''''`)
10559 THEN SUBGOAL_THEN`!t. &0 < t /\ t < e1
10560 ==> BBs_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) (t) )` ASSUME_TAC;
10563 REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
10564 THEN REPEAT STRIP_TAC;
10567 ASM_REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;ww_defor]
10568 THEN REPEAT RESA_TAC
10569 THEN MP_TAC(SET_RULE`((w:num->real^3) x' = v2)\/ ~(w x' = v2)`)
10573 MP_TAC(REAL_ARITH`t< e1/\ e1< e==> t< e`)
10577 REPLICATE_TAC (80-59)(POP_ASSUM MP_TAC)
10578 THEN POP_ASSUM(fun th->
10580 THEN MRESA_TAC th[`t:real`])
10585 ASM_REWRITE_TAC[v3_defor_v4]
10588 REPLICATE_TAC (79-24)(POP_ASSUM MP_TAC)
10589 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10591 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
10592 THEN REPEAT RESA_TAC)
10593 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
10594 THEN EXISTS_TAC`V:real^3->bool`
10595 THEN ASM_REWRITE_TAC[]
10597 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
10598 THEN EXISTS_TAC`x':num`
10599 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
10604 THEN REPLICATE_TAC 5 (STRIP_TAC)
10605 THEN MP_TAC(ARITH_RULE`3< k==> ~(k<=3)`)
10606 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;periodic;ww_defor]
10607 THEN REPEAT RESA_TAC;
10612 ASM_REWRITE_TAC[v3_defor_v4]
10613 THEN MP_TAC(SET_RULE`(w:num->real^3) i' =w l \/ ~(w i' = w l)`)
10617 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
10623 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
10625 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10626 THEN REPEAT RESA_TAC
10627 THEN POP_ASSUM MP_TAC
10628 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10629 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
10630 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
10631 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
10632 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
10634 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i' MOD k`;`j MOD k`])
10635 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
10636 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
10637 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i' MOD k)`][ARITH_RULE`~(4=0)`;periodic]
10638 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
10639 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE]);
10648 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
10650 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10651 THEN REPEAT RESA_TAC
10652 THEN POP_ASSUM MP_TAC
10653 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10654 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
10655 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
10656 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10657 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
10658 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
10659 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
10661 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i' MOD k`;`l MOD k`])
10662 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
10663 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
10664 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
10665 THEN MP_TAC(SET_RULE`j MOD k = l MOD k==> (w:num->real^3)(j MOD k)=(w:num->real^3)(l MOD k)`)
10667 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
10671 REPLICATE_TAC (111-41) (POP_ASSUM MP_TAC)
10672 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10674 THEN MP_TAC(SET_RULE`j MOD k=SUC l MOD k\/ ~(SUC l MOD k = j MOD k)`)
10679 REPLICATE_TAC (108-97) (POP_ASSUM MP_TAC)
10680 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10683 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
10684 THEN POP_ASSUM MP_TAC
10685 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (l MOD k)`][ARITH_RULE`~(4=0)`;periodic]
10686 THEN POP_ASSUM (fun th-> MRESA1_TAC th`SUC l:num`
10687 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
10688 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
10689 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (SUC l)`][ARITH_RULE`~(4=0)`;periodic]
10690 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10691 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
10694 REPLICATE_TAC (111-66) (POP_ASSUM MP_TAC)
10695 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10697 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10698 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
10699 THEN MRESAL1_TAC th`SUC l:num`[ARITH_RULE`4 MOD 4=0`])
10700 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
10704 REPLICATE_TAC (113-82) (POP_ASSUM MP_TAC)
10705 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10706 THEN MP_TAC(REAL_ARITH`e1< e''/\ t< e1/\ &0<t==> --e''<t/\ t< e''`)
10708 THEN MRESA_TAC th[`t:real`])
10709 THEN MRESAL_TAC(GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`a:real`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`v2:real^3`;`v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)`;`v1:real^3`;`x6:real`]
10710 [SET_RULE`a IN{a,b}`;v3_defor_v1]
10711 THEN POP_ASSUM MP_TAC
10712 THEN REWRITE_TAC[GSYM v3_defor_v1;dist;REAL_ARITH`a<=b<=> b>=a`;NORM_GE_SQUARE]
10713 THEN REWRITE_TAC[DOT_SQUARE_NORM;GSYM dist]
10714 THEN ONCE_REWRITE_TAC[DIST_SYM]
10715 THEN ASM_REWRITE_TAC[dist]
10717 THEN REWRITE_TAC[REAL_ARITH`x6>=x6`]
10720 REPLICATE_TAC (111-81) (POP_ASSUM MP_TAC)
10721 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10722 THEN MRESA_TAC th[`t:real`;`j:num`])
10723 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (j)`][ARITH_RULE`~(4=0)`;periodic]
10724 THEN POP_ASSUM (fun th-> MRESA1_TAC th`l:num`)
10725 THEN REMOVE_ASSUM_TAC
10726 THEN POP_ASSUM MP_TAC
10727 THEN REAL_ARITH_TAC;
10729 (****scs_a SYM*****)
10731 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
10737 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
10739 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10740 THEN REPEAT RESA_TAC
10741 THEN POP_ASSUM MP_TAC
10742 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10743 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
10744 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
10745 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10746 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
10747 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
10748 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
10750 THEN POP_ASSUM (fun th-> MRESA_TAC th[`j MOD k`;`l MOD k`])
10751 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s i'`][ARITH_RULE`~(4=0)`;periodic]
10752 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
10753 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
10754 THEN MP_TAC(SET_RULE`i' MOD k = l MOD k==> (w:num->real^3)(i' MOD k)=(w:num->real^3)(l MOD k)`)
10756 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
10760 REPLICATE_TAC (111-41) (POP_ASSUM MP_TAC)
10761 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10763 THEN MP_TAC(SET_RULE`i' MOD k=SUC l MOD k\/ ~(SUC l MOD k = i' MOD k)`)
10768 REPLICATE_TAC (108-96) (POP_ASSUM MP_TAC)
10769 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10772 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
10773 THEN POP_ASSUM MP_TAC
10774 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (l MOD k)`][ARITH_RULE`~(4=0)`;periodic]
10775 THEN POP_ASSUM (fun th-> MRESA1_TAC th`SUC l:num`
10776 THEN MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
10777 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
10778 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (SUC l)`][ARITH_RULE`~(4=0)`;periodic]
10779 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10780 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
10783 REPLICATE_TAC (111-66) (POP_ASSUM MP_TAC)
10784 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10786 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10787 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
10788 THEN MRESAL1_TAC th`SUC l:num`[ARITH_RULE`4 MOD 4=0`])
10793 REPLICATE_TAC (114-82) (POP_ASSUM MP_TAC)
10794 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10795 THEN MP_TAC(REAL_ARITH`e1< e''/\ t< e1/\ &0<t==> --e''<t/\ t< e''`)
10797 THEN MRESA_TAC th[`t:real`])
10798 THEN MRESAL_TAC(GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`a:real`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`v2:real^3`;`v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)`;`v1:real^3`;`x6:real`]
10799 [SET_RULE`a IN{a,b}`;v3_defor_v1]
10800 THEN POP_ASSUM MP_TAC
10801 THEN REWRITE_TAC[GSYM v3_defor_v1;dist;REAL_ARITH`a<=b<=> b>=a`;NORM_GE_SQUARE]
10802 THEN REWRITE_TAC[DOT_SQUARE_NORM;GSYM dist]
10803 THEN ONCE_REWRITE_TAC[DIST_SYM]
10804 THEN ASM_REWRITE_TAC[dist]
10806 THEN REWRITE_TAC[DOT_SQUARE_NORM;GSYM dist]
10807 THEN ONCE_REWRITE_TAC[DIST_SYM]
10808 THEN ASM_REWRITE_TAC[dist]
10809 THEN REWRITE_TAC[REAL_ARITH`x6>=x6`]
10812 REPLICATE_TAC (111-81) (POP_ASSUM MP_TAC)
10813 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10814 THEN MRESA_TAC th[`t:real`;`i':num`])
10815 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i')`][ARITH_RULE`~(4=0)`;periodic]
10816 THEN POP_ASSUM (fun th-> MRESA1_TAC th`l:num`)
10817 THEN ONCE_REWRITE_TAC[DIST_SYM]
10818 THEN REMOVE_ASSUM_TAC
10819 THEN POP_ASSUM MP_TAC
10820 THEN REAL_ARITH_TAC;
10824 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10825 THEN REPEAT RESA_TAC
10832 ASM_REWRITE_TAC[v3_defor_v4]
10833 THEN MP_TAC(SET_RULE`(w:num->real^3) i' =w l \/ ~(w i' = w l)`)
10837 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
10842 REWRITE_TAC[DIST_REFL]
10844 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10845 THEN REPEAT RESA_TAC
10848 REPLICATE_TAC (99-44) (POP_ASSUM MP_TAC)
10849 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10850 THEN MRESAL_TAC th[`i':num`;`j:num`][DIST_REFL]);
10855 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
10857 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10858 THEN REPEAT RESA_TAC
10859 THEN POP_ASSUM MP_TAC
10860 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10861 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
10862 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
10863 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10864 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
10865 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
10866 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
10868 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i' MOD k`;`l MOD k`])
10869 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
10870 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
10871 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
10872 THEN MP_TAC(SET_RULE`j MOD k = l MOD k==> (w:num->real^3)(j MOD k)=(w:num->real^3)(l MOD k)`)
10874 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'''==> t< e'''`)
10879 REPLICATE_TAC (111-86) (POP_ASSUM MP_TAC)
10880 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10881 THEN MRESAL_TAC th[`t:real`;`j:num`][DIST_REFL])
10882 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
10883 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10889 (***********scs_b SYM**********)
10892 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
10897 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
10899 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10900 THEN REPEAT RESA_TAC
10901 THEN POP_ASSUM MP_TAC
10902 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
10903 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
10904 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
10905 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10906 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
10907 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
10908 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
10910 THEN POP_ASSUM (fun th-> MRESA_TAC th[`j MOD k`;`l MOD k`])
10911 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s i'`][ARITH_RULE`~(4=0)`;periodic]
10912 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
10913 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
10914 THEN MP_TAC(SET_RULE`i' MOD k = l MOD k==> (w:num->real^3)(i' MOD k)=(w:num->real^3)(l MOD k)`)
10916 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'''==> t< e'''`)
10921 REPLICATE_TAC (111-86) (POP_ASSUM MP_TAC)
10922 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10923 THEN MRESAL_TAC th[`t:real`;`i':num`][DIST_REFL])
10924 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s i'`][ARITH_RULE`~(4=0)`;periodic]
10925 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
10926 THEN ONCE_REWRITE_TAC[DIST_SYM]
10927 THEN ASM_REWRITE_TAC[]
10933 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10934 THEN REPEAT RESA_TAC
10938 (*************convex_local_fan**************)
10943 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''''/\ &0< t/\ &0< e''''==> t< e''''/\ --e''''< t`)
10945 THEN REPLICATE_TAC (78-67) (POP_ASSUM MP_TAC)
10946 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
10947 THEN MRESA_TAC th[`t:real`;])
10953 MP_TAC TAUSTAR_V3_DEFOR
10955 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`])
10956 THEN POP_ASSUM MP_TAC
10957 THEN ABBREV_TAC`e2= (min e1 e''''')/ &2`
10958 THEN MP_TAC(REAL_ARITH`e2= (min e1 e''''')/ &2 /\ &0< e1/\ &0< e'''''
10959 ==> &0< e2/\ e2< e1/\ e2< e'''''`)
10961 THEN REPLICATE_TAC (80-75)(POP_ASSUM MP_TAC)
10962 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10963 THEN MRESA_TAC th[`e2:real`])
10964 THEN POP_ASSUM MP_TAC
10965 THEN REMOVE_ASSUM_TAC
10966 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10967 THEN MRESA_TAC th[`e2:real`])
10968 THEN REPLICATE_TAC (81-25)(POP_ASSUM MP_TAC)
10969 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10970 THEN MRESA_TAC th[`(\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) e2)`])
10971 THEN REPLICATE_TAC (2)(POP_ASSUM MP_TAC)
10972 THEN REAL_ARITH_TAC
10975 (*********************)
10978 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
10979 THEN REPEAT RESA_TAC
10980 THEN REPLICATE_TAC (65-44)(POP_ASSUM MP_TAC)
10981 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
10982 THEN MRESA_TAC th[`l:num`;`l+k-1`])
10983 THEN REMOVE_ASSUM_TAC
10984 THEN POP_ASSUM MP_TAC
10985 THEN REMOVE_ASSUM_TAC
10986 THEN POP_ASSUM MP_TAC
10987 THEN REAL_ARITH_TAC ;
10991 (*************CASE TWO****************)
10993 MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=1)/\ 0<k/\ 1<k/\ 1+l+k-1= 1*k+l /\ ~(k<=3)`)
10995 THEN POP_ASSUM (fun th-> ASM_TAC
10997 THEN REPEAT DISCH_TAC
10998 THEN POP_ASSUM MP_TAC)
10999 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k:num`;`l:num`]
11000 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`l+k-1`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
11001 THEN SUBGOAL_THEN`scs_a_v39 s l (l+k-1) = dist (w l,(w:num->real^3) (l+k-1))`
11007 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11008 THEN REPEAT RESA_TAC
11009 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11010 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
11011 THEN MRESAL1_TAC th`l+k-1:num`[ARITH_RULE`4 MOD 4=0`])
11012 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
11013 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
11014 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
11015 THEN MRESAL1_TAC th`l+k-1:num`[ARITH_RULE`4 MOD 4=0`])
11016 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
11019 REPLICATE_TAC (55-26) (POP_ASSUM MP_TAC)
11020 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11021 THEN MRESA_TAC th[`l:num`;`i:num`])
11025 REPLICATE_TAC (56-44) (POP_ASSUM MP_TAC)
11026 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11028 THEN REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
11029 THEN REAL_ARITH_TAC
11036 REPLICATE_TAC (24-5)(POP_ASSUM MP_TAC)
11037 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11038 THEN POP_ASSUM MP_TAC
11040 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
11043 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
11044 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
11045 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
11046 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
11047 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
11048 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
11051 REPLICATE_TAC (35-22)(POP_ASSUM MP_TAC)
11052 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11054 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
11055 THEN REPEAT RESA_TAC)
11058 SUBGOAL_THEN`(w:num->real^3) l IN V` ASSUME_TAC;
11062 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
11063 THEN EXISTS_TAC`l:num`
11064 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
11067 SUBGOAL_THEN`(w:num->real^3) (l+k-1) IN V` ASSUME_TAC;
11071 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
11072 THEN EXISTS_TAC`l+k-1:num`
11073 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
11075 SUBGOAL_THEN`(w:num->real^3) l IN ball_annulus` ASSUME_TAC;
11078 REPLICATE_TAC (38-22)(POP_ASSUM MP_TAC)
11079 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11081 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
11082 THEN REPEAT RESA_TAC)
11083 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
11084 THEN EXISTS_TAC`V:real^3->bool`
11085 THEN ASM_REWRITE_TAC[];
11089 SUBGOAL_THEN`(w:num->real^3) (l+k-1) IN ball_annulus` ASSUME_TAC;
11092 REPLICATE_TAC (39-22)(POP_ASSUM MP_TAC)
11093 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11095 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
11096 THEN REPEAT RESA_TAC)
11097 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
11098 THEN EXISTS_TAC`V:real^3->bool`
11099 THEN ASM_REWRITE_TAC[];
11102 MP_TAC(REAL_ARITH`scs_a_v39 s l (SUC l) < dist ((w:num->real^3) l,w (SUC l))\/ scs_a_v39 s l (SUC l) >= dist (w l,w (SUC l))`)
11108 SUBGOAL_THEN(`!i. ~(l MOD k = i MOD k) /\
11109 ~(l MOD k = SUC i MOD k)
11110 ==> scs_a_v39 s l i < dist ((w:num->real^3) l,(w:num->real^3) i)`)ASSUME_TAC;
11113 THEN MP_TAC(SET_RULE`(SUC l MOD k = i' MOD k)\/ ~(SUC l MOD k = i' MOD k)`)
11118 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11119 THEN REPEAT RESA_TAC
11120 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11121 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`SUC l:num`[ARITH_RULE`4 MOD 4=0`]
11122 THEN MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
11123 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
11124 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
11125 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`SUC l:num`[ARITH_RULE`4 MOD 4=0`]
11126 THEN MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
11127 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
11128 THEN ASM_REWRITE_TAC[]
11134 REPLICATE_TAC (45-11)(POP_ASSUM MP_TAC)
11135 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11136 THEN MRESA_TAC th[`i':num`])
11143 THEN REPLICATE_TAC (45)(RESA_TAC)
11147 ABBREV_TAC`v2= (w:num->real^3) l`
11148 THEN ABBREV_TAC`v1= (w:num->real^3) (l+k-1)`
11149 THEN ABBREV_TAC`x1=norm (v1:real^3) pow 2`
11150 THEN ABBREV_TAC`x2=norm (v2:real^3) pow 2`
11151 THEN ABBREV_TAC`x6=norm (v1-v2:real^3) pow 2`
11152 THEN ABBREV_TAC`a= -- &1`
11153 THEN SUBGOAL_THEN`((v1,v2):real^3#real^3) IN FF`ASSUME_TAC
11158 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
11159 THEN EXISTS_TAC`l+k-1:num`
11160 THEN ASM_SIMP_TAC[SET_RULE`(a:num) IN (:num)`;EQ_W_L_IN_BBS]
11161 THEN MP_TAC EQ_W_L_IN_BBS
11166 MP_TAC Local_lemmas.CVLF_LF_F
11168 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_IN_FF_NOT_COLLINEAR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`(v1,v2):real^3#real^3`]
11169 THEN MP_TAC NORM_POS_COLLINEAR
11171 THEN MP_TAC V3_DEFOR_IN_BALL_ANNULUS_DEFORMATION
11173 THEN MP_TAC DEFORMATION_DIST_LE_V3_DEFOR_A_COM_SUC_TWO_CASES
11175 THEN MP_TAC UPS_X_POS_SEG
11178 THEN REPLICATE_TAC (4)(STRIP_TAC)
11179 THEN ASM_REWRITE_TAC[]
11180 THEN REPEAT DISCH_TAC
11181 THEN POP_ASSUM MP_TAC
11182 THEN MP_TAC DEFORMATION_DIST_LE_BLL_V3_DEFOR_COM_TWO_CASES
11184 THEN MP_TAC V3_DEFOR_DEFORMATION_CONVEX_LOCAL_FAN_V1_TWO_CASES
11186 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`])
11187 THEN POP_ASSUM MP_TAC
11188 THEN MATCH_MP_TAC(SET_RULE`(B==> A==>C)==>((A==>B)==> A==>C)`)
11190 THEN ABBREV_TAC`e1=(min (min (min (min e e') e'') e''')e'''') / &2`
11191 THEN MP_TAC(REAL_ARITH`e1=(min (min (min (min e e') e'') e''')e'''') / &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0< e'''/\ &0< e''''==> &0<e1/\ e1< e/\ e1<e'/\ e1<e''/\ e1<e'''/\ e1<e''''`)
11193 THEN SUBGOAL_THEN`!t. &0 < t /\ t < e1
11194 ==> BBs_v39 s (\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) (t) )` ASSUME_TAC;
11200 REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
11201 THEN REPEAT STRIP_TAC;
11204 ASM_REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;ww_defor]
11205 THEN REPEAT RESA_TAC
11206 THEN MP_TAC(SET_RULE`((w:num->real^3) x' = v2)\/ ~(w x' = v2)`)
11210 MP_TAC(REAL_ARITH`t< e1/\ e1< e==> t< e`)
11214 REPLICATE_TAC (80-59)(POP_ASSUM MP_TAC)
11215 THEN POP_ASSUM(fun th->
11217 THEN MRESA_TAC th[`t:real`])
11222 ASM_REWRITE_TAC[v3_defor_v4]
11225 REPLICATE_TAC (79-24)(POP_ASSUM MP_TAC)
11226 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11228 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
11229 THEN REPEAT RESA_TAC)
11230 THEN MATCH_MP_TAC(GEN_ALL(SET_RULE`a IN A/\ A SUBSET B==> a IN B`))
11231 THEN EXISTS_TAC`V:real^3->bool`
11232 THEN ASM_REWRITE_TAC[]
11234 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
11235 THEN EXISTS_TAC`x':num`
11236 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
11241 THEN REPLICATE_TAC 5 (STRIP_TAC)
11242 THEN MP_TAC(ARITH_RULE`3< k==> ~(k<=3)`)
11243 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;periodic;ww_defor]
11244 THEN REPEAT RESA_TAC;
11249 ASM_REWRITE_TAC[v3_defor_v4]
11250 THEN MP_TAC(SET_RULE`(w:num->real^3) i' =w l \/ ~(w i' = w l)`)
11254 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
11260 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
11262 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11263 THEN REPEAT RESA_TAC
11264 THEN POP_ASSUM MP_TAC
11265 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11266 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
11267 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
11268 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
11269 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
11271 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i' MOD k`;`j MOD k`])
11272 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
11273 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
11274 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i' MOD k)`][ARITH_RULE`~(4=0)`;periodic]
11275 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
11276 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE]);
11285 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
11287 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11288 THEN REPEAT RESA_TAC
11289 THEN POP_ASSUM MP_TAC
11290 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11291 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
11292 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
11293 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
11294 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
11295 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
11296 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
11298 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i' MOD k`;`l MOD k`])
11299 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
11300 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
11301 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
11302 THEN MP_TAC(SET_RULE`j MOD k = l MOD k==> (w:num->real^3)(j MOD k)=(w:num->real^3)(l MOD k)`)
11304 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
11308 REPLICATE_TAC (111-41) (POP_ASSUM MP_TAC)
11309 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11311 THEN MP_TAC(SET_RULE`SUC j MOD k= l MOD k\/ ~(l MOD k = SUC j MOD k)`)
11316 MRESAL_TAC Hdplygy.MOD_EQ_MOD[`j:num`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
11320 REPLICATE_TAC (109-97) (POP_ASSUM MP_TAC)
11321 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11324 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
11325 THEN POP_ASSUM MP_TAC
11326 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (l MOD k)`][ARITH_RULE`~(4=0)`;periodic]
11327 THEN POP_ASSUM (fun th-> MRESA1_TAC th`l+k-1:num`
11328 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
11329 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
11330 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (l+k-1)`][ARITH_RULE`~(4=0)`;periodic]
11331 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`] THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
11332 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
11333 THEN REMOVE_ASSUM_TAC;
11335 REPLICATE_TAC (112-66) (POP_ASSUM MP_TAC)
11336 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11338 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11339 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
11340 THEN MRESAL1_TAC th`l+k-1:num`[ARITH_RULE`4 MOD 4=0`])
11341 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
11345 REPLICATE_TAC (114-82) (POP_ASSUM MP_TAC)
11346 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11347 THEN MP_TAC(REAL_ARITH`e1< e''/\ t< e1/\ &0<t==> --e''<t/\ t< e''`)
11349 THEN MRESA_TAC th[`t:real`])
11350 THEN MRESAL_TAC(GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`a:real`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`v2:real^3`;`v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)`;`v1:real^3`;`x6:real`]
11351 [SET_RULE`a IN{a,b}`;v3_defor_v1]
11352 THEN POP_ASSUM MP_TAC
11353 THEN REWRITE_TAC[GSYM v3_defor_v1;dist;REAL_ARITH`a<=b<=> b>=a`;NORM_GE_SQUARE]
11354 THEN REWRITE_TAC[DOT_SQUARE_NORM;GSYM dist]
11355 THEN ONCE_REWRITE_TAC[DIST_SYM]
11356 THEN ASM_REWRITE_TAC[dist]
11358 THEN REWRITE_TAC[REAL_ARITH`x6>=x6`]
11362 REPLICATE_TAC (111-81) (POP_ASSUM MP_TAC)
11363 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11364 THEN MRESA_TAC th[`t:real`;`j:num`])
11365 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (j)`][ARITH_RULE`~(4=0)`;periodic]
11366 THEN POP_ASSUM (fun th-> MRESA1_TAC th`SUC i:num` THEN MRESA1_TAC th`l:num`)
11367 THEN REMOVE_ASSUM_TAC
11368 THEN REMOVE_ASSUM_TAC
11369 THEN POP_ASSUM MP_TAC
11370 THEN REAL_ARITH_TAC;
11372 (****scs_a SYM*****)
11374 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
11380 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
11382 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11383 THEN REPEAT RESA_TAC
11384 THEN POP_ASSUM MP_TAC
11385 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11386 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
11387 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
11388 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
11389 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
11390 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
11391 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
11393 THEN POP_ASSUM (fun th-> MRESA_TAC th[`j MOD k`;`l MOD k`])
11394 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s i'`][ARITH_RULE`~(4=0)`;periodic]
11395 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
11396 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
11397 THEN MP_TAC(SET_RULE`i' MOD k = l MOD k==> (w:num->real^3)(i' MOD k)=(w:num->real^3)(l MOD k)`)
11399 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
11403 REPLICATE_TAC (111-41) (POP_ASSUM MP_TAC)
11404 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11406 THEN MP_TAC(SET_RULE`SUC i' MOD k= l MOD k\/ ~(l MOD k = SUC i' MOD k)`)
11410 MRESAL_TAC Hdplygy.MOD_EQ_MOD[`i':num`;`i:num`;`1`;`k:num`][ARITH_RULE`1+i=SUC i`]
11414 REPLICATE_TAC (109-96) (POP_ASSUM MP_TAC)
11415 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11418 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
11419 THEN POP_ASSUM MP_TAC
11420 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (l MOD k)`][ARITH_RULE`~(4=0)`;periodic]
11421 THEN POP_ASSUM (fun th-> MRESA1_TAC th`l+k-1:num`
11422 THEN MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
11423 THEN POP_ASSUM (fun th-> REWRITE_TAC[SYM th])
11424 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (l+k-1)`][ARITH_RULE`~(4=0)`;periodic]
11425 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`] THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
11426 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
11427 THEN REMOVE_ASSUM_TAC;
11429 REPLICATE_TAC (112-66) (POP_ASSUM MP_TAC)
11430 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11432 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11433 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
11434 THEN MRESAL1_TAC th`l+k-1:num`[ARITH_RULE`4 MOD 4=0`])
11439 REPLICATE_TAC (115-82) (POP_ASSUM MP_TAC)
11440 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11441 THEN MP_TAC(REAL_ARITH`e1< e''/\ t< e1/\ &0<t==> --e''<t/\ t< e''`)
11443 THEN MRESA_TAC th[`t:real`])
11444 THEN MRESAL_TAC(GEN_ALL EYYPQDW_NORM_V3_V1)[`x2:real`;`a:real`;`x2:real`;`x6:real`;`x1:real`;`x2-t:real`;`v2:real^3`;`v3_defor_v1 a v1 v2 x1 x2 x6 x6 (x2 - t)`;`v1:real^3`;`x6:real`]
11445 [SET_RULE`a IN{a,b}`;v3_defor_v1]
11446 THEN POP_ASSUM MP_TAC
11447 THEN REWRITE_TAC[GSYM v3_defor_v1;dist;REAL_ARITH`a<=b<=> b>=a`;NORM_GE_SQUARE]
11448 THEN REWRITE_TAC[DOT_SQUARE_NORM;GSYM dist]
11449 THEN ONCE_REWRITE_TAC[DIST_SYM]
11450 THEN ASM_REWRITE_TAC[dist]
11452 THEN REWRITE_TAC[DOT_SQUARE_NORM;GSYM dist]
11453 THEN ONCE_REWRITE_TAC[DIST_SYM]
11454 THEN ASM_REWRITE_TAC[dist]
11455 THEN REWRITE_TAC[REAL_ARITH`x6>=x6`]
11458 REPLICATE_TAC (111-81) (POP_ASSUM MP_TAC)
11459 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11460 THEN MRESA_TAC th[`t:real`;`i':num`])
11461 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i')`][ARITH_RULE`~(4=0)`;periodic]
11462 THEN POP_ASSUM (fun th-> MRESA1_TAC th`SUC i:num` THEN MRESA1_TAC th`l:num`)
11463 THEN ONCE_REWRITE_TAC[DIST_SYM]
11464 THEN REMOVE_ASSUM_TAC
11465 THEN REMOVE_ASSUM_TAC
11466 THEN POP_ASSUM MP_TAC
11467 THEN REAL_ARITH_TAC;
11471 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11472 THEN REPEAT RESA_TAC
11479 ASM_REWRITE_TAC[v3_defor_v4]
11480 THEN MP_TAC(SET_RULE`(w:num->real^3) i' =w l \/ ~(w i' = w l)`)
11484 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
11489 REWRITE_TAC[DIST_REFL]
11491 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11492 THEN REPEAT RESA_TAC
11495 REPLICATE_TAC (99-44) (POP_ASSUM MP_TAC)
11496 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11497 THEN MRESAL_TAC th[`i':num`;`j:num`][DIST_REFL]);
11502 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
11504 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11505 THEN REPEAT RESA_TAC
11506 THEN POP_ASSUM MP_TAC
11507 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11508 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
11509 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
11510 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
11511 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
11512 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
11513 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
11515 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i' MOD k`;`l MOD k`])
11516 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
11517 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`])
11518 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
11519 THEN MP_TAC(SET_RULE`j MOD k = l MOD k==> (w:num->real^3)(j MOD k)=(w:num->real^3)(l MOD k)`)
11521 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'''==> t< e'''`)
11526 REPLICATE_TAC (111-86) (POP_ASSUM MP_TAC)
11527 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11528 THEN MRESAL_TAC th[`t:real`;`j:num`][DIST_REFL])
11529 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
11530 THEN POP_ASSUM (fun th-> MRESA_TAC th[`SUC i`] THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
11536 (***********scs_b SYM**********)
11539 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
11544 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
11546 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11547 THEN REPEAT RESA_TAC
11548 THEN POP_ASSUM MP_TAC
11549 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
11550 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i':num`[ARITH_RULE`4 MOD 4=0`]
11551 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
11552 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
11553 THEN MRESA_TAC DIVISION[`i':num`;`k:num`]
11554 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
11555 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
11557 THEN POP_ASSUM (fun th-> MRESA_TAC th[`j MOD k`;`l MOD k`])
11558 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s i'`][ARITH_RULE`~(4=0)`;periodic]
11559 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
11560 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
11561 THEN MP_TAC(SET_RULE`i' MOD k = l MOD k==> (w:num->real^3)(i' MOD k)=(w:num->real^3)(l MOD k)`)
11563 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'''==> t< e'''`)
11568 REPLICATE_TAC (111-86) (POP_ASSUM MP_TAC)
11569 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11570 THEN MRESAL_TAC th[`t:real`;`i':num`][DIST_REFL])
11571 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s i'`][ARITH_RULE`~(4=0)`;periodic]
11572 THEN POP_ASSUM (fun th-> MRESA_TAC th[`SUC i`] THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
11573 THEN ONCE_REWRITE_TAC[DIST_SYM]
11574 THEN ASM_REWRITE_TAC[]
11580 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11581 THEN REPEAT RESA_TAC
11585 (*************convex_local_fan**************)
11590 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''''/\ &0< t/\ &0< e''''==> t< e''''/\ --e''''< t`)
11592 THEN REPLICATE_TAC (78-67) (POP_ASSUM MP_TAC)
11593 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
11594 THEN MRESA_TAC th[`t:real`;])
11600 MP_TAC TAUSTAR_V3_DEFOR_TWO_CASES
11602 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`])
11603 THEN POP_ASSUM MP_TAC
11604 THEN ABBREV_TAC`e2= (min e1 e''''')/ &2`
11605 THEN MP_TAC(REAL_ARITH`e2= (min e1 e''''')/ &2 /\ &0< e1/\ &0< e'''''
11606 ==> &0< e2/\ e2< e1/\ e2< e'''''`)
11608 THEN REPLICATE_TAC (80-75)(POP_ASSUM MP_TAC)
11609 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11610 THEN MRESA_TAC th[`e2:real`])
11611 THEN POP_ASSUM MP_TAC
11612 THEN REMOVE_ASSUM_TAC
11613 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11614 THEN MRESA_TAC th[`e2:real`])
11615 THEN REPLICATE_TAC (81-25)(POP_ASSUM MP_TAC)
11616 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11617 THEN MRESA_TAC th[`(\i. v3_defor_v4 a x1 x2 x6 v1 v2 ((w:num->real^3) i) e2)`])
11618 THEN REPLICATE_TAC (2)(POP_ASSUM MP_TAC)
11619 THEN REAL_ARITH_TAC
11624 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
11625 THEN REPEAT RESA_TAC
11626 THEN REPLICATE_TAC (65-44)(POP_ASSUM MP_TAC)
11627 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
11628 THEN MRESA_TAC th[`l:num`;`SUC l`])
11629 THEN REMOVE_ASSUM_TAC
11630 THEN POP_ASSUM MP_TAC
11631 THEN REMOVE_ASSUM_TAC
11632 THEN POP_ASSUM MP_TAC
11633 THEN REAL_ARITH_TAC ;
11651 let check_completeness_claimA_concl =
11652 Ineq.mk_tplate `\x. scs_arrow_v13 (set_of_list x)