1 (* ========================================================================== *)
2 (* FLYSPECK - BOOK FORMALIZATION *)
4 (* Chapter: Local Fan *)
5 (* Author: Hoang Le Truong *)
7 (* ========================================================================= *)
11 remaining conclusions from appendix to Local Fan chapter
15 module Jcyfmrp = struct
27 open Wrgcvdr_cizmrrh;;
35 open Flyspeck_constants;;
51 open Wrgcvdr_cizmrrh;;
53 open Flyspeck_constants;;
93 let J_EMPY_CASES_A_EQ_2=prove(`(!i. scs_a_v39 s i (SUC i) = &2)
95 ==> scs_J_v39 s i= {}`,
97 THEN MP_TAC(SET_RULE`(?x. scs_J_v39 s i x) \/ (scs_J_v39 s i= {})`)
100 THEN REWRITE_TAC[LET_DEF;LET_END_DEF;is_scs_v39]
102 THEN THAYTHEL_ASM_TAC(21-19)[`i`;`x`][]
103 THEN THAYTHEL_ASM_TAC (23-18)[`i`;`x`][]
106 THEN MRESAS_TAC(GEN_ALL CHANGE_A_SCS_MOD)[`i`;`x`;`s`;`i`;`SUC i`][is_scs_v39]
107 THEN POP_ASSUM MP_TAC
108 THEN MP_TAC Geomdetail.db_t0_sq8
109 THEN REWRITE_TAC[sqrt8]
113 THEN MRESAS_TAC(GEN_ALL CHANGE_A_SCS_MOD)[`i`;`x`;`s`;`SUC x`;`x`][is_scs_v39]
114 THEN POP_ASSUM MP_TAC
115 THEN MP_TAC Geomdetail.db_t0_sq8
116 THEN REWRITE_TAC[sqrt8]
117 THEN REAL_ARITH_TAC]);;
119 let DIST_EDGE_LE_CSTAB_CASE_LE3=prove(`3< scs_k_v39 s /\ BBs_v39 s v /\ is_scs_v39 s ==> dist(v i, v (SUC i))<= cstab`,
120 REWRITE_TAC[LET_DEF;LET_END_DEF;BBs_v39;is_scs_v39]
122 THEN THAYTHE_TAC (24-21)[`i`]
123 THEN THAYTHE_TAC (24-3)[`i`;`SUC i`]
126 THEN REAL_ARITH_TAC);;
129 let J_EMPY_CASES_A_EQ_2_V1=prove(
130 `scs_a_v39 s i (SUC i) = &2/\ scs_a_v39 s (SUC i) (SUC(SUC i)) = &2
132 ==> scs_J_v39 s (SUC i)= {}`,
134 THEN MP_TAC(SET_RULE`(?x. scs_J_v39 s (SUC i) x) \/ (scs_J_v39 s (SUC i)= {})`)
137 THEN REWRITE_TAC[LET_DEF;LET_END_DEF;is_scs_v39]
139 THEN THAYTHEL_ASM_TAC(21-19)[`SUC i`;`x`][]
140 THEN THAYTHEL_ASM_TAC (23-18)[`SUC i`;`x`][]
143 THEN MRESAS_TAC(GEN_ALL CHANGE_A_SCS_MOD)[`SUC i`;`x`;`s`;`SUC i`;`SUC (SUC i)`][is_scs_v39]
144 THEN POP_ASSUM MP_TAC
145 THEN MP_TAC Geomdetail.db_t0_sq8
146 THEN REWRITE_TAC[sqrt8]
150 THEN MP_TAC(ARITH_RULE`3<= scs_k_v39 s==> ~(scs_k_v39 s= 0)`)
152 THEN MRESAL_TAC Ocbicby.MOD_EQ_MOD_SHIFT[`scs_k_v39 s`;`i`;`x`;`1`][ARITH_RULE`1+x= SUC x`]
153 THEN MRESAS_TAC(GEN_ALL CHANGE_A_SCS_MOD)[`(SUC i)`;`x`;`s`;`SUC i`;`i`][is_scs_v39]
154 THEN POP_ASSUM MP_TAC
155 THEN MP_TAC Geomdetail.db_t0_sq8
156 THEN REWRITE_TAC[sqrt8]
157 THEN REAL_ARITH_TAC]);;
162 let SCS_M_LE_1= prove_by_refinement(` CARD (scs_M s) <= 1 /\ is_scs_v39 s
163 ==> ?p. (!i. ~(i MOD scs_k_v39 s=p MOD scs_k_v39 s)==> scs_b_v39 s i (SUC i)<= &2 *h0/\ scs_a_v39 s i (SUC i)= &2 )`,
166 THEN POP_ASSUM (fun th-> MP_TAC th
168 THEN REWRITE_TAC[is_scs_v39;LET_DEF;LET_END_DEF;]
171 THEN REWRITE_TAC[scs_M]
172 THEN REWRITE_TAC[ARITH_RULE`a<=1 <=> a= 0\/ a=1`]
173 THEN SUBGOAL_THEN`FINITE
174 {i | i < scs_k_v39 s /\
175 (&2 * h0 < scs_b_v39 s i (SUC i) \/ &2 < scs_a_v39 s i (SUC i))}` ASSUME_TAC;
177 MATCH_MP_TAC FINITE_SUBSET
178 THEN EXISTS_TAC`0..6`
179 THEN ASM_REWRITE_TAC[FINITE_NUMSEG;SUBSET;IN_ELIM_THM;IN_NUMSEG]
185 ABBREV_TAC`k=scs_k_v39 s`
188 MRESA_TAC CARD_EQ_0[`{i | i < scs_k_v39 s /\
189 (&2 * h0 < scs_b_v39 s i (SUC i) \/ &2 < scs_a_v39 s i (SUC i))}`]
190 THEN POP_ASSUM MP_TAC
191 THEN REWRITE_TAC[SET_RULE`A={}<=> !x. ~(x IN A)`;IN_ELIM_THM]
196 THEN MP_TAC(ARITH_RULE`3<=k==> ~(k=0)/\ 1<k`)
198 THEN THAYTHES_TAC 3[`i MOD k`][DE_MORGAN_THM;REAL_ARITH`~(a<b)<=> b<=a`;DIVISION]
201 THEN MRESAS_TAC(GEN_ALL CHANGE_B_SCS_MOD)[`i MOD k:num`;`SUC(i MOD k) :num`;`s:scs_v39`;`i:num`;`SUC(i MOD k) MOD k:num`][MOD_REFL;ARITH_RULE`~(6=0)`;Hypermap.lemma_suc_mod]
202 THEN MRESAS_TAC(GEN_ALL CHANGE_B_SCS_MOD)[`i :num`;`SUC i MOD k :num`;`s:scs_v39`;`i:num`;`SUC i:num`][MOD_REFL;ARITH_RULE`~(6=0)`;Hypermap.lemma_suc_mod]
203 THEN MRESAS_TAC(GEN_ALL CHANGE_A_SCS_MOD)[`i MOD k:num`;`SUC(i MOD k) :num`;`s:scs_v39`;`i:num`;`SUC(i MOD k) MOD k:num`][MOD_REFL;ARITH_RULE`~(6=0)`;Hypermap.lemma_suc_mod]
204 THEN MRESAS_TAC(GEN_ALL CHANGE_A_SCS_MOD)[`i :num`;`SUC i MOD k :num`;`s:scs_v39`;`i:num`;`SUC i:num`][MOD_REFL;ARITH_RULE`~(6=0)`;Hypermap.lemma_suc_mod]
205 THEN THAYTHES_TAC (30-15)[`i MOD k`;`SUC i MOD k`][DIVISION;Hypermap.lemma_suc_mod;ARITH_RULE`~(6=0)/\ 1<6`;Qknvmlb.SUC_MOD_NOT_EQ;]
206 THEN POP_ASSUM MP_TAC
207 THEN MRESAS_TAC(GEN_ALL CHANGE_A_SCS_MOD)[`i MOD k:num`;`SUC i MOD k :num`;`s:scs_v39`;`i:num`;`SUC i:num`][MOD_REFL;ARITH_RULE`~(6=0)`;Hypermap.lemma_suc_mod]
211 MRESA_TAC Local_lemmas.FINITE_CARD1_IMP_SINGLETON[`{i | i < k /\
212 (&2 * h0 < scs_b_v39 s i (SUC i) \/ &2 < scs_a_v39 s i (SUC i))}`]
213 THEN POP_ASSUM MP_TAC
214 THEN REWRITE_TAC[EXTENSION;IN_ELIM_THM;IN_SING]
216 THEN EXISTS_TAC`x:num`
219 THEN THAYTHEL_ASM_TAC 1[`x`][]
220 THEN MP_TAC(ARITH_RULE`3<=k==> ~(k=0)/\ 1<k`)
223 THEN ASM_SIMP_TAC[MOD_LT]
225 THEN THAYTHES_TAC 3[`i MOD k`][DE_MORGAN_THM;REAL_ARITH`~(a<b)<=> b<=a`;DIVISION]
228 THEN MRESAS_TAC(GEN_ALL CHANGE_B_SCS_MOD)[`i MOD k:num`;`SUC(i MOD k) :num`;`s:scs_v39`;`i:num`;`SUC(i MOD k) MOD k:num`][MOD_REFL;ARITH_RULE`~(6=0)`;Hypermap.lemma_suc_mod]
229 THEN MRESAS_TAC(GEN_ALL CHANGE_B_SCS_MOD)[`i :num`;`SUC i MOD k :num`;`s:scs_v39`;`i:num`;`SUC i:num`][MOD_REFL;ARITH_RULE`~(6=0)`;Hypermap.lemma_suc_mod]
230 THEN MRESAS_TAC(GEN_ALL CHANGE_A_SCS_MOD)[`i MOD k:num`;`SUC(i MOD k) :num`;`s:scs_v39`;`i:num`;`SUC(i MOD k) MOD k:num`][MOD_REFL;ARITH_RULE`~(6=0)`;Hypermap.lemma_suc_mod]
231 THEN MRESAS_TAC(GEN_ALL CHANGE_A_SCS_MOD)[`i :num`;`SUC i MOD k :num`;`s:scs_v39`;`i:num`;`SUC i:num`][MOD_REFL;ARITH_RULE`~(6=0)`;Hypermap.lemma_suc_mod]
232 THEN THAYTHES_TAC (32-15)[`i MOD k`;`SUC i MOD k`][DIVISION;Hypermap.lemma_suc_mod;ARITH_RULE`~(6=0)/\ 1<6`;Qknvmlb.SUC_MOD_NOT_EQ;]
233 THEN POP_ASSUM MP_TAC
234 THEN MRESAS_TAC(GEN_ALL CHANGE_A_SCS_MOD)[`i MOD k:num`;`SUC i MOD k :num`;`s:scs_v39`;`i:num`;`SUC i:num`][MOD_REFL;ARITH_RULE`~(6=0)`;Hypermap.lemma_suc_mod]
235 THEN REAL_ARITH_TAC]);;
240 let JCYFMRP_concl = `
241 main_nonlinear_terminal_v11
245 is_scs_v39 s /\ v IN MMs_v39 s /\ scs_generic v /\ scs_basic_v39 s /\
246 (!i j. scs_diag (scs_k_v39 s) i j ==> &4 * h0 < scs_b_v39 s i j) /\
247 CARD (scs_M s) <= 1 /\
248 (!i. scs_a_v39 s i (SUC i) = &2) /\
249 (!i j. scs_diag (scs_k_v39 s) i j ==> (scs_a_v39 s i j <= cstab /\ cstab < dist(v i, v j))) ==>
250 (?i. dist(v i, v (i+1)) = &2))`;;
256 let JCYFMRP=prove_by_refinement( JCYFMRP_concl,
258 MP_TAC Cuxvzoz.CUXVZOZ
261 THEN REWRITE_TAC[IN;scs_generic]
263 THEN ABBREV_TAC`k=scs_k_v39 s`
264 THEN ABBREV_TAC`V=(IMAGE (v:num->real^3) (:num))`
265 THEN ABBREV_TAC`E=(IMAGE (\i. {(v:num->real^3) i, v (SUC i)}) (:num))`
266 THEN ABBREV_TAC`FF=IMAGE (\i. ((v:num->real^3) i, v (SUC i))) (:num)`
268 THEN MP_TAC(SET_RULE`?i. dist (v i,v (i + 1)) = &2\/ ~(?i. dist ((v:num->real^3) i,v (i + 1)) = &2)`)
270 THEN ASM_REWRITE_TAC[]
275 THEN ASM_REWRITE_TAC[]
280 THEN REWRITE_TAC[NOT_EXISTS_THM]
281 THEN REPEAT STRIP_TAC
282 THEN MRESA_TAC MMS_IMP_BBS[`s`;`v`]
283 THEN SUBGOAL_THEN`!i. &2< dist((v:num->real^3) i, v (SUC i))`ASSUME_TAC
288 THEN MATCH_MP_TAC(REAL_ARITH`a<=b /\ ~(b= a)==> a<b`)
289 THEN MP_TAC Axjrpnc.DIST_EDGE_IN_BB_LE_2
290 THEN REWRITE_TAC[GSYM dist]
292 THEN ASM_REWRITE_TAC[ADD1];
296 SUBGOAL_THEN`!i. norm ((v:num->real^3) i)= &2` ASSUME_TAC
302 THEN MP_TAC(REAL_ARITH`norm ((v:num->real^3) i)= &2\/ ~(norm ((v:num->real^3) i)= &2)`)
305 THEN MRESA_TAC J_EMPY_CASES_A_EQ_2[`s`;`i`]
307 THEN REWRITE_TAC[SET_RULE`(a = {})<=> !i. ~ (a i)`]
310 THEN MRESA_TAC Imjxphr.BBS_IMP_CONVEX_LOCAL_FAN[`k:num`;`s`;`v`]
311 THEN MP_TAC Local_lemmas.CVLF_LF_F
314 THEN MRESAL_TAC MMS_IMP_BBPRIME[`s`;`v`][LET_DEF;LET_END_DEF;BBprime_v39]
315 THEN MRESAL_TAC JKQEWGV2[`s`;`v`][LET_DEF;LET_END_DEF;scs_generic]
316 THEN MP_TAC Wrgcvdr_cizmrrh.CIZMRRH
318 THEN POP_ASSUM MP_TAC
319 THEN REWRITE_TAC[NOT_EXISTS_THM]
321 THEN SUBGOAL_THEN`(!V' E' v1. V' = V /\ E' = E ==> ~lunar (v1,(v:num->real^3) i) V' E')` ASSUME_TAC;
328 SUBGOAL_THEN`!i'. ~(i' MOD k = i MOD k) ==> scs_a_v39 s i i' < dist ((v:num->real^3) i,v i')`ASSUME_TAC;
333 THEN MP_TAC(SET_RULE`i' MOD k= SUC i MOD k\/ ~(i' MOD k= SUC i MOD k)`)
338 MRESA_TAC CHANGE_W_IN_BBS_MOD_IS_SCS[`s`;`i'`;`v:num->real^3`;`SUC i:num`]
339 THEN MRESAL_TAC(GEN_ALL CHANGE_A_SCS_MOD)[`i`;`i' `;`s:scs_v39`;`i`;`SUC i`][]
344 MP_TAC(SET_RULE`SUC i' MOD k= i MOD k\/ ~(SUC i' MOD k= i MOD k)`)
349 MRESA_TAC CHANGE_W_IN_BBS_MOD_IS_SCS[`s`;`i`;`v:num->real^3`;`SUC i':num`]
350 THEN MRESAL_TAC(GEN_ALL CHANGE_A_SCS_MOD)[`i`;`i' `;`s:scs_v39`;`SUC i'`;`i'`][]
352 THEN REWRITE_TAC[is_scs_v39;LET_DEF;LET_END_DEF]
354 THEN ONCE_REWRITE_TAC[DIST_SYM]
355 THEN ASM_REWRITE_TAC[];
359 THAYTHEL_TAC (27-13)[`i`;`i'`][scs_diag]
366 MRESAL_TAC ODXLSTCv2[`s`;`k`;`v`;`i:num`][]
373 THEN SUBGOAL_THEN`!i. ~(i MOD k= p MOD k )/\ ~(i MOD k= SUC p MOD k )
374 ==> pi / &2 < azim (vec 0) (v i) (v (SUC i)) ((v:num->real^3) (i + k - 1))`
383 THEN POP_ASSUM MATCH_MP_TAC
384 THEN EXISTS_TAC`s:scs_v39`
385 THEN ASM_REWRITE_TAC[]
386 THEN REPEAT STRIP_TAC;
390 MATCH_MP_TAC(GEN_ALL(REAL_ARITH`a<=b/\ b<=c ==> a<=c`))
391 THEN EXISTS_TAC`scs_b_v39 s i (SUC i)`
393 THEN REWRITE_TAC[LET_DEF;LET_END_DEF;BBs_v39]
395 THEN MATCH_DICH_TAC 2
396 THEN ASM_REWRITE_TAC[];
400 MATCH_MP_TAC(GEN_ALL(REAL_ARITH`a<=b/\ b<=c ==> a<=c`))
401 THEN EXISTS_TAC`scs_b_v39 s (i+k-1) (SUC (i+k-1))`
402 THEN MP_TAC(ARITH_RULE`3<k==> SUC (i + k - 1)= 1*k+i/\ ~(k<=3)/\ ~(k=0)`)
405 THEN REWRITE_TAC[LET_DEF;LET_END_DEF;BBs_v39]
411 MRESAS_TAC(GEN_ALL CHANGE_B_SCS_MOD)[`i+k-1`;`1*k+i `;`s:scs_v39`;`i+k-1`;`(1*k+i)MOD k`][MOD_REFL;MOD_MULT_ADD]
412 THEN MRESAS_TAC(GEN_ALL CHANGE_B_SCS_MOD)[`i+k-1`;`i MOD k `;`s:scs_v39`;`i+k-1`;`i`][MOD_REFL;MOD_MULT_ADD]
413 THEN ONCE_REWRITE_TAC[DIST_SYM]
414 THEN ASM_REWRITE_TAC[];
418 MRESAS_TAC(GEN_ALL CHANGE_B_SCS_MOD)[`i+k-1`;`1*k+i `;`s:scs_v39`;`i+k-1`;`(1*k+i)MOD k`][MOD_REFL;MOD_MULT_ADD]
419 THEN MRESAS_TAC(GEN_ALL CHANGE_B_SCS_MOD)[`i+k-1`;`i MOD k `;`s:scs_v39`;`i+k-1`;`i`][MOD_REFL;MOD_MULT_ADD]
420 THEN THAYTHE_TAC (28-21)[`i+k-1`]
421 THEN MATCH_DICH_TAC 0
422 THEN DICH_TAC (27-22)
423 THEN ASM_REWRITE_TAC[CONTRAPOS_THM]
425 THEN MRESAS_TAC Zithlqn.IMP_SUC_MOD_EQ[`i+k-1`;`p`;`k`][MOD_MULT_ADD];
429 MP_TAC(ARITH_RULE`3<k==> SUC (i + k - 1)= i+ 1*k+0/\ ~(k<=3)/\ ~(k=0)/\ k-1<k
430 /\ (i+1)+1=i+2 /\ 1<k /\ 2<k/\ 0<k/\ ~(1=k-1)/\ ~(2=k-1)/\ ~(1=0)`)
432 THEN THAYTHES_TAC (31-14)[`SUC i`;`i+k-1`;][scs_diag;ADD1;Ocbicby.MOD_EQ_MOD_SHIFT;MOD_LT;MOD_MULT_ADD]
433 THEN POP_ASSUM MP_TAC
438 MP_TAC(SET_RULE` (!i. ~(i MOD k = p MOD k) /\ ~(i MOD k = SUC p MOD k)
439 ==> pi<= azim (vec 0) (v i) ((v:num->real^3) (SUC i)) (v (i + k - 1))) \/ ~(!i. ~(i MOD k = p MOD k) /\ ~(i MOD k = SUC p MOD k)
440 ==> pi<= azim (vec 0) (v i) (v (SUC i)) (v (i + k - 1))) `)
448 SUBGOAL_THEN`!i. ~(i MOD k = p MOD k) /\ ~(i MOD k = SUC p MOD k)
449 ==> azim (vec 0) (v i) (v (SUC i)) ((v:num->real^3) (i + k - 1))= pi`ASSUME_TAC
455 THEN THAYTHE_TAC 2[`i`]
456 THEN MRESA_TAC Imjxphr.BBS_IMP_CONVEX_LOCAL_FAN[`k`;`s`;`v`]
457 THEN MRESA_TAC WL_IN_V[`i`;`v:num->real^3`]
458 THEN MRESA_TAC WL_IN_V[`i+k-1`;`v:num->real^3`]
459 THEN MRESA_TAC Rrcwnsj.BB_RHO_NODE_IVS[`V`;`E`;`s`;`FF`;`v (i)`;`v`;`i`;`k`]
460 THEN MRESA_TAC Local_lemmas.IN_V_IMP_AZIM_LESS_PI[`E`;`V`;`FF`;`v i`]
461 THEN THAYTHE_TAC 0[`v (i+k-1)`]
463 THEN DICH_TAC (27-22)
464 THEN REWRITE_TAC[ADD1]
468 SUBGOAL_THEN`(0..(k-1)) DELETE p MOD k DELETE SUC p MOD k SUBSET{i | i < k /\ azim (vec 0) (v i) (v (SUC i)) ((v:num->real^3) (i + k - 1)) = pi}`
473 REWRITE_TAC[SUBSET;IN_ELIM_THM;DELETE;IN_NUMSEG;]
475 THEN MP_TAC(ARITH_RULE`3<k==> (x<=k-1<=> x<k )`)
477 THEN THAYTHES_TAC 5[`x:num`][MOD_LT;];
480 MP_TAC(ARITH_RULE`3<k==> ~(k=0 )/\ 1<k`)
482 THEN MRESA_TAC DIVISION[`p`;`k`]
483 THEN MP_TAC(ARITH_RULE`3<k/\ p MOD k< k ==> p MOD k<=k-1/\ (k-1+1)-0=k`)
485 THEN MRESAS_TAC Hypermap.CARD_MINUS_ONE[`0..(k-1)`;`p MOD k`][FINITE_NUMSEG;IN_NUMSEG;ARITH_RULE`0<=a`;CARD_NUMSEG]
486 THEN MP_TAC(ARITH_RULE`3<k/\ k = CARD ((0..k - 1) DELETE p MOD k) + 1 ==> CARD ((0..k - 1) DELETE p MOD k) =k-1`)
488 THEN POP_ASSUM MP_TAC
489 THEN POP_ASSUM(fun th-> GEN_REWRITE_TAC(LAND_CONV o LAND_CONV o LAND_CONV o DEPTH_CONV)[th])
491 THEN SUBGOAL_THEN`SUC p MOD k IN (0..k - 1) DELETE p MOD k`ASSUME_TAC
495 ASM_REWRITE_TAC[DELETE;IN_ELIM_THM;IN_NUMSEG]
496 THEN MRESA_TAC DIVISION[`SUC p`;`k`]
497 THEN MP_TAC(ARITH_RULE`3<k/\ SUC p MOD k< k ==> SUC p MOD k<=k-1/\ 0<= SUC p MOD k/\ 1<k`)
499 THEN ASM_SIMP_TAC[Qknvmlb.SUC_MOD_NOT_EQ];
504 MRESAS_TAC Hypermap.CARD_MINUS_ONE[`(0..(k-1)) DELETE p MOD k`;`SUC p MOD k`][FINITE_NUMSEG;IN_NUMSEG;ARITH_RULE`0<=a`;CARD_NUMSEG;FINITE_DELETE]
505 THEN MP_TAC(ARITH_RULE`3<k/\ k - 1 = CARD ((0..k - 1) DELETE p MOD k DELETE SUC p MOD k) + 1 ==> CARD ((0..k - 1) DELETE p MOD k DELETE SUC p MOD k) =k-2`)
507 THEN POP_ASSUM MP_TAC
508 THEN POP_ASSUM(fun th-> GEN_REWRITE_TAC(LAND_CONV o LAND_CONV o LAND_CONV o DEPTH_CONV)[th])
514 {i | i < k /\ azim (vec 0) ((v:num->real^3) i) (v (SUC i)) (v (i + k - 1)) = pi}`ASSUME_TAC
518 MATCH_MP_TAC FINITE_SUBSET
519 THEN EXISTS_TAC`0..k`
520 THEN ASM_REWRITE_TAC[FINITE_NUMSEG;SUBSET;IN_ELIM_THM;IN_NUMSEG]
524 MRESA_TAC CARD_SUBSET[`(0..k - 1) DELETE p MOD k DELETE SUC p MOD k`;`{i | i < k /\ azim (vec 0) (v i) ((v:num->real^3) (SUC i)) (v (i + k - 1)) = pi}`]
525 THEN MRESAL_TAC Aursipd.AURSIPD[`s`;`v`][scs_generic;IN;scs_is_str]
526 THEN POP_ASSUM MP_TAC
527 THEN POP_ASSUM MP_TAC
529 THEN ABBREV_TAC`a= CARD {i | i < k /\ azim (vec 0) (v i) (v (SUC i)) (v (i + k - 1)) = pi}`
535 THEN POP_ASSUM MP_TAC
536 THEN REWRITE_TAC[NOT_FORALL_THM;NOT_IMP;REAL_ARITH`~(a<=b)<=> b<a`]
544 THEN THAYTHEL_TAC 0[`s`;`FF`;`k`;`i`;`v`][scs_generic;GSYM ADD1];
548 THAYTHES_TAC (22-14)[`SUC i`;`i+k-1`][Ocbicby.scs_diag_2]
549 THEN ONCE_REWRITE_TAC[DIST_SYM]
550 THEN POP_ASSUM MP_TAC
551 THEN REWRITE_TAC[cstab]
561 THEN THAYTHES_TAC (24-14)[`i'`;`j`][Ocbicby.scs_diag_2]
562 THEN POP_ASSUM MP_TAC
563 THEN POP_ASSUM MP_TAC
572 ASM_REWRITE_TAC[interior_angle1;GSYM ivs_rho_node1]
573 THEN MRESAL_TAC Rrcwnsj.BB_RHO_NODE_IVS[`V`;`E`;`s`;`FF`;`v i`;`v`;`i`;`k`][GSYM ADD1];
581 ASM_REWRITE_TAC[interior_angle1;GSYM ivs_rho_node1]
582 THEN MRESAL_TAC Rrcwnsj.BB_RHO_NODE_IVS[`V`;`E`;`s`;`FF`;`v i`;`v`;`i`;`k`][GSYM ADD1]
583 THEN THAYTHE_TAC (24-18)[`i`];
589 MATCH_DICH_TAC (22-17)
590 THEN ASM_REWRITE_TAC[]
597 MRESA_TAC Imjxphr.EQ_W_L_IN_BBS[`s`;`k`;`v`;`i`]
598 THEN MRESAS_TAC Axjrpnc.DIST_EDGE_IN_BB_LE_2[`s`;`v`;`i+k-1`][Imjxphr.EQ_W_L_IN_BBS;GSYM dist]
603 MRESA_TAC Imjxphr.EQ_W_L_IN_BBS[`s`;`k`;`v`;`i`]
604 THEN MRESAL_TAC DIST_EDGE_LE_CSTAB_CASE_LE3[`s`;`v`;`i+k-1`][Imjxphr.EQ_W_L_IN_BBS;GSYM dist]
619 let check_completeness_claimA_concl =
620 Ineq.mk_tplate `\x. scs_arrow_v13 (set_of_list x)