(* ========================================================================== *)
(* FLYSPECK - BOOK FORMALIZATION *)
(* *)
(* Chapter: Local Fan *)
(* Author: Hoang Le Truong *)
(* Date: 2012-04-01 *)
(* ========================================================================= *)
(*
remaining conclusions from appendix to Local Fan chapter
*)
module Miqmcsn = struct
open Polyhedron;;
open Sphere;;
open Topology;;
open Fan_misc;;
open Planarity;;
open Conforming;;
open Hypermap;;
open Fan;;
open Topology;;
open Wrgcvdr_cizmrrh;;
open Local_lemmas;;
open Collect_geom;;
open Dih2k_hypermap;;
open Wjscpro;;
open Tecoxbm;;
open Hdplygy;;
open Nkezbfc_local;;
open Flyspeck_constants;;
open Gbycpxs;;
open Pcrttid;;
open Local_lemmas1;;
open Pack_defs;;
open Hales_tactic;;
open Appendix;;
open Hypermap;;
open Fan;;
open Wrgcvdr_cizmrrh;;
open Local_lemmas;;
open Flyspeck_constants;;
open Pack_defs;;
open Hales_tactic;;
open Appendix;;
open Zithlqn;;
open Xwitccn;;
open Ayqjtmd;;
open Jkqewgv;;
open Mtuwlun;;
open Uxckfpe;;
open Sgtrnaf;;
open Yxionxl;;
open Qknvmlb;;
open Odxlstcv2;;
open Yxionxl2;;
open Eyypqdw;;
open Ocbicby;;
open Imjxphr;;
open Nuxcoea;;
open Aursipd;;
open Cuxvzoz;;
open Rrcwnsj;;
open Tfitskc;;
open Hexagons;;
open Otmtotj;;
open Hijqaha;;
open Cnicgsf;;
open Ardbzye;;
open Aueaheh;;
open Vasyyau;;
(**************************************************)
let scs_3T4_prime2 = (* terminal_tri_6833979866 = *) new_definition
`scs_3T4_prime2 = mk_unadorned_v39 3
(#0.2759)
(funlist_v39 [(0,1),(&2);(0,2),cstab] (&2*h0) 3)
(funlist_v39 [(0,1),(&2 * h0)] (cstab) 3)`;;
let scs_3T3_prime = (* terminal_tri_6833979866 = *) new_definition
`scs_3T3_prime = mk_unadorned_v39 3
(#0.476)
(funlist_v39 [(0,1),cstab] (&2*h0) 3)
(funlist_v39 [] (cstab) 3)`;;
let scs_4M8_02 = new_definition
`scs_4M8_02 = mk_unadorned_v39 4 (#0.513)
(funlist_v39 [(0,1),cstab;(2,3),cstab;(0,2),(cstab);(1,3),(cstab)] (&2) 4)
(funlist_v39 [(0,1),cstab;(2,3),cstab;(0,2),(#3.62);(1,3),(&6)] (&2) 4)`;;
let scs_4M8_13 = new_definition
`scs_4M8_13 = mk_unadorned_v39 4 (#0.513)
(funlist_v39 [(0,1),cstab;(2,3),cstab;(0,2),(cstab);(1,3),(cstab)] (&2) 4)
(funlist_v39 [(0,1),cstab;(2,3),cstab;(0,2),(&6);(1,3),(#3.62)] (&2) 4)`;;
let PSORT_5_EXPLICIT=prove(`
psort 5 (0,0)= (0,0)/\
psort 5 (1,1)= (1,1)/\
psort 5 (2,2)= (2,2)/\
psort 5 (3,3)= (3,3)/\
psort 5 (4,4)= (4,4)/\
psort 5 (0,1)= (0,1)/\
psort 5 (0,2)= (0,2)/\
psort 5 (0,3)= (0,3)/\
psort 5 (0,4)= (0,4)/\
psort 5 (1,0)= (0,1)/\
psort 5 (1,2)= (1,2)/\
psort 5 (1,3)= (1,3)/\
psort 5 (1,4)= (1,4)/\
psort 5 (2,0)= (0,2)/\
psort 5 (2,1)= (1,2)/\
psort 5 (2,3)= (2,3)/\
psort 5 (2,4)= (2,4)/\
psort 5 (3,0)= (0,3)/\
psort 5 (3,1)= (1,3)/\
psort 5 (3,2)= (2,3)/\
psort 5 (3,4)= (3,4)/\
psort 5 (4,0)= (0,4)/\
psort 5 (4,1)= (1,4)/\
psort 5 (4,2)= (2,4)/\
psort 5 (4,3)= (3,4)/\
psort 5 (4,5)= (0,4)/\
psort 5 (3,5)= (0,3)/\
psort 5 (2,5)= (0,2)/\
psort 5 (1,5)= (0,1)/\
psort 5 (5,1)= (0,1)/\
psort 5 (5,2)= (0,2)/\
psort 5 (5,3)= (0,3)/\
psort 5 (5,4)= (0,4)/\
psort 5 (5,5)= (0,0)/\
psort 5 (5,6)= (0,1)/\
psort 5 (5,7)= (0,2)/\
psort 5 (4,6)= (1,4)/\
psort 5 (6,4)= (1,4)/\
psort 5 (6,5)= (0,1)/\
psort 5 (6,7)= (1,2)/\
psort 5 (7,5)= (0,2)/\
psort 5 (7,6)= (1,2)/\
psort 5 (7,7)= (2,2)/\
psort 5 (6,6)= (1,1)/\
psort 4 (3,4)= (0,3)/\
psort 3 (2,0)= (0,2)/\
psort 3 (2,1)= (1,2)/\
psort 3 (1,0)= (0,1)/\
psort 4 (0,0)= (0,0)/\
psort 4 (1,1)= (1,1)/\
psort 4 (2,2)= (2,2)/\
psort 4 (3,3)= (3,3)/\
psort 4 (4,3)= (0,3)/\
psort 4 (4,4)= (0,0)/\
psort 4 (0,2)= (0,2)/\
psort 4 (4,5)= (0,1)/\
psort 4 (5,4)= (0,1)/\
psort 4 (5,5)= (1,1)/\
psort 4 (1,4)= (0,1)/\
psort 4 (2,5)= (1,2)/\
psort 4 (3,6)= (2,3)
`,
REWRITE_TAC[psort;Uxckfpe.ARITH_3_TAC;Uxckfpe.ARITH_5_TAC;Uxckfpe.ARITH_4_TAC;
LET_DEF;
LET_END_DEF;
MOD_5_EXPLICIT;ARITH_RULE`0<=a/\ ~(1<= 0)/\ ~(2<=0)/\ ~(3<=0)/\ ~(4<=0)/\a<=a/\ ~(2<=1)/\ ~(3<=2)/\ ~(4<=3)/\ ~(3<=1)/\ ~(4<=1)/\ ~(4<=2)/\ 2<=3/\ 6 MOD 4=2`]);;
let SCS_TAC= ASM_SIMP_TAC[scs_basic;is_scs_v39;mk_unadorned_v39;scs_v39_explicit;CS_ADJ;d_tame;REAL_ARITH`#0.712 < #0.9`;periodic;SET_RULE`{} j <=> {} i`;periodic2;scs_basic;unadorned_v39;scs_prop_equ_v39;LET_DEF;LET_END_DEF;scs_stab_diag_v39;scs_half_slice_v39;
Uxckfpe.ARITH_3_TAC;Uxckfpe.ARITH_6_TAC;Uxckfpe.ARITH_4_TAC;Uxckfpe.ARITH_5_TAC;
scs_5M1;scs_3M1;scs_6I1;scs_3T1;scs_4M2;scs_6M1;scs_6T1;scs_5I1;scs_5I2;scs_5I3;scs_5M2;scs_4M6;scs_3T4;scs_5M3;scs_3T4_prime;scs_4M6_prime;scs_4M7_prime;scs_4M7;scs_3T1_prime;scs_4M8;scs_4M8_prime;scs_5T1;scs_3T5;scs_4M3;scs_3T6;scs_4M4;scs_4M5;scs_4I2;scs_4T1;scs_4T2;scs_4I1;scs_4T4;scs_4I3;scs_3T3;scs_4T5;scs_3T4_prime2;scs_3T3_prime;scs_3M1_prime;scs_4T3;scs_4M8_02;scs_4M8_13;scs_3T7;
Terminal.FUNLIST_EXPLICIT;Yrtafyh.PSORT_PERIODIC;PSORT_5_EXPLICIT;
ARITH_RULE`SUC 0=1/\ SUC 1=2/\ SUC 2=3/\ SUC 3=4/\ SUC 4=5/\ SUC 5=6/\ SUC 6=7/\ SUC 7=8/\ 6 MOD 4=2`];;
(********************)
let SCS_4T3_IS_SCS=prove_by_refinement(`
is_scs_v39 scs_4T3`,
[SIMP_TAC[scs_4T3;
is_scs_v39;
mk_unadorned_v39;scs_v39_explicit;
CS_ADJ;ARITH_RULE`~(6=3)/\ 6-1=5/\ 3<=6/\ 6<=6/\ ~(6=4)/\ ~(6=5)/\ 3<=4/\ 4<=6/\a<=a/\ ~(6=0)`;
d_tame;REAL_ARITH`#0.513 < #0.9`;periodic;SET_RULE`{} (i + 4) <=> {} i`;periodic2;ARITH_RULE`~(4=0)`;
MOD_PERIODIC]
THEN REPEAT RESA_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 4= j MOD 4\/ ~(i MOD 4= j MOD 4)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 4= j MOD 4\/ ~(i MOD 4= j MOD 4)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 4= j MOD 4\/ ~(i MOD 4= j MOD 4)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN REWRITE_TAC[h0;cstab]
THEN REAL_ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[h0;cstab;
MOD_LT]
THEN REAL_ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[h0;cstab;
MOD_LT]
THEN REAL_ARITH_TAC;
POP_ASSUM MP_TAC
THEN ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[h0;cstab;]
THEN MRESAS_TAC Yrtafyh.DIAG_NOT_PSORT[`0`;`2`;`4`][
scs_diag;Uxckfpe.ARITH_4_TAC;Terminal.FUNLIST_EXPLICIT]
THEN MRESAS_TAC Yrtafyh.DIAG_NOT_PSORT[`1`;`3`;`4`][
scs_diag;Uxckfpe.ARITH_4_TAC;Terminal.FUNLIST_EXPLICIT]
THEN REAL_ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[h0;cstab;]
THEN MRESAS_TAC Yrtafyh.DIAG_NOT_PSORT[`0`;`2`;`4`][
scs_diag;Uxckfpe.ARITH_4_TAC;Terminal.FUNLIST_EXPLICIT]
THEN MRESAS_TAC Yrtafyh.DIAG_NOT_PSORT[`1`;`3`;`4`][
scs_diag;Uxckfpe.ARITH_4_TAC;Terminal.FUNLIST_EXPLICIT;Qknvmlb.SUC_MOD_NOT_EQ;ARITH_RULE`1<4`]
THEN SUBGOAL_THEN`{i | i < 4 /\
(&2 * #1.26 < (if psort 4 (i,SUC i) = 0,1 then #3.01 else &2 ) \/
&2 < (if psort 4 (i,SUC i) = 0,1 then #3.01 else &2))} ={0}`ASSUME_TAC
;
REWRITE_TAC[
EXTENSION;
IN_ELIM_THM;
IN_SING;ARITH_RULE`x<4<=> x=0\/ x=1\/x=2\/ x=3`]
THEN GEN_TAC
THEN EQ_TAC
THEN RESA_TAC
THEN POP_ASSUM MP_TAC
THEN ASM_SIMP_TAC[Terminal.FUNLIST_EXPLICIT;ARITH_RULE`SUC 1=2`;
PAIR_EQ;Uxckfpe.ARITH_4_TAC;REAL_ARITH`~(a<a)/\ &2 * #1.26 < #3.01/\ ~(&2 * #1.26 < &2) `;
PSORT_5_EXPLICIT;
LT_sqrt8_2h0];
ASM_REWRITE_TAC[Geomdetail.CARD_SING]
THEN ARITH_TAC;
]);;
let SCS_4M8_02_IS_SCS=prove_by_refinement(`
is_scs_v39 scs_4M8_02`,
[
SIMP_TAC[
scs_4M8_02;
is_scs_v39;
mk_unadorned_v39;scs_v39_explicit;
CS_ADJ;ARITH_RULE`~(6=3)/\ 6-1=5/\ 3<=6/\ 6<=6/\ ~(6=4)/\ ~(6=5)/\ 3<=4/\ 4<=6/\a<=a/\ ~(6=0)`;
d_tame;REAL_ARITH`#0.513 < #0.9`;periodic;SET_RULE`{} (i + 4) <=> {} i`;periodic2;ARITH_RULE`~(4=0)`;
MOD_PERIODIC]
THEN REPEAT RESA_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 4= j MOD 4\/ ~(i MOD 4= j MOD 4)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 4= j MOD 4\/ ~(i MOD 4= j MOD 4)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 4= j MOD 4\/ ~(i MOD 4= j MOD 4)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN REWRITE_TAC[h0;cstab]
THEN REAL_ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[h0;cstab;
MOD_LT]
THEN REAL_ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[h0;cstab;
MOD_LT]
THEN REAL_ARITH_TAC;
POP_ASSUM MP_TAC
THEN ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[h0;cstab;]
THEN MRESAS_TAC Yrtafyh.DIAG_NOT_PSORT[`0`;`2`;`4`][
scs_diag;Uxckfpe.ARITH_4_TAC;Terminal.FUNLIST_EXPLICIT]
THEN MRESAS_TAC Yrtafyh.DIAG_NOT_PSORT[`1`;`3`;`4`][
scs_diag;Uxckfpe.ARITH_4_TAC;Terminal.FUNLIST_EXPLICIT]
THEN REAL_ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[h0;cstab;]
THEN MRESAS_TAC Yrtafyh.DIAG_NOT_PSORT[`0`;`2`;`4`][
scs_diag;Uxckfpe.ARITH_4_TAC;Terminal.FUNLIST_EXPLICIT]
THEN MRESAS_TAC Yrtafyh.DIAG_NOT_PSORT[`1`;`3`;`4`][
scs_diag;Uxckfpe.ARITH_4_TAC;Terminal.FUNLIST_EXPLICIT;Qknvmlb.SUC_MOD_NOT_EQ;ARITH_RULE`1<4`]
THEN SUBGOAL_THEN`{i | i < 4 /\
(&2 * #1.26 <
(if psort 4 (i,SUC i) = 0,1
then #3.01
else if psort 4 (i,SUC i) = 2,3 then #3.01 else &2) \/
&2 <
(if psort 4 (i,SUC i) = 0,1
then #3.01
else if psort 4 (i,SUC i) = 2,3 then #3.01 else &2))} ={0,2}`ASSUME_TAC
;
REWRITE_TAC[
EXTENSION;
IN_ELIM_THM;
IN_SING;ARITH_RULE`x<4<=> x=0\/ x=1\/x=2\/ x=3`;SET_RULE`a
IN {b,c}<=>a=b\/ a=c`]
THEN GEN_TAC
THEN EQ_TAC
THEN RESA_TAC
THEN POP_ASSUM MP_TAC
THEN ASM_SIMP_TAC[Terminal.FUNLIST_EXPLICIT;ARITH_RULE`SUC 1=2`;
PAIR_EQ;Uxckfpe.ARITH_4_TAC;REAL_ARITH`~(a<a)/\ &2 * #1.26 < #3.01/\ ~(&2 * #1.26 < &2) `;
PSORT_5_EXPLICIT;
LT_sqrt8_2h0;];
ASM_SIMP_TAC[Planarity.CARD_2_FAN;ARITH_RULE`~(0=2)`]
THEN ARITH_TAC;
]);;
let SCS_4M8_13_IS_SCS=prove_by_refinement(`
is_scs_v39 scs_4M8_13`,
[
SIMP_TAC[
scs_4M8_13;
is_scs_v39;
mk_unadorned_v39;scs_v39_explicit;
CS_ADJ;ARITH_RULE`~(6=3)/\ 6-1=5/\ 3<=6/\ 6<=6/\ ~(6=4)/\ ~(6=5)/\ 3<=4/\ 4<=6/\a<=a/\ ~(6=0)`;
d_tame;REAL_ARITH`#0.513 < #0.9`;periodic;SET_RULE`{} (i + 4) <=> {} i`;periodic2;ARITH_RULE`~(4=0)`;
MOD_PERIODIC]
THEN REPEAT RESA_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+4= 1*4+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 4= j MOD 4\/ ~(i MOD 4= j MOD 4)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 4= j MOD 4\/ ~(i MOD 4= j MOD 4)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 4= j MOD 4\/ ~(i MOD 4= j MOD 4)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN REWRITE_TAC[h0;cstab]
THEN REAL_ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[h0;cstab;
MOD_LT]
THEN REAL_ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[h0;cstab;
MOD_LT]
THEN REAL_ARITH_TAC;
POP_ASSUM MP_TAC
THEN ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[h0;cstab;]
THEN MRESAS_TAC Yrtafyh.DIAG_NOT_PSORT[`0`;`2`;`4`][
scs_diag;Uxckfpe.ARITH_4_TAC;Terminal.FUNLIST_EXPLICIT]
THEN MRESAS_TAC Yrtafyh.DIAG_NOT_PSORT[`1`;`3`;`4`][
scs_diag;Uxckfpe.ARITH_4_TAC;Terminal.FUNLIST_EXPLICIT]
THEN REAL_ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[h0;cstab;]
THEN MRESAS_TAC Yrtafyh.DIAG_NOT_PSORT[`0`;`2`;`4`][
scs_diag;Uxckfpe.ARITH_4_TAC;Terminal.FUNLIST_EXPLICIT]
THEN MRESAS_TAC Yrtafyh.DIAG_NOT_PSORT[`1`;`3`;`4`][
scs_diag;Uxckfpe.ARITH_4_TAC;Terminal.FUNLIST_EXPLICIT;Qknvmlb.SUC_MOD_NOT_EQ;ARITH_RULE`1<4`]
THEN SUBGOAL_THEN`{i | i < 4 /\
(&2 * #1.26 <
(if psort 4 (i,SUC i) = 0,1
then #3.01
else if psort 4 (i,SUC i) = 2,3 then #3.01 else &2) \/
&2 <
(if psort 4 (i,SUC i) = 0,1
then #3.01
else if psort 4 (i,SUC i) = 2,3 then #3.01 else &2))} ={0,2}`ASSUME_TAC
;
REWRITE_TAC[
EXTENSION;
IN_ELIM_THM;
IN_SING;ARITH_RULE`x<4<=> x=0\/ x=1\/x=2\/ x=3`;SET_RULE`a
IN {b,c}<=>a=b\/ a=c`]
THEN GEN_TAC
THEN EQ_TAC
THEN RESA_TAC
THEN POP_ASSUM MP_TAC
THEN ASM_SIMP_TAC[Terminal.FUNLIST_EXPLICIT;ARITH_RULE`SUC 1=2`;
PAIR_EQ;Uxckfpe.ARITH_4_TAC;REAL_ARITH`~(a<a)/\ &2 * #1.26 < #3.01/\ ~(&2 * #1.26 < &2) `;
PSORT_5_EXPLICIT;
LT_sqrt8_2h0;];
ASM_SIMP_TAC[Planarity.CARD_2_FAN;ARITH_RULE`~(0=2)`]
THEN ARITH_TAC;
]);;
let SCS_3T4_prime2_IS_SCS=prove_by_refinement( `
is_scs_v39 scs_3T4_prime2`,
[SIMP_TAC[scs_3T4_prime2;
is_scs_v39;
mk_unadorned_v39;scs_v39_explicit;
CS_ADJ;ARITH_RULE`~(6=3)/\ 6-1=5/\ 3<=6/\ 6<=6/\ ~(6=4)/\ ~(6=5)/\ 3<6/\a<=a/\ 3<=3/\ ~(6=0)`;
d_tame;REAL_ARITH`#0.2759 < #0.9`;periodic;SET_RULE`{} (i + 3) <=> {} i`;periodic2;ARITH_RULE`~(3=0)`;
MOD_PERIODIC]
THEN REPEAT RESA_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 3= j MOD 3\/ ~(i MOD 3= j MOD 3)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 3= j MOD 3\/ ~(i MOD 3= j MOD 3)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 3= j MOD 3\/ ~(i MOD 3= j MOD 3)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN REWRITE_TAC[h0;cstab]
THEN REAL_ARITH_TAC;
SCS_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[
MOD_LT;h0;cstab]
THEN REAL_ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[
MOD_LT;cstab;h0]
THEN REAL_ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[
MOD_LT;cstab;h0]
THEN REAL_ARITH_TAC;
MRESAS_TAC
CARD_SUBSET[`{i | i < 3 /\
(&2 * h0 <
funlist_v39 [(0,1),&2 * h0] cstab 3 i (SUC i) \/
&2 <
funlist_v39 [(0,1),&2; (0,2),cstab] (&2 * h0) 3 i (SUC i))}`;`0..2`][
FINITE_NUMSEG;
CARD_NUMSEG;ARITH_RULE`(2+1)-0=3/\ (a+3<=6 <=> a<=3)`]
THEN MATCH_DICH_TAC 0
THEN REWRITE_TAC[
SUBSET;
IN_ELIM_THM;
IN_NUMSEG]
THEN ARITH_TAC]);;
let SCS_3T3_prime_IS_SCS=prove_by_refinement( `
is_scs_v39 scs_3T3_prime`,
[SIMP_TAC[scs_3T3_prime;
is_scs_v39;
mk_unadorned_v39;scs_v39_explicit;
CS_ADJ;ARITH_RULE`~(6=3)/\ 6-1=5/\ 3<=6/\ 6<=6/\ ~(6=4)/\ ~(6=5)/\ 3<6/\a<=a/\ 3<=3/\ ~(6=0)`;
d_tame;REAL_ARITH`#0.476 < #0.9`;periodic;SET_RULE`{} (i + 3) <=> {} i`;periodic2;ARITH_RULE`~(3=0)`;
MOD_PERIODIC]
THEN REPEAT RESA_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 3= j MOD 3\/ ~(i MOD 3= j MOD 3)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 3= j MOD 3\/ ~(i MOD 3= j MOD 3)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 3= j MOD 3\/ ~(i MOD 3= j MOD 3)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN REWRITE_TAC[h0;cstab]
THEN REAL_ARITH_TAC;
SCS_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[
MOD_LT;h0;cstab]
THEN REAL_ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[
MOD_LT;cstab;h0]
THEN REAL_ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[
MOD_LT;cstab;h0]
THEN REAL_ARITH_TAC;
MRESAS_TAC
CARD_SUBSET[`{i | i < 3 /\
(&2 * h0 <
funlist_v39 [] cstab 3 i (SUC i) \/
&2 <
funlist_v39 [(0,1),cstab] (&2 * h0) 3 i (SUC i))}`;`0..2`][
FINITE_NUMSEG;
CARD_NUMSEG;ARITH_RULE`(2+1)-0=3/\ (a+3<=6 <=> a<=3)`]
THEN MATCH_DICH_TAC 0
THEN REWRITE_TAC[
SUBSET;
IN_ELIM_THM;
IN_NUMSEG]
THEN ARITH_TAC;
]);;
let SCS_3M1_prime_IS_SCS=prove_by_refinement( `
is_scs_v39 scs_3M1_prime`,
[SIMP_TAC[
scs_3M1_prime;
is_scs_v39;
mk_unadorned_v39;scs_v39_explicit;
CS_ADJ;ARITH_RULE`~(6=3)/\ 6-1=5/\ 3<=6/\ 6<=6/\ ~(6=4)/\ ~(6=5)/\ 3<6/\a<=a/\ 3<=3/\ ~(6=0)`;
d_tame;REAL_ARITH`#0.103 < #0.9`;periodic;SET_RULE`{} (i + 3) <=> {} i`;periodic2;ARITH_RULE`~(3=0)`;
MOD_PERIODIC]
THEN REPEAT RESA_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 3= j MOD 3\/ ~(i MOD 3= j MOD 3)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 3= j MOD 3\/ ~(i MOD 3= j MOD 3)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 3= j MOD 3\/ ~(i MOD 3= j MOD 3)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN REWRITE_TAC[h0;cstab]
THEN REAL_ARITH_TAC;
SCS_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[
MOD_LT;h0;cstab]
THEN REAL_ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[
MOD_LT;cstab;h0]
THEN REAL_ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[
MOD_LT;cstab;h0]
THEN REAL_ARITH_TAC;
MRESAS_TAC
CARD_SUBSET[`{i | i < 3 /\
(&2 * h0 <
funlist_v39 [(0,1),cstab] (&2 * h0) 3 i (SUC i) \/
&2 <
funlist_v39 [(0,1),cstab] (&2) 3 i (SUC i))}`;`0..2`][
FINITE_NUMSEG;
CARD_NUMSEG;ARITH_RULE`(2+1)-0=3/\ (a+3<=6 <=> a<=3)`]
THEN MATCH_DICH_TAC 0
THEN REWRITE_TAC[
SUBSET;
IN_ELIM_THM;
IN_NUMSEG]
THEN ARITH_TAC;
]);;
let SCS_3T7_IS_SCS=prove_by_refinement( `
is_scs_v39 scs_3T7`,
[SIMP_TAC[scs_3T7;
is_scs_v39;
mk_unadorned_v39;scs_v39_explicit;
CS_ADJ;ARITH_RULE`~(6=3)/\ 6-1=5/\ 3<=6/\ 6<=6/\ ~(6=4)/\ ~(6=5)/\ 3<6/\a<=a/\ 3<=3/\ ~(6=0)`;
d_tame;REAL_ARITH`#0.2565 < #0.9`;periodic;SET_RULE`{} (i + 3) <=> {} i`;periodic2;ARITH_RULE`~(3=0)`;
MOD_PERIODIC]
THEN REPEAT RESA_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN ASM_SIMP_TAC[ARITH_RULE`i+3= 1*3+i/\ ~(3=0)`;
MOD_MULT_ADD];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 3= j MOD 3\/ ~(i MOD 3= j MOD 3)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 3= j MOD 3\/ ~(i MOD 3= j MOD 3)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN MP_TAC(SET_RULE`i MOD 3= j MOD 3\/ ~(i MOD 3= j MOD 3)`)
THEN RESA_TAC
THEN GEN_REWRITE_TAC(LAND_CONV o ONCE_DEPTH_CONV)[Terminal.psort_sym]
THEN REWRITE_TAC[];
SCS_TAC
THEN REWRITE_TAC[h0;cstab]
THEN REAL_ARITH_TAC;
SCS_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[
MOD_LT;h0;cstab]
THEN REAL_ARITH_TAC;
SCS_TAC
THEN ASM_SIMP_TAC[
MOD_LT;cstab;h0]
THEN REAL_ARITH_TAC;
DICH_TAC 0
THEN ARITH_TAC;
MRESAS_TAC
CARD_SUBSET[`{i | i < 3 /\
(&2 * h0 <
funlist_v39 [(0,1),#3.62; (0,2),cstab; (1,2),&2] (&2) 3 i (SUC i) \/
&2 <
funlist_v39 [(0,1),cstab; (0,2),cstab; (1,2),&2] (&2) 3 i (SUC i))}`;`0..2`][
FINITE_NUMSEG;
CARD_NUMSEG;ARITH_RULE`(2+1)-0=3/\ (a+3<=6 <=> a<=3)`]
THEN MATCH_DICH_TAC 0
THEN REWRITE_TAC[
SUBSET;
IN_ELIM_THM;
IN_NUMSEG]
THEN ARITH_TAC;
]);;
(*********************)
(***********************)
(************************************)
(************************)
(*************************)
(***************************)
(*****************)
let SCS_4M6_STAND_OR_PRO=prove(`!i.
scs_a_v39 scs_4M6' i (i + 1) = &2 /\
scs_b_v39 scs_4M6' i (i + 1) = &2 * h0 \/
scs_a_v39 scs_4M6' i (i + 1) = &2 * h0 /\
scs_b_v39 scs_4M6' i (i + 1) = cstab`,
GEN_TAC
THEN SCS_TAC
THEN SIMP_TAC[GSYM
ADD1;Qknvmlb.SUC_MOD_NOT_EQ;ARITH_RULE`1<4`]
THEN MRESAL_TAC Hexagons.PSORT_MOD[`4`;`i:num`;`SUC i:num`][ARITH_RULE`~(4=0)/\ 2+1=3/\ 4 MOD 3=1`]
THEN SYM_ASSUM_TAC
THEN MRESAL_TAC Yxionxl2.MOD_SUC_MOD[`i`;`4`][ARITH_RULE`1<4`]
THEN SYM_ASSUM_TAC
THEN MP_TAC(ARITH_RULE`i MOD 4<4==> i MOD 4=0\/ i MOD 4=1\/ i MOD 4=2\/ i MOD 4=3`)
THEN ASM_SIMP_TAC[
DIVISION;ARITH_RULE`~(4=0)`]
THEN RESA_TAC
THEN SCS_TAC);;
let h0_CSTAB_LT_4=prove(`&2< &2*h0 /\ cstab< &4/\ &2<= &2*h0 /\ cstab<= &4
/\ &2*h0< &4/\ &2< &4 /\ ~(&2 * h0 = &2)`,
REWRITE_TAC[cstab;h0]
THEN REAL_ARITH_TAC);;
let EXTREMAL_SCS_4M6=prove_by_refinement(`main_nonlinear_terminal_v11 ==>
(!v.
MMs_v39 scs_4M6' v /\
(!i j.
scs_diag 4 i j ==> cstab <
dist(v i,v j)) ==>
dist (v 1,v 2) = &2 /\
dist (v 2,v 3) = &2/\dist (v 3,v 0) = &2
/\
dist (v 0,v 1) = cstab)`,
[
STRIP_TAC
THEN GEN_TAC
THEN STRIP_TAC
THEN ASSUME_TAC(
SCS_4M6_IS_SCS)
THEN MRESA_TAC
MMS_IMP_BBS[`scs_4M6'`;`v`]
THEN MRESA_TAC
BB_VV_FUN_EQ[`v`;`scs_4M6'`]
THEN THAYTHES_TAC 0[`4`;`0`][ARITH_RULE`4 MOD 4 = 0 MOD 4`;
MOD_MULT_ADD;
K_SCS_4M6]
THEN MP_TAC
PWEIWBZ
THEN RESA_TAC
THEN THAYTHES_TAC 0[`scs_4M6'`;`v`;`1`][
SCS_4M6_IS_SCS;
SCS_4M6_BASIC;
K_SCS_4M6;
h0_LT_B_SCS_4M6;
SCS_4M6_STAND_OR_PRO;ARITH_RULE`1+1=2`;
SCS_4M6_STAND]
THEN MP_TAC
PWEIWBZ
THEN RESA_TAC
THEN THAYTHES_TAC 0[`scs_4M6'`;`v`;`2`][
SCS_4M6_IS_SCS;
SCS_4M6_BASIC;
K_SCS_4M6;
h0_LT_B_SCS_4M6;
SCS_4M6_STAND_OR_PRO;ARITH_RULE`2+1=3`;
SCS_4M6_STAND]
THEN MP_TAC
PWEIWBZ
THEN RESA_TAC
THEN THAYTHES_TAC 0[`scs_4M6'`;`v`;`3`][
SCS_4M6_IS_SCS;
SCS_4M6_BASIC;
K_SCS_4M6;
h0_LT_B_SCS_4M6;
SCS_4M6_STAND_OR_PRO;ARITH_RULE`3+1=4`;
SCS_4M6_STAND]
THEN ASSUME_TAC
SCS_4M6_BASIC
THEN ASSUME_TAC
K_SCS_4M6
THEN ASSUME_TAC
h0_LT_B_SCS_4M6
THEN ASSUME_TAC
SCS_4M6_STAND_OR_PRO
THEN ASSUME_TAC
SCS_4M6_STAND
THEN ASSUME_TAC
h0_CSTAB_LT_4
THEN MP_TAC (SET_RULE`
scs_is_str scs_4M6' v 0\/ ~(
scs_is_str scs_4M6' v 0 )`)
THEN RESA_TAC;
MP_TAC
VASYYAU
THEN RESA_TAC
THEN THAYTHES_TAC 0[`scs_4M6'`;`v`;`0`][ARITH_RULE`0+1=1`]
THEN MP_TAC Bkossge.quad_nonexist_849
THEN ASM_REWRITE_TAC[
NOT_EXISTS_THM]
THEN STRIP_TAC
THEN THAYTHE_TAC 0[`v 1`;`v 2`;`v 3`;`v 0`;]
THEN DICH_TAC 0
THEN ONCE_REWRITE_TAC[
DIST_SYM]
THEN ASM_REWRITE_TAC[DE_MORGAN_THM;REAL_ARITH`~(a<=b)<=> b<a`]
THEN RESA_TAC;
THAYTHEL_TAC (18-2)[`1`;`3`][
scs_diag;ARITH_RULE`~(1 MOD 4 = 3 MOD 4) /\
~(SUC 1 MOD 4 = 3 MOD 4) /\
~(1 MOD 4 = SUC 3 MOD 4)`]
THEN DICH_TAC 0
THEN ONCE_REWRITE_TAC[
DIST_SYM]
THEN DICH_TAC 0
THEN REAL_ARITH_TAC
;
THAYTHEL_TAC (18-2)[`0`;`2`][
scs_diag;ARITH_RULE`~(0 MOD 4 = 2 MOD 4) /\
~(SUC 0 MOD 4 = 2 MOD 4) /\
~(0 MOD 4 = SUC 2 MOD 4)`]
THEN DICH_TAC 0
THEN DICH_TAC 0
THEN REAL_ARITH_TAC
;
MP_TAC (SET_RULE`
scs_is_str scs_4M6' v 1\/ ~(
scs_is_str scs_4M6' v 1 )`)
THEN RESA_TAC;
MP_TAC
VASYYAU
THEN RESA_TAC
THEN THAYTHES_TAC 0[`scs_4M6'`;`v`;`1`][ARITH_RULE`1+3=4`]
THEN MP_TAC Bkossge.quad_nonexist_849
THEN ASM_REWRITE_TAC[
NOT_EXISTS_THM]
THEN STRIP_TAC
THEN THAYTHE_TAC 0[`v 1`;`v 2`;`v 3`;`v 0`;]
THEN DICH_TAC 0
THEN ONCE_REWRITE_TAC[
DIST_SYM]
THEN ASM_REWRITE_TAC[DE_MORGAN_THM;REAL_ARITH`~(a<=b)<=> b<a`]
THEN RESA_TAC;
THAYTHEL_TAC (19-2)[`1`;`3`][
scs_diag;ARITH_RULE`~(1 MOD 4 = 3 MOD 4) /\
~(SUC 1 MOD 4 = 3 MOD 4) /\
~(1 MOD 4 = SUC 3 MOD 4)`]
THEN DICH_TAC 0
THEN ONCE_REWRITE_TAC[
DIST_SYM]
THEN DICH_TAC 0
THEN REAL_ARITH_TAC
;
THAYTHEL_TAC (19-2)[`0`;`2`][
scs_diag;ARITH_RULE`~(0 MOD 4 = 2 MOD 4) /\
~(SUC 0 MOD 4 = 2 MOD 4) /\
~(0 MOD 4 = SUC 2 MOD 4)`]
THEN DICH_TAC 0
THEN DICH_TAC 0
THEN REAL_ARITH_TAC
;
MP_TAC
TUAPYYU
THEN RESA_TAC
THEN THAYTHES_TAC 0[`scs_4M6'`;`v`;`0`][
IN;ARITH_RULE`0+1=1`];
MP_TAC Bkossge.quad_nonexist_849
THEN ASM_REWRITE_TAC[
NOT_EXISTS_THM]
THEN STRIP_TAC
THEN THAYTHE_TAC 0[`v 1`;`v 2`;`v 3`;`v 0`;]
THEN DICH_TAC 0
THEN ONCE_REWRITE_TAC[
DIST_SYM]
THEN ASM_REWRITE_TAC[DE_MORGAN_THM;REAL_ARITH`~(a<=b)<=> b<a`]
THEN RESA_TAC;
THAYTHEL_TAC (18-2)[`1`;`3`][
scs_diag;ARITH_RULE`~(1 MOD 4 = 3 MOD 4) /\
~(SUC 1 MOD 4 = 3 MOD 4) /\
~(1 MOD 4 = SUC 3 MOD 4)`]
THEN DICH_TAC 0
THEN ONCE_REWRITE_TAC[
DIST_SYM]
THEN DICH_TAC 0
THEN REAL_ARITH_TAC
;
THAYTHEL_TAC (18-2)[`0`;`2`][
scs_diag;ARITH_RULE`~(0 MOD 4 = 2 MOD 4) /\
~(SUC 0 MOD 4 = 2 MOD 4) /\
~(0 MOD 4 = SUC 2 MOD 4)`]
THEN DICH_TAC 0
THEN DICH_TAC 0
THEN REAL_ARITH_TAC
;
]);;
(**************)
(*****************)
let SCS_4M7_STAND_OR_PRO=prove(`!i.
scs_a_v39 scs_4M7 i (i + 1) = &2 /\
scs_b_v39 scs_4M7 i (i + 1) = &2 * h0 \/
scs_a_v39 scs_4M7 i (i + 1) = &2 * h0 /\
scs_b_v39 scs_4M7 i (i + 1) = cstab`,
GEN_TAC
THEN SCS_TAC
THEN SIMP_TAC[GSYM
ADD1;Qknvmlb.SUC_MOD_NOT_EQ;ARITH_RULE`1<4`]
THEN MRESAL_TAC Hexagons.PSORT_MOD[`4`;`i:num`;`SUC i:num`][ARITH_RULE`~(4=0)/\ 2+1=3/\ 4 MOD 3=1`]
THEN SYM_ASSUM_TAC
THEN MRESAL_TAC Yxionxl2.MOD_SUC_MOD[`i`;`4`][ARITH_RULE`1<4`]
THEN SYM_ASSUM_TAC
THEN MP_TAC(ARITH_RULE`i MOD 4<4==> i MOD 4=0\/ i MOD 4=1\/ i MOD 4=2\/ i MOD 4=3`)
THEN ASM_SIMP_TAC[
DIVISION;ARITH_RULE`~(4=0)`]
THEN RESA_TAC
THEN SCS_TAC);;
(*************)
(**************************)
let SCS_4M8_STAND_OR_PRO=prove(`!i.
scs_a_v39 scs_4M8 i (i + 1) = &2 /\
scs_b_v39 scs_4M8 i (i + 1) = &2 * h0 \/
scs_a_v39 scs_4M8 i (i + 1) = &2 * h0 /\
scs_b_v39 scs_4M8 i (i + 1) = cstab`,
GEN_TAC
THEN SCS_TAC
THEN SIMP_TAC[GSYM
ADD1;Qknvmlb.SUC_MOD_NOT_EQ;ARITH_RULE`1<4`]
THEN MRESAL_TAC Hexagons.PSORT_MOD[`4`;`i:num`;`SUC i:num`][ARITH_RULE`~(4=0)/\ 2+1=3/\ 4 MOD 3=1`]
THEN SYM_ASSUM_TAC
THEN MRESAL_TAC Yxionxl2.MOD_SUC_MOD[`i`;`4`][ARITH_RULE`1<4`]
THEN SYM_ASSUM_TAC
THEN MP_TAC(ARITH_RULE`i MOD 4<4==> i MOD 4=0\/ i MOD 4=1\/ i MOD 4=2\/ i MOD 4=3`)
THEN ASM_SIMP_TAC[
DIVISION;ARITH_RULE`~(4=0)`]
THEN RESA_TAC
THEN SCS_TAC);;
(****************************)
(************************************)
let MIQMCSN=prove(`main_nonlinear_terminal_v11
==>
scs_arrow_v39 {
scs_4M8 } ({scs_4M6',scs_3T7,scs_3T4})`,
STRIP_TAC
THEN MATCH_MP_TAC
FZIOTEF_TRANS
THEN EXISTS_TAC`({scs_4M6',
scs_opp_v39 scs_4M6',
scs_4M8_02,
scs_4M8_13}
UNION {
scs_stab_diag_v39 scs_4M8 i j|
scs_diag 4 i j})`
THEN ASM_SIMP_TAC[
SCS_4M8_ARROW_STEP_ONE;SET_RULE`{scs_4M6', scs_3T7, scs_3T4}={scs_4M6', scs_3T7}
UNION{ scs_3T4}`]
THEN MATCH_MP_TAC
FZIOTEF_UNION
THEN ASM_REWRITE_TAC[
SET_STAB_4M8_ARROW_3T4;]
THEN ONCE_REWRITE_TAC[SET_RULE`{scs_4M6', scs_3T7}={scs_4M6',scs_4M6', scs_3T7,scs_3T7}`]
THEN ASM_REWRITE_TAC[SET_RULE` {A,B,C,D}=({A,B,C})
UNION {D}`]
THEN MATCH_MP_TAC
FZIOTEF_UNION
THEN ASM_REWRITE_TAC[
SCS_4M8_13_ARROW_3T7;SET_RULE` {A,B,D}=({A,B})
UNION {D}`]
THEN MATCH_MP_TAC
FZIOTEF_UNION
THEN ASM_REWRITE_TAC[
SCS_4M8_02_ARROW_3T7;SET_RULE` {A,D}=({A})
UNION {D}`]
THEN MATCH_MP_TAC
FZIOTEF_UNION
THEN STRIP_TAC
THENL[
MATCH_MP_TAC
FZIOTEF_REFL
THEN REWRITE_TAC[
IN_SING]
THEN REPEAT RESA_TAC
THEN ASM_SIMP_TAC[
SCS_4M6_IS_SCS];
ASSUME_TAC(
SCS_4M6_IS_SCS)
THEN ASSUME_TAC
K_SCS_OPP_4M6
THEN ASSUME_TAC
SCS_4M6_OPP_IS_SCS
THEN MRESA_TAC Yxionxl2.SCS_OPP_REFL[`scs_4M6'`]
THEN MRESAL_TAC
YXIONXL2[`4`;`
scs_opp_v39 scs_4M6'`][ARITH_RULE`~(4<=3)`]]);;
end;;
(*
let check_completeness_claimA_concl =
Ineq.mk_tplate `\x. scs_arrow_v13 (set_of_list x)
*)