Update from HH
[Flyspeck/.git] / text_formalization / local / ODXLSTCv2.hl
1 (* ========================================================================== *)
2 (* FLYSPECK - BOOK FORMALIZATION                                              *)
3 (*                                                                            *)
4 (* Chapter: Local Fan                                              *)
5 (* Author: Hoang Le Truong                                        *)
6 (* Date: 2012-04-01                                                           *)
7 (* ========================================================================= *)
8
9
10 (*
11 remaining conclusions from appendix to Local Fan chapter
12 *)
13
14
15 module  Odxlstcv2 = struct
16
17
18
19 open Polyhedron;;
20 open Sphere;;
21 open Topology;;         
22 open Fan_misc;;
23 open Planarity;; 
24 open Conforming;;
25 open Hypermap;;
26 open Fan;;
27 open Topology;;
28 open Wrgcvdr_cizmrrh;;
29 open Local_lemmas;;
30 open Collect_geom;;
31 open Dih2k_hypermap;;
32 open Wjscpro;;
33 open Tecoxbm;;
34 open Hdplygy;;
35 open Nkezbfc_local;;
36 open Flyspeck_constants;;
37 open Gbycpxs;;
38 open Pcrttid;;
39 open Local_lemmas1;;
40 open Pack_defs;;
41
42 open Hales_tactic;;
43
44 open Appendix;;
45
46
47
48
49
50 open Hypermap;;
51 open Fan;;
52 open Wrgcvdr_cizmrrh;;
53 open Local_lemmas;;
54 open Flyspeck_constants;;
55 open Pack_defs;;
56
57 open Hales_tactic;;
58
59 open Appendix;;
60
61
62 open Zithlqn;;
63
64
65 open Xwitccn;;
66
67 open Ayqjtmd;;
68
69 open Jkqewgv;;
70
71
72 open Mtuwlun;;
73
74
75 open Uxckfpe;;
76 open Sgtrnaf;;
77
78 open Yxionxl;;
79 open Qknvmlb;;
80
81
82
83
84
85 let ww_defor=new_definition`ww_defor w v t = if v= w then (&1-t) % w else v`;;
86
87 let FUN_WW_DEFOR=prove(`ww_defor w v =(\t. if v= w then (&1-t) % w else v)`,
88 REWRITE_TAC[FUN_EQ_THM;ww_defor]);;
89
90
91 let WW_DEFOR_DEFORMATION=prove_by_refinement(`&0<e1==>deformation (ww_defor (w:real^3)) V (-- e1,e1)`,
92 [
93 REWRITE_TAC[deformation;real_interval;IN_ELIM_THM;REAL_ARITH`(-- &1 < &0 /\ &0 < &1)`]
94 THEN STRIP_TAC
95 THEN MP_TAC(REAL_ARITH`&0< e1==> -- e1< &0`)
96 THEN RESA_TAC
97 THEN STRIP_TAC;
98
99 REPEAT STRIP_TAC
100 THEN REWRITE_TAC[FUN_WW_DEFOR]
101 THEN MP_TAC(SET_RULE`v=w:real^3\/ ~(v=w)`)
102 THEN RESA_TAC;
103
104 REWRITE_TAC[continuous_atreal]
105 THEN REPEAT STRIP_TAC
106 THEN REWRITE_TAC[dist;VECTOR_ARITH`(&1 - x') % w - (&1 - r) % w = -- ((x' -r) %w)`;NORM_MUL;NORM_NEG]
107 THEN MRESA_TAC NORM_POS_LE[`w:real^3`]
108 THEN MP_TAC(REAL_ARITH`&0 <= norm (w:real^3)==>  norm w = &0\/ &0 < norm w`)
109 THEN RESA_TAC;
110
111 EXISTS_TAC`&1`
112 THEN ASM_REWRITE_TAC[REAL_ARITH`A * &0= &0/\ &0< &1`];
113
114 EXISTS_TAC`inv(norm (w:real^3)) * e/ &2`
115 THEN ASM_REWRITE_TAC[]
116 THEN MP_TAC(REAL_ARITH`&0<norm(w:real^3)==> ~(norm w= &0)`)
117 THEN RESA_TAC
118 THEN MRESA1_TAC NORM_EQ_0`w:real^3`
119 THEN MRESAL_TAC Planarity.IMP_NORM_FAN[`w:real^3`;`vec 0:real^3`][VECTOR_ARITH`A- vec 0=A`]
120 THEN MRESA_TAC REAL_LT_MUL[`inv(norm (w:real^3))`;`e:real`]
121 THEN MP_TAC(REAL_ARITH`&0< inv (norm (w:real^3)) * e==> &0< inv (norm w) * e/ &2`)
122 THEN RESA_TAC
123 THEN REPEAT STRIP_TAC
124 THEN MRESA_TAC REAL_LT_RMUL[`abs (x' - r)`;`inv (norm (w:real^3)) * e / &2`;`norm (w:real^3)`]
125 THEN POP_ASSUM MP_TAC
126 THEN ASM_REWRITE_TAC[REAL_ARITH`(A*B/ &2) *C= (A*C) * B/ &2`]
127 THEN ASM_TAC
128 THEN REAL_ARITH_TAC;
129
130 REWRITE_TAC[continuous_atreal;DIST_REFL]
131 THEN REPEAT STRIP_TAC
132 THEN EXISTS_TAC`&1`
133 THEN ASM_REWRITE_TAC[REAL_ARITH`&0< &1`];
134
135 REPEAT STRIP_TAC
136 THEN REWRITE_TAC[ww_defor;VECTOR_ARITH`(&1 - &0) % w= w`]
137 THEN MP_TAC(SET_RULE`v=w:real^3\/ ~(v=w)`)
138 THEN RESA_TAC]);;
139
140
141
142
143
144
145
146
147 let DEFORMATION_IN_BALL_ANNULUS=prove(
148 `  ~(&2 = norm (w:real^3)) /\ w IN ball_annulus
149 ==> ?e.  &0< e/\ !t. &0 < t /\ t < e ==> (&1- t) %w IN ball_annulus`,
150 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`]
151 THEN STRIP_TAC
152 THEN EXISTS_TAC`inv(norm w) * (norm (w:real^3) - &2)/ &2`
153 THEN MP_TAC(REAL_ARITH`&2<=norm(w:real^3)/\ ~(&2 = norm w)==> ~(norm w= &0)/\ norm w - &2< norm w/\ &0< norm w- &2`)
154 THEN RESA_TAC
155 THEN MRESA1_TAC NORM_EQ_0`w:real^3`
156 THEN MRESAL_TAC Planarity.IMP_NORM_FAN[`w:real^3`;`vec 0:real^3`][VECTOR_ARITH`A- vec 0=A`]
157 THEN MRESA_TAC REAL_LT_MUL[`inv(norm(w:real^3))`;`norm(w:real^3)- &2`]
158 THEN MP_TAC(REAL_ARITH`&0 < inv (norm w) * (norm w - &2)
159 ==> &0 < inv (norm w) * (norm (w:real^3) - &2)/ &2`)
160 THEN RESA_TAC
161 THEN REPEAT STRIP_TAC
162 THEN MRESA_TAC REAL_LT_LMUL[`inv(norm (w:real^3))`;`(norm (w:real^3) - &2)`;`norm(w:real^3)`]
163 THEN MP_TAC(REAL_ARITH`&0< t/\t < inv (norm (w:real^3)) * (norm w - &2) / &2
164 /\ inv (norm w) * (norm w - &2) < &1
165 ==> t< &1 /\ &0<= &1- t/\ &1 - t< &1/\ t < inv (norm (w:real^3)) * (norm w - &2)`)
166 THEN RESA_TAC
167 THEN MRESA1_TAC REAL_ABS_REFL`&1- t`
168 THENL[
169 MRESA_TAC REAL_LT_RMUL[`&1 -t`;`&1:real`;`norm(w:real^3)`]
170 THEN ASM_TAC
171 THEN REAL_ARITH_TAC;
172 REWRITE_TAC[REAL_ARITH`&2 <= (&1 - t) * norm w <=> t * norm w<= norm w - &2`]
173 THEN MRESA_TAC REAL_LT_RMUL[`t:real`;`inv(norm (w:real^3))*(norm (w:real^3) - &2)`;`norm(w:real^3)`]
174 THEN POP_ASSUM MP_TAC
175 THEN ASM_REWRITE_TAC[REAL_ARITH`(inv (norm w) * (norm w - &2)) * norm w= 
176 (inv (norm w) * (norm w)) * (norm w - &2)`]
177 THEN REAL_ARITH_TAC]);;
178
179
180
181 let DEFORMATION_DIST_LE_A=prove(`a< dist(w,v:real^3)
182 ==> ?e. &0< e /\ (!t. &0< t /\ t< e==> a< dist ((&1-t)% w,v) )`,
183 REWRITE_TAC[dist;VECTOR_ARITH`(&1 - t) % w - v =(w-v) - t %w`]
184 THEN MRESA_TAC NORM_POS_LE[`w:real^3`]
185 THEN MP_TAC(REAL_ARITH`&0 <= norm (w:real^3) ==> norm w = &0 \/ (&0 < norm w/\ ~(norm w= &0))`)
186 THEN RESA_TAC
187 THENL[MRESA1_TAC NORM_EQ_0`w:real^3`
188 THEN REWRITE_TAC[VECTOR_ARITH`vec 0- v= -- v/\ vec 0 - v - t % vec 0 = -- v`]
189 THEN STRIP_TAC
190 THEN EXISTS_TAC`&1`
191 THEN ASM_REWRITE_TAC[REAL_ARITH`&0< &1`];
192 STRIP_TAC
193 THEN EXISTS_TAC`inv(norm (w:real^3)) * (norm (w-v)- a)/ &2`
194 THEN MRESA1_TAC NORM_EQ_0`w:real^3`
195 THEN MRESAL_TAC Planarity.IMP_NORM_FAN[`w:real^3`;`vec 0:real^3`][VECTOR_ARITH`A- vec 0=A`]
196 THEN MP_TAC(REAL_ARITH`a < norm (w - v) ==> &0< norm (w - v:real^3) - a`)
197 THEN RESA_TAC
198 THEN MRESA_TAC REAL_LT_MUL[`inv(norm(w:real^3))`;`norm(w:real^3 -v)- a`]
199 THEN MP_TAC(REAL_ARITH`&0 < inv (norm w) * (norm (w-v) - a) 
200 ==> &0 < inv (norm w) * (norm (w:real^3-v) - a)/ &2`)
201 THEN RESA_TAC
202 THEN REPEAT STRIP_TAC
203 THEN MRESA_TAC REAL_LT_RMUL[`t:real`;`inv(norm (w:real^3))*(norm (w:real^3-v) - a)/ &2`;`norm(w:real^3)`]
204 THEN POP_ASSUM MP_TAC
205 THEN ASM_REWRITE_TAC[REAL_ARITH`(inv (norm w) * (norm (w-v) - a)/ &2) * norm w= 
206 (inv (norm w) * (norm w)) * (norm (w- v) - a)/ &2/\ &1 *A=A`]
207 THEN STRIP_TAC
208 THEN MP_TAC(REAL_ARITH`&0< t==> &0<= t`)
209 THEN RESA_TAC
210 THEN MP_TAC(REAL_ARITH`t * norm w < (norm (w - v) - a) / &2
211 /\ a< norm(w-v:real^3)
212 ==> a< norm (w-v)- t* norm w`)
213 THEN ASM_REWRITE_TAC[]
214 THEN MRESA1_TAC REAL_ABS_REFL`t:real`
215 THEN MRESA_TAC NORM_MUL[`t:real`;`w:real^3`]
216 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
217 THEN MRESAL_TAC NORM_TRIANGLE[`w- v - t % w:real^3`;`t % w:real^3`][VECTOR_ARITH`w - v - t % w + t % w= w-v`]
218 THEN POP_ASSUM MP_TAC
219 THEN REAL_ARITH_TAC]);;
220
221
222
223 let DEFORMATION_DIST_LE_ALL=prove(`is_scs_v39 s /\
224   MMs_v39 s w /\
225   scs_k_v39 s =k/\
226  3<k/\ 
227   (!i. ~(i MOD k = l MOD k) ==> scs_a_v39 s l i < dist(w l,w i)) 
228 ==>
229 (!i. ~(i MOD k = l MOD k) ==> ?e. &0< e/\
230 (!t. &0< t/\ t< e  ==> scs_a_v39 s l i < dist((&1-t) %(w l),w i)))`,
231 REPEAT STRIP_TAC
232 THEN POP_ASSUM MP_TAC
233 THEN POP_ASSUM(fun th-> STRIP_TAC
234 THEN MRESA_TAC th[`i:num`])
235 THEN MRESA_TAC(GEN_ALL DEFORMATION_DIST_LE_A)[`scs_a_v39 s l i`;`(w:num->real^3) l`;`(w:num->real^3) i`]);;
236
237
238
239
240 let DEFORMATION_DIST_LE_ALL_COM=prove_by_refinement(`is_scs_v39 s /\
241   MMs_v39 s w /\
242   scs_k_v39 s =k/\
243  3<k/\ 
244   (!i. ~(i MOD k = l MOD k) ==> scs_a_v39 s l i < dist(w l,w i)) 
245 ==>
246  ?e. &0< e/\
247 (!t i. &0< t/\ t< e  /\ ~(i MOD k = l MOD k) ==> scs_a_v39 s l i < dist((&1-t) %(w l),w i))`,
248 [REPEAT STRIP_TAC
249 THEN MP_TAC DEFORMATION_DIST_LE_ALL
250 THEN RESA_TAC
251 THEN POP_ASSUM MP_TAC
252 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
253 THEN REWRITE_TAC[SKOLEM_THM]
254 THEN STRIP_TAC
255 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k/\  ~(i= l MOD k)}`
256 THEN EXISTS_TAC`e1:real`
257 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
258
259 MATCH_MP_TAC FINITE_SUBSET
260 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
261 THEN STRIP_TAC;
262
263 MATCH_MP_TAC FINITE_IMAGE
264 THEN REWRITE_TAC[FINITE_NUMSEG];
265
266 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
267 THEN REPEAT RESA_TAC
268 THEN EXISTS_TAC`i:num`
269 THEN POP_ASSUM MP_TAC
270 THEN POP_ASSUM MP_TAC
271 THEN POP_ASSUM MP_TAC
272 THEN ARITH_TAC;
273
274 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
275
276
277 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
278 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(0=l MOD k )`)
279 THEN RESA_TAC;
280
281 EXISTS_TAC`(e:num->real)1`
282 THEN EXISTS_TAC`1`
283 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
284 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
285 THEN RESA_TAC;
286
287 EXISTS_TAC`(e:num->real)0`
288 THEN EXISTS_TAC`0`
289 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
290 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
291 THEN RESA_TAC;
292
293 STRIP_TAC;
294
295 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`&0`]
296 THEN REWRITE_TAC[IN_ELIM_THM]
297 THEN REPEAT RESA_TAC
298 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
299 THEN REPLICATE_TAC (13-5) (POP_ASSUM MP_TAC)
300 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
301 THEN MRESA_TAC th[`i:num`]);
302
303 REPEAT STRIP_TAC
304 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`t:real`]
305 THEN POP_ASSUM MP_TAC
306 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
307
308 REWRITE_TAC[IN_ELIM_THM]
309 THEN EXISTS_TAC`i MOD k`
310 THEN ASM_REWRITE_TAC[]
311 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
312 THEN RESA_TAC
313 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
314
315 STRIP_TAC
316 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
317 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
318 THEN RESA_TAC
319 THEN MRESA_TAC MOD_REFL[`i:num`;`k:num`]
320 THEN REPLICATE_TAC (15-5) (POP_ASSUM MP_TAC)
321 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
322 THEN MRESA_TAC th[`i:num MOD k`])
323 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
324 THEN ASM_TAC
325 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
326 THEN REPEAT RESA_TAC
327 THEN POP_ASSUM MP_TAC
328 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
329 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
330 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
331 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])]);;
332
333
334
335
336 let DEFORMATION_DIST_LE_B=prove(
337 ` dist(w,v:real^3) < a
338 ==> ?e. &0< e /\ (!t. &0< t /\ t< e==>  dist ((&1-t)% w,v) <a)`,
339 REWRITE_TAC[dist;VECTOR_ARITH`(&1 - t) % w - v =(w-v) - t %w`]
340 THEN MRESA_TAC NORM_POS_LE[`w:real^3`]
341 THEN MP_TAC(REAL_ARITH`&0 <= norm (w:real^3) ==> norm w = &0 \/ (&0 < norm w/\ ~(norm w= &0))`)
342 THEN RESA_TAC
343 THENL[
344 MRESA1_TAC NORM_EQ_0`w:real^3`
345 THEN REWRITE_TAC[VECTOR_ARITH`vec 0- v= -- v/\ vec 0 - v - t % vec 0 = -- v`]
346 THEN STRIP_TAC
347 THEN EXISTS_TAC`&1`
348 THEN ASM_REWRITE_TAC[REAL_ARITH`&0< &1`];
349 STRIP_TAC
350 THEN EXISTS_TAC`inv(norm (w:real^3)) * (a- norm (w-v))/ &2`
351 THEN MRESA1_TAC NORM_EQ_0`w:real^3`
352 THEN MRESAL_TAC Planarity.IMP_NORM_FAN[`w:real^3`;`vec 0:real^3`][VECTOR_ARITH`A- vec 0=A`]
353 THEN MP_TAC(REAL_ARITH`norm (w - v) < a ==> &0<a- norm (w - v:real^3)`)
354 THEN RESA_TAC
355 THEN MRESA_TAC REAL_LT_MUL[`inv(norm(w:real^3))`;`a- norm(w:real^3 -v)`]
356 THEN MP_TAC(REAL_ARITH`&0 < inv (norm w) * (a- norm (w-v)) 
357 ==> &0 < inv (norm w) * (a- norm (w:real^3-v) )/ &2`)
358 THEN RESA_TAC
359 THEN REPEAT STRIP_TAC
360 THEN MRESA_TAC REAL_LT_RMUL[`t:real`;`inv(norm (w:real^3))*(a-norm (w:real^3-v) )/ &2`;`norm(w:real^3)`]
361 THEN POP_ASSUM MP_TAC
362 THEN ASM_REWRITE_TAC[REAL_ARITH`(inv (norm w) * (a-norm (w-v))/ &2) * norm w= 
363 (inv (norm w) * (norm w)) * (a-norm (w- v))/ &2/\ &1 *A=A`]
364 THEN STRIP_TAC
365 THEN MP_TAC(REAL_ARITH`&0< t==> &0<= t`)
366 THEN RESA_TAC
367 THEN MP_TAC(REAL_ARITH`t * norm w < (a-norm (w - v)) / &2
368 /\  norm(w-v:real^3)<a
369 ==> norm (w-v)+ t* norm w<a`)
370 THEN ASM_REWRITE_TAC[]
371 THEN MRESA1_TAC REAL_ABS_REFL`t:real`
372 THEN MRESA_TAC NORM_MUL[`t:real`;`w:real^3`]
373 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
374 THEN MRESAL_TAC NORM_TRIANGLE[`w- v :real^3`;`-- (t % w):real^3`][VECTOR_ARITH`w - v + --(t%w)= w-v - t %w`;NORM_NEG]
375 THEN POP_ASSUM MP_TAC
376 THEN REAL_ARITH_TAC]);;
377
378
379
380
381
382
383 let DEFORMATION_DIST_LE_BLL=prove_by_refinement(`is_scs_v39 s /\
384   MMs_v39 s w /\
385   scs_k_v39 s =k/\
386  3<k/\ 
387   (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) 
388 ==>
389 (!i. scs_diag k l i ==> ?e. &0< e/\
390 (!t. &0< t/\ t< e  ==> dist((&1-t) %(w l),w i)<scs_b_v39 s l i ) )`,
391 [
392 REPEAT STRIP_TAC
393 THEN POP_ASSUM MP_TAC
394 THEN POP_ASSUM(fun th-> STRIP_TAC
395 THEN MRESA_TAC th[`i:num`])
396 THEN SUBGOAL_THEN`dist((w:num->real^3) l,w i)< scs_b_v39 s l i`ASSUME_TAC;
397
398 MRESAL_TAC DIST_TRIANGLE[`(w:num->real^3) l`;`vec 0:real^3`;`(w:num->real^3) i`][]
399 THEN ASM_TAC
400 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;IMAGE;IN_ELIM_THM;SUBSET;ball_annulus;DIFF;cball]
401 THEN REPEAT RESA_TAC
402 THEN POP_ASSUM MP_TAC
403 THEN POP_ASSUM MP_TAC
404 THEN SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) l = w x) `ASSUME_TAC;
405
406 EXISTS_TAC `l:num`
407 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
408
409
410 SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) i = w x) `ASSUME_TAC;
411
412 EXISTS_TAC `i:num`
413 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
414
415 REPLICATE_TAC (36-20) (POP_ASSUM MP_TAC)
416 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
417 THEN REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
418 THEN MRESA_TAC th[`(w:num->real^3) i`]
419 THEN MRESA_TAC th[`(w:num->real^3) l`])
420 THEN REMOVE_ASSUM_TAC
421 THEN POP_ASSUM MP_TAC
422 THEN REMOVE_ASSUM_TAC
423 THEN POP_ASSUM MP_TAC
424 THEN REWRITE_TAC[dist;VECTOR_ARITH`a- vec 0= a/\ vec 0 - a= --a`;NORM_NEG]
425 THEN REAL_ARITH_TAC;
426
427
428 EXISTS_TAC `l:num`
429 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
430
431 SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) i = w x) `ASSUME_TAC;
432
433 EXISTS_TAC `i:num`
434 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
435
436 REPLICATE_TAC (36-20) (POP_ASSUM MP_TAC)
437 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
438 THEN REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
439 THEN MRESA_TAC th[`(w:num->real^3) i`]
440 THEN MRESA_TAC th[`(w:num->real^3) l`])
441 THEN REMOVE_ASSUM_TAC
442 THEN POP_ASSUM MP_TAC
443 THEN REMOVE_ASSUM_TAC
444 THEN POP_ASSUM MP_TAC
445 THEN REWRITE_TAC[dist;VECTOR_ARITH`a- vec 0= a/\ vec 0 - a= --a`;NORM_NEG]
446 THEN REAL_ARITH_TAC;
447
448 MRESA_TAC(GEN_ALL DEFORMATION_DIST_LE_B)[`(w:num->real^3) l`;`(w:num->real^3) i`;`scs_b_v39 s l i`;]]);;
449
450
451
452
453
454
455
456
457 let DEFORMATION_DIST_LE_BLL_EDGE=prove_by_refinement(`is_scs_v39 s /\
458   MMs_v39 s w /\
459   scs_k_v39 s =k/\
460  3<k
461 ==>(!i. l MOD k= SUC i MOD k 
462 ==>
463 ?e. &0< e/\
464 (!t. &0< t/\ t< e  ==> dist((&1-t) %(w l),w i)<scs_b_v39 s l i )) `,
465 [
466 REPEAT STRIP_TAC
467 THEN REWRITE_TAC[dist;VECTOR_ARITH`(&1 - t) % w - w1  = --(t % w-(w-w1))`;NORM_NEG]
468 THEN SUBGOAL_THEN`((w:num->real^3) l- w i) dot -- (w:num->real^3) l< &0` ASSUME_TAC;
469
470 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]
471 THEN ASM_TAC
472 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]
473 THEN REPEAT RESA_TAC
474 THEN SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) l = w x) `ASSUME_TAC;
475
476 EXISTS_TAC `l:num`
477 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
478
479 SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) i = w x) `ASSUME_TAC;
480
481 EXISTS_TAC `i:num`
482 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
483
484 REPLICATE_TAC (37-20) (POP_ASSUM MP_TAC)
485 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
486 THEN MRESA_TAC th[`(w:num->real^3) i`]
487 THEN MRESA_TAC th[`(w:num->real^3) l`])
488 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
489 THEN REWRITE_TAC[dist;VECTOR_ARITH`vec 0- A= --A`;NORM_NEG]
490 THEN REPEAT STRIP_TAC
491 THEN REPLICATE_TAC (40-21) (POP_ASSUM MP_TAC)
492 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
493 THEN MRESAL_TAC th[`l:num`;`i:num`][dist])
494 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1< k`)
495 THEN RESA_TAC
496 THEN MRESA_TAC DIVISION[`SUC i`;`k:num`]
497 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
498 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
499 THEN RESA_TAC
500 THEN POP_ASSUM(fun th-> MRESA1_TAC th`i:num`)
501 THEN REPLICATE_TAC (48-14) (POP_ASSUM MP_TAC)
502 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
503 THEN MRESAL_TAC th[`l:num MOD k`;`i MOD k:num`][dist])
504 THEN POP_ASSUM MP_TAC
505 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
506 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
507 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
508 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
509 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
510 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
511 THEN STRIP_TAC
512 THEN MP_TAC(REAL_ARITH`&2 <= scs_a_v39 s i l
513 /\ scs_a_v39 s i l <= norm (w l - (w:num->real^3)i)/\ ~(norm (w l) < &2)
514 ==> &2<= norm (w l - (w:num->real^3)i) /\ &2<= norm (w l)`)
515 THEN RESA_TAC
516 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm ((w:num->real^3) l)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
517 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (w l - (w:num->real^3)i)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
518 THEN ASM_TAC
519 THEN REWRITE_TAC[h0]
520 THEN REPEAT RESA_TAC
521 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]
522 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
523 THEN REAL_ARITH_TAC;
524
525 EXISTS_TAC `l:num`
526 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
527
528 SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) i = w x) `ASSUME_TAC;
529
530 EXISTS_TAC `i:num`
531 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
532
533 REPLICATE_TAC (37-20) (POP_ASSUM MP_TAC)
534 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
535 THEN MRESA_TAC th[`(w:num->real^3) i`]
536 THEN MRESA_TAC th[`(w:num->real^3) l`])
537 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
538 THEN REWRITE_TAC[dist;VECTOR_ARITH`vec 0- A= --A`;NORM_NEG]
539 THEN REPEAT STRIP_TAC
540 THEN REPLICATE_TAC (40-21) (POP_ASSUM MP_TAC)
541 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
542 THEN MRESAL_TAC th[`l:num`;`i:num`][dist])
543 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1< k`)
544 THEN RESA_TAC
545 THEN MRESA_TAC DIVISION[`SUC i`;`k:num`]
546 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
547 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
548 THEN RESA_TAC
549 THEN POP_ASSUM(fun th-> MRESA1_TAC th`i:num`)
550 THEN REPLICATE_TAC (48-14) (POP_ASSUM MP_TAC)
551 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
552 THEN MRESAL_TAC th[`l:num MOD k`;`i MOD k:num`][dist])
553 THEN POP_ASSUM MP_TAC
554 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
555 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
556 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
557 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
558 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
559 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
560 THEN STRIP_TAC
561 THEN MP_TAC(REAL_ARITH`&2 <= scs_a_v39 s i l
562 /\ scs_a_v39 s i l <= norm (w l - (w:num->real^3)i)/\ ~(norm (w l) < &2)
563 ==> &2<= norm (w l - (w:num->real^3)i) /\ &2<= norm (w l)`)
564 THEN RESA_TAC
565 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm ((w:num->real^3) l)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
566 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (w l - (w:num->real^3)i)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
567 THEN ASM_TAC
568 THEN REWRITE_TAC[h0]
569 THEN REPEAT RESA_TAC
570 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]
571 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
572 THEN REAL_ARITH_TAC;
573
574
575 POP_ASSUM MP_TAC
576 THEN REWRITE_TAC[DOT_RNEG;REAL_ARITH`-- a< &0 <=> a> &0`]
577 THEN STRIP_TAC
578 THEN MRESA_TAC CLOSER_POINTS_LEMMA[`(w:num->real^3) l- w i`;`(w:num->real^3) l`]
579 THEN EXISTS_TAC `u:real`
580 THEN ASM_REWRITE_TAC[]
581 THEN GEN_TAC
582 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
583 THEN MP_TAC(REAL_ARITH`t< u==> t<= u`)
584 THEN RESA_TAC
585 THEN MRESA_TAC th[`t:real`])
586 THEN ASM_TAC
587 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]
588 THEN REPEAT RESA_TAC
589 THEN REPLICATE_TAC (40-22) (POP_ASSUM MP_TAC)
590 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
591 THEN MRESAL_TAC th[`l:num`;`i:num`][dist])
592 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
593 THEN REAL_ARITH_TAC]);;
594
595
596
597
598
599
600
601 let DEFORMATION_DIST_LE_BLL_EDGE2=prove_by_refinement(
602 `is_scs_v39 s /\
603   MMs_v39 s w /\
604   scs_k_v39 s =k/\
605  3<k
606 ==>(!i.  i MOD k= SUC l MOD k 
607 ==>
608 ?e. &0< e/\
609 (!t. &0< t/\ t< e  ==> dist((&1-t) %(w l),w i)<scs_b_v39 s l i ) )`,
610 [
611 REPEAT STRIP_TAC
612 THEN REWRITE_TAC[dist;VECTOR_ARITH`(&1 - t) % w - w1  = --(t % w-(w-w1))`;NORM_NEG]
613 THEN SUBGOAL_THEN`((w:num->real^3) l- w i) dot -- (w:num->real^3) l< &0` ASSUME_TAC;
614
615 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]
616 THEN ASM_TAC
617 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]
618 THEN REPEAT RESA_TAC
619 THEN SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) l = w x) `ASSUME_TAC;
620
621 EXISTS_TAC `l:num`
622 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
623
624 SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) i = w x) `ASSUME_TAC;
625
626 EXISTS_TAC `i:num`
627 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
628
629 REPLICATE_TAC (37-20) (POP_ASSUM MP_TAC)
630 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
631 THEN MRESA_TAC th[`(w:num->real^3) i`]
632 THEN MRESA_TAC th[`(w:num->real^3) l`])
633 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
634 THEN REWRITE_TAC[dist;VECTOR_ARITH`vec 0- A= --A`;NORM_NEG]
635 THEN REPEAT STRIP_TAC
636 THEN REPLICATE_TAC (40-21) (POP_ASSUM MP_TAC)
637 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
638 THEN MRESAL_TAC th[`l:num`;`i:num`][dist])
639 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1< k`)
640 THEN RESA_TAC
641 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
642 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
643 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
644 THEN RESA_TAC
645 THEN POP_ASSUM(fun th-> MRESA1_TAC th`l:num`)
646 THEN REPLICATE_TAC (48-14) (POP_ASSUM MP_TAC)
647 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
648 THEN MRESAL_TAC th[`l:num MOD k`;`i MOD k:num`][dist])
649 THEN POP_ASSUM MP_TAC
650 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
651 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
652 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
653 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
654 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
655 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
656 THEN STRIP_TAC
657 THEN MP_TAC(REAL_ARITH`&2 <= scs_a_v39 s i l
658 /\ scs_a_v39 s i l <= norm (w l - (w:num->real^3)i)/\ ~(norm (w l) < &2)
659 ==> &2<= norm (w l - (w:num->real^3)i) /\ &2<= norm (w l)`)
660 THEN RESA_TAC
661 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm ((w:num->real^3) l)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
662 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (w l - (w:num->real^3)i)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
663 THEN ASM_TAC
664 THEN REWRITE_TAC[h0]
665 THEN REPEAT RESA_TAC
666 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]
667 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
668 THEN REAL_ARITH_TAC;
669
670
671 EXISTS_TAC `l:num`
672 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
673
674 SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) i = w x) `ASSUME_TAC;
675
676 EXISTS_TAC `i:num`
677 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
678
679 REPLICATE_TAC (37-20) (POP_ASSUM MP_TAC)
680 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
681 THEN MRESA_TAC th[`(w:num->real^3) i`]
682 THEN MRESA_TAC th[`(w:num->real^3) l`])
683 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
684 THEN REWRITE_TAC[dist;VECTOR_ARITH`vec 0- A= --A`;NORM_NEG]
685 THEN REPEAT STRIP_TAC
686 THEN REPLICATE_TAC (40-21) (POP_ASSUM MP_TAC)
687 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
688 THEN MRESAL_TAC th[`l:num`;`i:num`][dist])
689 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ 1< k`)
690 THEN RESA_TAC
691 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
692 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
693 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
694 THEN RESA_TAC
695 THEN POP_ASSUM(fun th-> MRESA1_TAC th`l:num`)
696 THEN REPLICATE_TAC (48-14) (POP_ASSUM MP_TAC)
697 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
698 THEN MRESAL_TAC th[`l:num MOD k`;`i MOD k:num`][dist])
699 THEN POP_ASSUM MP_TAC
700 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
701 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
702 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
703 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
704 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
705 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
706 THEN STRIP_TAC
707 THEN MP_TAC(REAL_ARITH`&2 <= scs_a_v39 s i l
708 /\ scs_a_v39 s i l <= norm (w l - (w:num->real^3)i)/\ ~(norm (w l) < &2)
709 ==> &2<= norm (w l - (w:num->real^3)i) /\ &2<= norm (w l)`)
710 THEN RESA_TAC
711 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm ((w:num->real^3) l)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
712 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (w l - (w:num->real^3)i)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
713 THEN ASM_TAC
714 THEN REWRITE_TAC[h0]
715 THEN REPEAT RESA_TAC
716 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]
717 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
718 THEN REAL_ARITH_TAC;
719
720 POP_ASSUM MP_TAC
721 THEN REWRITE_TAC[DOT_RNEG;REAL_ARITH`-- a< &0 <=> a> &0`]
722 THEN STRIP_TAC
723 THEN MRESA_TAC CLOSER_POINTS_LEMMA[`(w:num->real^3) l- w i`;`(w:num->real^3) l`]
724 THEN EXISTS_TAC `u:real`
725 THEN ASM_REWRITE_TAC[]
726 THEN GEN_TAC
727 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
728 THEN MP_TAC(REAL_ARITH`t< u==> t<= u`)
729 THEN RESA_TAC
730 THEN MRESA_TAC th[`t:real`])
731 THEN ASM_TAC
732 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]
733 THEN REPEAT RESA_TAC
734 THEN REPLICATE_TAC (40-22) (POP_ASSUM MP_TAC)
735 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
736 THEN MRESAL_TAC th[`l:num`;`i:num`][dist])
737 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
738 THEN REAL_ARITH_TAC]);;
739
740
741
742 let DEFORMATION_DIST_LE_BLL_PRIME=prove_by_refinement(`is_scs_v39 s /\
743   MMs_v39 s w /\
744   scs_k_v39 s =k/\
745  3<k/\ 
746   (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) 
747 ==>
748 (!i. ~(i MOD k = l MOD k) ==> ?e. &0< e/\
749 (!t. &0< t/\ t< e  ==> dist((&1-t) %(w l),w i)<scs_b_v39 s l i ) )`,
750 [
751 REPEAT STRIP_TAC
752 THEN MP_TAC(SET_RULE`l MOD k = SUC i MOD k \/ ~(SUC i MOD k= l MOD k)`)
753 THEN RESA_TAC;
754
755 MP_TAC DEFORMATION_DIST_LE_BLL_EDGE
756 THEN RESA_TAC
757 THEN POP_ASSUM MATCH_MP_TAC
758 THEN ASM_REWRITE_TAC[];
759
760 MP_TAC(SET_RULE`i MOD k= SUC l MOD k  \/ ~(i MOD k= SUC l MOD k )`)
761 THEN RESA_TAC;
762
763 MP_TAC DEFORMATION_DIST_LE_BLL_EDGE2
764 THEN RESA_TAC
765 THEN POP_ASSUM MATCH_MP_TAC
766 THEN ASM_REWRITE_TAC[];
767
768 MP_TAC DEFORMATION_DIST_LE_BLL
769 THEN RESA_TAC
770 THEN POP_ASSUM MATCH_MP_TAC
771 THEN ASM_REWRITE_TAC[scs_diag]]);;
772
773
774
775 let DEFORMATION_DIST_LE_BLL_COM=prove_by_refinement(`is_scs_v39 s /\
776   MMs_v39 s w /\
777   scs_k_v39 s =k/\
778  3<k/\ 
779   (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) 
780 ==>
781  ?e. &0< e/\
782 (!t i. &0< t/\ t< e  /\ ~(i MOD k = l MOD k) ==> dist((&1-t) %(w l),w i)< scs_b_v39 s l i) `,
783 [REPEAT STRIP_TAC
784 THEN MP_TAC DEFORMATION_DIST_LE_BLL_PRIME
785 THEN RESA_TAC
786 THEN POP_ASSUM MP_TAC
787 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
788 THEN REWRITE_TAC[SKOLEM_THM]
789 THEN STRIP_TAC
790 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k/\  ~(i= l MOD k)}`
791 THEN EXISTS_TAC`e1:real`
792 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
793
794
795 MATCH_MP_TAC FINITE_SUBSET
796 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
797 THEN STRIP_TAC;
798
799 MATCH_MP_TAC FINITE_IMAGE
800 THEN REWRITE_TAC[FINITE_NUMSEG];
801
802 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
803 THEN REPEAT RESA_TAC
804 THEN EXISTS_TAC`i:num`
805 THEN POP_ASSUM MP_TAC
806 THEN POP_ASSUM MP_TAC
807 THEN POP_ASSUM MP_TAC
808 THEN ARITH_TAC;
809
810 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
811
812 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
813 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(0=l MOD k )`)
814 THEN RESA_TAC;
815
816
817 EXISTS_TAC`(e:num->real)1`
818 THEN EXISTS_TAC`1`
819 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
820 THEN MP_TAC(ARITH_RULE`3<k==> 1<k `)
821 THEN RESA_TAC;
822
823
824 EXISTS_TAC`(e:num->real)0`
825 THEN EXISTS_TAC`0`
826 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
827 THEN MP_TAC(ARITH_RULE`3<k==> 0<k `)
828 THEN RESA_TAC;
829
830
831 STRIP_TAC;
832
833 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`&0`]
834 THEN REWRITE_TAC[IN_ELIM_THM]
835 THEN REPEAT RESA_TAC
836 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
837 THEN REPLICATE_TAC (13-5) (POP_ASSUM MP_TAC)
838 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
839 THEN MRESA_TAC th[`i:num`]);
840
841 REPEAT STRIP_TAC
842 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`t:real`]
843 THEN POP_ASSUM MP_TAC
844 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
845
846 REWRITE_TAC[IN_ELIM_THM]
847 THEN EXISTS_TAC`i MOD k`
848 THEN ASM_REWRITE_TAC[]
849 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
850 THEN RESA_TAC
851 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
852
853 STRIP_TAC
854 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
855 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)`)
856 THEN RESA_TAC
857 THEN MRESA_TAC MOD_REFL[`i:num`;`k:num`]
858 THEN REPLICATE_TAC (15-5) (POP_ASSUM MP_TAC)
859 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
860 THEN MRESA_TAC th[`i:num MOD k`])
861 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
862 THEN ASM_TAC
863 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
864 THEN REPEAT RESA_TAC
865 THEN POP_ASSUM MP_TAC
866 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
867 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
868 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
869 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])]);;
870
871
872
873 let IMAGE_WW_DEFOR=prove_by_refinement(`!w:num->real^3.
874  IMAGE (\i. ww_defor (w l) (w i) t) (:num)= ((IMAGE w (:num)) DIFF {w l}) UNION {ww_defor (w l) (w l) t}`,
875 [
876 REPEAT STRIP_TAC
877 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;DIFF;UNION;EXTENSION;IN_SING]
878 THEN GEN_TAC
879 THEN EQ_TAC;
880
881 RESA_TAC
882 THEN REWRITE_TAC[ww_defor]
883 THEN MP_TAC(SET_RULE`(w:num->real^3) l= w x' \/ ~((w:num->real^3) l= w x' )`)
884 THEN RESA_TAC;
885
886 MATCH_MP_TAC(SET_RULE`A==> A\/B`)
887 THEN EXISTS_TAC`x':num`
888 THEN ASM_REWRITE_TAC[SET_RULE`(x:num) IN (:num)`];
889
890 REPEAT RESA_TAC
891 THEN REWRITE_TAC[ww_defor];
892
893 EXISTS_TAC`x':num`
894 THEN ASM_REWRITE_TAC[SET_RULE`(x:num) IN (:num)`]
895 THEN POP_ASSUM MP_TAC
896 THEN RESA_TAC;
897
898 EXISTS_TAC`l:num`
899 THEN ASM_REWRITE_TAC[SET_RULE`(x:num) IN (:num)`]]);;
900
901
902
903
904 let WW_DEFOR_FF1=prove_by_refinement(`(!x. x IN FF==> ~(FST x= SND x)/\ ~((&1 - t) % v = FST x)/\ ~((&1 - t) % v = SND x))
905 ==>(!w.
906 ww_defor (v:real^3) v t,(w:real^3) IN
907       IMAGE (\uv. ww_defor v (FST uv) t,ww_defor v (SND uv) t) FF
908 <=> v,w IN FF)`,
909 [REPEAT STRIP_TAC
910 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;ww_defor]
911 THEN EQ_TAC;
912
913 RESA_TAC
914 THEN POP_ASSUM MP_TAC
915 THEN REWRITE_TAC[PAIR_EQ]
916 THEN MP_TAC(SET_RULE`v=FST (x:real^3#real^3)\/ ~(FST x = v:real^3)`)
917 THEN RESA_TAC
918 THEN REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
919 THEN POP_ASSUM(fun th-> STRIP_TAC THEN STRIP_TAC
920 THEN MRESA_TAC th[`x:real^3#real^3`])
921 THEN RESA_TAC;
922
923 RESA_TAC
924 THEN EXISTS_TAC`v:real^3,w:real^3`
925 THEN ASM_REWRITE_TAC[]
926 THEN POP_ASSUM MP_TAC
927 THEN POP_ASSUM(fun th-> STRIP_TAC
928 THEN MRESA1_TAC th`v:real^3,w:real^3`)]);;
929
930
931
932
933 let WW_DEFOR_rho_node1=prove(`(!x. x IN FF==> ~(FST x= SND x)/\ ~((&1 - t) % v = FST x) /\ ~((&1 - t) % v = SND x))
934 ==>(rho_node1 (IMAGE (\uv. ww_defor v (FST uv) t,ww_defor v (SND uv) t) FF) (ww_defor (v:real^3) v t)= rho_node1 FF v)`,
935 STRIP_TAC
936 THEN REWRITE_TAC[rho_node1]
937 THEN MP_TAC WW_DEFOR_FF1
938 THEN RESA_TAC);;
939
940
941
942
943 let WW_DEFOR_FF2=prove_by_refinement(
944 `(!x. x IN FF==> ~(FST x= SND x)/\ ~((&1 - t) % v = FST x)/\ ~((&1 - t) % v = SND x))
945 ==>(!w.
946 (w:real^3),ww_defor (v:real^3) v t IN
947       IMAGE (\uv. ww_defor v (FST uv) t,ww_defor v (SND uv) t) FF
948 <=> w,v IN FF)`,
949 [REPEAT STRIP_TAC
950 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;ww_defor]
951 THEN EQ_TAC;
952
953 RESA_TAC
954 THEN POP_ASSUM MP_TAC
955 THEN REWRITE_TAC[PAIR_EQ]
956 THEN MP_TAC(SET_RULE`v=SND (x:real^3#real^3)\/ ~(SND x = v:real^3)`)
957 THEN RESA_TAC
958 THEN REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
959 THEN POP_ASSUM(fun th-> STRIP_TAC THEN STRIP_TAC
960 THEN MRESA_TAC th[`x:real^3#real^3`])
961 THEN RESA_TAC;
962
963 RESA_TAC
964 THEN EXISTS_TAC`w:real^3,v:real^3`
965 THEN ASM_REWRITE_TAC[]
966 THEN POP_ASSUM MP_TAC
967 THEN POP_ASSUM(fun th-> STRIP_TAC
968 THEN MRESA1_TAC th`w:real^3,v:real^3`)]);;
969
970
971
972
973 let WW_DEFOR_APHA=prove(`(!x. x IN FF==> ~(FST x= SND x)/\ ~((&1 - t) % v = FST x)/\ ~((&1 - t) % v = SND x))
974 ==>(@w.
975 (w:real^3),ww_defor (v:real^3) v t IN
976       IMAGE (\uv. ww_defor v (FST uv) t,ww_defor v (SND uv) t) FF)
977 = (@w. w,v IN FF)`,
978 STRIP_TAC
979 THEN MP_TAC WW_DEFOR_FF2
980 THEN RESA_TAC);;
981
982
983
984
985 let WW_DEFOR_AZIM=prove(`(!x. x IN FF==> ~(FST x= SND x)/\ ~((&1 - t) % v = FST x)/\ ~((&1 - t) % v = SND x))/\ t< &1
986 ==>
987 azim (vec 0) (ww_defor v v t)
988  (rho_node1 (IMAGE (\uv. ww_defor v (FST uv) t,ww_defor v (SND uv) t) FF)
989  (ww_defor v v t))
990  (@a. a,ww_defor v v t IN
991       IMAGE (\uv. ww_defor v (FST uv) t,ww_defor v (SND uv) t) FF)
992 =azim (vec 0) v (rho_node1 FF v) (@a. a,v IN FF)`,
993 REPEAT STRIP_TAC
994 THEN MP_TAC(REAL_ARITH`t< &1==> &0< &1-t`)
995 THEN RESA_TAC
996 THEN MP_TAC WW_DEFOR_APHA
997 THEN RESA_TAC
998 THEN MP_TAC WW_DEFOR_rho_node1
999 THEN RESA_TAC
1000 THEN REWRITE_TAC[ww_defor]
1001 THEN ASM_SIMP_TAC[AZIM_SPECIAL_SCALE]);;
1002
1003
1004 let GENERIC_HYPOTHESIS_WW_DEFOR=prove_by_refinement(` local_fan(V,E,FF)/\ ~(t= &0)/\ v IN V /\ generic V E
1005 ==>
1006 (!x. x IN FF==> ~(FST x= SND x)/\ ~((&1 - t) % v = FST x)/\ ~((&1 - t) % v = SND x))`,
1007 [REPEAT STRIP_TAC;
1008
1009 MP_TAC Local_lemmas.LOCAL_FAN_IN_FF_DISTINCT
1010 THEN RESA_TAC;
1011
1012 POP_ASSUM MP_TAC
1013 THEN MP_TAC Local_lemmas.LOFA_IMP_V_DIFF
1014 THEN RESA_TAC
1015 THEN POP_ASSUM(fun th-> MRESA_TAC th[`v:real^3`])
1016 THEN MP_TAC(SET_RULE`FST x = v\/ ~(FST (x:real^3#real^3)=v)`)
1017 THEN RESA_TAC;
1018
1019 REWRITE_TAC[VECTOR_ARITH`(&1 - t) % v = v<=> t %v= vec 0`;VECTOR_MUL_EQ_0]
1020 THEN ASM_REWRITE_TAC[];
1021
1022
1023 MP_TAC Local_lemmas.LOCAL_FAN_IMP_IN_V2
1024 THEN RESA_TAC
1025 THEN MRESA_TAC Nkezbfc_local.PROPERTIES_GENERIC_LOCAL_FAN[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v:real^3`]
1026 THEN POP_ASSUM (fun th-> MRESA_TAC th[`FST (x:real^3#real^3)`])
1027 THEN MRESAL_TAC th3[`vec 0:real^3`;`v:real^3`;`FST (x:real^3#real^3)`][Trigonometry2.AFF2;IN_ELIM_THM;VECTOR_ARITH`A % vec 0+B= B`]
1028 THEN POP_ASSUM (fun th->
1029 STRIP_TAC
1030 THEN MP_TAC th)
1031 THEN ASM_REWRITE_TAC[]
1032 THEN EXISTS_TAC`t:real`
1033 THEN ASM_REWRITE_TAC[];
1034
1035 POP_ASSUM MP_TAC
1036 THEN MP_TAC Local_lemmas.LOFA_IMP_V_DIFF
1037 THEN RESA_TAC
1038 THEN POP_ASSUM(fun th-> MRESA_TAC th[`v:real^3`])
1039 THEN MP_TAC(SET_RULE`SND x = v\/ ~(SND (x:real^3#real^3)=v)`)
1040 THEN RESA_TAC;
1041
1042 REWRITE_TAC[VECTOR_ARITH`(&1 - t) % v = v<=> t %v= vec 0`;VECTOR_MUL_EQ_0]
1043 THEN ASM_REWRITE_TAC[];
1044
1045 MP_TAC Local_lemmas.LOCAL_FAN_IMP_IN_V2
1046 THEN RESA_TAC
1047 THEN MRESA_TAC Nkezbfc_local.PROPERTIES_GENERIC_LOCAL_FAN[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v:real^3`]
1048 THEN POP_ASSUM (fun th-> MRESA_TAC th[`SND (x:real^3#real^3)`])
1049 THEN MRESAL_TAC th3[`vec 0:real^3`;`v:real^3`;`SND (x:real^3#real^3)`][Trigonometry2.AFF2;IN_ELIM_THM;VECTOR_ARITH`A % vec 0+B= B`]
1050 THEN POP_ASSUM (fun th->
1051 STRIP_TAC
1052 THEN MP_TAC th)
1053 THEN ASM_REWRITE_TAC[]
1054 THEN EXISTS_TAC`t:real`
1055 THEN ASM_REWRITE_TAC[]]);;
1056
1057
1058
1059
1060
1061
1062
1063 let WW_DEFOR_0_ID=prove(`ww_defor v w (&0)= w:real^3`,
1064 REWRITE_TAC[ww_defor;VECTOR_ARITH`(&1- &0) %v= v`]
1065 THEN MP_TAC(SET_RULE`~(v=w:real^3)\/ v=w`)
1066 THEN RESA_TAC);;
1067
1068 let AZIM_0_WW_DEFOR=prove(`t= &0
1069 ==>
1070 azim (vec 0) (ww_defor v v t)
1071  (rho_node1 (IMAGE (\uv. ww_defor v (FST uv) t,ww_defor v (SND uv) t) FF)
1072  (ww_defor v v t))
1073  (@a. a,ww_defor v v t IN
1074       IMAGE (\uv. ww_defor v (FST uv) t,ww_defor v (SND uv) t) FF)
1075 =azim (vec 0) v (rho_node1 FF v) (@a. a,v IN FF)`,
1076 RESA_TAC
1077 THEN REWRITE_TAC[WW_DEFOR_0_ID;IMAGE_ID]);;
1078
1079
1080
1081
1082 let GENEIRC_WW_DEFOR_AZIM=prove(`local_fan(V,E,FF)/\  v IN V /\ generic V E /\ t< &1
1083 ==>
1084 azim (vec 0) (ww_defor v v t)
1085  (rho_node1 (IMAGE (\uv. ww_defor v (FST uv) t,ww_defor v (SND uv) t) FF)
1086  (ww_defor v v t))
1087  (@a. a,ww_defor v v t IN
1088       IMAGE (\uv. ww_defor v (FST uv) t,ww_defor v (SND uv) t) FF)
1089 =azim (vec 0) v (rho_node1 FF v) (@a. a,v IN FF)`,
1090 STRIP_TAC
1091 THEN MP_TAC(SET_RULE`t= &0\/ ~(t= &0)`)
1092 THEN RESA_TAC
1093 THENL[
1094 ASM_REWRITE_TAC[WW_DEFOR_0_ID;IMAGE_ID];
1095
1096 MP_TAC GENERIC_HYPOTHESIS_WW_DEFOR
1097 THEN RESA_TAC
1098 THEN MP_TAC WW_DEFOR_AZIM
1099 THEN RESA_TAC
1100 ]);;
1101
1102
1103
1104
1105 let WW_DEFOR_FF3=prove_by_refinement(
1106 `(!x. x IN FF==> ~(FST x= SND x)/\ ~((&1 - t) % w1 = FST x)/\ ~((&1 - t) % w1 = SND x)) /\ w1,v IN FF /\ ~(v,w1 IN FF)/\ ~(t= &0)
1107 ==>(!w.
1108 ww_defor (w1:real^3) v t,(w:real^3) IN
1109       IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF
1110 <=> v,w IN FF)`,
1111
1112 [
1113
1114 REPEAT STRIP_TAC
1115 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;ww_defor]
1116 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
1117 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1118 THEN MRESA1_TAC th`w1:real^3,v:real^3`
1119 THEN ASSUME_TAC th)
1120 THEN EQ_TAC;
1121
1122 RESA_TAC
1123 THEN POP_ASSUM MP_TAC
1124 THEN REWRITE_TAC[PAIR_EQ]
1125 THEN MP_TAC(SET_RULE`FST (x:real^3#real^3)=w1\/ ~(FST x = w1:real^3)`)
1126 THEN RESA_TAC;
1127
1128 REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
1129 THEN POP_ASSUM(fun th-> REPLICATE_TAC (2)  STRIP_TAC
1130 THEN MRESA_TAC th[`x:real^3#real^3`])
1131 THEN RESA_TAC
1132 THEN MP_TAC(SET_RULE`w1= SND (x:real^3#real^3)\/ ~(SND x = w1:real^3)`)
1133 THEN RESA_TAC;
1134
1135 SUBGOAL_THEN`v,w1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
1136
1137 ASM_TAC
1138 THEN STRIP_TAC
1139 THEN STRIP_TAC
1140 THEN REMOVE_ASSUM_TAC
1141 THEN REPEAT RESA_TAC;
1142
1143 POP_ASSUM MP_TAC
1144 THEN ASM_REWRITE_TAC[];
1145
1146 STRIP_TAC
1147 THEN EXISTS_TAC`v:real^3,w:real^3`
1148 THEN ASM_REWRITE_TAC[]
1149 THEN REPLICATE_TAC (1) (POP_ASSUM MP_TAC)
1150 THEN POP_ASSUM(fun th-> REPLICATE_TAC (1)  STRIP_TAC
1151 THEN MRESA1_TAC th`v:real^3,w:real^3`)
1152 THEN ASM_TAC
1153 THEN MP_TAC(SET_RULE`(w=w1:real^3)\/ ~(w=w1)`)
1154 THEN REPEAT RESA_TAC]);;
1155
1156
1157
1158 let WW_DEFOR_RHO_NODE1=prove(`(!x. x IN FF==> ~(FST x= SND x)/\ ~((&1 - t) % w1 = FST x)/\ ~((&1 - t) % w1 = SND x)) /\ w1,v IN FF /\ ~(v,w1 IN FF)/\ ~(t= &0)
1159 ==> rho_node1(
1160       IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF) (ww_defor (w1:real^3) v t)
1161 = rho_node1 FF v`,
1162 STRIP_TAC
1163 THEN REWRITE_TAC[rho_node1]
1164 THEN MP_TAC WW_DEFOR_FF3
1165 THEN RESA_TAC);;
1166
1167
1168
1169 let GENERIC_WW_DEFOR_RHO_NODE1=prove(`local_fan(V,E,FF)/\ generic V E  /\ w1,v IN FF /\ ~(t= &0)
1170 ==> rho_node1(
1171       IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF) (ww_defor (w1:real^3) v t)
1172 = rho_node1 FF v`,
1173 RESA_TAC
1174 THEN MATCH_MP_TAC WW_DEFOR_RHO_NODE1
1175 THEN ASM_REWRITE_TAC[]
1176 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`w1:real^3,v:real^3`;`V:real^3->bool`;]
1177 THEN MRESA_TAC(GEN_ALL GENERIC_HYPOTHESIS_WW_DEFOR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`t:real`;`w1:real^3`]
1178 THEN STRIP_TAC
1179 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)`;`v:real^3`;`w1:real^3`]
1180 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)`;`v:real^3`;`w1:real^3`]
1181 THEN MRESAL_TAC (GEN_ALL Local_lemmas1.LOFA_IMP_EE_TWO_ELMS_INS_ND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v:real^3`][SET_RULE`{a,a}={a}`]
1182 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)`;`w1:real^3`;`v:real^3`]
1183 THEN MRESAL_TAC(GEN_ALL Local_lemmas.LOFA_CARD_EE_V_2)[`V:real^3->bool`;`(FF:real^3#real^3->bool)`;`w1:real^3`;`v:real^3`;`E:(real^3->bool)->bool`][Geomdetail.CARD_SING;ARITH_RULE`~(1=2)`]);;
1184
1185
1186
1187 let WW_DEFOR_ALPHA3=prove_by_refinement(
1188 `local_fan(V,E,FF)/\ generic V E  /\ w1,v IN FF /\ ~(t= &0)
1189 ==>(@w.
1190 (w:real^3),ww_defor (w1:real^3) v t IN
1191       IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF)
1192 = (&1-t) %w1`,
1193 [
1194 REPEAT STRIP_TAC
1195 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;ww_defor]
1196 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`w1:real^3,v:real^3`;`V:real^3->bool`;]
1197 THEN MRESA_TAC(GEN_ALL GENERIC_HYPOTHESIS_WW_DEFOR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`t:real`;`w1:real^3`]
1198 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
1199 THEN STRIP_TAC;
1200
1201 EXISTS_TAC`(&1-t)%w1:real^3`THEN EXISTS_TAC`w1:real^3,v:real^3`
1202 THEN ASM_REWRITE_TAC[];
1203
1204 REPEAT STRIP_TAC
1205 THEN POP_ASSUM MP_TAC
1206 THEN REWRITE_TAC[PAIR_EQ]
1207 THEN MP_TAC(SET_RULE`(FST (x:real^3#real^3)=w1)\/ ~((FST (x:real^3#real^3)=w1))`)
1208 THEN RESA_TAC;
1209
1210 RESA_TAC;
1211
1212 REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
1213 THEN POP_ASSUM(fun th-> REPLICATE_TAC (2)  STRIP_TAC
1214 THEN MRESA_TAC th[`(w1,v):real^3#real^3`])
1215 THEN MP_TAC(SET_RULE`(SND (x:real^3#real^3)=w1)\/ ~((SND (x:real^3#real^3)=w1))`)
1216 THEN RESA_TAC;
1217
1218 STRIP_TAC
1219 THEN SUBGOAL_THEN`w,v IN (FF:real^3#real^3->bool)` ASSUME_TAC;
1220
1221 ASM_TAC
1222 THEN STRIP_TAC
1223 THEN STRIP_TAC
1224 THEN REPEAT RESA_TAC;
1225
1226 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)
1227 [`V:real^3->bool`;`E:(real^3->bool)->bool`;`v:real^3`;`(FF:real^3#real^3->bool)`;`w:real^3`;`w1:real^3`]]);;
1228
1229
1230
1231
1232 let AZIM_DEFOR_EDGE1=prove(`local_fan(V,E,FF)/\ generic V E  /\ w1,v IN FF /\ t< &1
1233 ==>
1234 azim (vec 0) (ww_defor w1 v t)
1235  (rho_node1 (IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF)
1236  (ww_defor w1 v t))
1237  (@a. a,ww_defor w1 v t IN
1238       IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF)
1239 =azim (vec 0) v (rho_node1 FF v) (@a. a,v IN FF)`,
1240 REPEAT STRIP_TAC
1241 THEN MP_TAC(SET_RULE`t= &0 \/ ~(t= &0)`)
1242 THEN RESA_TAC
1243 THENL[
1244
1245 ASM_REWRITE_TAC[WW_DEFOR_0_ID;IMAGE_ID];
1246
1247 MP_TAC WW_DEFOR_ALPHA3
1248 THEN RESA_TAC
1249 THEN MP_TAC GENERIC_WW_DEFOR_RHO_NODE1
1250 THEN RESA_TAC
1251 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`w1:real^3,v:real^3`;`V:real^3->bool`;]
1252 THEN MRESA_TAC(GEN_ALL GENERIC_HYPOTHESIS_WW_DEFOR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`t:real`;`w1:real^3`]
1253 THEN POP_ASSUM(fun th-> MRESA1_TAC th`w1:real^3,v:real^3`)
1254 THEN ASM_REWRITE_TAC[ww_defor]
1255 THEN MRESAL_TAC (GEN_ALL Local_lemmas.IVS_RHO_NODE1_DETE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v:real^3`;`w1:real^3`][ivs_rho_node1]
1256 THEN MP_TAC(REAL_ARITH`t< &1==> &0< &1- t`)
1257 THEN RESA_TAC
1258 THEN MRESAL_TAC (GEN_ALL AZIM_SCALE_ALL)[`&1`;`&1-t`;`&1`;`v:real^3`;`rho_node1 FF v`;`w1:real^3`][VECTOR_ARITH`&1 % v=v`;REAL_ARITH`&0< &1`]]);;
1259
1260
1261 (******************)
1262
1263
1264
1265 let WW_DEFOR_FF4=prove_by_refinement(`local_fan(V,E,FF)/\ generic V E  /\ v,w1 IN FF /\ ~(t= &0)
1266 ==>(!w.
1267 (w:real^3),ww_defor (w1:real^3) v t IN
1268       IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF
1269 <=> w,v IN FF)`,
1270 [
1271 REPEAT STRIP_TAC
1272 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;ww_defor]
1273 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v:real^3,w1:real^3`;`V:real^3->bool`;]
1274 THEN MRESA_TAC(GEN_ALL GENERIC_HYPOTHESIS_WW_DEFOR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`t:real`;`w1:real^3`]
1275 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1276 THEN MRESA1_TAC th`v:real^3,w1:real^3`
1277 THEN ASSUME_TAC th)
1278 THEN EQ_TAC;
1279
1280
1281 RESA_TAC
1282 THEN POP_ASSUM MP_TAC
1283 THEN REWRITE_TAC[PAIR_EQ]
1284 THEN MP_TAC(SET_RULE`w1=FST (x:real^3#real^3)\/ ~(FST x = w1:real^3)`)
1285 THEN RESA_TAC;
1286
1287
1288 REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
1289 THEN POP_ASSUM(fun th-> REPLICATE_TAC (2)  STRIP_TAC
1290 THEN MRESA_TAC th[`x:real^3#real^3`])
1291 THEN RESA_TAC;
1292
1293 SUBGOAL_THEN`w1,v IN (FF:real^3#real^3->bool)` ASSUME_TAC;
1294
1295 ASM_TAC
1296 THEN STRIP_TAC
1297 THEN STRIP_TAC
1298 THEN REMOVE_ASSUM_TAC
1299 THEN REPEAT RESA_TAC;
1300
1301
1302 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)`;`v:real^3`;`w1:real^3`]
1303 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)`;`v:real^3`;`w1:real^3`]
1304 THEN MRESAL_TAC (GEN_ALL Local_lemmas1.LOFA_IMP_EE_TWO_ELMS_INS_ND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v:real^3`][SET_RULE`{a,a}={a}`]
1305 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)`;`w1:real^3`;`v:real^3`]
1306 THEN MRESAL_TAC(GEN_ALL Local_lemmas.LOFA_CARD_EE_V_2)[`V:real^3->bool`;`(FF:real^3#real^3->bool)`;`w1:real^3`;`v:real^3`;`E:(real^3->bool)->bool`][Geomdetail.CARD_SING;ARITH_RULE`~(1=2)`];
1307
1308
1309
1310 MP_TAC(SET_RULE`w1= SND (x:real^3#real^3)\/ ~(SND x = w1:real^3)`)
1311 THEN RESA_TAC;
1312
1313
1314 STRIP_TAC
1315 THEN SUBGOAL_THEN`w,w1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
1316
1317 ASM_TAC
1318 THEN STRIP_TAC
1319 THEN STRIP_TAC
1320 THEN REMOVE_ASSUM_TAC
1321 THEN REPEAT RESA_TAC;
1322
1323
1324 MRESA_TAC(GEN_ALL Local_lemmas.FST_EQ_IF_SAME_SND)
1325 [`V:real^3->bool`;`E:(real^3->bool)->bool`;`w1:real^3`;`(FF:real^3#real^3->bool)`;`w:real^3`;`v:real^3`]
1326 THEN REPLICATE_TAC (16-9) (POP_ASSUM MP_TAC)
1327 THEN POP_ASSUM(fun th-> REPEAT  STRIP_TAC
1328 THEN MRESA_TAC th[`x:real^3#real^3`]);
1329
1330 STRIP_TAC
1331 THEN EXISTS_TAC`w:real^3,v:real^3`
1332 THEN ASM_REWRITE_TAC[]
1333 THEN REPLICATE_TAC (1) (POP_ASSUM MP_TAC)
1334 THEN POP_ASSUM(fun th-> REPLICATE_TAC (1)  STRIP_TAC
1335 THEN MRESA1_TAC th`w:real^3,v:real^3`)
1336 THEN ASM_TAC
1337 THEN MP_TAC(SET_RULE`(w=w1:real^3)\/ ~(w=w1)`)
1338 THEN REPEAT RESA_TAC;
1339
1340 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)`;`v:real^3`;`w1:real^3`]
1341 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)`;`v:real^3`;`w1:real^3`]
1342 THEN MRESAL_TAC (GEN_ALL Local_lemmas1.LOFA_IMP_EE_TWO_ELMS_INS_ND)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v:real^3`][SET_RULE`{a,a}={a}`]
1343 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)`;`w1:real^3`;`v:real^3`]
1344 THEN MRESAL_TAC(GEN_ALL Local_lemmas.LOFA_CARD_EE_V_2)[`V:real^3->bool`;`(FF:real^3#real^3->bool)`;`w1:real^3`;`v:real^3`;`E:(real^3->bool)->bool`][Geomdetail.CARD_SING;ARITH_RULE`~(1=2)`];
1345 ]);;
1346
1347
1348
1349 let WW_DEFOR_RHO_NODE2=prove(`local_fan(V,E,FF)/\ generic V E  /\ v,w1 IN FF /\ ~(t= &0)
1350 ==> (@w. w,ww_defor w1 v t IN
1351               IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF) =
1352   (@w.            w,v IN FF)`,
1353 STRIP_TAC
1354 THEN REWRITE_TAC[rho_node1]
1355 THEN MP_TAC WW_DEFOR_FF4
1356 THEN RESA_TAC);;
1357
1358
1359
1360 let GENERIC_WW_DEFOR_RHO_NODE2=prove_by_refinement(
1361 `local_fan(V,E,FF)/\ generic V E  /\ v,w1 IN FF /\ ~(t= &0)
1362 ==> rho_node1(
1363       IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF) (ww_defor (w1:real^3) v t)
1364 = (&1-t) %w1`,
1365 [
1366 REPEAT STRIP_TAC
1367 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;ww_defor;rho_node1]
1368 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v:real^3,w1:real^3`;`V:real^3->bool`;]
1369 THEN MRESA_TAC(GEN_ALL GENERIC_HYPOTHESIS_WW_DEFOR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`t:real`;`w1:real^3`]
1370 THEN MATCH_MP_TAC Hypermap_and_fan.CHOICE_LEMMA
1371 THEN STRIP_TAC;
1372
1373 EXISTS_TAC`(&1-t)%w1:real^3`THEN EXISTS_TAC`v:real^3,w1:real^3`
1374 THEN ASM_REWRITE_TAC[];
1375
1376 REPEAT STRIP_TAC
1377 THEN POP_ASSUM MP_TAC
1378 THEN REWRITE_TAC[PAIR_EQ]
1379 THEN MP_TAC(SET_RULE`(FST (x:real^3#real^3)=w1)\/ ~((FST (x:real^3#real^3)=w1))`)
1380 THEN RESA_TAC;
1381
1382 REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
1383 THEN POP_ASSUM(fun th-> REPLICATE_TAC (2)  STRIP_TAC
1384 THEN MRESA_TAC th[`(v,w1):real^3#real^3`]);
1385
1386 REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
1387 THEN POP_ASSUM(fun th-> REPLICATE_TAC (2)  STRIP_TAC
1388 THEN MRESA_TAC th[`(v,w1):real^3#real^3`])
1389 THEN MP_TAC(SET_RULE`(SND (x:real^3#real^3)=w1)\/ ~((SND (x:real^3#real^3)=w1))`)
1390 THEN RESA_TAC;
1391
1392 RESA_TAC;
1393
1394 STRIP_TAC
1395 THEN SUBGOAL_THEN`v,w IN (FF:real^3#real^3->bool)` ASSUME_TAC;
1396
1397 ASM_TAC
1398 THEN STRIP_TAC
1399 THEN STRIP_TAC
1400 THEN REPEAT RESA_TAC;
1401
1402 MRESA_TAC (GEN_ALL Local_lemmas.DETER_RHO_NODE)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`v:real^3`;`w1:real^3`]
1403 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)`;`v:real^3`;`w:real^3`]]);;
1404
1405
1406
1407
1408 let AZIM_DEFOR_EDGE2=prove(`local_fan(V,E,FF)/\ generic V E  /\ v,w1 IN FF /\ t< &1
1409 ==>
1410 azim (vec 0) (ww_defor w1 v t)
1411  (rho_node1 (IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF)
1412  (ww_defor w1 v t))
1413  (@a. a,ww_defor w1 v t IN
1414       IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF)
1415 =azim (vec 0) v (rho_node1 FF v) (@a. a,v IN FF)`,
1416 REPEAT STRIP_TAC
1417 THEN MP_TAC(SET_RULE`t= &0 \/ ~(t= &0)`)
1418 THEN RESA_TAC
1419 THENL[
1420 ASM_REWRITE_TAC[WW_DEFOR_0_ID;IMAGE_ID];
1421 MP_TAC WW_DEFOR_RHO_NODE2
1422 THEN RESA_TAC
1423 THEN MP_TAC GENERIC_WW_DEFOR_RHO_NODE2
1424 THEN RESA_TAC
1425 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOCAL_FAN_IMP_IN_V2)[`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`v:real^3,w1:real^3`;`V:real^3->bool`;]
1426 THEN MRESA_TAC(GEN_ALL GENERIC_HYPOTHESIS_WW_DEFOR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`t:real`;`w1:real^3`]
1427 THEN POP_ASSUM(fun th-> MRESA1_TAC th`v:real^3,w1:real^3`)
1428 THEN ASM_REWRITE_TAC[ww_defor]
1429 THEN MP_TAC(REAL_ARITH`t< &1==> &0< &1- t`)
1430 THEN RESA_TAC
1431 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)`;`v:real^3`;`w1:real^3`]
1432 THEN MRESAL_TAC (GEN_ALL AZIM_SCALE_ALL)[`&1-t`;`&1`;`&1`;`v:real^3`;`w1:real^3`;`(@a:real^3. a,(v:real^3) IN FF)`][VECTOR_ARITH`&1 % v=v`;REAL_ARITH`&0< &1`]]);;
1433
1434
1435
1436 let WW_DEFOR_FF5=prove_by_refinement(
1437 `local_fan(V,E,FF)/\ generic V E /\ ~(v=w1)/\ ~(w1,v IN FF) /\ ~(v,w1 IN FF)/\ ~(t= &0)/\ v IN V/\ w1 IN V
1438 ==>(!w.
1439 ww_defor (w1:real^3) v t,(w:real^3) IN
1440       IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF
1441 <=> v,w IN FF)`,
1442 [
1443 REPEAT STRIP_TAC
1444 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;ww_defor]
1445 THEN EQ_TAC;
1446
1447 RESA_TAC
1448 THEN POP_ASSUM MP_TAC
1449 THEN REWRITE_TAC[PAIR_EQ]
1450 THEN MP_TAC(SET_RULE`FST (x:real^3#real^3)=w1\/ ~(FST x = w1:real^3)`)
1451 THEN RESA_TAC;
1452
1453 MRESA_TAC(GEN_ALL GENERIC_HYPOTHESIS_WW_DEFOR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`t:real`;`w1:real^3`]
1454 THEN POP_ASSUM(fun th-> MRESA_TAC th[`x:real^3#real^3`])
1455 THEN RESA_TAC
1456 THEN POP_ASSUM MP_TAC
1457 THEN POP_ASSUM MP_TAC
1458 THEN MRESA_TAC Nkezbfc_local.PROPERTIES_GENERIC_LOCAL_FAN[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`w1:real^3`]
1459 THEN POP_ASSUM (fun th-> MRESA_TAC th[`v:real^3`])
1460 THEN MRESAL_TAC th3[`vec 0:real^3`;`w1:real^3`;`v:real^3`][Trigonometry2.AFF2;IN_ELIM_THM;VECTOR_ARITH`A % vec 0+B= B`]
1461 THEN POP_ASSUM (fun th->
1462 STRIP_TAC
1463 THEN MP_TAC th)
1464 THEN SUBGOAL_THEN`?t. v = (&1 - t) % w1:real^3`ASSUME_TAC;
1465
1466 EXISTS_TAC`t:real`
1467 THEN ASM_REWRITE_TAC[];
1468
1469 ASM_REWRITE_TAC[];
1470
1471
1472 MP_TAC(SET_RULE`w1= SND (x:real^3#real^3)\/ ~(SND x = w1:real^3)`)
1473 THEN RESA_TAC;
1474
1475 STRIP_TAC
1476 THEN SUBGOAL_THEN`v,w1 IN (FF:real^3#real^3->bool)` ASSUME_TAC;
1477
1478 ASM_TAC
1479 THEN REPLICATE_TAC (5) STRIP_TAC
1480 THEN REPLICATE_TAC (5) REMOVE_ASSUM_TAC
1481 THEN REPEAT RESA_TAC;
1482
1483 POP_ASSUM MP_TAC
1484 THEN ASM_REWRITE_TAC[];
1485
1486 STRIP_TAC
1487 THEN EXISTS_TAC`v:real^3,w:real^3`
1488 THEN ASM_REWRITE_TAC[]
1489 THEN POP_ASSUM MP_TAC
1490 THEN MP_TAC(SET_RULE`(w=w1:real^3)\/ ~(w=w1)`)
1491 THEN REPEAT RESA_TAC]);;
1492
1493
1494
1495
1496
1497 let GENERIC_WW_DEFOR_RHO_NODE1_NOT_EDGE=prove(
1498 `local_fan(V,E,FF)/\ generic V E /\ ~(v=w1)/\ ~(w1,v IN FF) /\ ~(v,w1 IN FF)/\ ~(t= &0)/\ v IN V/\ w1 IN V
1499 ==> rho_node1(
1500       IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF) (ww_defor (w1:real^3) v t)
1501 = rho_node1 FF v`,
1502 RESA_TAC
1503 THEN MP_TAC WW_DEFOR_FF5
1504 THEN ASM_REWRITE_TAC[rho_node1]
1505 THEN RESA_TAC);;
1506
1507
1508
1509
1510
1511
1512
1513 let WW_DEFOR_FF6=prove_by_refinement(`local_fan(V,E,FF)/\ generic V E /\ ~(v=w1)/\ ~(w1,v IN FF) /\ ~(v,w1 IN FF)/\ ~(t= &0)/\ v IN V/\ w1 IN V
1514 ==>(!w.
1515 (w:real^3),ww_defor (w1:real^3) v t IN
1516       IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF
1517 <=> w,v IN FF)`,
1518 [REPEAT STRIP_TAC
1519 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM;ww_defor]
1520 THEN EQ_TAC;
1521
1522 RESA_TAC
1523 THEN POP_ASSUM MP_TAC
1524 THEN REWRITE_TAC[PAIR_EQ]
1525 THEN MP_TAC(SET_RULE`SND (x:real^3#real^3)=w1\/ ~(SND x = w1:real^3)`)
1526 THEN RESA_TAC;
1527
1528 MRESA_TAC(GEN_ALL GENERIC_HYPOTHESIS_WW_DEFOR)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`(FF:real^3#real^3->bool)`;`t:real`;`w1:real^3`]
1529 THEN POP_ASSUM(fun th-> MRESA_TAC th[`x:real^3#real^3`])
1530 THEN RESA_TAC
1531 THEN POP_ASSUM MP_TAC
1532 THEN POP_ASSUM MP_TAC
1533 THEN MRESA_TAC Nkezbfc_local.PROPERTIES_GENERIC_LOCAL_FAN[`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`w1:real^3`]
1534 THEN POP_ASSUM (fun th-> MRESA_TAC th[`v:real^3`])
1535 THEN MRESAL_TAC th3[`vec 0:real^3`;`w1:real^3`;`v:real^3`][Trigonometry2.AFF2;IN_ELIM_THM;VECTOR_ARITH`A % vec 0+B= B`]
1536 THEN POP_ASSUM (fun th->
1537 STRIP_TAC THEN STRIP_TAC
1538 THEN MP_TAC th)
1539 THEN SUBGOAL_THEN`?t. v = (&1 - t) % w1:real^3`ASSUME_TAC;
1540
1541 EXISTS_TAC`t:real`
1542 THEN ASM_REWRITE_TAC[];
1543
1544 ASM_REWRITE_TAC[];
1545
1546 MP_TAC(SET_RULE`w1= FST (x:real^3#real^3)\/ ~(FST x = w1:real^3)`)
1547 THEN RESA_TAC;
1548
1549 STRIP_TAC
1550 THEN SUBGOAL_THEN`w1,v IN (FF:real^3#real^3->bool)` ASSUME_TAC;
1551
1552
1553 ASM_TAC
1554 THEN REPLICATE_TAC (5) STRIP_TAC
1555 THEN REPLICATE_TAC (5) REMOVE_ASSUM_TAC
1556 THEN REPEAT RESA_TAC;
1557
1558 POP_ASSUM MP_TAC
1559 THEN ASM_REWRITE_TAC[];
1560
1561 STRIP_TAC
1562 THEN EXISTS_TAC`w:real^3,v:real^3`
1563 THEN ASM_REWRITE_TAC[]
1564 THEN POP_ASSUM MP_TAC
1565 THEN MP_TAC(SET_RULE`(w=w1:real^3)\/ ~(w=w1)`)
1566 THEN REPEAT RESA_TAC;]);;
1567
1568
1569
1570 let GENERIC_WW_DEFOR_RHO_NODE1_NOT_EDGE2=prove(`local_fan(V,E,FF)/\ generic V E /\ ~(v=w1)/\ ~(w1,v IN FF) /\ ~(v,w1 IN FF)/\ ~(t= &0)/\ v IN V/\ w1 IN V
1571 ==>(@w.
1572 (w:real^3),ww_defor (w1:real^3) v t IN
1573       IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF)=(@w. w,v IN FF)`,
1574 RESA_TAC
1575 THEN MP_TAC WW_DEFOR_FF6
1576 THEN ASM_REWRITE_TAC[rho_node1]
1577 THEN RESA_TAC);;
1578
1579
1580
1581
1582
1583 let AZIM_DEFOR_EDGE3=prove(`local_fan(V,E,FF)/\ generic V E /\ ~(v=w1)/\ ~(w1,v IN FF) /\ ~(v,w1 IN FF)/\ v IN V/\ w1 IN V
1584 ==>
1585 azim (vec 0) (ww_defor w1 v t)
1586  (rho_node1 (IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF)
1587  (ww_defor w1 v t))
1588  (@a. a,ww_defor w1 v t IN
1589       IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF)
1590 =azim (vec 0) v (rho_node1 FF v) (@a. a,v IN FF)`,
1591 REPEAT STRIP_TAC
1592 THEN MP_TAC(SET_RULE`t= &0 \/ ~(t= &0)`)
1593 THEN RESA_TAC
1594 THENL[
1595 ASM_REWRITE_TAC[WW_DEFOR_0_ID;IMAGE_ID];
1596
1597 MP_TAC GENERIC_WW_DEFOR_RHO_NODE1_NOT_EDGE2
1598 THEN RESA_TAC
1599 THEN MP_TAC GENERIC_WW_DEFOR_RHO_NODE1_NOT_EDGE
1600 THEN RESA_TAC
1601 THEN ASM_REWRITE_TAC[ww_defor]
1602 THEN ASM_SIMP_TAC[AZIM_SPECIAL_SCALE]]);;
1603
1604
1605
1606
1607
1608
1609 let AZIM_DEFORMATION_GENERIC=prove_by_refinement(`local_fan(V,E,FF)/\ generic V E /\  v IN V/\ w1 IN V/\ t< &1
1610 ==>
1611 azim (vec 0) (ww_defor w1 v t)
1612  (rho_node1 (IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF)
1613  (ww_defor w1 v t))
1614  (@a. a,ww_defor w1 v t IN
1615       IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) FF)
1616 =azim (vec 0) v (rho_node1 FF v) (@a. a,v IN FF)`,
1617 [STRIP_TAC
1618 THEN MP_TAC(SET_RULE`w1=v:real^3\/ ~(w1=v)`)
1619 THEN RESA_TAC;
1620
1621 MP_TAC GENEIRC_WW_DEFOR_AZIM
1622 THEN RESA_TAC;
1623
1624 MP_TAC (SET_RULE`w1,v IN FF \/ v,w1 IN FF\/ (~(w1,v IN FF)/\ ~(v,w1 IN (FF:real^3#real^3->bool)))`)
1625 THEN RESA_TAC;
1626
1627 MP_TAC AZIM_DEFOR_EDGE1
1628 THEN RESA_TAC;
1629
1630 MP_TAC AZIM_DEFOR_EDGE2
1631 THEN RESA_TAC;
1632
1633 MP_TAC AZIM_DEFOR_EDGE3
1634 THEN RESA_TAC]);;
1635
1636
1637
1638 let V_DEFORMATION_WW_DEFOR=prove(`IMAGE (\v. ww_defor w1 v t) (IMAGE w (:num))
1639 =IMAGE (\i. ww_defor w1 (w i) t) (:num)`,
1640 REWRITE_TAC[IMAGE;IN_ELIM_THM;EXTENSION]
1641 THEN SET_TAC[]);;
1642
1643
1644
1645 let E_DEFORMATION_WW_DEFOR=prove_by_refinement(`IMAGE (\i. {ww_defor w1 ((w:num->real^3) i) t, ww_defor w1 (w (SUC i)) t}) (:num)
1646 = IMAGE (IMAGE (\v. ww_defor w1 v t)) (IMAGE (\i. {w i, w (SUC i)}) (:num))`,
1647 [REWRITE_TAC[EXTENSION]
1648 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
1649 THEN GEN_TAC
1650 THEN EQ_TAC;
1651 RESA_TAC
1652 THEN EXISTS_TAC`{(w:num->real^3) x', w (SUC x')}`
1653 THEN STRIP_TAC;
1654
1655 EXISTS_TAC`x':num`
1656 THEN ASM_REWRITE_TAC[];
1657 SET_TAC[];
1658 RESA_TAC
1659 THEN EXISTS_TAC`x'':num`
1660 THEN ASM_REWRITE_TAC[]
1661 THEN SET_TAC[]]);;
1662
1663 let F_DEFORMATION_WW_DEFOR=prove(`IMAGE (\i. ww_defor w1 ((w:num->real^3) i) t,ww_defor w1 (w (SUC i)) t) (:num)
1664 = IMAGE (\uv. ww_defor w1 (FST uv) t,ww_defor w1 (SND uv) t) (IMAGE (\i. w i,w (SUC i)) (:num))`,
1665 REWRITE_TAC[EXTENSION;IMAGE;IN_ELIM_THM]
1666 THEN GEN_TAC
1667 THEN EQ_TAC
1668 THENL[
1669 RESA_TAC
1670 THEN EXISTS_TAC`(w:num->real^3) x',w (SUC x')`
1671 THEN ASM_REWRITE_TAC[]
1672 THEN EXISTS_TAC`x':num`
1673 THEN ASM_REWRITE_TAC[];
1674 RESA_TAC
1675 THEN EXISTS_TAC`x'':num`
1676 THEN ASM_REWRITE_TAC[]]);;
1677
1678
1679
1680
1681
1682 let WW_DEFOR_AFFINE_HULL=prove(`!t. t IN real_interval (--e,e)
1683            ==> ww_defor w1 w1 t IN affine hull {vec 0, v, w', w1}`,
1684 STRIP_TAC
1685 THEN REWRITE_TAC[ww_defor;real_interval;IN_ELIM_THM;Collect_geom2.AFFINE_HULL_4]
1686 THEN STRIP_TAC
1687 THEN EXISTS_TAC`t:real`
1688 THEN EXISTS_TAC`&0`
1689 THEN EXISTS_TAC`&0`
1690 THEN EXISTS_TAC`&1-t:real`
1691 THEN ASM_REWRITE_TAC[REAL_ARITH`t+ &0+ &0+ &1-t= &1`]
1692 THEN VECTOR_ARITH_TAC);;
1693
1694
1695
1696
1697 (***concl ***)
1698
1699
1700 let MHAEYJN_concl = 
1701 `!a b V E FF f v w u.
1702      convex_local_fan (V,E,FF) /\
1703      lunar (v,w) V E /\
1704      deformation f V (a,b) /\
1705      interior_angle1 (vec 0) FF v < pi /\
1706      u IN V /\
1707      ~(u = v) /\
1708      ~(u = w) /\
1709      (!u' t. u' IN V /\ ~(u = u') /\ t IN real_interval (a,b) ==> f u' t = u') /\
1710      (!t. t IN real_interval (a,b) ==> f u t IN affine hull {vec 0, v, w, u})
1711      ==> (?e. &0 < e /\
1712               (!t. --e < t /\ t < e
1713                    ==> convex_local_fan
1714                        (IMAGE (\v. f v t) V,
1715                         IMAGE (IMAGE (\v. f v t)) E,
1716                         IMAGE (\uv. f (FST uv) t,f (SND uv) t) FF) /\
1717                        lunar (v,w) (IMAGE (\v. f v t) V)
1718                        (IMAGE (IMAGE (\v. f v t)) E)))`;;
1719 let ZLZTHIC_concl = 
1720 `!a b V E FF f.
1721      convex_local_fan (V,E,FF) /\
1722      generic V E /\
1723      deformation f V (a,b) /\
1724      (!v t. v IN V /\ t IN real_interval (a,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)
1725      ==> (?e. &0 < e /\
1726               (!t. --e < t /\ t < e
1727                    ==> convex_local_fan
1728                        (IMAGE (\v. f v t) V,
1729                         IMAGE (IMAGE (\v. f v t)) E,
1730                         IMAGE (\uv. f (FST uv) t,f (SND uv) t) FF) /\
1731                        generic (IMAGE (\v. f v t) V)
1732                        (IMAGE (IMAGE (\v. f v t)) E)))`;;
1733
1734
1735
1736
1737
1738 let ODXLSTCv2_concl = `!s k w l.
1739   is_scs_v39 s /\
1740   MMs_v39 s w /\
1741   scs_k_v39 s =k/\
1742  3<k/\ 
1743   (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
1744   ~(&2 = norm (w l)) /\
1745   (!i. ~(i MOD k = l MOD k) ==> scs_a_v39 s l i < dist(w l,w i)) /\
1746   (!i. ~(scs_J_v39 s l i)) /\
1747   (!V E v.
1748      V = IMAGE w (:num) /\
1749       E = IMAGE (\i. {w i, w (SUC i)}) (:num) ==>
1750       ~(lunar (v,(w l)) V E )) ==> F`;;
1751
1752
1753
1754 let LEMMA1_concl = `!s k w l.
1755   is_scs_v39 s /\
1756   MMs_v39 s w /\
1757   scs_k_v39 s =k/\
1758  3<k/\ 
1759   (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
1760   ~(&2 = norm (w l)) /\
1761   (!i. ~(i MOD k = l MOD k) ==> scs_a_v39 s l i < dist(w l,w i)) /\
1762   (!i. ~(scs_J_v39 s l i)) /\
1763   (!V E v.
1764      V = IMAGE w (:num) /\
1765       E = IMAGE (\i. {w i, w (SUC i)}) (:num) ==>
1766       ~(lunar (v,(w l)) V E )) ==> 
1767 (?e. &0 < e /\
1768               (!t. --e < t /\ t < e
1769                    ==> convex_local_fan
1770  (IMAGE (\i. ww_defor (w l) (w i) t) (:num),
1771   IMAGE (\i. {ww_defor (w l) (w i) t, ww_defor (w l) (w (SUC i)) t}) (:num),
1772   IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) (w (SUC i)) t) (:num))
1773 ))`;;
1774
1775
1776
1777
1778
1779 let TAUSTAR_WW_DEFOR_concl = `!s k w l.
1780   is_scs_v39 s /\
1781   MMs_v39 s w /\
1782   scs_k_v39 s =k/\
1783  3<k/\ 
1784   (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
1785   ~(&2 = norm (w l)) /\
1786   (!i. ~(i MOD k = l MOD k) ==> scs_a_v39 s l i < dist(w l,w i)) /\
1787   (!i. ~(scs_J_v39 s l i)) /\
1788 (!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. ww_defor (w l) (w i) t))/\
1789 &0< e1/\ e1< &1/\
1790   (!V E v.
1791      V = IMAGE w (:num) /\
1792       E = IMAGE (\i. {w i, w (SUC i)}) (:num) ==>
1793       ~(lunar (v,(w l)) V E )) ==> 
1794 (?e. &0 < e /\
1795               (!t. &0 < t /\ t < e
1796                    ==> taustar_v39 s (\i. ww_defor (w l) (w i) t)< taustar_v39 s w 
1797 ))`;;
1798
1799 (***********)
1800
1801 let WW_DEFORMATION_CONVEX_LOCAL_FAN=prove_by_refinement((mk_imp(ZLZTHIC_concl, mk_imp (MHAEYJN_concl, LEMMA1_concl))),
1802 [
1803
1804 REPEAT STRIP_TAC
1805 THEN REPLICATE_TAC (9-2)(POP_ASSUM MP_TAC)
1806 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1807 THEN POP_ASSUM MP_TAC
1808 THEN MP_TAC th
1809 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
1810 THEN ASSUME_TAC th
1811 THEN STRIP_TAC)
1812 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
1813 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
1814 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
1815 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
1816 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
1817 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
1818
1819 ASM_TAC
1820 THEN REPLICATE_TAC 5 (STRIP_TAC)
1821 THEN MP_TAC(ARITH_RULE`3< k==> ~(k<=3)`)
1822 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
1823 THEN REPEAT RESA_TAC
1824 THEN REPLICATE_TAC (25-12) (POP_ASSUM MP_TAC)
1825 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1826 THEN MP_TAC th
1827 THEN ASM_REWRITE_TAC[])
1828 THEN RESA_TAC;
1829
1830 POP_ASSUM(fun th-> MP_TAC th
1831 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[convex_local_fan;]
1832 THEN STRIP_TAC
1833 THEN POP_ASSUM MP_TAC
1834 THEN POP_ASSUM(fun th1-> STRIP_TAC
1835 THEN MP_TAC th1
1836 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[local_fan;LET_DEF;LET_END_DEF]
1837 THEN REWRITE_TAC[LET_DEF;LET_END_DEF]
1838 THEN STRIP_TAC
1839 THEN REPLICATE_TAC (3) (REMOVE_ASSUM_TAC)
1840 THEN ASSUME_TAC th1)
1841 THEN ASSUME_TAC th)
1842 THEN MRESA_TAC Deformation.XRECQNS[`-- &1`;`&1`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`ww_defor ((w:num->real^3) l)`]
1843 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`e:real`][REAL_ARITH`&0< &1`]
1844 THEN MP_TAC Wrgcvdr_cizmrrh.CIZMRRH
1845 THEN RESA_TAC;
1846
1847 ABBREV_TAC`e1= (min e (&1))/ &2`
1848 THEN MP_TAC(REAL_ARITH`e1= (min e (&1))/ &2/\ &0< e==> &0< e1/\ e1< &1/\ e1< e `)
1849 THEN RESA_TAC
1850 THEN SUBGOAL_THEN`(w:num->real^3) l IN ball_annulus` ASSUME_TAC;
1851
1852 ASM_TAC
1853 THEN REPLICATE_TAC 4 (STRIP_TAC)
1854 THEN MP_TAC(ARITH_RULE`3< k==> ~(k<=3)`)
1855 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;IMAGE;IN_ELIM_THM;SUBSET]
1856 THEN REPEAT RESA_TAC
1857 THEN SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) l= w x)`ASSUME_TAC;
1858
1859 EXISTS_TAC`l:num`
1860 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
1861
1862 REPLICATE_TAC (41-11) (POP_ASSUM MP_TAC)
1863 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1864 THEN MRESA1_TAC th`(w:num->real^3) l`);
1865
1866 EXISTS_TAC`l:num`
1867 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
1868
1869 REPLICATE_TAC (41-11) (POP_ASSUM MP_TAC)
1870 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1871 THEN MRESA1_TAC th`(w:num->real^3) l`);
1872
1873 ABBREV_TAC`w1= (w:num->real^3) l`
1874 THEN SUBGOAL_THEN`(w1:real^3) IN V`ASSUME_TAC;
1875
1876 EXPAND_TAC"V"
1877 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
1878 THEN EXISTS_TAC`l:num`
1879 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
1880
1881 SUBGOAL_THEN`(!v t.
1882            v IN V /\ t IN real_interval (-- e1, e1)/\ interior_angle1 (vec 0) FF v = pi
1883            ==>interior_angle1 (vec 0)
1884                (IMAGE
1885                 (\uv. ww_defor ((w:num->real^3) l) (FST uv) t,ww_defor (w l) (SND uv) t)
1886                FF)
1887                (ww_defor (w l) v t) <=
1888                pi)`ASSUME_TAC;
1889
1890 REWRITE_TAC[interior_angle1;real_interval;IN_ELIM_THM]
1891 THEN REPEAT RESA_TAC
1892 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< &1==> t< &1`)
1893 THEN RESA_TAC
1894 THEN MP_TAC AZIM_DEFORMATION_GENERIC
1895 THEN RESA_TAC
1896 THEN REAL_ARITH_TAC;
1897
1898 MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`e1:real`][REAL_ARITH`&0< &1`]
1899 THEN REPLICATE_TAC (41-0) (POP_ASSUM MP_TAC)
1900 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1901 THEN POP_ASSUM MP_TAC
1902 THEN MRESA_TAC th[`-- e1`;`e1:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`ww_defor ((w:num->real^3) l)`])
1903 THEN STRIP_TAC
1904 THEN REMOVE_ASSUM_TAC
1905 THEN EXISTS_TAC`e':real`
1906 THEN ASM_REWRITE_TAC[]
1907 THEN GEN_TAC
1908 THEN POP_ASSUM(fun th-> STRIP_TAC
1909 THEN MRESAL_TAC th[`t:real`;][GSYM(GEN_ALL V_DEFORMATION_WW_DEFOR); E_DEFORMATION_WW_DEFOR;F_DEFORMATION_WW_DEFOR]);
1910
1911 (***lunar case**)
1912
1913
1914 ABBREV_TAC`e1= (min e (&1))/ &2`
1915 THEN MP_TAC(REAL_ARITH`e1= (min e (&1))/ &2/\ &0< e==> &0< e1/\ e1< &1/\ e1< e `)
1916 THEN RESA_TAC
1917 THEN SUBGOAL_THEN`(w:num->real^3) l IN ball_annulus` ASSUME_TAC;
1918
1919 ASM_TAC
1920 THEN REPLICATE_TAC 4 (STRIP_TAC)
1921 THEN MP_TAC(ARITH_RULE`3< k==> ~(k<=3)`)
1922 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;IMAGE;IN_ELIM_THM;SUBSET]
1923 THEN REPEAT RESA_TAC
1924 THEN SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) l= w x)`ASSUME_TAC;
1925
1926 EXISTS_TAC`l:num`
1927 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
1928
1929 REPLICATE_TAC (41-11) (POP_ASSUM MP_TAC)
1930 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1931 THEN MRESA1_TAC th`(w:num->real^3) l`);
1932
1933 EXISTS_TAC`l:num`
1934 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
1935
1936 REPLICATE_TAC (41-11) (POP_ASSUM MP_TAC)
1937 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
1938 THEN MRESA1_TAC th`(w:num->real^3) l`);
1939
1940 ABBREV_TAC`w1= (w:num->real^3) l`
1941 THEN SUBGOAL_THEN`(w1:real^3) IN V`ASSUME_TAC;
1942
1943 EXPAND_TAC"V"
1944 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
1945 THEN EXISTS_TAC`l:num`
1946 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
1947
1948 MRESAL_TAC JKQEWGV3[`s:scs_v39`;`w:num->real^3`;`v:real^3`;`w':real^3`][LET_DEF;LET_END_DEF;]
1949 THEN MP_TAC(REAL_ARITH`interior_angle1 (vec 0) FF v < pi / &2/\ &0< pi
1950 ==> interior_angle1 (vec 0) FF v < pi`)
1951 THEN ASM_REWRITE_TAC[PI_WORKS]
1952 THEN RESA_TAC
1953 THEN STRIP_TAC
1954 THEN SUBGOAL_THEN`~(w1=v:real^3)`ASSUME_TAC;
1955
1956 POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`w':real^3`])
1957 THEN STRIP_TAC
1958 THEN POP_ASSUM(fun th->
1959 ASM_TAC
1960 THEN REWRITE_TAC[th]
1961 THEN REPEAT RESA_TAC)
1962 THEN ASM_REWRITE_TAC[Local_lemmas.LUNAR_COMM];
1963
1964 SUBGOAL_THEN`~(w1=w':real^3)`ASSUME_TAC;
1965
1966 REMOVE_ASSUM_TAC
1967 THEN POP_ASSUM(fun th-> MRESA_TAC th[`V:real^3->bool`;`E:(real^3->bool)->bool`;`v:real^3`])
1968 THEN STRIP_TAC
1969 THEN POP_ASSUM(fun th->
1970 ASM_TAC
1971 THEN REWRITE_TAC[th]
1972 THEN REPEAT RESA_TAC);
1973
1974 POP_ASSUM MP_TAC
1975 THEN POP_ASSUM MP_TAC
1976 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1977 THEN MP_TAC th)
1978 THEN SUBGOAL_THEN`(!u' t.
1979            u' IN V /\ ~(w1 = u':real^3) /\ t IN real_interval (--e,e)
1980            ==> ww_defor w1 u' t = u')`ASSUME_TAC;
1981
1982 REPEAT STRIP_TAC
1983 THEN REWRITE_TAC[ww_defor]
1984 THEN REMOVE_ASSUM_TAC
1985 THEN POP_ASSUM(fun th-> REWRITE_TAC[th]);
1986
1987 REPLICATE_TAC (44-1) (POP_ASSUM MP_TAC)
1988 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
1989 THEN POP_ASSUM MP_TAC
1990 THEN MRESA_TAC th[`-- e`;`e:real`;`V:real^3->bool`;`E:(real^3->bool)->bool`;`FF:real^3#real^3->bool`;`ww_defor ((w:num->real^3) l)`;`v:real^3`;`w':real^3`;`w1:real^3`])
1991 THEN POP_ASSUM MP_TAC
1992 THEN MRESA_TAC (GEN_ALL WW_DEFOR_AFFINE_HULL)[`e:real`;`v:real^3`;`w':real^3`;`w1:real^3`;]
1993 THEN RESA_TAC
1994 THEN STRIP_TAC
1995 THEN REMOVE_ASSUM_TAC
1996 THEN EXISTS_TAC`e':real`
1997 THEN ASM_REWRITE_TAC[]
1998 THEN GEN_TAC
1999 THEN POP_ASSUM(fun th-> STRIP_TAC
2000 THEN MRESAL_TAC th[`t:real`;][GSYM(GEN_ALL V_DEFORMATION_WW_DEFOR); E_DEFORMATION_WW_DEFOR;F_DEFORMATION_WW_DEFOR])]);;
2001
2002
2003
2004 let CARD_V_EQ_SCS_K1=prove_by_refinement(
2005 `  scs_k_v39 s =k /\
2006  IMAGE (vv:num->real^3) (:num)=V/\
2007         is_scs_v39 s /\
2008 3< k/\
2009         BBs_v39 s vv 
2010 ==> CARD V=k`,
2011 [
2012 REPEAT STRIP_TAC
2013 THEN MP_TAC IS_SCS_STABLE_SYSTEM
2014 THEN ASM_REWRITE_TAC[ARITH_RULE`3<4`]
2015 THEN MP_TAC Qknvmlb.SCS_K_LE_6
2016 THEN RESA_TAC
2017 THEN STRIP_TAC
2018 THEN ABBREV_TAC`s1 =stable_sy((scs_k_v39 s),(scs_d_v39 s),(0..scs_k_v39 s - 1),
2019          (change_type_v3 (scs_a_v39 s)),
2020          (change_type_v3 (scs_b_v39 s)),
2021          (change_type_v2 (scs_J_v39 s) (scs_k_v39 s)),
2022          (\i. (1 + i) MOD scs_k_v39 s))`
2023 THEN MRESA_TAC stable_sy_explicit[`(scs_k_v39 s)`;`(scs_d_v39 s)`;`(0..scs_k_v39 s - 1)`;`
2024          (change_type_v3 (scs_a_v39 s))`;`
2025          (change_type_v3 (scs_b_v39 s))`;`
2026          (change_type_v2 (scs_J_v39 s) (scs_k_v39 s))`;`
2027          (\i. (1 + i) MOD scs_k_v39 s)`]
2028 THEN MP_TAC(ARITH_RULE`3 < scs_k_v39 s /\ scs_k_v39 s<=6 ==>  scs_k_v39 s=4 \/
2029 scs_k_v39 s=5 \/ scs_k_v39 s=6`)
2030 THEN RESA_TAC;
2031
2032 POP_ASSUM(fun th-> ASM_TAC
2033 THEN REWRITE_TAC[th]
2034 THEN ASSUME_TAC th)
2035 THEN REPEAT STRIP_TAC
2036 THEN ABBREV_TAC`v=vector[(vv:num->real^3) 1;(vv:num->real^3) 2;(vv:num->real^3) 3;(vv:num->real^3) 0]:real^3^(2+2)`
2037 THEN ABBREV_TAC`a=matvec (v:real^3^(2+2))`
2038 THEN MP_TAC(INST_TYPE [`:2+2`,`:M`]V_E_FF_IS_SCS_CASES_4)
2039 THEN ASM_REWRITE_TAC[Basics.DIMINDEX_4;IN]
2040 THEN STRIP_TAC 
2041 THEN MRESAL_TAC (INST_TYPE [`:2+2`,`:M`]VECTOR_3_4)[`(vv:num->real^3) 1`;`(vv:num->real^3) 2`;`(vv:num->real^3) 3`;`(vv:num->real^3) 0`][ARITH_RULE`1<=4/\ 2<=4/\ 3<=4/\ 4<=4/\ 4 MOD 4= 0 /\ 1 MOD 4= 1 /\ 2 MOD 4= 2/\ 3 MOD 4= 3/\ ~(2=1)
2042 /\ SUC 4 MOD 4= 1 /\ SUC 1 MOD 4= 2 /\ SUC 2 MOD 4= 3/\ SUC 3 MOD 4= 0/\ ~(3=1)/\ ~(1=0)`;Basics.DIMINDEX_4]
2043 THEN EXPAND_TAC "V"
2044 THEN REWRITE_TAC[V_SY;rows;Basics.DIMINDEX_4;ARITH_RULE`1<=i /\ i<=4 <=> i=1\/ i=2\/ i=3 \/ i=4`;SET_RULE`{row i v | i = 1 \/ i = 2 \/ i = 3 \/ i = 4}={row 1 v, row 2 v, row 3 v,row 4 v}`]
2045 THEN ASM_REWRITE_TAC[]
2046 THEN MP_TAC VV_INJ
2047 THEN RESA_TAC
2048 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`1`;`2`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ 0<4/\ 1<4/\ 2<4/\ 3<4`]
2049 THEN MRESAL_TAC th[`1`;`3`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ 0<4/\ 1<4/\ 2<4/\ 3<4`]
2050 THEN MRESAL_TAC th[`1`;`0`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ 0<4/\ 1<4/\ 2<4/\ 3<4`]
2051 THEN MRESAL_TAC th[`2`;`0`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ 0<4/\ 1<4/\ 2<4/\ 3<4`]
2052 THEN MRESAL_TAC th[`3`;`0`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ 0<4/\ 1<4/\ 2<4/\ 3<4`]
2053 THEN MRESAL_TAC th[`2`;`3`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ 0<4/\ 1<4/\ 2<4/\ 3<4`])
2054 THEN  SIMP_TAC[HAS_SIZE; CARD_CLAUSES; FINITE_INSERT; FINITE_EMPTY;
2055                  IN_INSERT; NOT_IN_EMPTY]
2056 THEN ASM_REWRITE_TAC[]
2057 THEN ARITH_TAC;
2058
2059 POP_ASSUM(fun th-> ASM_TAC
2060 THEN REWRITE_TAC[th]
2061 THEN ASSUME_TAC th)
2062 THEN REPEAT STRIP_TAC
2063 THEN ABBREV_TAC`v=vector[(vv:num->real^3) 1;(vv:num->real^3) 2;(vv:num->real^3) 3;(vv:num->real^3) 4;(vv:num->real^3) 0]:real^3^(2+3)`
2064 THEN ABBREV_TAC`a=matvec (v:real^3^(2+3))`
2065 THEN MP_TAC(INST_TYPE [`:2+3`,`:M`]V_E_FF_IS_SCS_CASES_5)
2066 THEN ASM_REWRITE_TAC[Basics.DIMINDEX_5;IN]
2067 THEN STRIP_TAC 
2068 THEN MRESAL_TAC (INST_TYPE [`:2+3`,`:M`]VECTOR_3_5)[`(vv:num->real^3) 1`;`(vv:num->real^3) 2`;`(vv:num->real^3) 3`;`(vv:num->real^3) 4`;`(vv:num->real^3) 0`;][ARITH_RULE`1<=5/\ 2<=5/\ 3<=5/\ 4<=5/\ 5<=5/\ 0 MOD 5= 0 /\ 1 MOD 5= 1 /\ 2 MOD 5= 2/\ 3 MOD 5= 3 /\ 4 MOD 5= 4 /\ 5 MOD 5=0 /\ ~(2=1)
2069 /\ SUC 0 MOD 5= 1 /\ SUC 1 MOD 5= 2 /\ SUC 2 MOD 5= 3/\ SUC 3 MOD 5= 4
2070 /\ SUC 4 MOD 5= 0 /\ SUC 5 MOD 5 = 1 /\ ~(3=1)/\ ~(1=0)`;SET_RULE`(a:num) IN (:num)`;Basics.DIMINDEX_5]
2071 THEN EXPAND_TAC "V"
2072 THEN REWRITE_TAC[V_SY;rows;Basics.DIMINDEX_5;ARITH_RULE`1<=i /\ i<=5 <=> i=1\/ i=2\/ i=3 \/ i=4 \/ i=5`;SET_RULE`{row i v | i = 1 \/ i = 2 \/ i = 3 \/ i = 4\/ i=5}={row 1 v, row 2 v, row 3 v,row 4 v, row 5 v}`]
2073 THEN ASM_REWRITE_TAC[]
2074 THEN MP_TAC VV_INJ
2075 THEN RESA_TAC
2076 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`1`;`2`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ 0<5/\ 1<5/\ 2<5/\ 3<5/\ 4<5 /\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)`]
2077 THEN MRESAL_TAC th[`1`;`3`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ 0<5/\ 1<5/\ 2<5/\ 3<5/\ 4<5 /\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)`]
2078 THEN MRESAL_TAC th[`1`;`0`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ 0<5/\ 1<5/\ 2<5/\ 3<5/\ 4<5 /\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)`]
2079 THEN MRESAL_TAC th[`2`;`0`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ 0<5/\ 1<5/\ 2<5/\ 3<5/\ 4<5 /\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)`]
2080 THEN MRESAL_TAC th[`3`;`0`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ 0<5/\ 1<5/\ 2<5/\ 3<5/\ 4<5 /\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)`]
2081 THEN MRESAL_TAC th[`2`;`3`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ 0<5/\ 1<5/\ 2<5/\ 3<5/\ 4<5 /\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)`]
2082 THEN MRESAL_TAC th[`1`;`4`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ 0<5/\ 1<5/\ 2<5/\ 3<5/\ 4<5 /\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)`]
2083 THEN MRESAL_TAC th[`2`;`4`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ 0<5/\ 1<5/\ 2<5/\ 3<5/\ 4<5 /\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)`]
2084 THEN MRESAL_TAC th[`3`;`4`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ 0<5/\ 1<5/\ 2<5/\ 3<5/\ 4<5 /\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)`]
2085 THEN MRESAL_TAC th[`0`;`4`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ 0<5/\ 1<5/\ 2<5/\ 3<5/\ 4<5 /\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)`])
2086 THEN  SIMP_TAC[HAS_SIZE; CARD_CLAUSES; FINITE_INSERT; FINITE_EMPTY;
2087                  IN_INSERT; NOT_IN_EMPTY]
2088 THEN ASM_REWRITE_TAC[]
2089 THEN ARITH_TAC;
2090
2091 POP_ASSUM(fun th-> ASM_TAC
2092 THEN REWRITE_TAC[th]
2093 THEN ASSUME_TAC th)
2094 THEN REPEAT STRIP_TAC
2095 THEN ABBREV_TAC`v=vector[(vv:num->real^3) 1;(vv:num->real^3) 2;(vv:num->real^3) 3;(vv:num->real^3) 4;(vv:num->real^3) 5;(vv:num->real^3) 0]:real^3^(3+3)`
2096 THEN ABBREV_TAC`a=matvec (v:real^3^(3+3))`
2097 THEN MP_TAC(INST_TYPE [`:3+3`,`:M`]V_E_FF_IS_SCS_CASES_6)
2098 THEN ASM_REWRITE_TAC[Basics.DIMINDEX_6;IN]
2099 THEN STRIP_TAC 
2100 THEN MRESAL_TAC (INST_TYPE [`:3+3`,`:M`]VECTOR_3_6)[`(vv:num->real^3) 1`;`(vv:num->real^3) 2`;`(vv:num->real^3) 3`;`(vv:num->real^3) 4`;`(vv:num->real^3) 5`;`(vv:num->real^3) 0`][ARITH_RULE`1<=6/\ 2<=6/\ 3<=6/\ 4<=6/\ 5<=6 /\ 6<=6 /\ 0 MOD 6= 0 /\ 1 MOD 6= 1 /\ 2 MOD 6= 2/\ 3 MOD 6= 3 /\ 4 MOD 6= 4 /\ 5 MOD 6=5 /\ 6 MOD 6=0 /\ ~(2=1)
2101 /\ SUC 0 MOD 6= 1 /\ SUC 1 MOD 6= 2 /\ SUC 2 MOD 6= 3/\ SUC 3 MOD 6= 4
2102 /\ SUC 4 MOD 6= 5 /\ SUC 5 MOD 6 = 0 /\ SUC 6 MOD 6 =1 /\ ~(3=1)/\ ~(1=0)`;Basics.DIMINDEX_6]
2103 THEN EXPAND_TAC "V"
2104 THEN REWRITE_TAC[V_SY;rows;Basics.DIMINDEX_6;ARITH_RULE`1<=i /\ i<=6 <=> i=1\/ i=2\/ i=3 \/ i=4 \/ i=5\/ i=6`;SET_RULE`{row i v | i = 1 \/ i = 2 \/ i = 3 \/ i = 4\/ i=5 \/ i=6}={row 1 v, row 2 v, row 3 v,row 4 v, row 5 v, row 6 v}`]
2105 THEN ASM_REWRITE_TAC[]
2106 THEN MP_TAC VV_INJ
2107 THEN RESA_TAC
2108 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`1`;`2`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0) /\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)/\ 0<6/\ 1<6/\ 2<6/\ 3<6/\ 4<6/\ 5<6 /\ ~(0=5) /\ ~(1=5) /\ ~(2=5)/\ ~(3=5)/\ ~(4=5)`]
2109 THEN MRESAL_TAC th[`1`;`3`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)/\ 0<6/\ 1<6/\ 2<6/\ 3<6/\ 4<6/\ 5<6 /\ ~(0=5) /\ ~(1=5) /\ ~(2=5)/\ ~(3=5)/\ ~(4=5)`]
2110 THEN MRESAL_TAC th[`1`;`0`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)/\ 0<6/\ 1<6/\ 2<6/\ 3<6/\ 4<6/\ 5<6 /\ ~(0=5) /\ ~(1=5) /\ ~(2=5)/\ ~(3=5)/\ ~(4=5)`]
2111 THEN MRESAL_TAC th[`2`;`0`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)/\ 0<6/\ 1<6/\ 2<6/\ 3<6/\ 4<6/\ 5<6 /\ ~(0=5) /\ ~(1=5) /\ ~(2=5)/\ ~(3=5)/\ ~(4=5)`]
2112 THEN MRESAL_TAC th[`3`;`0`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)/\ 0<6/\ 1<6/\ 2<6/\ 3<6/\ 4<6/\ 5<6 /\ ~(0=5) /\ ~(1=5) /\ ~(2=5)/\ ~(3=5)/\ ~(4=5)`]
2113 THEN MRESAL_TAC th[`2`;`3`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)/\ 0<6/\ 1<6/\ 2<6/\ 3<6/\ 4<6/\ 5<6 /\ ~(0=5) /\ ~(1=5) /\ ~(2=5)/\ ~(3=5)/\ ~(4=5)`]
2114 THEN MRESAL_TAC th[`1`;`4`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)/\ 0<6/\ 1<6/\ 2<6/\ 3<6/\ 4<6/\ 5<6 /\ ~(0=5) /\ ~(1=5) /\ ~(2=5)/\ ~(3=5)/\ ~(4=5)`]
2115 THEN MRESAL_TAC th[`2`;`4`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)/\ 0<6/\ 1<6/\ 2<6/\ 3<6/\ 4<6/\ 5<6 /\ ~(0=5) /\ ~(1=5) /\ ~(2=5)/\ ~(3=5)/\ ~(4=5)`]
2116 THEN MRESAL_TAC th[`3`;`4`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)/\ 0<6/\ 1<6/\ 2<6/\ 3<6/\ 4<6/\ 5<6 /\ ~(0=5) /\ ~(1=5) /\ ~(2=5)/\ ~(3=5)/\ ~(4=5)`]
2117 THEN MRESAL_TAC th[`0`;`4`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)/\ 0<6/\ 1<6/\ 2<6/\ 3<6/\ 4<6/\ 5<6 /\ ~(0=5) /\ ~(1=5) /\ ~(2=5)/\ ~(3=5)/\ ~(4=5)`]
2118 THEN MRESAL_TAC th[`1`;`5`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)/\ 0<6/\ 1<6/\ 2<6/\ 3<6/\ 4<6/\ 5<6 /\ ~(0=5) /\ ~(1=5) /\ ~(2=5)/\ ~(3=5)/\ ~(4=5)`]
2119 THEN MRESAL_TAC th[`2`;`5`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)/\ 0<6/\ 1<6/\ 2<6/\ 3<6/\ 4<6/\ 5<6 /\ ~(0=5) /\ ~(1=5) /\ ~(2=5)/\ ~(3=5)/\ ~(4=5)`]
2120 THEN MRESAL_TAC th[`3`;`5`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)/\ 0<6/\ 1<6/\ 2<6/\ 3<6/\ 4<6/\ 5<6 /\ ~(0=5) /\ ~(1=5) /\ ~(2=5)/\ ~(3=5)/\ ~(4=5)`]
2121 THEN MRESAL_TAC th[`0`;`5`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)/\ 0<6/\ 1<6/\ 2<6/\ 3<6/\ 4<6/\ 5<6 /\ ~(0=5) /\ ~(1=5) /\ ~(2=5)/\ ~(3=5)/\ ~(4=5)`]
2122 THEN MRESAL_TAC th[`4`;`5`][ARITH_RULE`~(1=2)/\ ~(1=0) /\ ~(1=3)/\ ~(2=3)/\ ~(2=0)/\ ~(3=0)/\ ~(3=4)/\ ~(1=4)/\ ~(2=4)/\ ~(0=4)/\ 0<6/\ 1<6/\ 2<6/\ 3<6/\ 4<6/\ 5<6 /\ ~(0=5) /\ ~(1=5) /\ ~(2=5)/\ ~(3=5)/\ ~(4=5)`])
2123 THEN  SIMP_TAC[HAS_SIZE; CARD_CLAUSES; FINITE_INSERT; FINITE_EMPTY;
2124                  IN_INSERT; NOT_IN_EMPTY]
2125 THEN ASM_REWRITE_TAC[]
2126 THEN ARITH_TAC]);;
2127
2128
2129
2130
2131
2132 let CARD_FF_EQ_WW_DEFORMATION=prove(`
2133 scs_k_v39 s =k /\
2134  IMAGE (w:num->real^3) (:num)=V/\
2135         is_scs_v39 s /\
2136 3< k/\
2137         BBs_v39 s w /\(!t. &0 < t /\ t < e1 ==> BBs_v39 s (\i. ww_defor (w l) (w i) t))
2138 ==> (!t. &0< t/\ t< e1==>
2139 CARD               (IMAGE
2140                       (\i. ww_defor ((w:num->real^3) l) (w i) t,
2141                            ww_defor (w l) (w (SUC i)) t)
2142                      (:num))
2143 =CARD(IMAGE (\i. w i,w (SUC i)) (:num)))`,
2144
2145 STRIP_TAC
2146 THEN GEN_TAC
2147 THEN POP_ASSUM(fun th-> STRIP_TAC
2148 THEN MRESA_TAC th[`t:real`])
2149 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`]
2150 THEN MRESA_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`(\i. ww_defor ((w:num->real^3) l) (w i) t)`;`IMAGE ((\i. ww_defor ((w:num->real^3) l) (w i) t)) (:num)`;`k:num`]
2151 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<= 3)`)
2152 THEN RESA_TAC
2153 THEN POP_ASSUM(fun th-> ASM_TAC
2154 THEN ASSUME_TAC(th)
2155 THEN REPEAT RESA_TAC)
2156 THEN ASM_TAC
2157 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39;convex_local_fan]
2158 THEN REPEAT RESA_TAC
2159 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOFA_IMP_CARD_FF_V_EQ)
2160 [`IMAGE (\i. {ww_defor ((w:num->real^3) l) (w i) t, ww_defor (w l) (w (SUC i)) t})
2161        (:num)`;`IMAGE (\i. ww_defor ((w:num->real^3) l) (w i) t,ww_defor (w l) (w (SUC i)) t) (:num)`;`IMAGE (\i. ww_defor (w l) ((w:num->real^3) i) t) (:num)`]
2162 THEN MRESA_TAC(GEN_ALL Local_lemmas.LOFA_IMP_CARD_FF_V_EQ)
2163 [`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`]);;
2164
2165
2166
2167
2168
2169 let DSV_WW_DEFOR_EQ=prove_by_refinement(`
2170 scs_k_v39 s=k/\
2171   is_scs_v39 s /\
2172   BBs_v39 s w /\
2173 (!i. ~(scs_J_v39 s l i))
2174 ==>
2175 dsv_v39 s (\i. ww_defor (w l) (w i) t) = dsv_v39 s w`,
2176 [
2177 REWRITE_TAC[dsv_v39]
2178 THEN STRIP_TAC
2179 THEN MATCH_MP_TAC(REAL_ARITH`a=b==> c+a=c+b`)
2180 THEN MP_TAC(SET_RULE`is_ear_v39 s\/ ~(is_ear_v39 s)`)
2181 THEN RESA_TAC
2182 THEN MATCH_MP_TAC(REAL_ARITH`a=b==> #0.1*a= #0.1*b`);
2183
2184 REWRITE_TAC[REAL_ARITH`&1 *a=a`]
2185 THEN MATCH_MP_TAC SUM_EQ
2186 THEN REWRITE_TAC[IN_ELIM_THM]
2187 THEN REPEAT STRIP_TAC
2188 THEN MP_TAC(SET_RULE`(w:num->real^3) l= w x\/ ~(w l =w x)`)
2189 THEN RESA_TAC;
2190
2191 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
2192 THEN ASM_TAC
2193 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
2194 THEN REPEAT RESA_TAC
2195 THEN MP_TAC(ARITH_RULE`3<=k ==> ~(k=0)`)
2196 THEN RESA_TAC
2197 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2198 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
2199 THEN MRESA_TAC DIVISION[`l:num`;`scs_k_v39 s`]
2200 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
2201 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2202 THEN MRESA_TAC th[`l MOD k:num`;`x:num`])
2203 THEN REPLICATE_TAC (34-25) (POP_ASSUM MP_TAC)
2204 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2205 THEN MRESA_TAC th[`SUC x:num`;])
2206 THEN POP_ASSUM MP_TAC
2207 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_J_v39 s (SUC x)`][ARITH_RULE`~(4=0)`;periodic]
2208 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]);
2209
2210 MP_TAC(SET_RULE`(w:num->real^3) l= w (SUC x)\/ ~(w l =w (SUC x))`)
2211 THEN RESA_TAC;
2212
2213
2214 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
2215 THEN ASM_TAC
2216 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
2217 THEN REPEAT RESA_TAC
2218 THEN MP_TAC(ARITH_RULE`3<=k ==> ~(k=0)`)
2219 THEN RESA_TAC
2220 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2221 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
2222 THEN POP_ASSUM MP_TAC
2223 THEN MRESAL1_TAC th`SUC x:num`[ARITH_RULE`4 MOD 4=0`])
2224 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
2225 THEN STRIP_TAC
2226 THEN MRESA_TAC DIVISION[`l:num`;`scs_k_v39 s`]
2227 THEN MRESA_TAC DIVISION[`SUC x:num`;`scs_k_v39 s`]
2228 THEN REPLICATE_TAC (6) (POP_ASSUM MP_TAC)
2229 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2230 THEN MRESA_TAC th[`l MOD k:num`;`SUC x MOD k:num`])
2231 THEN REPLICATE_TAC (37-25) (POP_ASSUM MP_TAC)
2232 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2233 THEN MRESA_TAC th[`x:num`;])
2234 THEN POP_ASSUM MP_TAC
2235 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_J_v39 s (x)`][ARITH_RULE`~(4=0)`;periodic]
2236 THEN POP_ASSUM (fun th-> 
2237 MRESAL1_TAC th`SUC x:num`[ARITH_RULE`4 MOD 4=0`]
2238 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
2239 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th]);
2240
2241 ASM_REWRITE_TAC[ww_defor];
2242
2243
2244 REWRITE_TAC[REAL_ARITH`-- &1 *a= -- &1 * b<=> a=b`]
2245 THEN MATCH_MP_TAC SUM_EQ
2246 THEN REWRITE_TAC[IN_ELIM_THM]
2247 THEN REPEAT STRIP_TAC
2248 THEN MP_TAC(SET_RULE`(w:num->real^3) l= w x\/ ~(w l =w x)`)
2249 THEN RESA_TAC;
2250
2251 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
2252 THEN ASM_TAC
2253 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
2254 THEN REPEAT RESA_TAC
2255 THEN MP_TAC(ARITH_RULE`3<=k ==> ~(k=0)`)
2256 THEN RESA_TAC
2257 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2258 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
2259 THEN MRESA_TAC DIVISION[`l:num`;`scs_k_v39 s`]
2260 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
2261 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2262 THEN MRESA_TAC th[`l MOD k:num`;`x:num`])
2263 THEN REPLICATE_TAC (34-25) (POP_ASSUM MP_TAC)
2264 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2265 THEN MRESA_TAC th[`SUC x:num`;])
2266 THEN POP_ASSUM MP_TAC
2267 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_J_v39 s (SUC x)`][ARITH_RULE`~(4=0)`;periodic]
2268 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]);
2269
2270 MP_TAC(SET_RULE`(w:num->real^3) l= w (SUC x)\/ ~(w l =w (SUC x))`)
2271 THEN RESA_TAC;
2272
2273
2274 MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
2275 THEN ASM_TAC
2276 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
2277 THEN REPEAT RESA_TAC
2278 THEN MP_TAC(ARITH_RULE`3<=k ==> ~(k=0)`)
2279 THEN RESA_TAC
2280 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2281 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
2282 THEN POP_ASSUM MP_TAC
2283 THEN MRESAL1_TAC th`SUC x:num`[ARITH_RULE`4 MOD 4=0`])
2284 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
2285 THEN STRIP_TAC
2286 THEN MRESA_TAC DIVISION[`l:num`;`scs_k_v39 s`]
2287 THEN MRESA_TAC DIVISION[`SUC x:num`;`scs_k_v39 s`]
2288 THEN REPLICATE_TAC (6) (POP_ASSUM MP_TAC)
2289 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2290 THEN MRESA_TAC th[`l MOD k:num`;`SUC x MOD k:num`])
2291 THEN REPLICATE_TAC (37-25) (POP_ASSUM MP_TAC)
2292 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2293 THEN MRESA_TAC th[`x:num`;])
2294 THEN POP_ASSUM MP_TAC
2295 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_J_v39 s (x)`][ARITH_RULE`~(4=0)`;periodic]
2296 THEN POP_ASSUM (fun th-> 
2297 MRESAL1_TAC th`SUC x:num`[ARITH_RULE`4 MOD 4=0`]
2298 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
2299 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th]);
2300
2301
2302 ASM_REWRITE_TAC[ww_defor]]);;
2303
2304
2305
2306
2307 let INTERIOR_ANGLE_SAME_WW_DEFOR0=prove_by_refinement(`
2308 3<k/\
2309 is_scs_v39 s/\
2310 scs_k_v39 s = k/\
2311 BBs_v39 s w/\
2312 BBs_v39 s (\i. ww_defor (w l) (w i) t)/\
2313 IMAGE (\i. w i,w (SUC i)) (:num) = FF/\
2314 t< &1
2315 ==> 
2316 interior_angle1 (vec 0)
2317  (IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) (w (SUC i)) t) (:num))
2318  (ww_defor (w l) (w (l MOD k)) t) =
2319  interior_angle1 (vec 0) FF (w (l MOD k))`,
2320 [
2321 STRIP_TAC
2322 THEN ASM_TAC
2323 THEN STRIP_TAC
2324 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)`)
2325 THEN RESA_TAC
2326 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39]
2327 THEN REPEAT RESA_TAC
2328 THEN SUBGOAL_THEN`w (l MOD k) IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
2329
2330 REWRITE_TAC[IMAGE;IN_ELIM_THM]
2331 THEN EXISTS_TAC`l MOD k`
2332 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
2333
2334 REPLICATE_TAC (14-7)(POP_ASSUM MP_TAC)
2335 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2336 THEN MP_TAC th
2337 THEN REWRITE_TAC[convex_local_fan;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2338 THEN ASSUME_TAC th
2339 THEN STRIP_TAC)
2340 THEN REPLICATE_TAC (16-10)(POP_ASSUM MP_TAC)
2341 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2342 THEN MP_TAC th
2343 THEN REWRITE_TAC[convex_local_fan;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2344 THEN ASSUME_TAC th
2345 THEN STRIP_TAC)
2346 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;BBs_v39]
2347 THEN MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`(\i. ww_defor ((w:num->real^3) l) (w i) t)`;`IMAGE ((\i. ww_defor ((w:num->real^3) l) (w i) t)) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39]
2348 THEN MRESA_TAC(GEN_ALL Nkezbfc_local.CONVEX_LOFA_IMP_INANGLE_EQ_AZIM_IVS)
2349 [`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)`]
2350 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3) (l MOD k)`])
2351 THEN  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)`]
2352 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3) (l MOD k)`])
2353 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]
2354 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`SUC 0`][ITER] THEN MRESA_TAC th[`k-1`])
2355 THEN SUBGOAL_THEN`(&1-t) %((w:num->real^3) (l MOD k)) IN IMAGE (\i. ww_defor (w l) (w i) t) (:num)`ASSUME_TAC;
2356
2357 REWRITE_TAC[IMAGE;IN_ELIM_THM]
2358 THEN EXISTS_TAC`l MOD k`
2359 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`;ww_defor]
2360 THEN ASM_TAC
2361 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
2362 THEN REPEAT RESA_TAC
2363 THEN MP_TAC(ARITH_RULE`3<k ==> ~(k=0)`)
2364 THEN RESA_TAC
2365 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;];
2366
2367 SUBGOAL_THEN`ww_defor (w l) (w (l MOD k)) t =(&1-t) %((w:num->real^3) (l MOD k))` ASSUME_TAC;
2368
2369 ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`;ww_defor]
2370 THEN ASM_TAC
2371 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
2372 THEN REPEAT RESA_TAC
2373 THEN MP_TAC(ARITH_RULE`3<k ==> ~(k=0)`)
2374 THEN RESA_TAC
2375 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;];
2376
2377 MRESA_TAC(GEN_ALL Nkezbfc_local.CONVEX_LOFA_IMP_INANGLE_EQ_AZIM_IVS)
2378 [`IMAGE (\i. {ww_defor (w l) (w i) t, ww_defor ((w:num->real^3) l) (w (SUC i)) t}) (:num)`;`IMAGE (\i. ww_defor (w l) ((w:num->real^3) i) t) (:num)`;`IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) ((w:num->real^3) (SUC i)) t) (:num)`]
2379 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(&1-t) %((w:num->real^3) (l MOD k))`])
2380 THEN  MRESA_TAC (GEN_ALL Local_lemmas.ITER_CARD_MINUS1_EQ_IVS_RN1)
2381 [`IMAGE (\i. {ww_defor (w l) (w i) t, ww_defor ((w:num->real^3) l) (w (SUC i)) t}) (:num)`;`IMAGE (\i. ww_defor (w l) ((w:num->real^3) i) t) (:num)`;`IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) ((w:num->real^3) (SUC i)) t) (:num)`]
2382 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(&1-t) %((w:num->real^3) (l MOD k))`])
2383 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)
2384 [`IMAGE (\i. ww_defor (w l) ((w:num->real^3) i) t) (:num)`;`IMAGE (\i. {ww_defor (w l) (w i) t, ww_defor ((w:num->real^3) l) (w (SUC i)) t}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) ((w:num->real^3) (SUC i)) t) (:num)`;`(\i. ww_defor (w l) ((w:num->real^3) i) t) (l MOD k)`;`(\i. ww_defor (w l) ((w:num->real^3) i) t)`;`l MOD k`]
2385 [MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39]
2386 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`SUC 0`][ITER] THEN MRESA_TAC th[`k-1`])
2387 THEN MP_TAC(ARITH_RULE`3<k==> 1<k/\ k-1<k/\ 0< k-1/\ ~(k=0)`)
2388 THEN RESA_TAC
2389 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOFA_IMP_DIS_ELMS23)
2390 [`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)`]
2391 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`0:num`;`SUC 0`][ITER;ARITH_RULE`0< SUC 0/\ SUC 0=1`]
2392 THEN MRESAL_TAC th[`0`;`k-1`][ITER])
2393 THEN ASM_REWRITE_TAC[ww_defor]
2394 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2395 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
2396 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
2397 THEN MRESAL_TAC (GEN_ALL AZIM_SCALE_ALL)[`&1`;`&1`;`&1-t`;`(w:num->real^3) (l MOD k)`;`(w:num->real^3) (1+l MOD k)`;`(w:num->real^3) (k-1+l MOD k)`][VECTOR_ARITH`&1 % v=v`;REAL_ARITH`&0< &1/\ (&0< &1-t<=> t< &1)`]]);;
2398
2399
2400
2401
2402 let INTERIOR_ANGLE_SAME_WW_DEFOR1=prove_by_refinement(`
2403 3<k/\
2404 is_scs_v39 s/\
2405 scs_k_v39 s = k/\
2406 BBs_v39 s w/\
2407 BBs_v39 s (\i. ww_defor (w l) (w i) t)/\
2408 IMAGE (\i. w i,w (SUC i)) (:num) = FF/\
2409 t< &1 /\ 1<=i /\ i< k
2410 ==> 
2411 interior_angle1 (vec 0)
2412       (IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) (w (SUC i)) t)
2413       (:num))
2414       (ITER i
2415        (rho_node1
2416        (IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) (w (SUC i)) t)
2417        (:num)))
2418       (ww_defor (w l) (w (l MOD k)) t)) =
2419 interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) (w (l MOD k)))`,
2420 [
2421 STRIP_TAC
2422 THEN ASM_TAC
2423 THEN STRIP_TAC
2424 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)`)
2425 THEN RESA_TAC
2426 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39]
2427 THEN REPEAT RESA_TAC
2428 THEN SUBGOAL_THEN`w (l MOD k) IN IMAGE (w:num->real^3) (:num)`ASSUME_TAC;
2429
2430 REWRITE_TAC[IMAGE;IN_ELIM_THM]
2431 THEN EXISTS_TAC`l MOD k`
2432 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
2433
2434 REPLICATE_TAC (16-7)(POP_ASSUM MP_TAC)
2435 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2436 THEN MP_TAC th
2437 THEN REWRITE_TAC[convex_local_fan;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2438 THEN ASSUME_TAC th
2439 THEN STRIP_TAC)
2440 THEN REPLICATE_TAC (18-10)(POP_ASSUM MP_TAC)
2441 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2442 THEN MP_TAC th
2443 THEN REWRITE_TAC[convex_local_fan;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2444 THEN ASSUME_TAC th
2445 THEN STRIP_TAC)
2446 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;BBs_v39]
2447 THEN MRESAL_TAC(GEN_ALL CARD_V_EQ_SCS_K1)[`s:scs_v39`;`(\i. ww_defor ((w:num->real^3) l) (w i) t)`;`IMAGE ((\i. ww_defor ((w:num->real^3) l) (w i) t)) (:num)`;`k:num`][MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39]
2448 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_ITER_RHO_NODE_IN_V)
2449 [`IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`;`IMAGE (\i. w i,(w:num->real^3) (SUC i)) (:num)`;`(w:num->real^3)(l MOD k)`;`IMAGE (w:num->real^3) (:num)`;]
2450 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i:num`])
2451 THEN MRESA_TAC(GEN_ALL Nkezbfc_local.CONVEX_LOFA_IMP_INANGLE_EQ_AZIM_IVS)
2452 [`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)`]
2453 THEN POP_ASSUM(fun th-> MRESA_TAC th[`ITER i (rho_node1 FF)((w:num->real^3) (l MOD k))`])
2454 THEN  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)`]
2455 THEN POP_ASSUM(fun th-> MRESA_TAC th[`ITER i (rho_node1 FF)((w:num->real^3) (l MOD k))`])
2456 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;ITER_ADD])
2457 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]
2458 THEN POP_ASSUM(fun th-> MRESA_TAC th[`i:num`] THEN MRESAL_TAC th[`SUC(i)`][ITER] THEN MRESA_TAC th[`k-1+i`] THEN MRESA_TAC th[`SUC i:num`] THEN MRESA_TAC th[`k-2:num`]
2459 THEN MRESA_TAC th[`i-1:num`])
2460 THEN SUBGOAL_THEN`(&1-t) %((w:num->real^3) (l MOD k)) IN IMAGE (\i. ww_defor (w l) (w i) t) (:num)`ASSUME_TAC;
2461
2462 REWRITE_TAC[IMAGE;IN_ELIM_THM]
2463 THEN EXISTS_TAC`l MOD k`
2464 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`;ww_defor]
2465 THEN ASM_TAC
2466 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
2467 THEN REPEAT RESA_TAC
2468 THEN MP_TAC(ARITH_RULE`3<k ==> ~(k=0)`)
2469 THEN RESA_TAC
2470 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;];
2471
2472 SUBGOAL_THEN`ww_defor (w l) (w (l MOD k)) t =(&1-t) %((w:num->real^3) (l MOD k))` ASSUME_TAC;
2473
2474 ASM_REWRITE_TAC[SET_RULE`(a:num)IN (:num)`;ww_defor]
2475 THEN ASM_TAC
2476 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;is_scs_v39]
2477 THEN REPEAT RESA_TAC
2478 THEN MP_TAC(ARITH_RULE`3<k ==> ~(k=0)`)
2479 THEN RESA_TAC
2480 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;];
2481
2482
2483 MRESA_TAC (GEN_ALL Local_lemmas.LOCAL_FAN_ITER_RHO_NODE_IN_V)
2484 [`IMAGE (\i. {ww_defor (w l) (w i) t, ww_defor ((w:num->real^3) l) (w (SUC i)) t}) (:num)`;`IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) ((w:num->real^3) (SUC i)) t) (:num)`;`(&1 - t) % (w:num->real^3) (l MOD k)`;`IMAGE (\i. ww_defor (w l) ((w:num->real^3) i) t) (:num)`]
2485 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i:num`])
2486 THEN MRESA_TAC(GEN_ALL Nkezbfc_local.CONVEX_LOFA_IMP_INANGLE_EQ_AZIM_IVS)
2487 [`IMAGE (\i. {ww_defor (w l) (w i) t, ww_defor ((w:num->real^3) l) (w (SUC i)) t}) (:num)`;`IMAGE (\i. ww_defor (w l) ((w:num->real^3) i) t) (:num)`;`IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) ((w:num->real^3) (SUC i)) t) (:num)`]
2488 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(ITER i
2489   (rho_node1
2490   (IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) (w (SUC i)) t) (:num)))
2491  ((&1 - t) % w (l MOD k)))
2492 `])
2493 THEN  MRESA_TAC (GEN_ALL Local_lemmas.ITER_CARD_MINUS1_EQ_IVS_RN1)
2494 [`IMAGE (\i. {ww_defor (w l) (w i) t, ww_defor ((w:num->real^3) l) (w (SUC i)) t}) (:num)`;`IMAGE (\i. ww_defor (w l) ((w:num->real^3) i) t) (:num)`;`IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) ((w:num->real^3) (SUC i)) t) (:num)`]
2495 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(ITER i
2496   (rho_node1
2497   (IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) (w (SUC i)) t) (:num)))
2498  ((&1 - t) % w (l MOD k)))
2499 `])
2500 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;ITER_ADD])
2501 THEN MRESAL_TAC (GEN_ALL Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME)
2502 [`IMAGE (\i. ww_defor (w l) ((w:num->real^3) i) t) (:num)`;`IMAGE (\i. {ww_defor (w l) (w i) t, ww_defor ((w:num->real^3) l) (w (SUC i)) t}) (:num)`;`k:num`;`s:scs_v39`;`IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) ((w:num->real^3) (SUC i)) t) (:num)`;`(\i. ww_defor (w l) ((w:num->real^3) i) t) (l MOD k)`;`(\i. ww_defor (w l) ((w:num->real^3) i) t)`;`l MOD k`]
2503 [MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBs_v39]
2504 THEN POP_ASSUM(fun th-> MRESA_TAC th[`i:num`] THEN MRESAL_TAC th[`SUC(i)`][ITER] THEN MRESA_TAC th[`k-1+i`])
2505 THEN MP_TAC(ARITH_RULE`3<k==> k-1+1=k/\ k-1<k/\ 0< k-1/\ ~(k=0)/\ 1<k/\ 2<k/\ SUC(k-1)=k/\ 0< k-2/\ k-2<k/\ k-1+k-1=k+(k-2)`)
2506 THEN RESA_TAC
2507 THEN MP_TAC(ARITH_RULE`1<=i/\ i<k /\ 3<k==> i=1\/ i=k-1\/ (1<i/\ i< k-1)`)
2508 THEN RESA_TAC;
2509
2510
2511 MRESA_TAC (GEN_ALL Local_lemmas.LOFA_IMP_DIS_ELMS23)
2512 [`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)`]
2513 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`0:num`;`i:num `][ITER;ARITH_RULE`0< 1/\ SUC 0=1`]
2514 THEN MRESAL_TAC th[`0`;`SUC(i)`][ARITH_RULE`SUC 1=2/\ 0<2`;ITER])
2515 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2516 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
2517 THEN MRESAL1_TAC th`(k-1+ i) + l MOD k:num`[ARITH_RULE`4 MOD 4=0`])
2518 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
2519 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
2520 THEN MRESAL_TAC MOD_MULT_ADD[`1`;`k:num`;`l MOD k`][ARITH_RULE`1*k=k/\ SUC 1=2`]
2521 THEN MRESA_TAC MOD_MOD_REFL[`l:num`;`k:num`]
2522 THEN ASM_REWRITE_TAC[ww_defor]
2523 THEN MRESAL_TAC (GEN_ALL AZIM_SCALE_ALL)[`&1`;`&1-t`;`&1`;`(w:num->real^3) (1+l MOD k)`;`(w:num->real^3) (2+l MOD k)`;`(w:num->real^3) (l MOD k)`][VECTOR_ARITH`&1 % v=v`;REAL_ARITH`&0< &1/\ (&0< &1-t<=> t< &1)`];
2524
2525
2526 MRESA_TAC (GEN_ALL Local_lemmas.LOFA_IMP_DIS_ELMS23)
2527 [`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)`]
2528 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`0:num`;`i:num `][ITER;ARITH_RULE`0< 1/\ SUC 0=1`]
2529 THEN MRESAL_TAC th[`0`;`k-2`][ARITH_RULE`SUC 1=2/\ 0<2`;ITER])
2530 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2531 THEN POP_ASSUM (fun th-> 
2532 MRESAL1_TAC th`k-2 + l MOD k:num`[ARITH_RULE`4 MOD 4=0`]
2533 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
2534 THEN MRESAL1_TAC th`(k-1+ k-1) + l MOD k:num`[ARITH_RULE`4 MOD 4=0`]
2535 THEN MRESAL1_TAC th`k + l MOD k:num`[ARITH_RULE`4 MOD 4=0`])
2536 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
2537 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
2538 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
2539 THEN MRESAL_TAC MOD_MULT_ADD[`1`;`k:num`;`l MOD k`][ARITH_RULE`1*k=k/\ SUC 1=2`]
2540 THEN MRESA_TAC MOD_MOD_REFL[`l:num`;`k:num`]
2541 THEN MRESAL_TAC MOD_MULT_ADD[`1`;`k:num`;`k-2+l MOD k`][ARITH_RULE`1*k=k/\ SUC 1=2`;ARITH_RULE`(k + k - 2) + l MOD k=k + k - 2 + l MOD k`]
2542 THEN ASM_REWRITE_TAC[ww_defor]
2543 THEN MRESAL_TAC (GEN_ALL AZIM_SCALE_ALL)[`&1-t`;`&1`;`&1`;`(w:num->real^3) (k-1+l MOD k)`;`(w:num->real^3) (l MOD k)`;`(w:num->real^3) (k-2+l MOD k)`][VECTOR_ARITH`&1 % v=v`;REAL_ARITH`&0< &1/\ (&0< &1-t<=> t< &1)`];
2544
2545 MP_TAC(ARITH_RULE`1<i/\ i< k-1==> 0<i-1/\ i-1<k/\ 0<i/\ 0< SUC i/\ SUC i< k/\ (k - 1 + i) + l MOD k= k+(i-1)+l MOD k`)
2546 THEN RESA_TAC
2547 THEN MRESA_TAC (GEN_ALL Local_lemmas.LOFA_IMP_DIS_ELMS23)
2548 [`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)`]
2549 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`0:num`;`i:num `][ITER;ARITH_RULE`0< 1/\ SUC 0=1`]
2550 THEN MRESAL_TAC th[`0`;`SUC i`][ARITH_RULE`SUC 1=2/\ 0<2`;ITER]
2551 THEN MRESAL_TAC th[`0`;`i-1`][ARITH_RULE`SUC 1=2/\ 0<2`;ITER])
2552 THEN MRESAL_TAC MOD_MULT_ADD[`1`;`k:num`;`i-1+l MOD k`][ARITH_RULE`1*k=k/\ SUC 1=2`]
2553 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2554 THEN POP_ASSUM (fun th-> 
2555 MRESAL1_TAC th`i-1 + l MOD k:num`[ARITH_RULE`4 MOD 4=0`]
2556 THEN MRESAL1_TAC th`k+i-1 + l MOD k:num`[ARITH_RULE`4 MOD 4=0`]
2557 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
2558 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
2559 THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM th])
2560 THEN ASM_REWRITE_TAC[ww_defor]]);;
2561
2562
2563
2564
2565 let INTERIOR_ANGLE_SAME_WW_DEFOR=prove(`3<k/\
2566 is_scs_v39 s/\
2567 scs_k_v39 s = k/\
2568 BBs_v39 s w/\
2569 BBs_v39 s (\i. ww_defor (w l) (w i) t)/\
2570 IMAGE (\i. w i,w (SUC i)) (:num) = FF/\
2571 t< &1 /\  i< k
2572 ==> 
2573 interior_angle1 (vec 0)
2574       (IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) (w (SUC i)) t)
2575       (:num))
2576       (ITER i
2577        (rho_node1
2578        (IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) (w (SUC i)) t)
2579        (:num)))
2580       (ww_defor (w l) (w (l MOD k)) t)) =
2581 interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) (w (l MOD k)))`,
2582
2583 REPEAT STRIP_TAC
2584 THEN MP_TAC(ARITH_RULE`i=0\/ 1<=i`)
2585 THEN RESA_TAC
2586 THENL[
2587 REWRITE_TAC[ITER]
2588 THEN MP_TAC INTERIOR_ANGLE_SAME_WW_DEFOR0
2589 THEN RESA_TAC;
2590
2591 MP_TAC INTERIOR_ANGLE_SAME_WW_DEFOR1
2592 THEN RESA_TAC]);;
2593
2594
2595
2596 let rho_fun_decreasing=prove_by_refinement(`
2597  &0< t/\ t< &1/\ ~(wl= vec 0)
2598 ==> rho_fun (norm (ww_defor (wl) (wl) t))
2599 <  rho_fun (norm (wl))`,
2600 [
2601 STRIP_TAC
2602 THEN REWRITE_TAC[rho_fun;h0;]
2603 THEN MATCH_MP_TAC(REAL_ARITH`a<b==> c+a<c+ b`)
2604 THEN MATCH_MP_TAC REAL_LT_LMUL
2605 THEN STRIP_TAC;
2606
2607 MATCH_MP_TAC REAL_LT_INV
2608 THEN REAL_ARITH_TAC;
2609
2610 MATCH_MP_TAC REAL_LT_LMUL
2611 THEN STRIP_TAC;
2612
2613 MATCH_MP_TAC REAL_LT_INV
2614 THEN REWRITE_TAC[PI_WORKS];
2615
2616 MATCH_MP_TAC REAL_LT_LMUL
2617 THEN REWRITE_TAC[Gbycpxs.SOL0_POS]
2618 THEN MATCH_MP_TAC(REAL_ARITH`a<b==> a-c<b-c`)
2619 THEN REWRITE_TAC[ww_defor;NORM_MUL]
2620 THEN MP_TAC(REAL_ARITH`t< &1==> &0<= &1- t`)
2621 THEN RESA_TAC
2622 THEN MRESA_TAC REAL_ABS_REFL[`&1-t`]
2623 THEN REWRITE_TAC[REAL_ARITH`(&1 - t) * norm wl < norm wl<=> &0< t *norm wl`]
2624 THEN MATCH_MP_TAC REAL_LT_MUL
2625 THEN ASM_REWRITE_TAC[NORM_POS_LT]]);;
2626
2627
2628
2629
2630
2631
2632 let TAUSTAR_WW_DEFOR=prove_by_refinement((mk_imp(ZLZTHIC_concl, mk_imp (MHAEYJN_concl, TAUSTAR_WW_DEFOR_concl))),
2633 [
2634 REPEAT STRIP_TAC
2635 THEN REPLICATE_TAC (12-2)(POP_ASSUM MP_TAC)
2636 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2637 THEN POP_ASSUM MP_TAC
2638 THEN MP_TAC th
2639 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2640 THEN ASSUME_TAC th
2641 THEN STRIP_TAC)
2642 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
2643 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2644 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
2645 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
2646 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
2647 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<= 3)`)
2648 THEN RESA_TAC
2649 THEN ASM_REWRITE_TAC[taustar_v39;LET_DEF;LET_END_DEF;tau_fun]
2650 THEN STRIP_TAC
2651 THEN REMOVE_ASSUM_TAC
2652 THEN EXISTS_TAC`e1:real`
2653 THEN ASM_REWRITE_TAC[]
2654 THEN REPEAT STRIP_TAC
2655 THEN MP_TAC CARD_FF_EQ_WW_DEFORMATION
2656 THEN RESA_TAC
2657 THEN POP_ASSUM(fun th->MRESA1_TAC th`t:real`)
2658 THEN MP_TAC DSV_WW_DEFOR_EQ
2659 THEN RESA_TAC
2660 THEN MATCH_MP_TAC(REAL_ARITH`a<b==> a-c< b-c`)
2661 THEN MATCH_MP_TAC(REAL_ARITH`a<b==> a-c< b-c`)
2662 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`]
2663 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
2664 THEN REPLICATE_TAC (31-9)(POP_ASSUM MP_TAC)
2665 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2666 THEN MRESA_TAC th[`t:real`])
2667 THEN MRESA_TAC(GEN_ALL Qknvmlb.SUM_AZIM_EQ_ANGLE_LE4)[`IMAGE (\i. ww_defor (w l) ((w:num->real^3) i) t) (:num)`;`(\i. ww_defor (w l) ((w:num->real^3) i) t)`;`l:num`;`s:scs_v39`;`(\i. ww_defor (w l) ((w:num->real^3) i) t) (l MOD scs_k_v39 s)`;`IMAGE (\i. ww_defor ((w:num->real^3) l) (w i) t,ww_defor (w l) (w (SUC i)) t) (:num)`;`IMAGE (\i. {ww_defor (w l) ((w:num->real^3) i) t, ww_defor (w l) (w (SUC i)) t}) (:num)`]
2668 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
2669 THEN SUBGOAL_THEN`{i|i<k:num}= 0..(k-1)`ASSUME_TAC;
2670
2671 REWRITE_TAC[IN_ELIM_THM;IN_NUMSEG;EXTENSION]
2672 THEN REPLICATE_TAC (30-24)(POP_ASSUM MP_TAC)
2673 THEN ARITH_TAC;
2674
2675
2676 ASM_REWRITE_TAC[]
2677 THEN MRESAL_TAC SUM_ADD_SPLIT[`(\i. rho_fun (norm (w (i + l MOD k))) *
2678       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`]
2679 THEN MRESAL_TAC SUM_ADD_SPLIT[`(\i. rho_fun (norm (ww_defor (w l) (w (i + l MOD k)) t)) *
2680       interior_angle1 (vec 0)
2681       (IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) (w (SUC i)) t)
2682       (:num))
2683       (ITER i
2684        (rho_node1
2685        (IMAGE (\i. ww_defor (w l) (w i) t,ww_defor (w l) (w (SUC i)) t)
2686        (:num)))
2687       (ww_defor (w l) (w (l MOD k)) t)))`;`0`;`0`;`k-1`][ARITH_RULE`0<=0+1/\ 0+A=A`]
2688 THEN MATCH_MP_TAC(REAL_ARITH`a<b/\ c=d==> a+c<b+d`)
2689 THEN REWRITE_TAC[SUM_SING_NUMSEG;ITER]
2690 THEN MP_TAC(REAL_ARITH`t< e1 /\ e1< &1==> t< &1`)
2691 THEN RESA_TAC
2692 THEN MP_TAC INTERIOR_ANGLE_SAME_WW_DEFOR0
2693 THEN RESA_TAC
2694 THEN STRIP_TAC;
2695
2696 REWRITE_TAC[ARITH_RULE`0+A=A`]
2697 THEN ASM_TAC
2698 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]
2699 THEN REPEAT RESA_TAC
2700 THEN MP_TAC(ARITH_RULE`3<k==> ~(k= 0)`)
2701 THEN RESA_TAC
2702 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2703 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
2704 THEN SUBGOAL_THEN`(w:num->real^3) l IN V`ASSUME_TAC;
2705
2706
2707 EXPAND_TAC"V"
2708 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
2709 THEN EXISTS_TAC`l:num`
2710 THEN ASM_REWRITE_TAC[SET_RULE`(l:num)IN(:num)`];
2711
2712 REPLICATE_TAC (65-33)(POP_ASSUM MP_TAC)
2713 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2714 THEN MP_TAC th
2715 THEN RESA_TAC)
2716 THEN MP_TAC Local_lemmas.LOFA_IMP_V_DIFF
2717 THEN RESA_TAC
2718 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(w:num->real^3) l`])
2719 THEN MATCH_MP_TAC REAL_LT_RMUL
2720 THEN STRIP_TAC;
2721
2722
2723 MATCH_MP_TAC rho_fun_decreasing
2724 THEN ASM_REWRITE_TAC[];
2725
2726 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)`];
2727
2728 MATCH_MP_TAC SUM_EQ
2729 THEN REWRITE_TAC[IN_NUMSEG]
2730 THEN REPEAT STRIP_TAC
2731 THEN MP_TAC(ARITH_RULE`x<=k-1/\ 3< k==> x< k`)
2732 THEN RESA_TAC
2733 THEN MRESA_TAC(GEN_ALL INTERIOR_ANGLE_SAME_WW_DEFOR1)
2734 [`s:scs_v39`;`t:real`;`x:num`;`FF:real^3#real^3->bool`;`w:num->real^3`;`l:num`;`k:num`]
2735 THEN REWRITE_TAC[REAL_EQ_MUL_RCANCEL]
2736 THEN MATCH_MP_TAC (SET_RULE`A==> A\/ B`)
2737 THEN ASM_TAC
2738 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]
2739 THEN REPEAT RESA_TAC
2740 THEN MP_TAC(ARITH_RULE`3<k==> ~(k= 0)`)
2741 THEN RESA_TAC
2742 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2743 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
2744 THEN SUBGOAL_THEN`(w:num->real^3) l IN V`ASSUME_TAC;
2745
2746 EXPAND_TAC"V"
2747 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
2748 THEN EXISTS_TAC`l:num`
2749 THEN ASM_REWRITE_TAC[SET_RULE`(l:num)IN(:num)`];
2750
2751 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]
2752 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]
2753 THEN POP_ASSUM(fun th-> MRESA_TAC th[`x:num`] )
2754 THEN MP_TAC(ARITH_RULE`1<=x==> 0<x`)
2755 THEN RESA_TAC
2756 THEN 
2757 MRESA_TAC (GEN_ALL Local_lemmas.LOFA_IMP_DIS_ELMS23)
2758 [`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)`]
2759 THEN POP_ASSUM(fun th-> MRESAL_TAC th[`0:num`;`x:num`][ITER;ww_defor] )]);;
2760
2761
2762
2763
2764
2765
2766
2767 let ODXLSTCv2 =prove_by_refinement((mk_imp(ZLZTHIC_concl, mk_imp (MHAEYJN_concl, ODXLSTCv2_concl))),
2768 [
2769 REPEAT STRIP_TAC
2770 THEN REPLICATE_TAC (9-2)(POP_ASSUM MP_TAC)
2771 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2772 THEN POP_ASSUM MP_TAC
2773 THEN MP_TAC th
2774 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2775 THEN ASSUME_TAC th
2776 THEN STRIP_TAC)
2777 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
2778 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
2779 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
2780 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
2781 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
2782 THEN SUBGOAL_THEN `convex_local_fan ((V:real^3->bool),(E:(real^3->bool)->bool),FF)` ASSUME_TAC;
2783
2784 ASM_TAC
2785 THEN REPLICATE_TAC 5 (STRIP_TAC)
2786 THEN MP_TAC(ARITH_RULE`3< k==> ~(k<=3)`)
2787 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2788 THEN REPEAT RESA_TAC
2789 THEN REPLICATE_TAC (27-14) (POP_ASSUM MP_TAC)
2790 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2791 THEN MP_TAC th
2792 THEN ASM_REWRITE_TAC[])
2793 THEN RESA_TAC;
2794
2795
2796 SUBGOAL_THEN`(w:num->real^3) l IN ball_annulus` ASSUME_TAC;
2797
2798 ASM_TAC
2799 THEN REPLICATE_TAC 5 (STRIP_TAC)
2800 THEN MP_TAC(ARITH_RULE`3< k==> ~(k<=3)`)
2801 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;IMAGE;IN_ELIM_THM;SUBSET]
2802 THEN REPEAT RESA_TAC
2803 THEN SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) l= w x)`ASSUME_TAC;
2804
2805 EXISTS_TAC`l:num`
2806 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
2807
2808 REPLICATE_TAC (29-11) (POP_ASSUM MP_TAC)
2809 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2810 THEN MRESA1_TAC th`(w:num->real^3) l`);
2811
2812 MRESA_TAC (GEN_ALL DEFORMATION_IN_BALL_ANNULUS)[`(w:num->real^3) l`]
2813 THEN MP_TAC DEFORMATION_DIST_LE_ALL_COM
2814 THEN RESA_TAC
2815 THEN MP_TAC DEFORMATION_DIST_LE_BLL_COM
2816 THEN RESA_TAC
2817 THEN MP_TAC WW_DEFORMATION_CONVEX_LOCAL_FAN
2818 THEN RESA_TAC
2819 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`])
2820 THEN POP_ASSUM MP_TAC
2821 THEN MATCH_MP_TAC(SET_RULE`(A==> ~(B))==>((A==>B)==> ~A)`)
2822 THEN STRIP_TAC
2823 THEN POP_ASSUM(fun th->
2824 STRIP_TAC
2825 THEN MP_TAC th)
2826 THEN ABBREV_TAC`e1=(min (min (min (min e e') e'') e''') (&1))/ &2`
2827 THEN MP_TAC(REAL_ARITH`e1=(min (min (min (min e e') e'') e''') (&1))/ &2 /\ &0< e/\ &0< e'/\ &0< e''/\ &0<e'''==>  &0<e1 /\ e1< e/\ e1< e'/\ e1< e''/\ e1< e'''/\ e1< &1`)
2828 THEN RESA_TAC
2829 THEN SUBGOAL_THEN`!t. &0 < t /\ t < e1
2830 ==> BBs_v39 s (\i. ww_defor ((w:num->real^3) l) ((w:num->real^3) i) t)` ASSUME_TAC;
2831
2832 REMOVE_ASSUM_TAC
2833 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
2834 THEN REPEAT STRIP_TAC;
2835
2836
2837
2838
2839 ASM_REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;ww_defor]
2840 THEN REPEAT RESA_TAC
2841 THEN MP_TAC(SET_RULE`((w:num->real^3) x' = w l)\/ ~(w x' = w l)`)
2842 THEN RESA_TAC
2843 ;
2844
2845
2846 REPLICATE_TAC (44-27) (POP_ASSUM MP_TAC)
2847 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2848 THEN MATCH_MP_TAC th)
2849 THEN ASM_REWRITE_TAC[]
2850 THEN REPLICATE_TAC (42-27) (POP_ASSUM MP_TAC)
2851 THEN REAL_ARITH_TAC;
2852
2853
2854
2855
2856
2857 ASM_TAC
2858 THEN REPLICATE_TAC 5 (STRIP_TAC)
2859 THEN MP_TAC(ARITH_RULE`3< k==> ~(k<=3)`)
2860 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;IMAGE;IN_ELIM_THM;SUBSET]
2861 THEN REPEAT RESA_TAC
2862 THEN SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) x'= w x)`ASSUME_TAC;
2863
2864 EXISTS_TAC`x':num`
2865 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`]
2866 ;
2867
2868
2869 REPLICATE_TAC (49-11) (POP_ASSUM MP_TAC)
2870 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
2871 THEN MRESA1_TAC th`(w:num->real^3) x'`)
2872 ;
2873
2874
2875
2876 ASM_TAC
2877 THEN REPLICATE_TAC 5 (STRIP_TAC)
2878 THEN MP_TAC(ARITH_RULE`3< k==> ~(k<=3)`)
2879 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;periodic;ww_defor]
2880 THEN REPEAT RESA_TAC
2881 ;
2882
2883
2884 ASM_REWRITE_TAC[ww_defor]
2885 THEN MP_TAC(ARITH_RULE`3< k==> ~(k=0)`)
2886 THEN RESA_TAC
2887 THEN MP_TAC(SET_RULE`(w:num->real^3) i =w l \/ ~(w i = w l)`)
2888 THEN RESA_TAC;
2889
2890
2891 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
2892 THEN RESA_TAC;
2893
2894
2895 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
2896 THEN ASM_TAC
2897 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2898 THEN REPEAT RESA_TAC
2899 THEN POP_ASSUM MP_TAC
2900 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2901 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
2902 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
2903 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
2904 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
2905 THEN STRIP_TAC
2906 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i MOD k`;`j MOD k`])
2907 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
2908 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
2909 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
2910 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
2911 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE]);
2912
2913
2914
2915
2916 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
2917 THEN ASM_TAC
2918 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2919 THEN REPEAT RESA_TAC
2920 THEN POP_ASSUM MP_TAC
2921 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2922 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
2923 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
2924 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
2925 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
2926 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
2927 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
2928 THEN STRIP_TAC
2929 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i MOD k`;`l MOD k`])
2930 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
2931 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
2932 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
2933 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)`)
2934 THEN RESA_TAC
2935 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
2936 THEN RESA_TAC
2937 THEN REPLICATE_TAC (77-50) (POP_ASSUM MP_TAC)
2938 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2939 THEN MRESA_TAC th[`t:real`;`j:num`])
2940 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
2941 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
2942 THEN REMOVE_ASSUM_TAC
2943 THEN POP_ASSUM MP_TAC
2944 THEN REAL_ARITH_TAC ;
2945
2946
2947
2948
2949 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
2950 THEN RESA_TAC;
2951
2952
2953
2954
2955
2956 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
2957 THEN ASM_TAC
2958 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2959 THEN REPEAT RESA_TAC
2960 THEN POP_ASSUM MP_TAC
2961 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
2962 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
2963 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
2964 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
2965 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
2966 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
2967 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
2968 THEN STRIP_TAC
2969 THEN POP_ASSUM (fun th-> MRESA_TAC th[`j MOD k`;`l MOD k`])
2970 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s i`][ARITH_RULE`~(4=0)`;periodic]
2971 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
2972 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
2973 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)`)
2974 THEN RESA_TAC
2975 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
2976 THEN RESA_TAC
2977 THEN REPLICATE_TAC (77-50) (POP_ASSUM MP_TAC)
2978 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
2979 THEN MRESA_TAC th[`t:real`;`i:num`])
2980 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s i`][ARITH_RULE`~(4=0)`;periodic]
2981 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
2982 THEN REMOVE_ASSUM_TAC
2983 THEN ONCE_REWRITE_TAC[DIST_SYM]
2984 THEN POP_ASSUM MP_TAC
2985 THEN REAL_ARITH_TAC ;
2986
2987
2988 ASM_TAC
2989 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
2990 THEN REPEAT RESA_TAC
2991 ;
2992
2993
2994
2995
2996 ASM_REWRITE_TAC[ww_defor]
2997 THEN MP_TAC(ARITH_RULE`3< k==> ~(k=0)`)
2998 THEN RESA_TAC
2999 THEN MP_TAC(SET_RULE`(w:num->real^3) i =w l \/ ~(w i = w l)`)
3000 THEN RESA_TAC;
3001
3002
3003 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
3004 THEN RESA_TAC;
3005
3006
3007
3008
3009 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
3010 THEN ASM_TAC
3011 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3012 THEN REPEAT RESA_TAC
3013 THEN POP_ASSUM MP_TAC
3014 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
3015 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
3016 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
3017 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
3018 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
3019 THEN STRIP_TAC
3020 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i MOD k`;`j MOD k`])
3021 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
3022 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
3023 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
3024 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`;DIST_REFL])
3025 THEN REPLICATE_TAC (72-12) (POP_ASSUM MP_TAC)
3026 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3027 THEN MRESA_TAC th[`i:num`;`j:num`])
3028 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
3029 THEN REAL_ARITH_TAC;
3030
3031
3032
3033
3034
3035
3036
3037 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
3038 THEN ASM_TAC
3039 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3040 THEN REPEAT RESA_TAC
3041 THEN POP_ASSUM MP_TAC
3042 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
3043 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
3044 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
3045 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
3046 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
3047 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
3048 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
3049 THEN STRIP_TAC
3050 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i MOD k`;`l MOD k`])
3051 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
3052 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
3053 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
3054 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)`)
3055 THEN RESA_TAC
3056 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''==> t< e''`)
3057 THEN RESA_TAC
3058 THEN REPLICATE_TAC (77-52) (POP_ASSUM MP_TAC)
3059 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3060 THEN MRESA_TAC th[`t:real`;`j:num`])
3061 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
3062 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
3063 THEN REMOVE_ASSUM_TAC
3064 THEN POP_ASSUM MP_TAC
3065 THEN REAL_ARITH_TAC ;
3066
3067
3068
3069
3070
3071
3072 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
3073 THEN RESA_TAC;
3074
3075
3076
3077
3078
3079 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
3080 THEN ASM_TAC
3081 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3082 THEN REPEAT RESA_TAC
3083 THEN POP_ASSUM MP_TAC
3084 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
3085 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
3086 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
3087 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
3088 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
3089 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
3090 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
3091 THEN STRIP_TAC
3092 THEN POP_ASSUM (fun th-> MRESA_TAC th[`j MOD k`;`l MOD k`])
3093 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s i`][ARITH_RULE`~(4=0)`;periodic]
3094 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
3095 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
3096 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)`)
3097 THEN RESA_TAC
3098 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''==> t< e''`)
3099 THEN RESA_TAC
3100 THEN REPLICATE_TAC (77-52) (POP_ASSUM MP_TAC)
3101 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3102 THEN MRESA_TAC th[`t:real`;`i:num`])
3103 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s i`][ARITH_RULE`~(4=0)`;periodic]
3104 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
3105 THEN REMOVE_ASSUM_TAC
3106 THEN ONCE_REWRITE_TAC[DIST_SYM]
3107 THEN POP_ASSUM MP_TAC
3108 THEN REAL_ARITH_TAC ;
3109
3110
3111 ASM_TAC
3112 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3113 THEN REPEAT RESA_TAC
3114 ;
3115
3116
3117 ASM_REWRITE_TAC[]
3118 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)`)
3119 THEN RESA_TAC
3120 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'''/\ &0< t/\ &0< e'''==> t< e'''/\ --e'''< t`)
3121 THEN RESA_TAC
3122 THEN REPLICATE_TAC (44-33) (POP_ASSUM MP_TAC)
3123 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3124 THEN MRESA_TAC th[`t:real`;])
3125 ;
3126
3127
3128
3129
3130 MP_TAC TAUSTAR_WW_DEFOR
3131 THEN RESA_TAC
3132 THEN POP_ASSUM(fun th-> MRESA_TAC th[`s:scs_v39`;`k:num`;`w:num->real^3`;`l:num`])
3133 THEN POP_ASSUM MP_TAC
3134 THEN MATCH_MP_TAC(SET_RULE`(A==> ~(B))==>((A==>B)==> ~A)`)
3135 THEN STRIP_TAC
3136 THEN POP_ASSUM(fun th->
3137 STRIP_TAC
3138 THEN MP_TAC th)
3139 THEN ABBREV_TAC`e2= (min e1 e'''')/ &2`
3140 THEN MP_TAC(REAL_ARITH`e2= (min e1 e'''')/ &2 /\ &0< e1/\ &0< e''''
3141 ==> &0< e2/\ e2< e1/\ e2< e''''`)
3142 THEN RESA_TAC
3143 THEN REPLICATE_TAC (47-43)(POP_ASSUM MP_TAC)
3144 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3145 THEN MRESA_TAC th[`e2:real`])
3146 THEN POP_ASSUM MP_TAC
3147 THEN REWRITE_TAC[REAL_ARITH`~(a<b)<=> b<=a`]
3148 THEN REPLICATE_TAC (47-41)(POP_ASSUM MP_TAC)
3149 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3150 THEN MRESA_TAC th[`e2:real`])
3151 ;
3152
3153 ])
3154 ;;
3155
3156
3157
3158 (*********CASE k = 3************)
3159
3160
3161
3162 let DEFORMATION_DIST_LE_ALL_LE3=prove(`is_scs_v39 s /\
3163   MMs_v39 s w /\
3164   scs_k_v39 s =k/\
3165  3<=k/\ 
3166   (!i. ~(i MOD k = l MOD k) ==> scs_a_v39 s l i < dist(w l,w i)) 
3167 ==>
3168 (!i. ~(i MOD k = l MOD k) ==> ?e. &0< e/\
3169 (!t. &0< t/\ t< e  ==> scs_a_v39 s l i < dist((&1-t) %(w l),w i)))`,
3170 REPEAT STRIP_TAC
3171 THEN POP_ASSUM MP_TAC
3172 THEN POP_ASSUM(fun th-> STRIP_TAC
3173 THEN MRESA_TAC th[`i:num`])
3174 THEN MRESA_TAC(GEN_ALL DEFORMATION_DIST_LE_A)[`scs_a_v39 s l i`;`(w:num->real^3) l`;`(w:num->real^3) i`]);;
3175
3176
3177
3178 let DEFORMATION_DIST_LE_ALL_COM_LE3=prove_by_refinement(`is_scs_v39 s /\
3179   MMs_v39 s w /\
3180   scs_k_v39 s =k/\
3181  3<=k/\ 
3182   (!i. ~(i MOD k = l MOD k) ==> scs_a_v39 s l i < dist(w l,w i)) 
3183 ==>
3184  ?e. &0< e/\
3185 (!t i. &0< t/\ t< e  /\ ~(i MOD k = l MOD k) ==> scs_a_v39 s l i < dist((&1-t) %(w l),w i))`,
3186 [REPEAT STRIP_TAC
3187 THEN MP_TAC DEFORMATION_DIST_LE_ALL_LE3
3188 THEN RESA_TAC
3189 THEN POP_ASSUM MP_TAC
3190 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
3191 THEN REWRITE_TAC[SKOLEM_THM]
3192 THEN STRIP_TAC
3193 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k/\  ~(i= l MOD k)}`
3194 THEN EXISTS_TAC`e1:real`
3195 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
3196
3197 MATCH_MP_TAC FINITE_SUBSET
3198 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
3199 THEN STRIP_TAC;
3200
3201 MATCH_MP_TAC FINITE_IMAGE
3202 THEN REWRITE_TAC[FINITE_NUMSEG];
3203
3204 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
3205 THEN REPEAT RESA_TAC
3206 THEN EXISTS_TAC`i:num`
3207 THEN POP_ASSUM MP_TAC
3208 THEN POP_ASSUM MP_TAC
3209 THEN POP_ASSUM MP_TAC
3210 THEN ARITH_TAC;
3211
3212 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
3213
3214
3215 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
3216 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(0=l MOD k )`)
3217 THEN RESA_TAC;
3218
3219 EXISTS_TAC`(e:num->real)1`
3220 THEN EXISTS_TAC`1`
3221 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
3222 THEN MP_TAC(ARITH_RULE`3<=k==> 1<k `)
3223 THEN RESA_TAC;
3224
3225 EXISTS_TAC`(e:num->real)0`
3226 THEN EXISTS_TAC`0`
3227 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
3228 THEN MP_TAC(ARITH_RULE`3<=k==> 0<k `)
3229 THEN RESA_TAC;
3230
3231 STRIP_TAC;
3232
3233 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`&0`]
3234 THEN REWRITE_TAC[IN_ELIM_THM]
3235 THEN REPEAT RESA_TAC
3236 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
3237 THEN REPLICATE_TAC (13-5) (POP_ASSUM MP_TAC)
3238 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3239 THEN MRESA_TAC th[`i:num`]);
3240
3241 REPEAT STRIP_TAC
3242 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`t:real`]
3243 THEN POP_ASSUM MP_TAC
3244 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
3245
3246 REWRITE_TAC[IN_ELIM_THM]
3247 THEN EXISTS_TAC`i MOD k`
3248 THEN ASM_REWRITE_TAC[]
3249 THEN MP_TAC(ARITH_RULE`3<=k==> ~(k=0)`)
3250 THEN RESA_TAC
3251 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
3252
3253 STRIP_TAC
3254 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
3255 THEN MP_TAC(ARITH_RULE`3<=k==> ~(k=0)`)
3256 THEN RESA_TAC
3257 THEN MRESA_TAC MOD_REFL[`i:num`;`k:num`]
3258 THEN REPLICATE_TAC (15-5) (POP_ASSUM MP_TAC)
3259 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3260 THEN MRESA_TAC th[`i:num MOD k`])
3261 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
3262 THEN ASM_TAC
3263 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3264 THEN REPEAT RESA_TAC
3265 THEN POP_ASSUM MP_TAC
3266 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
3267 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
3268 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
3269 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])]);;
3270
3271
3272
3273 let DEFORMATION_DIST_LE_BLL_LE3=prove_by_refinement(`is_scs_v39 s /\
3274   MMs_v39 s w /\
3275   scs_k_v39 s =k/\
3276  3<=k/\ 
3277   (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) 
3278 ==>
3279 (!i. scs_diag k l i ==> ?e. &0< e/\
3280 (!t. &0< t/\ t< e  ==> dist((&1-t) %(w l),w i)<scs_b_v39 s l i ) )`,
3281 [
3282 REPEAT STRIP_TAC
3283 THEN POP_ASSUM MP_TAC
3284 THEN POP_ASSUM(fun th-> STRIP_TAC
3285 THEN MRESA_TAC th[`i:num`])
3286 THEN SUBGOAL_THEN`dist((w:num->real^3) l,w i)< scs_b_v39 s l i`ASSUME_TAC;
3287
3288 MRESAL_TAC DIST_TRIANGLE[`(w:num->real^3) l`;`vec 0:real^3`;`(w:num->real^3) i`][]
3289 THEN ASM_TAC
3290 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2;IMAGE;IN_ELIM_THM;SUBSET;ball_annulus;DIFF;cball]
3291 THEN REPEAT RESA_TAC
3292 THEN POP_ASSUM MP_TAC
3293 THEN POP_ASSUM MP_TAC
3294 THEN SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) l = w x) `ASSUME_TAC;
3295
3296 EXISTS_TAC `l:num`
3297 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
3298
3299
3300 SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) i = w x) `ASSUME_TAC;
3301
3302 EXISTS_TAC `i:num`
3303 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
3304
3305 REPLICATE_TAC (36-20) (POP_ASSUM MP_TAC)
3306 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3307 THEN REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
3308 THEN MRESA_TAC th[`(w:num->real^3) i`]
3309 THEN MRESA_TAC th[`(w:num->real^3) l`])
3310 THEN REMOVE_ASSUM_TAC
3311 THEN POP_ASSUM MP_TAC
3312 THEN REMOVE_ASSUM_TAC
3313 THEN POP_ASSUM MP_TAC
3314 THEN REWRITE_TAC[dist;VECTOR_ARITH`a- vec 0= a/\ vec 0 - a= --a`;NORM_NEG]
3315 THEN REAL_ARITH_TAC;
3316
3317
3318 EXISTS_TAC `l:num`
3319 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
3320
3321 SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) i = w x) `ASSUME_TAC;
3322
3323 EXISTS_TAC `i:num`
3324 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
3325
3326 REPLICATE_TAC (36-20) (POP_ASSUM MP_TAC)
3327 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3328 THEN REPLICATE_TAC (2) (POP_ASSUM MP_TAC)
3329 THEN MRESA_TAC th[`(w:num->real^3) i`]
3330 THEN MRESA_TAC th[`(w:num->real^3) l`])
3331 THEN REMOVE_ASSUM_TAC
3332 THEN POP_ASSUM MP_TAC
3333 THEN REMOVE_ASSUM_TAC
3334 THEN POP_ASSUM MP_TAC
3335 THEN REWRITE_TAC[dist;VECTOR_ARITH`a- vec 0= a/\ vec 0 - a= --a`;NORM_NEG]
3336 THEN REAL_ARITH_TAC;
3337
3338 MRESA_TAC(GEN_ALL DEFORMATION_DIST_LE_B)[`(w:num->real^3) l`;`(w:num->real^3) i`;`scs_b_v39 s l i`;]]);;
3339
3340
3341
3342 let DEFORMATION_DIST_LE_BLL_EDGE_LE3=prove_by_refinement(`is_scs_v39 s /\
3343   MMs_v39 s w /\
3344   scs_k_v39 s =k/\
3345  3<=k
3346 ==>(!i. l MOD k= SUC i MOD k 
3347 ==>
3348 ?e. &0< e/\
3349 (!t. &0< t/\ t< e  ==> dist((&1-t) %(w l),w i)<scs_b_v39 s l i )) `,
3350 [
3351 REPEAT STRIP_TAC
3352 THEN REWRITE_TAC[dist;VECTOR_ARITH`(&1 - t) % w - w1  = --(t % w-(w-w1))`;NORM_NEG]
3353 THEN SUBGOAL_THEN`((w:num->real^3) l- w i) dot -- (w:num->real^3) l< &0` ASSUME_TAC;
3354
3355 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]
3356 THEN ASM_TAC
3357 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]
3358 THEN REPEAT RESA_TAC
3359 THEN SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) l = w x) `ASSUME_TAC;
3360
3361 EXISTS_TAC `l:num`
3362 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
3363
3364 SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) i = w x) `ASSUME_TAC;
3365
3366 EXISTS_TAC `i:num`
3367 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
3368
3369 REPLICATE_TAC (37-20) (POP_ASSUM MP_TAC)
3370 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3371 THEN MRESA_TAC th[`(w:num->real^3) i`]
3372 THEN MRESA_TAC th[`(w:num->real^3) l`])
3373 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
3374 THEN REWRITE_TAC[dist;VECTOR_ARITH`vec 0- A= --A`;NORM_NEG]
3375 THEN REPEAT STRIP_TAC
3376 THEN REPLICATE_TAC (40-21) (POP_ASSUM MP_TAC)
3377 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3378 THEN MRESAL_TAC th[`l:num`;`i:num`][dist])
3379 THEN MP_TAC(ARITH_RULE`3<=k==> ~(k=0)/\ 1< k`)
3380 THEN RESA_TAC
3381 THEN MRESA_TAC DIVISION[`SUC i`;`k:num`]
3382 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
3383 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
3384 THEN RESA_TAC
3385 THEN POP_ASSUM(fun th-> MRESA1_TAC th`i:num`)
3386 THEN REPLICATE_TAC (48-14) (POP_ASSUM MP_TAC)
3387 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3388 THEN MRESAL_TAC th[`l:num MOD k`;`i MOD k:num`][dist])
3389 THEN POP_ASSUM MP_TAC
3390 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
3391 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
3392 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
3393 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
3394 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
3395 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
3396 THEN STRIP_TAC
3397 THEN MP_TAC(REAL_ARITH`&2 <= scs_a_v39 s i l
3398 /\ scs_a_v39 s i l <= norm (w l - (w:num->real^3)i)/\ ~(norm (w l) < &2)
3399 ==> &2<= norm (w l - (w:num->real^3)i) /\ &2<= norm (w l)`)
3400 THEN RESA_TAC
3401 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm ((w:num->real^3) l)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
3402 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (w l - (w:num->real^3)i)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
3403 THEN ASM_TAC
3404 THEN REWRITE_TAC[h0]
3405 THEN REPEAT RESA_TAC
3406 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]
3407 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
3408 THEN REAL_ARITH_TAC;
3409
3410 EXISTS_TAC `l:num`
3411 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
3412
3413 SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) i = w x) `ASSUME_TAC;
3414
3415 EXISTS_TAC `i:num`
3416 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
3417
3418 REPLICATE_TAC (37-20) (POP_ASSUM MP_TAC)
3419 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3420 THEN MRESA_TAC th[`(w:num->real^3) i`]
3421 THEN MRESA_TAC th[`(w:num->real^3) l`])
3422 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
3423 THEN REWRITE_TAC[dist;VECTOR_ARITH`vec 0- A= --A`;NORM_NEG]
3424 THEN REPEAT STRIP_TAC
3425 THEN REPLICATE_TAC (40-21) (POP_ASSUM MP_TAC)
3426 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3427 THEN MRESAL_TAC th[`l:num`;`i:num`][dist])
3428 THEN MP_TAC(ARITH_RULE`3<=k==> ~(k=0)/\ 1< k`)
3429 THEN RESA_TAC
3430 THEN MRESA_TAC DIVISION[`SUC i`;`k:num`]
3431 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
3432 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
3433 THEN RESA_TAC
3434 THEN POP_ASSUM(fun th-> MRESA1_TAC th`i:num`)
3435 THEN REPLICATE_TAC (48-14) (POP_ASSUM MP_TAC)
3436 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3437 THEN MRESAL_TAC th[`l:num MOD k`;`i MOD k:num`][dist])
3438 THEN POP_ASSUM MP_TAC
3439 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
3440 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
3441 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
3442 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
3443 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
3444 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
3445 THEN STRIP_TAC
3446 THEN MP_TAC(REAL_ARITH`&2 <= scs_a_v39 s i l
3447 /\ scs_a_v39 s i l <= norm (w l - (w:num->real^3)i)/\ ~(norm (w l) < &2)
3448 ==> &2<= norm (w l - (w:num->real^3)i) /\ &2<= norm (w l)`)
3449 THEN RESA_TAC
3450 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm ((w:num->real^3) l)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
3451 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (w l - (w:num->real^3)i)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
3452 THEN ASM_TAC
3453 THEN REWRITE_TAC[h0]
3454 THEN REPEAT RESA_TAC
3455 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]
3456 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
3457 THEN REAL_ARITH_TAC;
3458
3459
3460 POP_ASSUM MP_TAC
3461 THEN REWRITE_TAC[DOT_RNEG;REAL_ARITH`-- a< &0 <=> a> &0`]
3462 THEN STRIP_TAC
3463 THEN MRESA_TAC CLOSER_POINTS_LEMMA[`(w:num->real^3) l- w i`;`(w:num->real^3) l`]
3464 THEN EXISTS_TAC `u:real`
3465 THEN ASM_REWRITE_TAC[]
3466 THEN GEN_TAC
3467 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3468 THEN MP_TAC(REAL_ARITH`t< u==> t<= u`)
3469 THEN RESA_TAC
3470 THEN MRESA_TAC th[`t:real`])
3471 THEN ASM_TAC
3472 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]
3473 THEN REPEAT RESA_TAC
3474 THEN REPLICATE_TAC (40-22) (POP_ASSUM MP_TAC)
3475 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3476 THEN MRESAL_TAC th[`l:num`;`i:num`][dist])
3477 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
3478 THEN REAL_ARITH_TAC]);;
3479
3480
3481
3482
3483 let DEFORMATION_DIST_LE_BLL_EDGE2_LE3=prove_by_refinement(
3484 `is_scs_v39 s /\
3485   MMs_v39 s w /\
3486   scs_k_v39 s =k/\
3487  3<=k
3488 ==>(!i.  i MOD k= SUC l MOD k 
3489 ==>
3490 ?e. &0< e/\
3491 (!t. &0< t/\ t< e  ==> dist((&1-t) %(w l),w i)<scs_b_v39 s l i ) )`,
3492 [
3493 REPEAT STRIP_TAC
3494 THEN REWRITE_TAC[dist;VECTOR_ARITH`(&1 - t) % w - w1  = --(t % w-(w-w1))`;NORM_NEG]
3495 THEN SUBGOAL_THEN`((w:num->real^3) l- w i) dot -- (w:num->real^3) l< &0` ASSUME_TAC;
3496
3497 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]
3498 THEN ASM_TAC
3499 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]
3500 THEN REPEAT RESA_TAC
3501 THEN SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) l = w x) `ASSUME_TAC;
3502
3503 EXISTS_TAC `l:num`
3504 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
3505
3506 SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) i = w x) `ASSUME_TAC;
3507
3508 EXISTS_TAC `i:num`
3509 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
3510
3511 REPLICATE_TAC (37-20) (POP_ASSUM MP_TAC)
3512 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3513 THEN MRESA_TAC th[`(w:num->real^3) i`]
3514 THEN MRESA_TAC th[`(w:num->real^3) l`])
3515 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
3516 THEN REWRITE_TAC[dist;VECTOR_ARITH`vec 0- A= --A`;NORM_NEG]
3517 THEN REPEAT STRIP_TAC
3518 THEN REPLICATE_TAC (40-21) (POP_ASSUM MP_TAC)
3519 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3520 THEN MRESAL_TAC th[`l:num`;`i:num`][dist])
3521 THEN MP_TAC(ARITH_RULE`3<=k==> ~(k=0)/\ 1< k`)
3522 THEN RESA_TAC
3523 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
3524 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
3525 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
3526 THEN RESA_TAC
3527 THEN POP_ASSUM(fun th-> MRESA1_TAC th`l:num`)
3528 THEN REPLICATE_TAC (48-14) (POP_ASSUM MP_TAC)
3529 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3530 THEN MRESAL_TAC th[`l:num MOD k`;`i MOD k:num`][dist])
3531 THEN POP_ASSUM MP_TAC
3532 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
3533 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
3534 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
3535 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
3536 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
3537 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
3538 THEN STRIP_TAC
3539 THEN MP_TAC(REAL_ARITH`&2 <= scs_a_v39 s i l
3540 /\ scs_a_v39 s i l <= norm (w l - (w:num->real^3)i)/\ ~(norm (w l) < &2)
3541 ==> &2<= norm (w l - (w:num->real^3)i) /\ &2<= norm (w l)`)
3542 THEN RESA_TAC
3543 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm ((w:num->real^3) l)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
3544 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (w l - (w:num->real^3)i)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
3545 THEN ASM_TAC
3546 THEN REWRITE_TAC[h0]
3547 THEN REPEAT RESA_TAC
3548 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]
3549 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
3550 THEN REAL_ARITH_TAC;
3551
3552
3553 EXISTS_TAC `l:num`
3554 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
3555
3556 SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) i = w x) `ASSUME_TAC;
3557
3558 EXISTS_TAC `i:num`
3559 THEN ASM_REWRITE_TAC[SET_RULE`(x:num)IN (:num)`];
3560
3561 REPLICATE_TAC (37-20) (POP_ASSUM MP_TAC)
3562 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3563 THEN MRESA_TAC th[`(w:num->real^3) i`]
3564 THEN MRESA_TAC th[`(w:num->real^3) l`])
3565 THEN REPLICATE_TAC (4) (POP_ASSUM MP_TAC)
3566 THEN REWRITE_TAC[dist;VECTOR_ARITH`vec 0- A= --A`;NORM_NEG]
3567 THEN REPEAT STRIP_TAC
3568 THEN REPLICATE_TAC (40-21) (POP_ASSUM MP_TAC)
3569 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3570 THEN MRESAL_TAC th[`l:num`;`i:num`][dist])
3571 THEN MP_TAC(ARITH_RULE`3<=k==> ~(k=0)/\ 1< k`)
3572 THEN RESA_TAC
3573 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
3574 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
3575 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
3576 THEN RESA_TAC
3577 THEN POP_ASSUM(fun th-> MRESA1_TAC th`l:num`)
3578 THEN REPLICATE_TAC (48-14) (POP_ASSUM MP_TAC)
3579 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3580 THEN MRESAL_TAC th[`l:num MOD k`;`i MOD k:num`][dist])
3581 THEN POP_ASSUM MP_TAC
3582 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
3583 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
3584 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
3585 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`]
3586 THEN MRESAL1_TAC th`SUC i:num`[ARITH_RULE`4 MOD 4=0`])
3587 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th])
3588 THEN STRIP_TAC
3589 THEN MP_TAC(REAL_ARITH`&2 <= scs_a_v39 s i l
3590 /\ scs_a_v39 s i l <= norm (w l - (w:num->real^3)i)/\ ~(norm (w l) < &2)
3591 ==> &2<= norm (w l - (w:num->real^3)i) /\ &2<= norm (w l)`)
3592 THEN RESA_TAC
3593 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm ((w:num->real^3) l)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
3594 THEN MRESAL_TAC REAL_LE_SQUARE_ABS[`&2`;`norm (w l - (w:num->real^3)i)`][ARITH_RULE`abs (&2)= &2`;REAL_ABS_NORM]
3595 THEN ASM_TAC
3596 THEN REWRITE_TAC[h0]
3597 THEN REPEAT RESA_TAC
3598 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]
3599 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
3600 THEN REAL_ARITH_TAC;
3601
3602 POP_ASSUM MP_TAC
3603 THEN REWRITE_TAC[DOT_RNEG;REAL_ARITH`-- a< &0 <=> a> &0`]
3604 THEN STRIP_TAC
3605 THEN MRESA_TAC CLOSER_POINTS_LEMMA[`(w:num->real^3) l- w i`;`(w:num->real^3) l`]
3606 THEN EXISTS_TAC `u:real`
3607 THEN ASM_REWRITE_TAC[]
3608 THEN GEN_TAC
3609 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3610 THEN MP_TAC(REAL_ARITH`t< u==> t<= u`)
3611 THEN RESA_TAC
3612 THEN MRESA_TAC th[`t:real`])
3613 THEN ASM_TAC
3614 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]
3615 THEN REPEAT RESA_TAC
3616 THEN REPLICATE_TAC (40-22) (POP_ASSUM MP_TAC)
3617 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3618 THEN MRESAL_TAC th[`l:num`;`i:num`][dist])
3619 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
3620 THEN REAL_ARITH_TAC]);;
3621
3622
3623
3624 let DEFORMATION_DIST_LE_BLL_PRIME_LE3=prove_by_refinement(`is_scs_v39 s /\
3625   MMs_v39 s w /\
3626   scs_k_v39 s =k/\
3627  3<=k/\ 
3628   (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) 
3629 ==>
3630 (!i. ~(i MOD k = l MOD k) ==> ?e. &0< e/\
3631 (!t. &0< t/\ t< e  ==> dist((&1-t) %(w l),w i)<scs_b_v39 s l i ) )`,
3632 [
3633 REPEAT STRIP_TAC
3634 THEN MP_TAC(SET_RULE`l MOD k = SUC i MOD k \/ ~(SUC i MOD k= l MOD k)`)
3635 THEN RESA_TAC;
3636
3637 MP_TAC DEFORMATION_DIST_LE_BLL_EDGE_LE3
3638 THEN RESA_TAC
3639 THEN POP_ASSUM MATCH_MP_TAC
3640 THEN ASM_REWRITE_TAC[];
3641
3642 MP_TAC(SET_RULE`i MOD k= SUC l MOD k  \/ ~(i MOD k= SUC l MOD k )`)
3643 THEN RESA_TAC;
3644
3645 MP_TAC DEFORMATION_DIST_LE_BLL_EDGE2_LE3
3646 THEN RESA_TAC
3647 THEN POP_ASSUM MATCH_MP_TAC
3648 THEN ASM_REWRITE_TAC[];
3649
3650 MP_TAC DEFORMATION_DIST_LE_BLL_LE3
3651 THEN RESA_TAC
3652 THEN POP_ASSUM MATCH_MP_TAC
3653 THEN ASM_REWRITE_TAC[scs_diag]]);;
3654
3655
3656 let DEFORMATION_DIST_LE_BLL_COM_LE3=prove_by_refinement(`is_scs_v39 s /\
3657   MMs_v39 s w /\
3658   scs_k_v39 s =k/\
3659  3<=k/\ 
3660   (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) 
3661 ==>
3662  ?e. &0< e/\
3663 (!t i. &0< t/\ t< e  /\ ~(i MOD k = l MOD k) ==> dist((&1-t) %(w l),w i)< scs_b_v39 s l i) `,
3664 [REPEAT STRIP_TAC
3665 THEN MP_TAC DEFORMATION_DIST_LE_BLL_PRIME_LE3
3666 THEN RESA_TAC
3667 THEN POP_ASSUM MP_TAC
3668 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[RIGHT_IMP_EXISTS_THM]
3669 THEN REWRITE_TAC[SKOLEM_THM]
3670 THEN STRIP_TAC
3671 THEN ABBREV_TAC`e1= inf {(e:num->real) i|  i < k/\  ~(i= l MOD k)}`
3672 THEN EXISTS_TAC`e1:real`
3673 THEN SUBGOAL_THEN`FINITE {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
3674
3675
3676 MATCH_MP_TAC FINITE_SUBSET
3677 THEN EXISTS_TAC`IMAGE (e:num->real) (0..k)`
3678 THEN STRIP_TAC;
3679
3680 MATCH_MP_TAC FINITE_IMAGE
3681 THEN REWRITE_TAC[FINITE_NUMSEG];
3682
3683 REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;IN_NUMSEG]
3684 THEN REPEAT RESA_TAC
3685 THEN EXISTS_TAC`i:num`
3686 THEN POP_ASSUM MP_TAC
3687 THEN POP_ASSUM MP_TAC
3688 THEN POP_ASSUM MP_TAC
3689 THEN ARITH_TAC;
3690
3691 SUBGOAL_THEN`~({(e:num->real) i | i < k /\ ~(i = l MOD k)} = {})`ASSUME_TAC;
3692
3693 REWRITE_TAC[SET_RULE`~(A={})<=> ?a. a IN A`;IN_ELIM_THM]
3694 THEN MP_TAC(SET_RULE`l MOD k=0\/ ~(0=l MOD k )`)
3695 THEN RESA_TAC;
3696
3697
3698 EXISTS_TAC`(e:num->real)1`
3699 THEN EXISTS_TAC`1`
3700 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
3701 THEN MP_TAC(ARITH_RULE`3<=k==> 1<k `)
3702 THEN RESA_TAC;
3703
3704
3705 EXISTS_TAC`(e:num->real)0`
3706 THEN EXISTS_TAC`0`
3707 THEN ASM_REWRITE_TAC[ARITH_RULE`~(1=0)`]
3708 THEN MP_TAC(ARITH_RULE`3<=k==> 0<k `)
3709 THEN RESA_TAC;
3710
3711
3712 STRIP_TAC;
3713
3714 MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`&0`]
3715 THEN REWRITE_TAC[IN_ELIM_THM]
3716 THEN REPEAT RESA_TAC
3717 THEN MRESA_TAC MOD_LT[`i:num`;`k:num`]
3718 THEN REPLICATE_TAC (13-5) (POP_ASSUM MP_TAC)
3719 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3720 THEN MRESA_TAC th[`i:num`]);
3721
3722 REPEAT STRIP_TAC
3723 THEN MRESA_TAC REAL_LT_INF_FINITE[`{(e:num->real) i|  i < k/\  ~(i= l MOD k)}`;`t:real`]
3724 THEN POP_ASSUM MP_TAC
3725 THEN SUBGOAL_THEN`e (i MOD k) IN {(e:num->real) i | i < k /\ ~(i = l MOD k)}`ASSUME_TAC;
3726
3727 REWRITE_TAC[IN_ELIM_THM]
3728 THEN EXISTS_TAC`i MOD k`
3729 THEN ASM_REWRITE_TAC[]
3730 THEN MP_TAC(ARITH_RULE`3<=k==> ~(k=0)`)
3731 THEN RESA_TAC
3732 THEN MRESA_TAC DIVISION[`i:num`;`k:num`];
3733
3734 STRIP_TAC
3735 THEN POP_ASSUM (fun th-> MRESA1_TAC th`(e:num->real) (i MOD k)`)
3736 THEN MP_TAC(ARITH_RULE`3<=k==> ~(k=0)`)
3737 THEN RESA_TAC
3738 THEN MRESA_TAC MOD_REFL[`i:num`;`k:num`]
3739 THEN REPLICATE_TAC (15-5) (POP_ASSUM MP_TAC)
3740 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3741 THEN MRESA_TAC th[`i:num MOD k`])
3742 THEN POP_ASSUM(fun th-> MRESA1_TAC th`t:real`)
3743 THEN ASM_TAC
3744 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3745 THEN REPEAT RESA_TAC
3746 THEN POP_ASSUM MP_TAC
3747 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s l`][ARITH_RULE`~(4=0)`;periodic]
3748 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
3749 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
3750 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])]);;
3751
3752
3753 let DIHV_SPECIAL_SCALE1 = prove
3754  (`!a v w1 w2:real^N.
3755         (&0< a )
3756         ==> dihV (vec 0) w1 (a % v)  w2 = dihV (vec 0) w1 v  w2`,
3757   REPEAT STRIP_TAC THEN REWRITE_TAC[DIHV; VECTOR_SUB_RZERO] THEN
3758   CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN
3759   REWRITE_TAC[DOT_LMUL; DOT_RMUL; GSYM VECTOR_MUL_ASSOC] THEN
3760   REWRITE_TAC[VECTOR_ARITH `c % a % x - a % b  % y:real^N =
3761                             (a ) % (c% x - b % y)`] THEN
3762   REWRITE_TAC[angle; VECTOR_SUB_RZERO] THEN
3763   REWRITE_TAC[VECTOR_ANGLE_LMUL; VECTOR_ANGLE_RMUL] THEN
3764   ASM_REWRITE_TAC[REAL_LE_SQUARE; REAL_ENTIRE]
3765   THEN MP_TAC(REAL_ARITH`&0< a==> ~(a= &0) /\ &0<= a`)
3766   THEN RESA_TAC);;
3767
3768
3769
3770 let DIHV_SPECIAL_SCALE2 = prove (`!a v w1 w2:real^N.
3771         (&0< a )
3772         ==> dihV (vec 0) w1 w2 (a % v)  = dihV (vec 0) w1  w2 v `,
3773   REPEAT STRIP_TAC THEN REWRITE_TAC[DIHV; VECTOR_SUB_RZERO] THEN
3774   CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN
3775   REWRITE_TAC[DOT_LMUL; DOT_RMUL; GSYM VECTOR_MUL_ASSOC] THEN
3776   REWRITE_TAC[VECTOR_ARITH `c % a % x - a % b  % y:real^N =
3777                             (a ) % (c% x - b % y)`] THEN
3778   REWRITE_TAC[angle; VECTOR_SUB_RZERO] THEN
3779   REWRITE_TAC[VECTOR_ANGLE_LMUL; VECTOR_ANGLE_RMUL] THEN
3780   ASM_REWRITE_TAC[REAL_LE_SQUARE; REAL_ENTIRE]
3781   THEN MP_TAC(REAL_ARITH`&0< a==> ~(a= &0) /\ &0<= a`)
3782   THEN RESA_TAC);;
3783
3784
3785
3786 let DEFORMATION_BB_WW_DEFOR_LE3=prove_by_refinement(
3787 `!s k w l.
3788   is_scs_v39 s /\
3789   MMs_v39 s w /\
3790   scs_k_v39 s =k/\
3791  3=k/\ 
3792   (!i. scs_diag k l i ==> &4 * h0 < scs_b_v39 s l i) /\
3793   ~(&2 = norm (w l)) /\
3794   (!i. ~(i MOD k = l MOD k) ==> scs_a_v39 s l i < dist(w l,w i)) /\
3795   (!i. ~(scs_J_v39 s l i)) /\
3796   (!V E v.
3797      V = IMAGE w (:num) /\
3798       E = IMAGE (\i. {w i, w (SUC i)}) (:num) ==>
3799       ~(lunar (v,(w l)) V E )) ==> 
3800 (?e1. &0< e1/\(!t. &0 < t /\ t < e1
3801 ==> BBs_v39 s (\i. ww_defor ((w:num->real^3) l) ((w:num->real^3) i) t)) )`,
3802 [
3803 REPEAT STRIP_TAC
3804 THEN REPLICATE_TAC (9-2)(POP_ASSUM MP_TAC)
3805 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3806 THEN POP_ASSUM MP_TAC
3807 THEN MP_TAC th
3808 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3809 THEN ASSUME_TAC th
3810 THEN STRIP_TAC)
3811 THEN ABBREV_TAC`V= IMAGE (w:num->real^3) (:num)`
3812 THEN ABBREV_TAC`E = IMAGE (\i. {(w:num->real^3) i, w (SUC i)}) (:num)`
3813 THEN ABBREV_TAC`FF = IMAGE (\i. ((w:num->real^3) i, w (SUC i))) (:num)`
3814 THEN MRESAL_TAC JKQEWGV2[`s:scs_v39`;`w:num->real^3`][LET_DEF;LET_END_DEF;]
3815 THEN MRESAL_TAC (GEN_ALL WW_DEFOR_DEFORMATION)[`(w:num->real^3) l`;`V:real^3->bool`;`&1`][REAL_ARITH`&0< &1`]
3816 THEN SUBGOAL_THEN`(w:num->real^3) l IN ball_annulus` ASSUME_TAC;
3817
3818 ASM_TAC
3819 THEN REPLICATE_TAC 5 (STRIP_TAC)
3820 THEN MP_TAC(ARITH_RULE`3= k==> (k<=3)`)
3821 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;IMAGE;IN_ELIM_THM;SUBSET]
3822 THEN REPEAT RESA_TAC
3823 THEN SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) l= w x)`ASSUME_TAC;
3824
3825 EXISTS_TAC`l:num`
3826 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
3827
3828 REPLICATE_TAC (25-9) (POP_ASSUM MP_TAC)
3829 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3830 THEN MRESA1_TAC th`(w:num->real^3) l`);
3831
3832 MP_TAC(ARITH_RULE`3=k==> 3<=k`)
3833 THEN RESA_TAC
3834 THEN MRESA_TAC (GEN_ALL DEFORMATION_IN_BALL_ANNULUS)[`(w:num->real^3) l`]
3835 THEN MP_TAC DEFORMATION_DIST_LE_ALL_COM_LE3
3836 THEN RESA_TAC
3837 THEN MP_TAC DEFORMATION_DIST_LE_BLL_COM_LE3
3838 THEN RESA_TAC
3839 THEN ABBREV_TAC`e1=(min (min (min e e') e'')(&1))/ &2`
3840 THEN MP_TAC(REAL_ARITH`e1=(min (min (min e e') e'') (&1))/ &2 /\ &0< e /\ &0< e'/\ &0< e''==>  &0<e1 /\ e1< e/\ e1< e'/\ e1< e''/\ e1< &1`)
3841 THEN RESA_TAC
3842 THEN SUBGOAL_THEN`!t. &0 < t /\ t < e1
3843 ==> BBs_v39 s (\i. ww_defor ((w:num->real^3) l) ((w:num->real^3) i) t)` ASSUME_TAC;
3844
3845
3846 REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39]
3847 THEN REPEAT STRIP_TAC;
3848
3849
3850 ASM_REWRITE_TAC[SUBSET;IMAGE;IN_ELIM_THM;ww_defor]
3851 THEN REPEAT RESA_TAC
3852 THEN MP_TAC(SET_RULE`((w:num->real^3) x' = w l)\/ ~(w x' = w l)`)
3853 THEN RESA_TAC;
3854
3855
3856 REPLICATE_TAC (40-25) (POP_ASSUM MP_TAC)
3857 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3858 THEN MATCH_MP_TAC th)
3859 THEN ASM_REWRITE_TAC[]
3860 THEN REPLICATE_TAC (44-27) (POP_ASSUM MP_TAC)
3861 THEN REAL_ARITH_TAC;
3862
3863
3864 ASM_TAC
3865 THEN REPLICATE_TAC 5 (STRIP_TAC)
3866 THEN MP_TAC(ARITH_RULE`3= k==> (k<=3)`)
3867 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;IMAGE;IN_ELIM_THM;SUBSET]
3868 THEN REPEAT RESA_TAC
3869 THEN SUBGOAL_THEN`(?x. x IN (:num) /\ (w:num->real^3) x'= w x)`ASSUME_TAC;
3870
3871 EXISTS_TAC`x':num`
3872 THEN ASM_REWRITE_TAC[SET_RULE`(a:num)IN(:num)`];
3873
3874
3875 REPLICATE_TAC (43-9) (POP_ASSUM MP_TAC)
3876 THEN POP_ASSUM(fun th-> REPEAT DISCH_TAC
3877 THEN MRESA1_TAC th`(w:num->real^3) x'`);
3878
3879 ASM_TAC
3880 THEN REPLICATE_TAC 5 (STRIP_TAC)
3881 THEN MP_TAC(ARITH_RULE`3< k==> ~(k<=3)`)
3882 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;periodic;ww_defor]
3883 THEN REPEAT RESA_TAC;
3884
3885
3886 ASM_REWRITE_TAC[ww_defor]
3887 THEN MP_TAC(ARITH_RULE`3= k==> ~(k=0)`)
3888 THEN RESA_TAC
3889 THEN MP_TAC(SET_RULE`(w:num->real^3) i =w l \/ ~(w i = w l)`)
3890 THEN RESA_TAC;
3891
3892
3893 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
3894 THEN RESA_TAC;
3895
3896
3897
3898 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
3899 THEN ASM_TAC
3900 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3901 THEN REPEAT RESA_TAC
3902 THEN POP_ASSUM MP_TAC
3903 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
3904 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
3905 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
3906 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
3907 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
3908 THEN STRIP_TAC
3909 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i MOD k`;`j MOD k`])
3910 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
3911 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
3912 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
3913 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
3914 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE]);
3915
3916
3917 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
3918 THEN ASM_TAC
3919 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3920 THEN REPEAT RESA_TAC
3921 THEN POP_ASSUM MP_TAC
3922 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
3923 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
3924 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
3925 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
3926 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
3927 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
3928 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
3929 THEN STRIP_TAC
3930 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i MOD k`;`l MOD k`])
3931 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
3932 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
3933 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
3934 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)`)
3935 THEN RESA_TAC
3936 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
3937 THEN RESA_TAC
3938 THEN REPLICATE_TAC (72-47) (POP_ASSUM MP_TAC)
3939 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3940 THEN MRESA_TAC th[`t:real`;`j:num`])
3941 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
3942 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
3943 THEN REMOVE_ASSUM_TAC
3944 THEN POP_ASSUM MP_TAC
3945 THEN REAL_ARITH_TAC ;
3946
3947
3948 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
3949 THEN RESA_TAC;
3950
3951 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
3952 THEN ASM_TAC
3953 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3954 THEN REPEAT RESA_TAC
3955 THEN POP_ASSUM MP_TAC
3956 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
3957 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
3958 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
3959 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
3960 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
3961 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
3962 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
3963 THEN STRIP_TAC
3964 THEN POP_ASSUM (fun th-> MRESA_TAC th[`j MOD k`;`l MOD k`])
3965 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s i`][ARITH_RULE`~(4=0)`;periodic]
3966 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
3967 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
3968 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)`)
3969 THEN RESA_TAC
3970 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e'==> t< e'`)
3971 THEN RESA_TAC
3972 THEN REPLICATE_TAC (72-47) (POP_ASSUM MP_TAC)
3973 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
3974 THEN MRESA_TAC th[`t:real`;`i:num`])
3975 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s i`][ARITH_RULE`~(4=0)`;periodic]
3976 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
3977 THEN REMOVE_ASSUM_TAC
3978 THEN ONCE_REWRITE_TAC[DIST_SYM]
3979 THEN POP_ASSUM MP_TAC
3980 THEN REAL_ARITH_TAC ;
3981
3982 ASM_TAC
3983 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3984 THEN REPEAT RESA_TAC;
3985
3986 ASM_REWRITE_TAC[ww_defor]
3987 THEN MP_TAC(ARITH_RULE`3= k==> ~(k=0)`)
3988 THEN RESA_TAC
3989 THEN MP_TAC(SET_RULE`(w:num->real^3) i =w l \/ ~(w i = w l)`)
3990 THEN RESA_TAC;
3991
3992 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
3993 THEN RESA_TAC;
3994
3995 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
3996 THEN ASM_TAC
3997 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
3998 THEN REPEAT RESA_TAC
3999 THEN POP_ASSUM MP_TAC
4000 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
4001 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
4002 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
4003 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
4004 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
4005 THEN STRIP_TAC
4006 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i MOD k`;`j MOD k`])
4007 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
4008 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
4009 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_a_v39 s (i MOD k)`][ARITH_RULE`~(4=0)`;periodic]
4010 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`;DIST_REFL]);
4011
4012 REPLICATE_TAC (69-12) (POP_ASSUM MP_TAC)
4013 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
4014 THEN MRESA_TAC th[`i:num`;`j:num`])
4015 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
4016 THEN REAL_ARITH_TAC;
4017
4018 REPLICATE_TAC (70-12) (POP_ASSUM MP_TAC)
4019 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
4020 THEN MRESA_TAC th[`i:num`;`j:num`])
4021 THEN REPLICATE_TAC (3) (POP_ASSUM MP_TAC)
4022 THEN REAL_ARITH_TAC;
4023
4024 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
4025 THEN ASM_TAC
4026 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
4027 THEN REPEAT RESA_TAC
4028 THEN POP_ASSUM MP_TAC
4029 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
4030 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
4031 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
4032 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
4033 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
4034 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
4035 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
4036 THEN STRIP_TAC
4037 THEN POP_ASSUM (fun th-> MRESA_TAC th[`i MOD k`;`l MOD k`])
4038 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
4039 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`])
4040 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
4041 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)`)
4042 THEN RESA_TAC
4043 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''==> t< e''`)
4044 THEN RESA_TAC
4045 THEN REPLICATE_TAC (72-49) (POP_ASSUM MP_TAC)
4046 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
4047 THEN MRESA_TAC th[`t:real`;`j:num`])
4048 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s j`][ARITH_RULE`~(4=0)`;periodic]
4049 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
4050 THEN REMOVE_ASSUM_TAC
4051 THEN POP_ASSUM MP_TAC
4052 THEN REAL_ARITH_TAC ;
4053
4054 MP_TAC(SET_RULE`(w:num->real^3) j =w l \/ ~(w j = w l)`)
4055 THEN RESA_TAC;
4056
4057 MRESA_TAC (GEN_ALL Qknvmlb.VV_INJ)[`s:scs_v39`;`k:num`;`w:num->real^3`]
4058 THEN ASM_TAC
4059 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
4060 THEN REPEAT RESA_TAC
4061 THEN POP_ASSUM MP_TAC
4062 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`w:num->real^3`][ARITH_RULE`~(4=0)`;]
4063 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`i:num`[ARITH_RULE`4 MOD 4=0`]
4064 THEN MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`]
4065 THEN MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
4066 THEN MRESA_TAC DIVISION[`i:num`;`k:num`]
4067 THEN MRESA_TAC DIVISION[`j:num`;`k:num`]
4068 THEN MRESA_TAC DIVISION[`l:num`;`k:num`]
4069 THEN STRIP_TAC
4070 THEN POP_ASSUM (fun th-> MRESA_TAC th[`j MOD k`;`l MOD k`])
4071 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s i`][ARITH_RULE`~(4=0)`;periodic]
4072 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`j:num`[ARITH_RULE`4 MOD 4=0`])
4073 THEN POP_ASSUM(fun th-> REWRITE_TAC[SYM th;DIST_POS_LE])
4074 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)`)
4075 THEN RESA_TAC
4076 THEN MP_TAC(REAL_ARITH`t< e1/\ e1< e''==> t< e''`)
4077 THEN RESA_TAC
4078 THEN REPLICATE_TAC (72-49) (POP_ASSUM MP_TAC)
4079 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
4080 THEN MRESA_TAC th[`t:real`;`i:num`])
4081 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`scs_b_v39 s i`][ARITH_RULE`~(4=0)`;periodic]
4082 THEN POP_ASSUM (fun th-> MRESAL1_TAC th`l:num`[ARITH_RULE`4 MOD 4=0`])
4083 THEN REMOVE_ASSUM_TAC
4084 THEN ONCE_REWRITE_TAC[DIST_SYM]
4085 THEN POP_ASSUM MP_TAC
4086 THEN REAL_ARITH_TAC ;
4087
4088 ASM_TAC
4089 THEN REWRITE_TAC[MMs_v39;LET_DEF;LET_END_DEF;BBprime2_v39;BBprime_v39;BBs_v39;is_scs_v39;periodic2]
4090 THEN REPEAT RESA_TAC;
4091
4092 ASM_REWRITE_TAC[]
4093 THEN MP_TAC(ARITH_RULE`3=k==> (k<=3)`)
4094 THEN RESA_TAC;
4095
4096
4097 STRIP_TAC
4098 THEN REMOVE_ASSUM_TAC
4099 THEN EXISTS_TAC`e1:real`
4100 THEN ASM_REWRITE_TAC[]]);;
4101
4102
4103
4104  end;;
4105
4106
4107 (*
4108 let check_completeness_claimA_concl = 
4109   Ineq.mk_tplate `\x. scs_arrow_v13 (set_of_list x) 
4110 *)
4111
4112
4113
4114