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 Aursipd = struct
27 open Wrgcvdr_cizmrrh;;
35 open Flyspeck_constants;;
51 open Wrgcvdr_cizmrrh;;
53 open Flyspeck_constants;;
94 let REP_NUMSEG=prove(`~(k=0) ==> {i | i < k}= 0.. (k-1)`,
95 REWRITE_TAC[EXTENSION;IN_ELIM_THM;IN_NUMSEG]
100 let SUM_AZIM_EQ_ANGLE_LE4_FUN=prove_by_refinement(
101 ` ~(scs_k_v39 s<=3)/\
104 (vv:num->real^3) (p MOD (scs_k_v39 s))=u /\
105 IMAGE (vv:num->real^3) (:num)=V/\
106 IMAGE (\i. {vv i,(vv:num->real^3) (SUC i)}) (:num)=E/\
107 IMAGE (\i. (vv i,(vv:num->real^3) (SUC i))) (:num)=FF
109 sum {i | i < scs_k_v39 s}
110 (\i. ff((vv:num->real^3) (i+p MOD scs_k_v39 s)) *
111 interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) u))
112 =sum FF (\e. ff(FST e) * azim_in_fan e E)
115 MRESA_TAC (GEN_ALL IN_IMAGE_VV)[`p MOD scs_k_v39 s`;`vv:num->real^3`]
117 THEN ASM_REWRITE_TAC[MMs_v39;BBprime_v39;BBprime2_v39;is_scs_v39;scs_k_v39_explicit;scs_d_v39_explicit;scs_a_v39_explicit;scs_b_v39_explicit;BBs_v39;ARITH_RULE`3<=3`;LET_DEF;LET_END_DEF;ARITH_RULE`~(4<=3)`;mk_unadorned_v39;scs_diag;dist]
118 THEN ABBREV_TAC`k= scs_k_v39 s`
119 THEN REPEAT RESA_TAC;
121 REPLICATE_TAC (30-2)(POP_ASSUM MP_TAC)
122 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
124 THEN ASM_REWRITE_TAC[];
126 MATCH_MP_TAC SUM_EQ_GENERAL
127 THEN EXISTS_TAC`(\i. (vv:num->real^3) (i+ p MOD k), vv (SUC i + p MOD k))`
128 THEN MP_TAC(ARITH_RULE`3<= k ==> ~(k=0) /\ 1<k`)
133 THEN REWRITE_TAC[IN_ELIM_THM; IMAGE;EXISTS_UNIQUE]
134 THEN ASM_REWRITE_TAC[PAIR_EQ]
136 THEN EXISTS_TAC`(x MOD k + k -p MOD k) MOD k`
137 THEN ASM_REWRITE_TAC[ARITH_RULE`A-0=A`;PAIR_EQ]
138 THEN MRESA_TAC DIVISION[`x MOD k + k - p MOD k:num`;`k:num`]
139 THEN MRESA_TAC DIVISION[`p:num`;`k:num`]
140 THEN MRESA_TAC MOD_LT[`p MOD k`;`k:num`]
141 THEN MRESA_TAC MOD_MOD_REFL[`x:num`;`k:num`]
142 THEN MRESAL_TAC MOD_MULT_ADD[`1`;`k:num`;`x MOD k`][ARITH_RULE`1 * k + x MOD k = x MOD k +k`]
143 THEN MRESA_TAC MOD_ADD_MOD[`x MOD k + k - p MOD k:num`;`p MOD k:num`;`k:num`]
144 THEN MP_TAC(ARITH_RULE`1<k/\ p MOD k<k ==>(x MOD k+ k- p MOD k) + p MOD k = x MOD k+k /\ (x + p MOD k) + k- p MOD k= x+k`)
146 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`vv:num->real^3`][ARITH_RULE`~(4=0)`;]
147 THEN POP_ASSUM(fun th-> MRESA1_TAC th `(x MOD k + k - p MOD k) MOD k + p MOD k:num`
148 THEN MRESA1_TAC th ` x:num`)
149 THEN MRESA_TAC MOD_ADD_MOD[`x:num`;`1`;`k:num`]
150 THEN MRESA_TAC MOD_ADD_MOD[`(x MOD k + k - p MOD k) MOD k + p MOD k`;`1`;`k:num`]
151 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`vv:num->real^3`][ARITH_RULE`~(4=0)`;ARITH_RULE`SUC ((x MOD k + k - p MOD k) MOD k) + p MOD k = ((x MOD k + k - p MOD k) MOD k + p MOD k)+1`]
152 THEN POP_ASSUM(fun th-> MRESA1_TAC th `((x MOD k + k - p MOD k) MOD k + p MOD k)+1:num`
153 THEN MRESA1_TAC th ` x+1:num`)
154 THEN REWRITE_TAC[ADD1]
155 THEN REPEAT STRIP_TAC
156 THEN MRESA_TAC DIVISION[`x:num`;`k:num`]
157 THEN MRESA_TAC DIVISION[`y' + p MOD k:num`;`k:num`]
158 THEN MRESAL_TAC(GEN_ALL PERIODIC_PROPERTY)[`scs_k_v39 s`;`vv:num->real^3`][ARITH_RULE`~(4=0)`;]
159 THEN POP_ASSUM(fun th-> MRESA1_TAC th `y' + p MOD k:num`)
161 THEN ASM_REWRITE_TAC[MMs_v39; BBprime2_v39;BBprime_v39;BBs_v39;LET_DEF;LET_END_DEF;is_scs_v39;scs_diag;scs_v39_explicit;is_scs_slice_v39;dsv_v39;scs_slice_v39;scs_half_slice_v39;PAIR_EQ;REAL_ARITH`#0.11 < #0.9`;ARITH_RULE`3<=3`;dist]
163 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(y'+ p MOD k) MOD k:num`;`(x MOD k + k)MOD k`])
164 THEN MRESA_TAC MOD_LT[`y':num`;`k:num`]
165 THEN MRESAL_TAC(GEN_ALL Hdplygy.MOD_EQ_MOD)[`y':num`;`x MOD k + k- p MOD k`;`p MOD k`;`k:num`][]
166 THEN POP_ASSUM MP_TAC
167 THEN ONCE_REWRITE_TAC[ADD_SYM]
170 REWRITE_TAC[IN_ELIM_THM;]
171 THEN REPEAT STRIP_TAC;
174 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
175 THEN EXISTS_TAC`x+ p MOD k`
176 THEN REWRITE_TAC[SET_RULE`(a:num)IN (:num)`;ADD1;ARITH_RULE`(x + 1) + p MOD k= (x + p MOD k)+1`];
178 MRESAL_TAC(GEN_ALL VV_SUC_EQ_RHO_NODE_PRIME)[`V:real^3->bool`;`E:(real^3->bool)->bool`;`k:num`;`s:scs_v39`;`FF:real^3#real^3->bool`;`u:real^3`;`vv:num->real^3`;`p:num MOD k`]
179 [is_scs_v39;scs_k_v39_explicit;scs_d_v39_explicit;scs_a_v39_explicit;scs_b_v39_explicit;BBs_v39;ARITH_RULE`3<=3`;LET_DEF;LET_END_DEF;ARITH_RULE`~(4<=3)`;mk_unadorned_v39;scs_diag;dist]
180 THEN SUBGOAL_THEN`(vv:num->real^3) (x + p MOD k) IN V`ASSUME_TAC;
183 THEN REWRITE_TAC[IN_ELIM_THM;IMAGE]
184 THEN EXISTS_TAC`x+ p MOD k`
185 THEN REWRITE_TAC[SET_RULE`(a:num)IN (:num)`];
187 REPLICATE_TAC (35-6)(POP_ASSUM MP_TAC)
188 THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC
190 THEN ASM_REWRITE_TAC[]
192 THEN MP_TAC Nkezbfc_local.CONVEX_LOFA_IMP_INANGLE_EQ_AZIM
194 THEN POP_ASSUM(fun th-> MRESA_TAC th[`(vv:num->real^3) (x + p MOD k )`])
195 THEN REPLICATE_TAC (3) REMOVE_ASSUM_TAC
196 THEN POP_ASSUM(fun th-> ASSUME_TAC th
197 THEN MRESAL1_TAC th`SUC x`[ITER])]);;
202 let PERIODIC_IMAGE2=prove(`~(n = 0) /\ periodic f n ==> {f i | i < n} = IMAGE f (:num)`,
204 THEN MRESA_TAC Oxlzlez.PERIODIC_IMAGE[`f`;`n`]
206 THEN REWRITE_TAC[IMAGE;IN_ELIM_THM]
214 let AURSIPD_concl = `!s v.
215 3< scs_k_v39 s /\ is_scs_v39 s /\ scs_generic v /\ v IN MMs_v39 s ==>
216 3 + CARD { i | i < scs_k_v39 s /\ scs_is_str s v i} <= scs_k_v39 s`;;
218 let AURSIPD= prove_by_refinement((AURSIPD_concl),
219 [REWRITE_TAC[IN;scs_is_str;scs_generic]
220 THEN REPEAT STRIP_TAC
221 THEN ABBREV_TAC`k=scs_k_v39 s`
222 THEN ABBREV_TAC`V= IMAGE (v:num->real^3) (:num)`
223 THEN ABBREV_TAC`E = IMAGE (\i. {(v:num->real^3) i, v (SUC i)}) (:num)`
224 THEN ABBREV_TAC`FF = IMAGE (\i. ((v:num->real^3) i, v (SUC i))) (:num)`
225 THEN MATCH_MP_TAC(ARITH_RULE`~(b-3< c) /\ 3<b ==> 3+c <= b:num`)
226 THEN ASM_REWRITE_TAC[]
228 THEN SUBGOAL_THEN `CARD {i | i < k /\ azim (vec 0) (v i) (v (SUC i)) (v (i + k - 1)) = pi}<= CARD (0..(k-1))` ASSUME_TAC;
231 MATCH_MP_TAC CARD_SUBSET
232 THEN ASM_REWRITE_TAC[FINITE_NUMSEG;SUBSET;IN_ELIM_THM;IN_NUMSEG]
237 THEN REWRITE_TAC[CARD_NUMSEG]
238 THEN MP_TAC(ARITH_RULE`3<k==> (k-1+1)-0=k`)
241 THEN SUBGOAL_THEN`{i | i < k /\ azim (vec 0:real^3) (v i) (v (SUC i)) (v (i + k - 1)) = pi} SUBSET (0..(k-1))`ASSUME_TAC;
245 ASM_REWRITE_TAC[FINITE_NUMSEG;SUBSET;IN_ELIM_THM;IN_NUMSEG]
251 ABBREV_TAC`a=CARD {i | i < k /\ azim (vec 0) (v i) ((v:num->real^3) (SUC i)) (v (i + k - 1)) = pi}`
252 THEN MP_TAC(ARITH_RULE`3<k/\ k - 3 <
254 ==> a=k \/ a =k-1\/ a=k-2`)
259 MRESAL_TAC SUBSET_CARD_EQ[`{i | i < k /\ azim (vec 0) (v i) ((v:num->real^3) (SUC i)) (v (i + k - 1)) = pi}`;`0..(k-1)`][FINITE_NUMSEG;CARD_NUMSEG]
260 THEN POP_ASSUM MP_TAC
261 THEN REWRITE_TAC[EXTENSION;IN_ELIM_THM;IN_NUMSEG]
263 THEN ABBREV_TAC`v0= (v:num->real^3) 0`
264 THEN MRESA_TAC Nuxcoea.MMS_IMP_BBS[`s:scs_v39`;`v`]
265 THEN MRESA_TAC Imjxphr.BBS_IMP_CONVEX_LOCAL_FAN[`k:num`;`s`;`v`]
266 THEN MP_TAC Local_lemmas.CVLF_LF_F
268 THEN MRESA_TAC WL_IN_V[`0`;`v`]
269 THEN MRESA_TAC Odxlstcv2.CARD_V_EQ_SCS_K1[`s`;`v`;`V`;`k:num`]
270 THEN POP_ASSUM MP_TAC
271 THEN MRESAL_TAC Nuxcoea.MMS_IMP_BBPRIME[`s:scs_v39`;`v`][LET_DEF;LET_END_DEF;BBprime_v39]
272 THEN MRESA_TAC JKQEWGV1[`s:scs_v39`;`v`]
275 THEN REWRITE_TAC[REAL_ARITH`~(a< b)<=> b<=a`;sol_local]
276 THEN MATCH_MP_TAC (REAL_ARITH`&0< a/\ b= &0==> a<= &2 *a +b`)
277 THEN REWRITE_TAC[PI_WORKS]
278 THEN MATCH_MP_TAC SUM_EQ_0
281 THEN MRESA_TAC Local_lemmas.LOFA_DETERMINE_AZIM_IN_FA[`V:real^3->bool`;`FF`;`E`;`x`]
282 THEN MRESA_TAC Local_lemmas.DETER_RHO_NODE[`V:real^3->bool`;`E`;`FF`;`FST x`;`SND x`]
283 THEN MRESA_TAC Local_lemmas.LOCAL_FAN_IMP_IN_V2[`E`;`FF`;`x`;`V`]
284 THEN MRESA_TAC Local_lemmas1.LF_AZIM_CYCLE_EQ_IVS_ND[`V`;`E`;`FF`;`FST x`]
285 THEN DICH_TAC (27-22)
287 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[IMAGE;IN_ELIM_THM]
289 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)/\ (k+1)-1=k/\ ~(k=0)/\ 1<k/\ SUC (x' + k - 1) =1 * k + x'`)
291 THEN MRESAL_TAC Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME[`V`;`E`;`k`;`s`;`FF`;`v0`;`v`;` 0`][ARITH_RULE`a+0=a`]
295 THEN MRESA_TAC DIVISION[`x'`;`k`]
296 THEN MP_TAC(ARITH_RULE`x' MOD k < k/\ 3<k==> x' MOD k <= k-1
300 THEN THAYTHEL_TAC 0 [`x' MOD k`][ARITH_RULE`a+1= SUC a/\ a+2= SUC (SUC a)`]
301 THEN POP_ASSUM MP_TAC
302 THEN MRESA_TAC Yxionxl2.MOD_SUC_MOD[`x'`;`k`]
303 THEN MRESA_TAC MOD_REFL[`SUC x' `;`k`]
304 THEN MRESA_TAC MOD_REFL[`x' `;`k`]
306 CHANGE_W_IN_BBS_MOD_IS_SCS[`s`;`SUC ((x') MOD k)`;`v:num->real^3`;`SUC ((x') MOD k) MOD k`]
308 CHANGE_W_IN_BBS_MOD_IS_SCS[`s`;`SUC (x') MOD k`;`v:num->real^3`;`SUC (x')`]
309 THEN MRESA_TAC WL_IN_V[`x' MOD k`;`v`]
310 THEN MP_TAC Local_lemmas.ITER_CARD_MINUS1_EQ_IVS_RN1
312 THEN THAYTHE_TAC 0[`v (x' MOD k)`]
313 THEN POP_ASSUM MP_TAC
314 THEN MRESAL_TAC Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME[`V`;`E`;`k`;`s`;`FF`;`v (x' MOD k)`;`v`;` x' MOD k`][ARITH_RULE`a+0=a`]
316 CHANGE_W_IN_BBS_MOD_IS_SCS[`s`;`x' MOD k`;`v:num->real^3`;`x'`]
318 THEN ASM_REWRITE_TAC[ARITH_RULE`a+k-1=k-1+a`]
321 MP_TAC(SET_RULE`(!i. i < k ==> azim (vec 0) (v i) (v (SUC i)) (v (i + k - 1)) = pi) \/ ~(!i. i < k ==> azim (vec 0:real^3) (v i) (v (SUC i)) (v (i + k - 1)) = pi)`)
325 MP_TAC(SET_RULE`(!i. i < k ==> azim (vec 0) (v i) (v (SUC i)) (v (i + k - 1)) = pi)
326 ==> {i | i < k /\ azim (vec 0) (v i) (v (SUC i)) (v (i + k - 1)) = pi}= {i| i<k}`)
329 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=k-1)`)
331 THEN MRESAL_TAC REP_NUMSEG[`k:num`][CARD_NUMSEG]
335 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[NOT_FORALL_THM;NOT_IMP]
336 THEN REWRITE_TAC[NOT_IMP]
338 THEN SUBGOAL_THEN`{i | i < k /\ azim (vec 0:real^3) (v i) (v (SUC i)) (v (i + k - 1)) = pi} SUBSET (0..(k-1)) DELETE i` ASSUME_TAC;
341 MATCH_MP_TAC (SET_RULE`A SUBSET B /\ ~(a IN A) ==> A SUBSET B DELETE a`)
342 THEN ASM_REWRITE_TAC[IN_ELIM_THM];
346 MRESAL_TAC FINITE_SUBSET[`(0..k - 1) DELETE i`;`(0..k - 1)`][FINITE_NUMSEG;DELETE_SUBSET]
347 THEN SUBGOAL_THEN`i IN 0..(k-1)`ASSUME_TAC
350 ASM_REWRITE_TAC[IN_NUMSEG]
355 MRESAL_TAC CARD_DELETE[`i`;`0..(k-1)`][FINITE_NUMSEG]
356 THEN MRESAL_TAC SUBSET_CARD_EQ[`{i | i < k /\ azim (vec 0) (v i) ((v:num->real^3) (SUC i)) (v (i + k - 1)) = pi}`;`(0..(k-1)) DELETE i`][FINITE_NUMSEG;CARD_NUMSEG]
362 THEN REWRITE_TAC[EXTENSION;IN_ELIM_THM;IN_NUMSEG]
364 THEN ABBREV_TAC`v0= (v:num->real^3) 0`
365 THEN MRESA_TAC Nuxcoea.MMS_IMP_BBS[`s:scs_v39`;`v`]
366 THEN MRESA_TAC Imjxphr.BBS_IMP_CONVEX_LOCAL_FAN[`k:num`;`s`;`v`]
367 THEN MP_TAC Local_lemmas.CVLF_LF_F
369 THEN MRESA_TAC WL_IN_V[`0`;`v`]
370 THEN MRESA_TAC Odxlstcv2.CARD_V_EQ_SCS_K1[`s`;`v`;`V`;`k:num`]
371 THEN POP_ASSUM MP_TAC
372 THEN MRESAL_TAC Nuxcoea.MMS_IMP_BBPRIME[`s:scs_v39`;`v`][LET_DEF;LET_END_DEF;BBprime_v39]
373 THEN MRESA_TAC JKQEWGV1[`s:scs_v39`;`v`]
376 THEN REWRITE_TAC[REAL_ARITH`~(a< b)<=> b<=a`;sol_local]
377 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)/\ 0<k /\ ~(k=0)`)
379 THEN MRESA_TAC MOD_LT[`0`;`k`]
380 THEN MRESAL_TAC SUM_AZIM_EQ_ANGLE_LE4_FUN[`V`;`v`;`0`;`s`;`v0`;`FF`;`(\x:real^3. &1)`;` E`][SUM_SUB;REAL_ARITH`&1*a=a`]
381 THEN MP_TAC Wrgcvdr_cizmrrh.LOCAL_FAN_FINITE_FF
383 THEN ASM_SIMP_TAC[SUM_SUB;SUM_CONST]
384 THEN REMOVE_ASSUM_TAC
386 THEN MP_TAC Local_lemmas.LOFA_IMP_CARD_FF_V_EQ
388 THEN MP_TAC Nkezbfc_local.CONVEX_LOFA_IMP_INANGLE_EQ_AZIM_IVS
390 THEN MP_TAC REP_NUMSEG
392 THEN MRESAL_TAC SUM_DELETE[`(\i. interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) v0))`;`{i|i<k:num}`;`i`][FINITE_NUMSEG;REAL_ARITH`a=b-c<=> b=a+c`]
393 THEN SUBGOAL_THEN`sum ((0..k - 1) DELETE i)
394 (\i. interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) v0)-pi) = &0`ASSUME_TAC
399 MATCH_MP_TAC SUM_EQ_0
402 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)/\ (k+1)-1=k/\ ~(k=0)/\ 1<k/\ SUC (x + k - 1) =1 * k + x`)
404 THEN MRESAL_TAC Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME[`V`;`E`;`k`;`s`;`FF`;`v0`;`v`;` 0`][ARITH_RULE`a+0=a`]
405 THEN MRESA_TAC WL_IN_V[`x`;`v`]
406 THEN THAYTHE_TAC (43-35)[`v x`]
407 THEN MRESAL_TAC Qknvmlb.VV_SUC_EQ_RHO_NODE_PRIME[`V`;`E`;`k`;`s`;`FF`;`v x`;`v`;` x`][ARITH_RULE`a+0=a`]
408 THEN THAYTHEL_ASM_TAC 0 [`SUC 0`][ITER;I_DEF]
409 THEN THAYTHEL_TAC 0 [`k-1`][ITER;I_DEF]
410 THEN MP_TAC Local_lemmas.ITER_CARD_MINUS1_EQ_IVS_RN1
412 THEN THAYTHE_TAC 0[`v x`]
414 THEN REWRITE_TAC[ARITH_RULE`SUC 0+x= SUC x/\ k-1+x=x+k-1`]
415 THEN THAYTHE_TAC (45-20)[`x`]
419 THEN ASM_SIMP_TAC[SUM_SUB;SUM_CONST;CARD_NUMSEG;REAL_ARITH`a-b= &0<=> a=b`]
421 THEN MP_TAC(ARITH_RULE`3<k==> 1<=k`)
423 THEN MRESA_TAC REAL_OF_NUM_SUB[`1`;`k`]
425 THEN MATCH_MP_TAC(REAL_ARITH`
426 &0<= interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) v0)
429 ((&k - &1) * pi + interior_angle1 (vec 0) FF (ITER i (rho_node1 FF) v0)) -
431 THEN REWRITE_TAC[interior_angle1;azim]
437 MP_TAC(SET_RULE`(!i. i < k ==> azim (vec 0) (v i) (v (SUC i)) (v (i + k - 1)) = pi) \/ ~(!i. i < k ==> azim (vec 0:real^3) (v i) (v (SUC i)) (v (i + k - 1)) = pi)`)
441 MP_TAC(SET_RULE`(!i. i < k ==> azim (vec 0) (v i) (v (SUC i)) (v (i + k - 1)) = pi)
442 ==> {i | i < k /\ azim (vec 0) (v i) (v (SUC i)) (v (i + k - 1)) = pi}= {i| i<k}`)
445 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k=k-2)`)
447 THEN MRESAL_TAC REP_NUMSEG[`k:num`][CARD_NUMSEG]
451 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[NOT_FORALL_THM;NOT_IMP]
452 THEN REWRITE_TAC[NOT_IMP]
454 THEN MP_TAC(SET_RULE`(!j. j < k /\ ~(i=j) ==> azim (vec 0) (v j) (v (SUC j)) (v (j + k - 1)) = pi) \/ ~(!j. j < k /\ ~(i=j) ==> azim (vec 0:real^3) (v j) (v (SUC j)) (v (j + k - 1)) = pi)`)
459 SUBGOAL_THEN`{i | i < k /\ azim (vec 0:real^3) (v i) (v (SUC i)) (v (i + k - 1)) = pi} = (0..(k-1)) DELETE i` ASSUME_TAC;
462 REWRITE_TAC[EXTENSION;IN_ELIM_THM;DELETE;IN_NUMSEG]
468 MP_TAC(ARITH_RULE`x<k/\ 3<k==> 0<=x/\ x<= k-1`)
472 THEN ASM_REWRITE_TAC[];
474 MP_TAC(ARITH_RULE`x<=k-1/\ 3<k ==> x< k`)
476 THEN MATCH_DICH_TAC 4
477 THEN ASM_REWRITE_TAC[];
481 THEN ASM_REWRITE_TAC[]
482 THEN MRESAL_TAC FINITE_SUBSET[`(0..k - 1) DELETE i`;`(0..k - 1)`][FINITE_NUMSEG;DELETE_SUBSET]
483 THEN SUBGOAL_THEN`i IN 0..(k-1)`ASSUME_TAC
486 ASM_REWRITE_TAC[IN_NUMSEG]
487 THEN DICH_TAC (17-13)
491 MRESAL_TAC CARD_DELETE[`i`;`0..(k-1)`][FINITE_NUMSEG;CARD_NUMSEG]
492 THEN MP_TAC(ARITH_RULE`3<k==> ~(k=0)/\ ~(k-1=k-2)`)
499 THEN GEN_REWRITE_TAC(LAND_CONV o DEPTH_CONV)[NOT_FORALL_THM;NOT_IMP]
500 THEN REWRITE_TAC[NOT_IMP]
502 THEN SUBGOAL_THEN`{i | i < k /\ azim (vec 0) (v i) ((v:num->real^3) (SUC i)) (v (i + k - 1)) = pi} SUBSET (0..(k-1)) DELETE i DELETE j`ASSUME_TAC;
507 REWRITE_TAC[SUBSET;DELETE;IN_ELIM_THM;IN_NUMSEG]
510 THEN MP_TAC(ARITH_RULE`x<k/\ 3<k==> 0<=x/\ x<=k-1`)
517 THEN ASM_REWRITE_TAC[]
523 THEN ASM_REWRITE_TAC[]
528 SUBGOAL_THEN`i IN 0..(k-1)`ASSUME_TAC
531 ASM_REWRITE_TAC[IN_NUMSEG]
532 THEN DICH_TAC (19-14)
536 SUBGOAL_THEN`j IN ((0..(k-1)) DELETE i)`ASSUME_TAC
539 ASM_REWRITE_TAC[IN_NUMSEG;DELETE;IN_ELIM_THM]
540 THEN DICH_TAC (19-15)
544 MRESA_TAC FINITE_DELETE[`0..(k-1)`;`i`]
545 THEN MRESA_TAC FINITE_DELETE[`(0..(k-1)) DELETE i`;`j`]
546 THEN MRESAL_TAC CARD_DELETE[`i`;`0..(k-1)`][FINITE_NUMSEG]
547 THEN MRESAL_TAC CARD_DELETE[`j`;`(0..(k-1)) DELETE i`][FINITE_NUMSEG]
548 THEN MRESAL_TAC SUBSET_CARD_EQ[`{i | i < k /\ azim (vec 0) (v i) ((v:num->real^3) (SUC i)) (v (i + k - 1)) = pi}`;`(0..(k-1)) DELETE i DELETE j`][FINITE_NUMSEG;CARD_NUMSEG;ARITH_RULE`k-2=k-1-1`]
549 THEN POP_ASSUM MP_TAC
550 THEN REWRITE_TAC[IN_ELIM_THM;EXTENSION;DELETE;IN_NUMSEG]
555 MP_TAC(ARITH_RULE`~(i=j:num)==> i<j\/ j<i`)
564 SUBGOAL_THEN`!t:num. t<=j-i ==> coplanar ({v (i+t1)| t1<=t} UNION {vec 0:real^3, (v:num->real^3) i})`ASSUME_TAC
572 REWRITE_TAC[ARITH_RULE`t<=0<=> t=0`;]
573 THEN SUBGOAL_THEN`{v (i + t1) | t1 = 0} = {(v:num->real^3) i}`ASSUME_TAC
577 REWRITE_TAC[EXTENSION;IN_ELIM_THM;IN_SING]
581 THEN REWRITE_TAC[ARITH_RULE`a+0=a`]
583 THEN REWRITE_TAC[ARITH_RULE`a+0=a`]
587 ASM_REWRITE_TAC[SET_RULE`{a} UNION {b,a}={a,b}`;COPLANAR_2]
592 THEN MP_TAC(ARITH_RULE`SUC t<= j-i==> t<= j-i`)
596 THEN SUBGOAL_THEN`{v (i + t1) | t1 <= SUC t}= {v (i + t1) | t1 <= t} UNION {(v:num->real^3) (i+ SUC t)}`ASSUME_TAC;
600 REWRITE_TAC[UNION;IN_ELIM_THM;EXTENSION;IN_SING]
607 MP_TAC(ARITH_RULE`t1<= SUC t==> t1<=t\/ t1= SUC t`)
612 MATCH_MP_TAC(SET_RULE`A==>A\/B`)
613 THEN EXISTS_TAC`t1:num`
614 THEN ASM_REWRITE_TAC[]
620 THEN ASM_REWRITE_TAC[]
624 THEN ASM_REWRITE_TAC[]
629 ASM_REWRITE_TAC[SET_RULE`(a UNION b) UNION c= a UNION b UNION c`]
630 THEN MP_TAC(ARITH_RULE`t=0 \/ 0<t`)
634 REWRITE_TAC[ARITH_RULE`t<=0<=> t=0`;]
635 THEN SUBGOAL_THEN`{v (i + t1) | t1 = 0} = {(v:num->real^3) i}`ASSUME_TAC
639 REWRITE_TAC[EXTENSION;IN_ELIM_THM;IN_SING]
643 THEN REWRITE_TAC[ARITH_RULE`a+0=a`]
645 THEN REWRITE_TAC[ARITH_RULE`a+0=a`]
649 ASM_REWRITE_TAC[SET_RULE`{a} UNION {b} UNION {c,a}={a,b,c}`;Tskajxy_lemmas.KY_COPLANAR_3]
654 MRESA_TAC Nuxcoea.MMS_IMP_BBS[`s:scs_v39`;`v`]
655 THEN MRESA_TAC Imjxphr.BBS_IMP_CONVEX_LOCAL_FAN[`k:num`;`s`;`v`]
656 THEN MP_TAC Local_lemmas.CVLF_LF_F
658 THEN MRESA_TAC WL_IN_V[`i+t-1`;`v`]
659 THEN MRESA_TAC WL_IN_V[`j`;`v`]
660 THEN MRESA_TAC WL_IN_V[`i+t:num`;`v`]
661 THEN MP_TAC(ARITH_RULE`0<t/\ t<=j-i/\ j<k ==> ~(i+t-1=i+t) /\ i+t-1<k/\ i+t<k`)
663 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`v:num->real^3`]
664 THEN THAYTHE_TAC 0[`i+t-1`;`i+t:num`]
665 THEN MRESA_TAC Nkezbfc_local.PROPERTIES_GENERIC[`FF`;`E`;`(v:num->real^3) (i+t-1)`;`v j`;`V`]
666 THEN THAYTHEL_TAC 0[`(v:num->real^3) (i+t-1)`;`(v:num->real^3) (i+t)`][SET_RULE`a IN {a,b}`;coplanar]
667 THEN EXISTS_TAC`vec 0:real^3`
668 THEN EXISTS_TAC`(v:num->real^3) (i+t-1)`
669 THEN EXISTS_TAC`(v:num->real^3) (i+t)`
670 THEN ASM_REWRITE_TAC[UNION;SUBSET;IN_ELIM_THM;]
671 THEN REPEAT RESA_TAC;
674 SUBGOAL_THEN`{vec 0, v (i+t-1), v (i + t),v (i + t1)} SUBSET {v (i + t1) | t1 <= t} UNION {vec 0, (v:num->real^3) i}`ASSUME_TAC
678 MATCH_MP_TAC(SET_RULE`{b,c,d} SUBSET A==> {a,b,c,d} SUBSET A UNION {a,e}`)
679 THEN REWRITE_TAC[SUBSET;IN_ELIM_THM;SET_RULE`a IN {b,c,d}<=> a=b\/ a=c\/ a=d`]
680 THEN REPEAT RESA_TAC;
683 THEN ASM_REWRITE_TAC[]
688 THEN ASM_REWRITE_TAC[]
692 THEN ASM_REWRITE_TAC[]
696 MRESA_TAC COPLANAR_SUBSET[`{vec 0, v (i+t-1), v (i + t), v (i + t1:num)}`;`{v (i + t1) | t1 <= t:num} UNION {vec 0, v i}`]
697 THEN MATCH_MP_TAC Zlzthic.coplanar_in_affine_hull
698 THEN ASM_REWRITE_TAC[]
699 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C,D}={B,C,D,A}`]
700 THEN ASM_REWRITE_TAC[];
704 THEN REWRITE_TAC[IN_SING]
706 THEN MATCH_MP_TAC Zlzthic.coplanar_in_affine_hull
707 THEN ASM_REWRITE_TAC[]
708 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C,D}={B,D,A,C}`]
709 THEN MATCH_MP_TAC AZIM_EQ_0_PI_IMP_COPLANAR
710 THEN MATCH_MP_TAC(SET_RULE`A==> B \/ A`);
713 MP_TAC(ARITH_RULE`0<t/\ SUC t<= j-i/\ j<k ==>SUC (i + t)= i+ SUC t/\ 0<= i+t/\
714 i+t<=k-1/\ ~(i + t = i)/\ ~(i+t=j)/\ (i + t) + k - 1= (i + t - 1)+k`)
716 THEN THAYTHE_TAC (51-26)[`i+t:num`]
718 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;periodic]
720 THEN POP_ASSUM MP_TAC
721 THEN THAYTHE_TAC (53-33)[`i+t-1`];
724 THEN REWRITE_TAC[SET_RULE`a IN {b,c}<=> a=b\/ a=c`]
729 REWRITE_TAC[Collect_geom2.THREE_GEN_POINTS_IN_AFF3;GSYM aff]
734 MATCH_MP_TAC Zlzthic.coplanar_in_affine_hull
735 THEN ASM_REWRITE_TAC[]
738 SUBGOAL_THEN`{vec 0, v (i+t-1), v (i + t),v (i)} SUBSET {v (i + t1) | t1 <= t} UNION {vec 0, (v:num->real^3) i}`ASSUME_TAC
742 MATCH_MP_TAC(SET_RULE`{b,c,d} SUBSET A==> {a,b,c,d} SUBSET A UNION {a,e}`)
743 THEN REWRITE_TAC[SUBSET;IN_ELIM_THM;SET_RULE`a IN {b,c,d}<=> a=b\/ a=c\/ a=d`]
744 THEN REPEAT RESA_TAC;
747 THEN ASM_REWRITE_TAC[]
752 THEN ASM_REWRITE_TAC[]
756 THEN ASM_REWRITE_TAC[ARITH_RULE`0<=t/\ i+0=i`]
760 MRESA_TAC COPLANAR_SUBSET[`{vec 0, v (i+t-1), v (i + t), v (i:num)}`;`{v (i + t1) | t1 <= t:num} UNION {vec 0, v i}`]
761 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C,D}={B,C,D,A}`]
762 THEN ASM_REWRITE_TAC[];
765 SUBGOAL_THEN`!t. t <= i+k-j ==> coplanar ({v (i+k - t1) | t1 <= t} UNION {vec 0, (v:num->real^3) i})`ASSUME_TAC
773 REWRITE_TAC[ARITH_RULE`t<=0<=> t=0`;]
774 THEN SUBGOAL_THEN`{v (i+k - t1) | t1 = 0} = {(v:num->real^3) i}`ASSUME_TAC
778 REWRITE_TAC[EXTENSION;IN_ELIM_THM;IN_SING]
782 THEN REWRITE_TAC[ARITH_RULE`a-0=a`]
786 THEN REWRITE_TAC[MMs_v39;BBprime_v39;BBprime2_v39;BBs_v39;LET_DEF;LET_END_DEF;periodic]
788 THEN THAYTHE_TAC (41-4)[`i:num`]
792 THEN REWRITE_TAC[ARITH_RULE`a-0=a`]
794 THEN REWRITE_TAC[MMs_v39;BBprime_v39;BBprime2_v39;BBs_v39;LET_DEF;LET_END_DEF;periodic]
796 THEN THAYTHE_TAC (40-4)[`i:num`]
801 ASM_REWRITE_TAC[SET_RULE`{a} UNION {b,c}= {a,b,c}`;Tskajxy_lemmas.KY_COPLANAR_3]
806 THEN MP_TAC(ARITH_RULE`SUC t<= i+k-j==> t<= i+k-j`)
813 MP_TAC(ARITH_RULE`t=0\/ 0<t`)
817 SUBGOAL_THEN`{(v:num->real^3) (i + k - t1) | t1 <= SUC 0} ={v i, v(i+k-1)}`ASSUME_TAC
821 REWRITE_TAC[EXTENSION;ARITH_RULE`t<= SUC 0<=> t=0\/ t=1`;IN_ELIM_THM]
828 THEN REWRITE_TAC[MMs_v39;BBprime_v39;BBprime2_v39;BBs_v39;LET_DEF;LET_END_DEF;periodic;ARITH_RULE`a- 0=a`]
830 THEN THAYTHE_TAC (45-4)[`i:num`]
837 THEN REWRITE_TAC[SET_RULE`a IN {b,c}<=> a=b\/ a=c`]
843 THEN REWRITE_TAC[ARITH_RULE`a-0=a`]
845 THEN REWRITE_TAC[MMs_v39;BBprime_v39;BBprime2_v39;BBs_v39;LET_DEF;LET_END_DEF;periodic;ARITH_RULE`a- 0=a`]
847 THEN THAYTHE_TAC (44-4)[`i:num`]
851 THEN ASM_REWRITE_TAC[]
855 ASM_REWRITE_TAC[SET_RULE`{a,b} UNION {c,a}={a,b,c}`;Tskajxy_lemmas.KY_COPLANAR_3]
858 REWRITE_TAC[coplanar]
859 THEN EXISTS_TAC`vec 0:real^3`
860 THEN EXISTS_TAC`(v:num->real^3) (i+k-t+1)`
861 THEN EXISTS_TAC`(v:num->real^3) (i+k-t)`
862 THEN ASM_REWRITE_TAC[UNION;SUBSET;IN_ELIM_THM;]
869 MATCH_MP_TAC Zlzthic.coplanar_in_affine_hull
870 THEN ASM_REWRITE_TAC[]
876 MRESA_TAC Nuxcoea.MMS_IMP_BBS[`s:scs_v39`;`v`]
877 THEN MRESA_TAC Imjxphr.BBS_IMP_CONVEX_LOCAL_FAN[`k:num`;`s`;`v`]
878 THEN MP_TAC Local_lemmas.CVLF_LF_F
880 THEN MRESA_TAC WL_IN_V[`i+k-t+1`;`v`]
881 THEN MRESA_TAC WL_IN_V[`i+k-t:num`;`v`]
882 THEN MP_TAC(ARITH_RULE`3<k/\ SUC t<= i+k-j/\ i<j/\ j<k==> 1<k/\ SUC(i + k - t)=i + k - t +1/\ ~(k=0) `)
884 THEN MRESA_TAC DIVISION[`i+k- t+1`;`k`]
885 THEN MRESA_TAC DIVISION[`i+k- t:num`;`k`]
886 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
888 THEN THAYTHE_TAC 0[`i+k- t:num`]
889 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`(i + k - t+1) MOD k`;`v:num->real^3`;`(i + k - t+1):num`]
891 THEN ASM_SIMP_TAC[MOD_REFL]
893 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`(i + k - t) MOD k`;`v:num->real^3`;`(i + k - t):num`]
895 THEN ASM_SIMP_TAC[MOD_REFL]
897 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`v:num->real^3`]
898 THEN THAYTHE_TAC 0[`(i+k- t+1) MOD k`;`(i+k-t:num) MOD k`]
899 THEN MRESA_TAC Nkezbfc_local.PROPERTIES_GENERIC[`FF`;`E`;`(v:num->real^3) (i+k- t+1)`;`v (i+k-t:num)`;`V`]
900 THEN THAYTHEL_TAC 0[`v(i+k- t+1)`;`v(i+k-t:num)`][SET_RULE`a IN {a,b}`;]
907 MP_TAC(ARITH_RULE`t1<= SUC t==> t1<= t\/ t1= SUC t`)
912 SUBGOAL_THEN`{vec 0, v (i+k-t+1), v (i+k-t),v (i+k-t1)} SUBSET {v (i+k- t1) | t1 <= t} UNION {vec 0, (v:num->real^3) i}`ASSUME_TAC
916 MATCH_MP_TAC(SET_RULE`{b,c,d} SUBSET A==> {a,b,c,d} SUBSET A UNION {a,e}`)
917 THEN REWRITE_TAC[SUBSET;IN_ELIM_THM;SET_RULE`a IN {b,c,d}<=> a=b\/ a=c\/ a=d`]
918 THEN REPEAT RESA_TAC;
921 THEN ASM_REWRITE_TAC[]
928 MP_TAC(ARITH_RULE`0<t/\ t<= i+k-j/\ i<j/\ j<k==> 1<=t/\i+k-t+1=i+(k+1)-t`)
930 THEN MRESA_TAC Ssrnat.subn_subA[`k:num`;`t:num`;`1`]
935 THEN ASM_REWRITE_TAC[ARITH_RULE`a<=a:num`]
941 THEN ASM_REWRITE_TAC[]
945 MRESA_TAC COPLANAR_SUBSET[`{vec 0, v (i + k - t + 1), v (i + k - t), v (i + k - t1)}`;`{v (i + k-t1) | t1 <= t:num} UNION {vec 0, v i}`]
946 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C,D}={B,C,D,A}`]
947 THEN ASM_REWRITE_TAC[];
950 ONCE_REWRITE_TAC[SET_RULE`{A,B,C,D}={B,D,C,A}`]
951 THEN MATCH_MP_TAC AZIM_EQ_0_PI_IMP_COPLANAR
952 THEN MATCH_MP_TAC(SET_RULE`A==> B \/ A`);
955 THAYTHEL_TAC (53-26)[`(i+k-t) MOD k`][ARITH_RULE`0<=a`]
956 THEN POP_ASSUM MP_TAC
957 THEN MP_TAC(ARITH_RULE`(i + k - t) MOD k < k/\ 3<k /\ SUC t <= i + k - j/\ i<j/\ 0<t/\ j<k
958 ==> (i + k - t) MOD k <= k - 1/\ 0<k/\ k-t<k /\ ~(k-t=0)/\ (i + k - t) + k - 1
961 THEN SUBGOAL_THEN`~((i + k - t) MOD k = i)`ASSUME_TAC;
965 THEN MRESA_TAC MOD_LT[`i`;`k`]
966 THEN MRESA_TAC MOD_LT[`0`;`k`]
967 THEN MRESA_TAC MOD_LT[`k-t:num`;`k`]
968 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`k-t:num`;`0`;`i`;`k`][ARITH_RULE`a+0=a`]
971 SUBGOAL_THEN`~((i + k - t) MOD k = j)`ASSUME_TAC
977 THEN MP_TAC(ARITH_RULE`(i + k - t) MOD k < k/\ 3<k /\ SUC t <= i + k - j/\ i<j/\ 0<t/\ j<k
978 ==> (j + k - t) + t= j + k - t + t/\ t<=k/\ (j + k - t) + i + k - j= (i + k - t) + k - j+j/\ j<=k/\ t<k/\ i+k-j<k/\ 1 * k + j= j+k/\ 1 * k + i + k - t=(i + k - t) + k/\ ~(i + k - j = t)`)
980 THEN MRESA_TAC MOD_LT[`t`;`k`]
981 THEN MRESA_TAC MOD_LT[`j`;`k`]
982 THEN MRESA_TAC MOD_LT[`i+k-j:num`;`k`]
983 THEN MRESA_TAC SUB_ADD[`k`;`t:num`]
984 THEN MRESA_TAC SUB_ADD[`k`;`j:num`]
985 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k`;`j`]
986 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k`;`(i + k - t):num`]
987 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`i+k-j:num`;`t:num`;`j+k-t:num`;`k`][ARITH_RULE`a+0=a`];
992 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`SUC ((i + k - t) MOD k):num`;`v:num->real^3`;`SUC ((i + k - t) MOD k) MOD k`]
994 THEN ASM_SIMP_TAC[MOD_REFL;Hypermap.lemma_suc_mod]
996 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`(i + k - t) MOD k + k - 1:num`;`v:num->real^3`;`((i + k - t) MOD k + k - 1) MOD k`]
998 THEN ASM_SIMP_TAC[MOD_REFL;Hypermap.lemma_suc_mod]
1000 THEN MP_TAC(ARITH_RULE`3<k==> k-1<k`)
1002 THEN MRESA_TAC MOD_LT[`k-1`;`k`]
1003 THEN MRESA_TAC Hypermap.lemma_sub_two_numbers[`k`;`t`;`1`]
1004 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k`;`i + k - (t + 1)`]
1005 THEN MRESA_TAC MOD_ADD_MOD[`i+k-t:num`;`k-1`;`k`]
1006 THEN REWRITE_TAC[ADD1]
1007 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`(i + k - (t + 1)) MOD k`;`v:num->real^3`;`(i + k - (t + 1))`]
1009 THEN ASM_SIMP_TAC[MOD_REFL;Hypermap.lemma_suc_mod]
1017 THEN REWRITE_TAC[SET_RULE`a IN {b,c}<=> a=b\/ a=c`]
1022 REWRITE_TAC[Collect_geom2.THREE_GEN_POINTS_IN_AFF3;GSYM aff]
1027 MATCH_MP_TAC Zlzthic.coplanar_in_affine_hull
1028 THEN ASM_REWRITE_TAC[]
1033 MRESA_TAC Nuxcoea.MMS_IMP_BBS[`s:scs_v39`;`v`]
1034 THEN MRESA_TAC Imjxphr.BBS_IMP_CONVEX_LOCAL_FAN[`k:num`;`s`;`v`]
1035 THEN MP_TAC Local_lemmas.CVLF_LF_F
1037 THEN MRESA_TAC WL_IN_V[`i+k-t+1`;`v`]
1038 THEN MRESA_TAC WL_IN_V[`i+k-t:num`;`v`]
1039 THEN MP_TAC(ARITH_RULE`3<k/\ SUC t<= i+k-j/\ i<j/\ j<k==> 1<k/\ SUC(i + k - t)=i + k - t +1/\ ~(k=0) `)
1041 THEN MRESA_TAC DIVISION[`i+k- t+1`;`k`]
1042 THEN MRESA_TAC DIVISION[`i+k- t:num`;`k`]
1043 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
1045 THEN THAYTHE_TAC 0[`i+k- t:num`]
1046 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`(i + k - t+1) MOD k`;`v:num->real^3`;`(i + k - t+1):num`]
1048 THEN ASM_SIMP_TAC[MOD_REFL]
1050 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`(i + k - t) MOD k`;`v:num->real^3`;`(i + k - t):num`]
1052 THEN ASM_SIMP_TAC[MOD_REFL]
1054 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`v:num->real^3`]
1055 THEN THAYTHE_TAC 0[`(i+k- t+1) MOD k`;`(i+k-t:num) MOD k`]
1056 THEN MRESA_TAC Nkezbfc_local.PROPERTIES_GENERIC[`FF`;`E`;`(v:num->real^3) (i+k- t+1)`;`v (i+k-t:num)`;`V`]
1057 THEN THAYTHEL_TAC 0[`v(i+k- t+1)`;`v(i+k-t:num)`][SET_RULE`a IN {a,b}`;]
1063 SUBGOAL_THEN`{vec 0, v (i + k - t + 1), v (i + k - t),v (i)} SUBSET {v (i+k- t1) | t1 <= t} UNION {vec 0, (v:num->real^3) i}`ASSUME_TAC
1067 MATCH_MP_TAC(SET_RULE`{b,c} SUBSET A==> {a,b,c,e} SUBSET A UNION {a,e}`)
1068 THEN REWRITE_TAC[SUBSET;IN_ELIM_THM;SET_RULE`a IN {b,c}<=> a=b\/ a=c`]
1069 THEN REPEAT RESA_TAC;
1072 THEN ASM_REWRITE_TAC[]
1079 MP_TAC(ARITH_RULE`0<t/\ t<= i+k-j/\ i<j/\ j<k==> 1<=t/\i+k-t+1=i+(k+1)-t`)
1081 THEN MRESA_TAC Ssrnat.subn_subA[`k:num`;`t:num`;`1`]
1086 THEN ASM_REWRITE_TAC[ARITH_RULE`a<=a:num`]
1092 MRESA_TAC COPLANAR_SUBSET[`{vec 0:real^3, v (i + k - t + 1), v (i + k - t), v i}`;`{(v:num->real^3) (i + k - t1) | t1 <= t} UNION {vec 0:real^3, v i}`]
1093 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C,D}={B,C,D,A}`]
1094 THEN ASM_REWRITE_TAC[];
1098 MRESA_TAC Nuxcoea.MMS_IMP_BBS[`s:scs_v39`;`v`]
1099 THEN MRESA_TAC Imjxphr.BBS_IMP_CONVEX_LOCAL_FAN[`k:num`;`s`;`v`]
1100 THEN MP_TAC Local_lemmas.CVLF_LF_F
1102 THEN POP_ASSUM MP_TAC
1103 THEN MRESA_TAC WL_IN_V[`i`;`v`]
1104 THEN MRESA_TAC WL_IN_V[`j:num`;`v`]
1105 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`v:num->real^3`]
1106 THEN THAYTHE_TAC 0[`i`;`j`]
1107 THEN MRESA_TAC Nkezbfc_local.PROPERTIES_GENERIC[`FF`;`E`;`(v:num->real^3) (i)`;`v (j:num)`;`V`]
1108 THEN THAYTHEL_TAC 0[`v i`;`v j`][SET_RULE`a IN {a, b}`]
1109 THEN SUBGOAL_THEN `coplanar ({vec 0} UNION {(v:num->real^3) (i+t)| t<k})`ASSUME_TAC
1113 REWRITE_TAC[coplanar]
1114 THEN EXISTS_TAC`vec 0:real^3`
1115 THEN EXISTS_TAC`(v:num->real^3) i`
1116 THEN EXISTS_TAC`(v:num->real^3) j`
1117 THEN REWRITE_TAC[SUBSET;IN_ELIM_THM;UNION;IN_SING]
1118 THEN REPEAT RESA_TAC;
1121 REWRITE_TAC[Collect_geom2.THREE_GEN_POINTS_IN_AFF3;GSYM aff]
1125 MP_TAC(ARITH_RULE`t<=j-i\/ j-i<=t:num`)
1131 MATCH_MP_TAC Zlzthic.coplanar_in_affine_hull
1132 THEN ASM_REWRITE_TAC[]
1133 THEN THAYTHEL_TAC (39-28)[`j-i:num`][ARITH_RULE`j-i<=j-i:num`]
1134 THEN MATCH_MP_TAC COPLANAR_SUBSET
1135 THEN EXISTS_TAC`({v (i + t1) | t1 | t1 <= j - i} UNION {vec 0, (v:num->real^3) i})`
1136 THEN ASM_REWRITE_TAC[]
1137 THEN MATCH_MP_TAC(SET_RULE`a IN A/\ d IN A==>{a,b,c,d} SUBSET A UNION {b,c}`)
1139 THEN REWRITE_TAC[IN_ELIM_THM]
1144 THEN ASM_REWRITE_TAC[];
1148 THEN ASM_REWRITE_TAC[ARITH_RULE`j-i<=j-i:num/\ i+j-i=j-i+i`]
1149 THEN MP_TAC(ARITH_RULE`i<j==> i<=j:num`)
1151 THEN MRESA_TAC SUB_ADD[`j`;`i`];
1156 MATCH_MP_TAC Zlzthic.coplanar_in_affine_hull
1157 THEN ASM_REWRITE_TAC[]
1158 THEN THAYTHEL_TAC (39-29)[`i+k-j:num`][ARITH_RULE`i+k-j<=i+k-j:num`]
1159 THEN MATCH_MP_TAC COPLANAR_SUBSET
1160 THEN EXISTS_TAC`({v (i + k - t1) | t1 | t1 <= i + k - j} UNION {vec 0, (v:num->real^3) i})`
1161 THEN ASM_REWRITE_TAC[]
1162 THEN MATCH_MP_TAC(SET_RULE`a IN A/\ d IN A==>{a,b,c,d} SUBSET A UNION {b,c}`)
1164 THEN REWRITE_TAC[IN_ELIM_THM]
1169 THEN ASM_REWRITE_TAC[]
1170 THEN MP_TAC(ARITH_RULE`t<k/\ j-i<=t /\ j<k==> t<=k:num/\ k-t<= i+k-j`)
1172 THEN MRESA_TAC Ssrnat.subKn[`t`;`k`]
1176 EXISTS_TAC`i+k-j:num`
1177 THEN ASM_REWRITE_TAC[ARITH_RULE`i + k - j<=i + k - j:num/\ i+j-i=j-i+i`]
1178 THEN MP_TAC(ARITH_RULE`i<j/\ j<k==> i<=j:num/\ (i+k)-j= i+k-j/\ j<=i+k
1179 /\ (i + k) - (i + k - j)= i + k - (i + k - j)`)
1181 THEN MRESA_TAC Ssrnat.subKn[`j:num`;`i+k:num`]
1186 THEN MRESA_TAC BB_TRANS_SUBSET_BB[`s`;`v`;`i`]
1187 THEN POP_ASSUM MP_TAC
1188 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)/\ ~(k=0)`)
1190 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;scs_prop_equ_v39;MMs_v39; BBprime2_v39;BBprime_v39;BBs_v39;LET_DEF;LET_END_DEF;is_scs_v39;scs_diag;scs_v39_explicit;is_scs_slice_v39;dsv_v39;scs_slice_v39;PAIR_EQ;scs_half_slice_v39]
1192 THEN ASM_SIMP_TAC[PERIODIC_IMAGE2]
1193 THEN MRESA_TAC TRANS_V[`s`;`i`;`v`]
1194 THEN MRESAL_TAC FEKTYIY[`s`;`v`][IN]
1198 (****************j<i****************)
1203 SUBGOAL_THEN`!t:num. t<=i-j ==> coplanar ({v (j+t1)| t1<=t} UNION {vec 0:real^3, (v:num->real^3) j})`ASSUME_TAC
1211 REWRITE_TAC[ARITH_RULE`t<=0<=> t=0`;]
1212 THEN SUBGOAL_THEN`{v (j + t1) | t1 = 0} = {(v:num->real^3) j}`ASSUME_TAC
1216 REWRITE_TAC[EXTENSION;IN_ELIM_THM;IN_SING]
1220 THEN REWRITE_TAC[ARITH_RULE`a+0=a`]
1222 THEN REWRITE_TAC[ARITH_RULE`a+0=a`]
1226 ASM_REWRITE_TAC[SET_RULE`{a} UNION {b,a}={a,b}`;COPLANAR_2]
1231 THEN MP_TAC(ARITH_RULE`SUC t<= i-j==> t<= i-j`)
1235 THEN SUBGOAL_THEN`{v (j + t1) | t1 <= SUC t}= {v (j + t1) | t1 <= t} UNION {(v:num->real^3) (j+ SUC t)}`ASSUME_TAC;
1239 REWRITE_TAC[UNION;IN_ELIM_THM;EXTENSION;IN_SING]
1246 MP_TAC(ARITH_RULE`t1<= SUC t==> t1<=t\/ t1= SUC t`)
1251 MATCH_MP_TAC(SET_RULE`A==>A\/B`)
1252 THEN EXISTS_TAC`t1:num`
1253 THEN ASM_REWRITE_TAC[]
1259 THEN ASM_REWRITE_TAC[]
1263 THEN ASM_REWRITE_TAC[]
1268 ASM_REWRITE_TAC[SET_RULE`(a UNION b) UNION c= a UNION b UNION c`]
1269 THEN MP_TAC(ARITH_RULE`t=0 \/ 0<t`)
1273 REWRITE_TAC[ARITH_RULE`t<=0<=> t=0`;]
1274 THEN SUBGOAL_THEN`{v (j + t1) | t1 = 0} = {(v:num->real^3) j}`ASSUME_TAC
1278 REWRITE_TAC[EXTENSION;IN_ELIM_THM;IN_SING]
1282 THEN REWRITE_TAC[ARITH_RULE`a+0=a`]
1284 THEN REWRITE_TAC[ARITH_RULE`a+0=a`]
1288 ASM_REWRITE_TAC[SET_RULE`{a} UNION {b} UNION {c,a}={a,b,c}`;Tskajxy_lemmas.KY_COPLANAR_3]
1293 MRESA_TAC Nuxcoea.MMS_IMP_BBS[`s:scs_v39`;`v`]
1294 THEN MRESA_TAC Imjxphr.BBS_IMP_CONVEX_LOCAL_FAN[`k:num`;`s`;`v`]
1295 THEN MP_TAC Local_lemmas.CVLF_LF_F
1297 THEN MRESA_TAC WL_IN_V[`j+t-1`;`v`]
1298 THEN MRESA_TAC WL_IN_V[`i`;`v`]
1299 THEN MRESA_TAC WL_IN_V[`j+t:num`;`v`]
1300 THEN MP_TAC(ARITH_RULE`0<t/\ t<=i-j/\ i<k ==> ~(j+t-1=j+t) /\ j+t-1<k/\ j+t<k`)
1302 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`v:num->real^3`]
1303 THEN THAYTHE_TAC 0[`j+t-1`;`j+t:num`]
1304 THEN MRESA_TAC Nkezbfc_local.PROPERTIES_GENERIC[`FF`;`E`;`(v:num->real^3) (j+t-1)`;`v i`;`V`]
1305 THEN THAYTHEL_TAC 0[`(v:num->real^3) (j+t-1)`;`(v:num->real^3) (j+t)`][SET_RULE`a IN {a,b}`;coplanar]
1306 THEN EXISTS_TAC`vec 0:real^3`
1307 THEN EXISTS_TAC`(v:num->real^3) (j+t-1)`
1308 THEN EXISTS_TAC`(v:num->real^3) (j+t)`
1309 THEN ASM_REWRITE_TAC[UNION;SUBSET;IN_ELIM_THM;]
1310 THEN REPEAT RESA_TAC;
1313 SUBGOAL_THEN`{vec 0, v (j+t-1), v (j + t),v (j + t1)} SUBSET {v (j + t1) | t1 <= t} UNION {vec 0, (v:num->real^3) j}`ASSUME_TAC
1317 MATCH_MP_TAC(SET_RULE`{b,c,d} SUBSET A==> {a,b,c,d} SUBSET A UNION {a,e}`)
1318 THEN REWRITE_TAC[SUBSET;IN_ELIM_THM;SET_RULE`a IN {b,c,d}<=> a=b\/ a=c\/ a=d`]
1319 THEN REPEAT RESA_TAC;
1322 THEN ASM_REWRITE_TAC[]
1327 THEN ASM_REWRITE_TAC[]
1331 THEN ASM_REWRITE_TAC[]
1335 MRESA_TAC COPLANAR_SUBSET[`{vec 0, v (j+t-1), v (j + t), v (j + t1:num)}`;`{v (j + t1) | t1 <= t:num} UNION {vec 0, v j}`]
1336 THEN MATCH_MP_TAC Zlzthic.coplanar_in_affine_hull
1337 THEN ASM_REWRITE_TAC[]
1338 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C,D}={B,C,D,A}`]
1339 THEN ASM_REWRITE_TAC[];
1343 THEN REWRITE_TAC[IN_SING]
1345 THEN MATCH_MP_TAC Zlzthic.coplanar_in_affine_hull
1346 THEN ASM_REWRITE_TAC[]
1347 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C,D}={B,D,A,C}`]
1348 THEN MATCH_MP_TAC AZIM_EQ_0_PI_IMP_COPLANAR
1349 THEN MATCH_MP_TAC(SET_RULE`A==> B \/ A`);
1352 MP_TAC(ARITH_RULE`0<t/\ SUC t<= i-j/\ i<k ==>SUC (j + t)= j+ SUC t/\ 0<= j+t/\
1353 j+t<=k-1/\ ~(j + t = j)/\ ~(j+t=i)/\ (j + t) + k - 1= (j + t - 1)+k`)
1355 THEN THAYTHE_TAC (51-26)[`j+t:num`]
1357 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;periodic]
1358 THEN REPEAT RESA_TAC
1359 THEN POP_ASSUM MP_TAC
1360 THEN THAYTHE_TAC (53-33)[`j+t-1`];
1363 THEN REWRITE_TAC[SET_RULE`a IN {b,c}<=> a=b\/ a=c`]
1368 REWRITE_TAC[Collect_geom2.THREE_GEN_POINTS_IN_AFF3;GSYM aff]
1373 MATCH_MP_TAC Zlzthic.coplanar_in_affine_hull
1374 THEN ASM_REWRITE_TAC[]
1377 SUBGOAL_THEN`{vec 0, v (j+t-1), v (j + t),v (j)} SUBSET {v (j + t1) | t1 <= t} UNION {vec 0, (v:num->real^3) j}`ASSUME_TAC
1381 MATCH_MP_TAC(SET_RULE`{b,c,d} SUBSET A==> {a,b,c,d} SUBSET A UNION {a,e}`)
1382 THEN REWRITE_TAC[SUBSET;IN_ELIM_THM;SET_RULE`a IN {b,c,d}<=> a=b\/ a=c\/ a=d`]
1383 THEN REPEAT RESA_TAC;
1386 THEN ASM_REWRITE_TAC[]
1391 THEN ASM_REWRITE_TAC[]
1395 THEN ASM_REWRITE_TAC[ARITH_RULE`0<=t/\ i+0=i`]
1399 MRESA_TAC COPLANAR_SUBSET[`{vec 0, v (j+t-1), v (j + t), v (j:num)}`;`{v (j + t1) | t1 <= t:num} UNION {vec 0, v j}`]
1400 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C,D}={B,C,D,A}`]
1401 THEN ASM_REWRITE_TAC[];
1404 SUBGOAL_THEN`!t. t <= j+k-i ==> coplanar ({v (j+k - t1) | t1 <= t} UNION {vec 0, (v:num->real^3) j})`ASSUME_TAC
1412 REWRITE_TAC[ARITH_RULE`t<=0<=> t=0`;]
1413 THEN SUBGOAL_THEN`{v (j+k - t1) | t1 = 0} = {(v:num->real^3) j}`ASSUME_TAC
1417 REWRITE_TAC[EXTENSION;IN_ELIM_THM;IN_SING]
1421 THEN REWRITE_TAC[ARITH_RULE`a-0=a`]
1425 THEN REWRITE_TAC[MMs_v39;BBprime_v39;BBprime2_v39;BBs_v39;LET_DEF;LET_END_DEF;periodic]
1426 THEN REPEAT RESA_TAC
1427 THEN THAYTHE_TAC (41-4)[`j:num`]
1431 THEN REWRITE_TAC[ARITH_RULE`a-0=a`]
1433 THEN REWRITE_TAC[MMs_v39;BBprime_v39;BBprime2_v39;BBs_v39;LET_DEF;LET_END_DEF;periodic]
1434 THEN REPEAT RESA_TAC
1435 THEN THAYTHE_TAC (40-4)[`j:num`]
1440 ASM_REWRITE_TAC[SET_RULE`{a} UNION {b,c}= {a,b,c}`;Tskajxy_lemmas.KY_COPLANAR_3]
1445 THEN MP_TAC(ARITH_RULE`SUC t<= j+k-i==> t<= j+k-i`)
1452 MP_TAC(ARITH_RULE`t=0\/ 0<t`)
1456 SUBGOAL_THEN`{(v:num->real^3) (j + k - t1) | t1 <= SUC 0} ={v j, v(j+k-1)}`ASSUME_TAC
1460 REWRITE_TAC[EXTENSION;ARITH_RULE`t<= SUC 0<=> t=0\/ t=1`;IN_ELIM_THM]
1467 THEN REWRITE_TAC[MMs_v39;BBprime_v39;BBprime2_v39;BBs_v39;LET_DEF;LET_END_DEF;periodic;ARITH_RULE`a- 0=a`]
1468 THEN REPEAT RESA_TAC
1469 THEN THAYTHE_TAC (45-4)[`j:num`]
1476 THEN REWRITE_TAC[SET_RULE`a IN {b,c}<=> a=b\/ a=c`]
1482 THEN REWRITE_TAC[ARITH_RULE`a-0=a`]
1484 THEN REWRITE_TAC[MMs_v39;BBprime_v39;BBprime2_v39;BBs_v39;LET_DEF;LET_END_DEF;periodic;ARITH_RULE`a- 0=a`]
1485 THEN REPEAT RESA_TAC
1486 THEN THAYTHE_TAC (44-4)[`j:num`]
1490 THEN ASM_REWRITE_TAC[]
1494 ASM_REWRITE_TAC[SET_RULE`{a,b} UNION {c,a}={a,b,c}`;Tskajxy_lemmas.KY_COPLANAR_3]
1497 REWRITE_TAC[coplanar]
1498 THEN EXISTS_TAC`vec 0:real^3`
1499 THEN EXISTS_TAC`(v:num->real^3) (j+k-t+1)`
1500 THEN EXISTS_TAC`(v:num->real^3) (j+k-t)`
1501 THEN ASM_REWRITE_TAC[UNION;SUBSET;IN_ELIM_THM;]
1502 THEN REPEAT RESA_TAC
1508 MATCH_MP_TAC Zlzthic.coplanar_in_affine_hull
1509 THEN ASM_REWRITE_TAC[]
1515 MRESA_TAC Nuxcoea.MMS_IMP_BBS[`s:scs_v39`;`v`]
1516 THEN MRESA_TAC Imjxphr.BBS_IMP_CONVEX_LOCAL_FAN[`k:num`;`s`;`v`]
1517 THEN MP_TAC Local_lemmas.CVLF_LF_F
1519 THEN MRESA_TAC WL_IN_V[`j+k-t+1`;`v`]
1520 THEN MRESA_TAC WL_IN_V[`j+k-t:num`;`v`]
1521 THEN MP_TAC(ARITH_RULE`3<k/\ SUC t<= j+k-i/\ j<i/\ i<k==> 1<k/\ SUC(j + k - t)=j + k - t +1/\ ~(k=0) `)
1523 THEN MRESA_TAC DIVISION[`j+k- t+1`;`k`]
1524 THEN MRESA_TAC DIVISION[`j+k- t:num`;`k`]
1525 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
1527 THEN THAYTHE_TAC 0[`j+k- t:num`]
1528 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`(j + k - t+1) MOD k`;`v:num->real^3`;`(j + k - t+1):num`]
1530 THEN ASM_SIMP_TAC[MOD_REFL]
1532 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`(j + k - t) MOD k`;`v:num->real^3`;`(j + k - t):num`]
1534 THEN ASM_SIMP_TAC[MOD_REFL]
1536 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`v:num->real^3`]
1537 THEN THAYTHE_TAC 0[`(j+k- t+1) MOD k`;`(j+k-t:num) MOD k`]
1538 THEN MRESA_TAC Nkezbfc_local.PROPERTIES_GENERIC[`FF`;`E`;`(v:num->real^3) (j+k- t+1)`;`v (j+k-t:num)`;`V`]
1539 THEN THAYTHEL_TAC 0[`v(j+k- t+1)`;`v(j+k-t:num)`][SET_RULE`a IN {a,b}`;]
1546 MP_TAC(ARITH_RULE`t1<= SUC t==> t1<= t\/ t1= SUC t`)
1551 SUBGOAL_THEN`{vec 0, v (j+k-t+1), v (j+k-t),v (j+k-t1)} SUBSET {v (j+k- t1) | t1 <= t} UNION {vec 0, (v:num->real^3) j}`ASSUME_TAC
1555 MATCH_MP_TAC(SET_RULE`{b,c,d} SUBSET A==> {a,b,c,d} SUBSET A UNION {a,e}`)
1556 THEN REWRITE_TAC[SUBSET;IN_ELIM_THM;SET_RULE`a IN {b,c,d}<=> a=b\/ a=c\/ a=d`]
1557 THEN REPEAT RESA_TAC;
1560 THEN ASM_REWRITE_TAC[]
1567 MP_TAC(ARITH_RULE`0<t/\ t<= j+k-i/\ j<i/\ i<k==> 1<=t/\j+k-t+1=j+(k+1)-t`)
1569 THEN MRESA_TAC Ssrnat.subn_subA[`k:num`;`t:num`;`1`]
1574 THEN ASM_REWRITE_TAC[ARITH_RULE`a<=a:num`]
1580 THEN ASM_REWRITE_TAC[]
1584 MRESA_TAC COPLANAR_SUBSET[`{vec 0, v (j + k - t + 1), v (j + k - t), v (j + k - t1)}`;`{v (j + k-t1) | t1 <= t:num} UNION {vec 0, v j}`]
1585 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C,D}={B,C,D,A}`]
1586 THEN ASM_REWRITE_TAC[];
1589 ONCE_REWRITE_TAC[SET_RULE`{A,B,C,D}={B,D,C,A}`]
1590 THEN MATCH_MP_TAC AZIM_EQ_0_PI_IMP_COPLANAR
1591 THEN MATCH_MP_TAC(SET_RULE`A==> B \/ A`);
1594 THAYTHEL_TAC (53-26)[`(j+k-t) MOD k`][ARITH_RULE`0<=a`]
1595 THEN POP_ASSUM MP_TAC
1596 THEN MP_TAC(ARITH_RULE`(j + k - t) MOD k < k/\ 3<k /\ SUC t <= j + k - i/\ j<i/\ 0<t/\ i<k
1597 ==> (j + k - t) MOD k <= k - 1/\ 0<k/\ k-t<k /\ ~(k-t=0)/\ (j + k - t) + k - 1
1600 THEN SUBGOAL_THEN`~((j + k - t) MOD k = j)`ASSUME_TAC;
1604 THEN MRESA_TAC MOD_LT[`j`;`k`]
1605 THEN MRESA_TAC MOD_LT[`0`;`k`]
1606 THEN MRESA_TAC MOD_LT[`k-t:num`;`k`]
1607 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`k-t:num`;`0`;`j`;`k`][ARITH_RULE`a+0=a`]
1610 SUBGOAL_THEN`~((j + k - t) MOD k = i)`ASSUME_TAC
1616 THEN MP_TAC(ARITH_RULE`(j + k - t) MOD k < k/\ 3<k /\ SUC t <= j + k - i/\ j<i/\ 0<t/\ i<k
1617 ==> (i + k - t) + t= i + k - t + t/\ t<=k/\ (i + k - t) + j + k - i= (j + k - t) + k - i+i/\ i<=k/\ t<k/\ j+k-i<k/\ 1 * k + i= i+k/\ 1 * k + j + k - t=(j + k - t) + k/\ ~(j + k - i = t)`)
1619 THEN MRESA_TAC MOD_LT[`t`;`k`]
1620 THEN MRESA_TAC MOD_LT[`i`;`k`]
1621 THEN MRESA_TAC MOD_LT[`j+k-i:num`;`k`]
1622 THEN MRESA_TAC SUB_ADD[`k`;`t:num`]
1623 THEN MRESA_TAC SUB_ADD[`k`;`i:num`]
1624 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k`;`i`]
1625 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k`;`(j + k - t):num`]
1626 THEN MRESAL_TAC Hdplygy.MOD_EQ_MOD[`j+k-i:num`;`t:num`;`i+k-t:num`;`k`][ARITH_RULE`a+0=a`];
1631 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`SUC ((j + k - t) MOD k):num`;`v:num->real^3`;`SUC ((j + k - t) MOD k) MOD k`]
1633 THEN ASM_SIMP_TAC[MOD_REFL;Hypermap.lemma_suc_mod]
1635 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`(j + k - t) MOD k + k - 1:num`;`v:num->real^3`;`((j + k - t) MOD k + k - 1) MOD k`]
1637 THEN ASM_SIMP_TAC[MOD_REFL;Hypermap.lemma_suc_mod]
1639 THEN MP_TAC(ARITH_RULE`3<k==> k-1<k`)
1641 THEN MRESA_TAC MOD_LT[`k-1`;`k`]
1642 THEN MRESA_TAC Hypermap.lemma_sub_two_numbers[`k`;`t`;`1`]
1643 THEN MRESA_TAC MOD_MULT_ADD[`1`;`k`;`j + k - (t + 1)`]
1644 THEN MRESA_TAC MOD_ADD_MOD[`j+k-t:num`;`k-1`;`k`]
1645 THEN REWRITE_TAC[ADD1]
1646 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`(j + k - (t + 1)) MOD k`;`v:num->real^3`;`(j + k - (t + 1))`]
1648 THEN ASM_SIMP_TAC[MOD_REFL;Hypermap.lemma_suc_mod]
1656 THEN REWRITE_TAC[SET_RULE`a IN {b,c}<=> a=b\/ a=c`]
1661 REWRITE_TAC[Collect_geom2.THREE_GEN_POINTS_IN_AFF3;GSYM aff]
1666 MATCH_MP_TAC Zlzthic.coplanar_in_affine_hull
1667 THEN ASM_REWRITE_TAC[]
1672 MRESA_TAC Nuxcoea.MMS_IMP_BBS[`s:scs_v39`;`v`]
1673 THEN MRESA_TAC Imjxphr.BBS_IMP_CONVEX_LOCAL_FAN[`k:num`;`s`;`v`]
1674 THEN MP_TAC Local_lemmas.CVLF_LF_F
1676 THEN MRESA_TAC WL_IN_V[`j+k-t+1`;`v`]
1677 THEN MRESA_TAC WL_IN_V[`j+k-t:num`;`v`]
1678 THEN MP_TAC(ARITH_RULE`3<k/\ SUC t<= j+k-i/\ j<i/\ i<k==> 1<k/\ SUC(j + k - t)=j + k - t +1/\ ~(k=0) `)
1680 THEN MRESA_TAC DIVISION[`j+k- t+1`;`k`]
1681 THEN MRESA_TAC DIVISION[`j+k- t:num`;`k`]
1682 THEN MP_TAC Qknvmlb.SUC_MOD_NOT_EQ
1684 THEN THAYTHE_TAC 0[`j+k- t:num`]
1685 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`(j + k - t+1) MOD k`;`v:num->real^3`;`(j + k - t+1):num`]
1687 THEN ASM_SIMP_TAC[MOD_REFL]
1689 THEN MRESA_TAC (GEN_ALL CHANGE_W_IN_BBS_MOD_IS_SCS)[`s:scs_v39`;`(j + k - t) MOD k`;`v:num->real^3`;`(j + k - t):num`]
1691 THEN ASM_SIMP_TAC[MOD_REFL]
1693 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`v:num->real^3`]
1694 THEN THAYTHE_TAC 0[`(j+k- t+1) MOD k`;`(j+k-t:num) MOD k`]
1695 THEN MRESA_TAC Nkezbfc_local.PROPERTIES_GENERIC[`FF`;`E`;`(v:num->real^3) (j+k- t+1)`;`v (j+k-t:num)`;`V`]
1696 THEN THAYTHEL_TAC 0[`v(j+k- t+1)`;`v(j+k-t:num)`][SET_RULE`a IN {a,b}`;]
1702 SUBGOAL_THEN`{vec 0, v (j + k - t + 1), v (j + k - t),v (j)} SUBSET {v (j+k- t1) | t1 <= t} UNION {vec 0, (v:num->real^3) j}`ASSUME_TAC
1706 MATCH_MP_TAC(SET_RULE`{b,c} SUBSET A==> {a,b,c,e} SUBSET A UNION {a,e}`)
1707 THEN REWRITE_TAC[SUBSET;IN_ELIM_THM;SET_RULE`a IN {b,c}<=> a=b\/ a=c`]
1708 THEN REPEAT RESA_TAC;
1711 THEN ASM_REWRITE_TAC[]
1718 MP_TAC(ARITH_RULE`0<t/\ t<= j+k-i/\ j<i/\ i<k==> 1<=t/\j+k-t+1=j+(k+1)-t`)
1720 THEN MRESA_TAC Ssrnat.subn_subA[`k:num`;`t:num`;`1`]
1725 THEN ASM_REWRITE_TAC[ARITH_RULE`a<=a:num`]
1731 MRESA_TAC COPLANAR_SUBSET[`{vec 0:real^3, v (j + k - t + 1), v (j + k - t), v j}`;`{(v:num->real^3) (j + k - t1) | t1 <= t} UNION {vec 0:real^3, v j}`]
1732 THEN ONCE_REWRITE_TAC[SET_RULE`{A,B,C,D}={B,C,D,A}`]
1733 THEN ASM_REWRITE_TAC[];
1737 MRESA_TAC Nuxcoea.MMS_IMP_BBS[`s:scs_v39`;`v`]
1738 THEN MRESA_TAC Imjxphr.BBS_IMP_CONVEX_LOCAL_FAN[`k:num`;`s`;`v`]
1739 THEN MP_TAC Local_lemmas.CVLF_LF_F
1741 THEN POP_ASSUM MP_TAC
1742 THEN MRESA_TAC WL_IN_V[`j`;`v`]
1743 THEN MRESA_TAC WL_IN_V[`i:num`;`v`]
1744 THEN MRESA_TAC (GEN_ALL VV_INJ)[`s:scs_v39`;`k:num`;`v:num->real^3`]
1745 THEN THAYTHE_TAC 0[`j`;`i`]
1746 THEN MRESA_TAC Nkezbfc_local.PROPERTIES_GENERIC[`FF`;`E`;`(v:num->real^3) (j)`;`v (i:num)`;`V`]
1747 THEN THAYTHEL_TAC 0[`v j`;`v i`][SET_RULE`a IN {a, b}`]
1748 THEN SUBGOAL_THEN `coplanar ({vec 0} UNION {(v:num->real^3) (j+t)| t<k})`ASSUME_TAC
1752 REWRITE_TAC[coplanar]
1753 THEN EXISTS_TAC`vec 0:real^3`
1754 THEN EXISTS_TAC`(v:num->real^3) j`
1755 THEN EXISTS_TAC`(v:num->real^3) i`
1756 THEN REWRITE_TAC[SUBSET;IN_ELIM_THM;UNION;IN_SING]
1757 THEN REPEAT RESA_TAC;
1760 REWRITE_TAC[Collect_geom2.THREE_GEN_POINTS_IN_AFF3;GSYM aff]
1764 MP_TAC(ARITH_RULE`t<=i-j\/ i-j<=t:num`)
1770 MATCH_MP_TAC Zlzthic.coplanar_in_affine_hull
1771 THEN ASM_REWRITE_TAC[]
1772 THEN THAYTHEL_TAC (39-28)[`i-j:num`][ARITH_RULE`i-j<=i-j:num`]
1773 THEN MATCH_MP_TAC COPLANAR_SUBSET
1774 THEN EXISTS_TAC`({v (j + t1) | t1 | t1 <= i - j} UNION {vec 0, (v:num->real^3) j})`
1775 THEN ASM_REWRITE_TAC[]
1776 THEN MATCH_MP_TAC(SET_RULE`a IN A/\ d IN A==>{a,b,c,d} SUBSET A UNION {b,c}`)
1778 THEN REWRITE_TAC[IN_ELIM_THM]
1783 THEN ASM_REWRITE_TAC[];
1787 THEN ASM_REWRITE_TAC[ARITH_RULE`j-i<=j-i:num/\ i+j-i=j-i+i`]
1788 THEN MP_TAC(ARITH_RULE`j<i==> j<=i:num`)
1790 THEN MRESA_TAC SUB_ADD[`i`;`j`];
1795 MATCH_MP_TAC Zlzthic.coplanar_in_affine_hull
1796 THEN ASM_REWRITE_TAC[]
1797 THEN THAYTHEL_TAC (39-29)[`j+k-i:num`][ARITH_RULE`i+k-j<=i+k-j:num`]
1798 THEN MATCH_MP_TAC COPLANAR_SUBSET
1799 THEN EXISTS_TAC`({v (j + k - t1) | t1 | t1 <= j + k - i} UNION {vec 0, (v:num->real^3) j})`
1800 THEN ASM_REWRITE_TAC[]
1801 THEN MATCH_MP_TAC(SET_RULE`a IN A/\ d IN A==>{a,b,c,d} SUBSET A UNION {b,c}`)
1803 THEN REWRITE_TAC[IN_ELIM_THM]
1808 THEN ASM_REWRITE_TAC[]
1809 THEN MP_TAC(ARITH_RULE`t<k/\ i-j<=t /\ i<k==> t<=k:num/\ k-t<= j+k-i`)
1811 THEN MRESA_TAC Ssrnat.subKn[`t`;`k`]
1815 EXISTS_TAC`j+k-i:num`
1816 THEN ASM_REWRITE_TAC[ARITH_RULE`i + k - j<=i + k - j:num/\ i+j-i=j-i+i`]
1817 THEN MP_TAC(ARITH_RULE`j<i/\ i<k==> j<=i:num/\ (j+k)-i= j+k-i/\ i<=j+k
1818 /\ (j + k) - (j + k - i)= j + k - (j + k - i)`)
1820 THEN MRESA_TAC Ssrnat.subKn[`i:num`;`j+k:num`]
1825 THEN MRESA_TAC BB_TRANS_SUBSET_BB[`s`;`v`;`j`]
1826 THEN POP_ASSUM MP_TAC
1827 THEN MP_TAC(ARITH_RULE`3<k==> ~(k<=3)/\ ~(k=0)`)
1829 THEN REWRITE_TAC[BBs_v39;LET_DEF;LET_END_DEF;scs_prop_equ_v39;MMs_v39; BBprime2_v39;BBprime_v39;BBs_v39;LET_DEF;LET_END_DEF;is_scs_v39;scs_diag;scs_v39_explicit;is_scs_slice_v39;dsv_v39;scs_slice_v39;PAIR_EQ;scs_half_slice_v39]
1831 THEN ASM_SIMP_TAC[PERIODIC_IMAGE2]
1832 THEN MRESA_TAC TRANS_V[`s`;`j`;`v`]
1833 THEN MRESAL_TAC FEKTYIY[`s`;`v`][IN]
1844 let check_completeness_claimA_concl =
1845 Ineq.mk_tplate `\x. scs_arrow_v13 (set_of_list x)