1 (* ========================================================================== *)
2 (* FLYSPECK - BOOK FORMALIZATION *)
4 (* Chapter: Nonlinear *)
5 (* Author: Thomas C. Hales *)
7 (* ========================================================================== *)
11 Started June 15 to speed up the ZTGIJCF23 calculations.
13 First attempt to simplify gamma23 calculations,
16 Abandoned June 23, 2012 when a better way of handling
17 the ZTGIJCF23 series was found.
20 Functional_equation.functional_overload();;
24 let truncate_vol3f_456 = new_definition `truncate_vol3f_456 c f =
25 scalar6 ( mk_456 (rotate5 (truncate_sol_x c)) +
26 mk_456 (rotate6 (truncate_sol_x c)) +
27 mk_456 (rotate4 (truncate_sol_x c))
31 (uni(f,(scalar6 proj_y4 #0.5))) * mk_456 (rotate4 (truncate_dih_x c)) +
32 (uni(f,(scalar6 proj_y5 #0.5))) * mk_456 (rotate5 (truncate_dih_x c)) +
33 (uni(f,(scalar6 proj_y6 #0.5))) * mk_456 (rotate6 (truncate_dih_x c))
39 new_definition `gamma2_x f x = (&8 - x)* sqrt x / (&24) -
40 ( (&2 * mm1/ pi) * (&1 - sqrt x / sqrt8) - (&8 * mm2 / pi) * f (sqrt x / &2))`;;
47 let gamma2_x_gamma2f = prove_by_refinement(
49 (&0 <= y ==> ((&2 * pi) * (gamma2_x f (y*y)) =
50 (vol2r y sqrt2)*(y / &2) - vol2f y sqrt2 f ))`,
54 REWRITE_TAC[gamma2_x;Sphere.vol2r;Sphere.vol2f;Nonlinear_lemma.sqrt8_sqrt2;Nonlinear_lemma.sqrt2_sqrt2];
56 REPEAT (GMATCH_SIMP_TAC Nonlinear_lemma.sqrtxx);
64 let truncate_dih_x_dih_x = prove_by_refinement(
66 (\x1 x2 x3 x4 x5 x6. &0 <= x1 /\ &0 <= c /\ c <= delta_x x1 x2 x3 x4 x5 x6)
67 (truncate_dih_x c) (dih_x)`,
70 REWRITE_TAC[domain6;truncate_dih_x;Sphere.dih_x;truncate_sqrt;LET_DEF;LET_END_DEF];
72 ABBREV_TAC `d =delta_x x1 x2 x3 x4 x5 x6`;
73 REPEAT (AP_THM_TAC ORELSE AP_TERM_TAC);
74 SUBGOAL_THEN `&0 <= d` ASSUME_TAC;
75 BY(ASM_MESON_TAC[REAL_LE_TRANS]);
76 ASM_SIMP_TAC[SQRT_MUL;arith `&0 <= &4`;Real_ext.REAL_PROP_NN_MUL2;];
78 BY(ASM_MESON_TAC[arith `c <= d /\ d <= c ==> (d = c)`;arith `a * b * c = (a*b)*(c:real)`]);
83 let truncate_sol_x_sol_x = prove_by_refinement(
85 (\x1 x2 x3 x4 x5 x6. &0 <= x1 /\ &0 <= x2 /\ &0 <= x3 /\ &0 <= c /\ c <= delta_x x1 x2 x3 x4 x5 x6)
86 (truncate_sol_x c) (sol_x)`,
89 REWRITE_TAC[domain6;truncate_sol_x;Sphere.sol_x;add6;Sphere.rotate2;Sphere.rotate3;constant6;sub6];
91 MATCH_MP_TAC (arith `(a=a') /\ (b = b') /\ (c = c') ==> (a+b+c-pi =a'+b'+c'-pi)`);
92 BY(REPEAT CONJ_TAC THEN GMATCH_SIMP_TAC (REWRITE_RULE[domain6] (SPEC `c:real` truncate_dih_x_dih_x)) THEN ASM_REWRITE_TAC[] THEN FIRST_X_ASSUM MP_TAC THEN REWRITE_TAC[Sphere.delta_x] THEN REAL_ARITH_TAC)
96 let truncate_sqrt_le = prove_by_refinement(
97 `!c d. (c <= d) ==> (truncate_sqrt c d = sqrt d)`,
100 REPEAT WEAK_STRIP_TAC;
101 REWRITE_TAC[truncate_sqrt];
103 REPEAT (POP_ASSUM MP_TAC);
104 BY(MESON_TAC[arith `c <= d /\ d <= c ==> (c = d)`]);
105 REPEAT (POP_ASSUM MP_TAC);
110 let truncate_dih_x_sym = prove_by_refinement(
111 `!x1 x2 x3 x4 x5 x6 c.
112 truncate_dih_x c x1 x2 x3 x4 x5 x6 = truncate_dih_x c x1 x3 x2 x4 x6 x5`,
115 REWRITE_TAC[truncate_dih_x;truncate_sqrt;LET_DEF;LET_END_DEF];
116 REPEAT WEAK_STRIP_TAC;
117 SUBGOAL_THEN `delta_x x1 x3 x2 x4 x6 x5 = delta_x x1 x2 x3 x4 x5 x6` SUBST1_TAC;
118 REWRITE_TAC[Sphere.delta_x];
120 REPEAT (AP_TERM_TAC ORELSE AP_THM_TAC);
121 REWRITE_TAC[Sphere.delta_x4];
126 let truncate_dih_x_sym2 = prove_by_refinement(
127 `!x1 x2 x3 x4 x5 x6 c.
128 truncate_dih_x c x1 x2 x3 x4 x5 x6 = truncate_dih_x c x1 x5 x6 x4 x2 x3`,
131 REWRITE_TAC[truncate_dih_x;truncate_sqrt;LET_DEF;LET_END_DEF];
132 REPEAT WEAK_STRIP_TAC;
133 SUBGOAL_THEN `delta_x x1 x5 x6 x4 x2 x3 = delta_x x1 x2 x3 x4 x5 x6` SUBST1_TAC;
134 REWRITE_TAC[Sphere.delta_x];
136 REPEAT (AP_TERM_TAC ORELSE AP_THM_TAC);
137 REWRITE_TAC[Sphere.delta_x4];
142 let gamma3f_lemma = prove_by_refinement(
143 `!f y4 y5 y6 (a:real) (b:real) (c:real) (d:real).
144 (&0 <= y4 /\ &0 <= y5 /\ &0 <= y6 /\ (&0 <= d) /\
145 d <= delta_y sqrt2 sqrt2 sqrt2 y4 y5 y6) ==>
146 (gamma3f y4 y5 y6 sqrt2 f =
147 truncate_vol3r_456 d a b c (y4*y4) (y5*y5) (y6*y6) -
148 truncate_vol3f_456 d f a b c (y4*y4) (y5*y5) (y6*y6))`,
151 REWRITE_TAC[FUN_EQ_THM;Sphere.delta_y;truncate_vol3f_456;truncate_vol3r_456;mk_456;uni;scalar6;proj_y1;Sphere.rotate4;Sphere.rotate5;Sphere.rotate6;compose6;proj_x4;proj_x5;proj_x6;scalar6;add6;mul6;sub6;two6;sol_x_123;Sphere.gamma3f;constant6;Sphere.vol3r;Sphere.vol3f;truncate_vol_x;Nonlinear_lemma.sqrt2_sqrt2;LET_DEF;LET_END_DEF;Sphere.vol_y;Sphere.y_of_x;proj_y4;proj_y5;proj_y6;Sphere.dih_y;sol_y_sol_x];
153 ASM_SIMP_TAC[Nonlinear_lemma.sqrtxx;truncate_sqrt_le];
155 REWRITE_TAC[Sphere.vol_x];
156 BY(BY(REAL_ARITH_TAC));
158 REWRITE_TAC[arith `e * a * b/c = (a*b/c)*(e:real)`];
160 SUBGOAL_THEN `sol_x (y4 * y4) (y5 * y5) (&2) (&2) (&2) (y6 * y6) = sol_x (y5 * y5) (&2) (y4 * y4) (&2) (y6 * y6) (&2)` SUBST1_TAC;
161 BY(MESON_TAC[sol_x_sym;sol_x_sym2]);
162 SUBGOAL_THEN `sol_x (y5 * y5) (y6 * y6) (&2) (&2) (&2) (y4 * y4) = sol_x (y6 * y6) (&2) (y5 * y5) (&2) (y4 * y4) (&2)` SUBST1_TAC;
163 BY(MESON_TAC[sol_x_sym;sol_x_sym2]);
164 SUBGOAL_THEN ` sol_x (y6 * y6) (y4 * y4) (&2) (&2) (&2) (y5 * y5) = sol_x (y4 * y4) (&2) (y6 * y6) (&2) (y5 * y5) (&2)` SUBST1_TAC;
165 BY(MESON_TAC[sol_x_sym;sol_x_sym2]);
166 MATCH_MP_TAC (arith `(a = a')/\(b = b')/\(c=c') ==> (a+b+c = a'+b'+(c':real))`);
167 BY(REPEAT CONJ_TAC THEN GMATCH_SIMP_TAC (REWRITE_RULE[domain6] (SPEC `d:real` truncate_sol_x_sol_x)) THEN ASM_REWRITE_TAC[arith `&0 <= &2`;REAL_LE_SQUARE] THEN FIRST_X_ASSUM MP_TAC THEN REWRITE_TAC[Sphere.delta_x] THEN REAL_ARITH_TAC);
168 REWRITE_TAC[arith `a * #0.5 = a/ &2`;arith ` d * a * b/pi= (a * b/pi) * d`];
169 REPEAT (AP_TERM_TAC ORELSE AP_THM_TAC);
170 MATCH_MP_TAC (arith `(a = a')/\(b = b')/\(c=c') ==> (u*a + v*b +w*c = u*a' + v*b' + w*(c':real))`);
171 SUBGOAL_THEN `d <= delta_x (y4 * y4) (y5 * y5) (&2) (&2) (&2) (y6 * y6) /\ d <= delta_x (y5 * y5) (y6 * y6) (&2) (&2) (&2) (y4 * y4) /\ d <= delta_x (y6 * y6) (y4 * y4) (&2) (&2) (&2) (y5 * y5)` ASSUME_TAC;
172 FIRST_X_ASSUM MP_TAC;
173 REWRITE_TAC[Sphere.delta_x];
174 BY(BY(REAL_ARITH_TAC));
175 SUBGOAL_THEN `truncate_dih_x (d) (y4 * y4) (&2) (y6 * y6) (&2) (y5 * y5) (&2) = truncate_dih_x (d) (y4 * y4) (y5 * y5) (&2) (&2) (&2) (y6 * y6) ` SUBST1_TAC;
176 BY(BY(MESON_TAC[truncate_dih_x_sym;truncate_dih_x_sym2]));
177 SUBGOAL_THEN `truncate_dih_x (d) (y5 * y5) (&2) (y4 * y4) (&2) (y6 * y6) (&2) = truncate_dih_x (d) (y5 * y5) (y6 * y6) (&2) (&2) (&2) (y4 * y4)` SUBST1_TAC;
178 BY(BY(MESON_TAC[truncate_dih_x_sym;truncate_dih_x_sym2]));
179 SUBGOAL_THEN ` truncate_dih_x (d) (y6 * y6) (&2) (y5 * y5) (&2) (y4 * y4) (&2) = truncate_dih_x (d) (y6 * y6) (y4 * y4) (&2) (&2) (&2) (y5 * y5)` SUBST1_TAC;
180 BY(BY(MESON_TAC[truncate_dih_x_sym;truncate_dih_x_sym2]));
181 BY(BY(REPEAT CONJ_TAC THEN GMATCH_SIMP_TAC (REWRITE_RULE[domain6;] (SPEC `d:real` truncate_dih_x_dih_x)) THEN ASM_REWRITE_TAC[REAL_LE_SQUARE]))
186 (* Redo 2 and 3 cell calculations *)
195 idv = "GLFVCVK2v2 a";
196 ineq = all_forall `ineq
197 [ (#2.0 pow 2,x,(&2 * h0) pow 2 ) ]
198 (truncate_gamma2_x (&1) x > &0)`;
199 doc = "If $X$ is a $2$-cell, then $\\gamma(X,L)\\ge0$.";
200 tags=[Marchal;Flypaper["OXLZLEZ";"TSKAJXY";];Tex;Cfsqp];
205 idv = "GLFVCVK2v2 b";
206 ineq = all_forall `ineq
207 [ ((&2 * h0) pow 2,x, &8 ) ]
208 (truncate_gamma2_x (&0) x > &0)`;
209 doc = "If $X$ is a $2$-cell, then $\\gamma(X,L)\\ge0$.";
210 tags=[Marchal;Flypaper["OXLZLEZ";"TSKAJXY";];Tex;Cfsqp;Sharp;Eps 1.0e-15];
215 idv = "QITNPEA 4003532128 b sym v2";
216 ineq = all_forall `ineq
217 [(&2 * hminus,y1, &2 * hplus);
218 (&2,y2, &2 * hminus);
219 (&2,y3, &2 * hminus);
221 (&2,y5, &2 * hminus);
224 ( (delta_y y1 y2 sqrt2 sqrt2 sqrt2 y6 < #0.14 ) \/
225 (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 < #0.14) \/
226 (y_of_x rad2_x y1 y2 y3 y4 y5 y6 < &2) \/
227 (y2 < y3) \/ (y2 < y5) \/ (y2 < y6) \/
229 (truncate_gamma23_x (&1) (&1) (h0cut y1) (&1) (&1) (&1) (&1))
230 y1 y2 y3 y4 y5 y6 - #0.00457511
231 - #0.00609451*dih_y y1 y2 y3 y4 y5 y6 > #0.0)
234 Note the lower bound on $y_4$ is $2.1$.
235 This is an inequality for $23$-cells used to prove the cluster inequality.
236 We may use monotonicity so that rad2 is exactly 2.
237 By symmetry we may assume that y2 is the longest of y2,y3,y5,y6";
238 tags=[Marchal;Cfsqp;Cfsqp_branch 6;
239 Clusterlp;Flypaper["OXLZLEZ"];Tex;Xconvert;Branching;Split[0];
240 Set_rad2;Delta126min (0.14-. 1.0e-12);
241 Delta135min (0.14 -. 1.0e-12)];
246 idv = "QITNPEA 4003532128 b2 v2";
247 ineq = all_forall `ineq
248 [(&2 * hminus,y1, &2 * hplus);
249 (&2,y2, &2 * hminus);
250 (&2,y3, &2 * hminus);
252 (&2,y5, &2 * hminus);
255 ( (delta_y y1 y2 sqrt2 sqrt2 sqrt2 y6 < #0.14 ) \/
256 (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 < #0.14) \/
257 (y_of_x rad2_x y1 y2 y3 y4 y5 y6 < &2) \/
258 (y_of_x (truncate_gamma23_x (&1) (&1) (h0cut y1) (&1) (&1) (&1) (&1))
259 y1 y2 y3 y4 y5 y6 - #0.00457511
260 - #0.00609451*dih_y y1 y2 y3 y4 y5 y6 > #0.0)
263 Note the lower bound on $y_4$ is $2.1$.
264 This is an inequality for $23$-cells used to prove the cluster inequality.
265 We may use monotonicity so that $y_4=2.1$";
266 tags=[Marchal;Cfsqp;Cfsqp_branch 3;Clusterlp;Flypaper["OXLZLEZ"];Tex;Xconvert;Branching;Split[0];Delta126min (0.14-. 1.0e-12);
267 Delta135min (0.14 -. 1.0e-12)];
272 idv = "QITNPEA 4003532128 c v2";
273 ineq = all_forall `ineq
274 [(&2 * hminus,y1, &2 * hplus);
275 (&2 ,y2, &2 * hminus);
276 (&2,y3, &2 * hminus);
278 (&2,y5, &2 * hminus);
281 ( (delta_y y1 y2 sqrt2 sqrt2 sqrt2 y6 < #0.14 ) \/
282 (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 < &0) \/
283 (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 > #0.14) \/
284 (y_of_x (truncate_gamma23_x_C (#0.08) (&1) (h0cut y1) (&1) (&1))
287 - #0.00609451*dih_y y1 y2 y3 y4 y5 y6 > #0.0)
290 Inititally, $y_4$ extends to $\\sqrt8$, but we use monotonicity
291 to reduced it to the lower bound.
292 This gives an upper bound $0.08$ on the dihedral angle of the $3$-cell.
293 This is an inequality for $23$-cells used to prove the cluster inequality.";
294 tags=[Marchal;Cfsqp;Cfsqp_branch 3;Clusterlp;Flypaper["OXLZLEZ"];Tex;Xconvert;Branching;Split[0];Delta126min (0.14 -. 1.0e-12);
295 Delta135min (0.0); Delta135max(0.14 +. 1.0e-12)];
296 (* d4 > 67 > Tan[Pi/2 - 0.03] Sqrt[4 1.0] ==> dih <= 0.03. *)
297 (* (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 > #0.14) \/ dropped 12/23/2010 *)
302 idv = "QITNPEA 4003532128 d v2";
303 (* removed gamma3f y1 y2 y6 sqrt2 lmfun + from term on Nov 29, 2010 *)
304 ineq = all_forall `ineq
305 [(&2 * hminus,y1, &2 * hplus);
306 (&2,y2, &2 * hminus);
307 (&2,y3, &2 * hminus);
309 (&2,y5, &2 * hminus);
313 (y_of_x (truncate_gamma23_x_B (h0cut y1)) y1 y2 y3 y4 y5 y6
315 - #0.00609451*dih_y y1 y2 y3 y4 y5 y6 > #0.0) \/
316 (delta_y y1 y2 sqrt2 sqrt2 sqrt2 y6 > #0.14 ) \/
317 (delta_y y1 y2 sqrt2 sqrt2 sqrt2 y6 < &0 ) \/
318 (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 > #0.14) \/
319 (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 < &0) )`;
321 This gives an upper bound $0.08$ on the dihedral angle of the $3$-cell.
322 This is an inequality for $23$-cells used to prove the cluster inequality.";
323 tags=[Marchal;Cfsqp;Clusterlp;Tex;Flypaper["OXLZLEZ"];Xconvert;Branching;Split[0]];
324 (* d4 > 25 > Tan[Pi/2 - 0.08] Sqrt[4 x1 0.14] ==> dih <= 0.08. *)
327 let template_F23b = `\ y3m y3M y5m y5M y6m y6M w1 w2. ineq
328 [(&2 * hminus, y1, &2 * hplus);
329 (&2 ,y2, &2 *hminus);
334 ( (delta_y y1 y2 sqrt2 sqrt2 sqrt2 y6 < #0.14 ) \/
335 (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 < #0.14) \/
336 (y_of_x rad2_x y1 y2 y3 y4 y5 y6 < &2) \/
337 (y_of_x (truncate_gamma23_x (&1/ &w1) (&1/ &w2)
338 (h0cut y1) (h0cut y2) (h0cut y3) (h0cut y5) (h0cut y6)) y1 y2 y3 y4 y5 y6 >
339 a_spine5 + b_spine5 * dih_y y1 y2 y3 y4 y5 y6)
342 let template_F23b2 = `\ y3m y3M y5m y5M y6m y6M w1 w2. ineq
343 [(&2 * hminus, y1, &2 * hplus);
344 (&2 ,y2, &2 *hminus);
350 (delta_y y1 y2 sqrt2 sqrt2 sqrt2 y6 < #0.14 ) \/
351 (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 < #0.14) \/
352 (y_of_x rad2_x y1 y2 y3 y4 y5 y6 < &2) \/
353 (y_of_x (truncate_gamma23_x (&1/ &w1) (&1/ &w2)
354 (h0cut y1) (h0cut y2) (h0cut y3) (h0cut y5) (h0cut y6))
356 a_spine5 + b_spine5 * dih_y y1 y2 y3 y4 y5 y6)
359 let template_F23c = `\ y3m y3M y5m y5M y6m y6M (w1:num) (w2:num). ineq
360 [(&2 * hminus, y1, &2 * hplus);
361 (&2 ,y2, &2 *hminus);
367 (delta_y y1 y2 sqrt2 sqrt2 sqrt2 y6 < #0.14 ) \/
368 (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 > #0.14) \/
369 (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 < &0) \/
370 (y_of_x (truncate_gamma23_x_C (#0.08) (&1 / &w1) (h0cut y1) (h0cut y2) (h0cut y6)) y1 y2 y3 y4 y5 y6 >
371 a_spine5 + b_spine5 * dih_y y1 y2 y3 y4 y5 y6)
374 let template_F23c2 = `\ y3m y3M y5m y5M y6m y6M (w1:num) (w2:num). ineq
375 [(&2 * hminus, y1, &2 * hplus);
376 (&2 ,y2, &2 *hminus);
382 (delta_y y1 y2 sqrt2 sqrt2 sqrt2 y6 < #0.14 ) \/
383 (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 > #0.14) \/
384 (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 < #0.03) \/
385 (y_of_x rad2_x y1 y2 y3 y4 y5 y6 < &2) \/
386 (y_of_x (truncate_gamma23_x_C (#0.08) (&1 / &w1) (h0cut y1) (h0cut y2) (h0cut y6)) y1 y2 y3 y4 y5 y6 >
387 a_spine5 + b_spine5 * dih_y y1 y2 y3 y4 y5 y6)
390 let template_F23c3 = `\ y3m y3M y5m y5M y6m y6M (w1:num) (w2:num). ineq
391 [(&2 * hminus, y1, &2 * hplus);
392 (&2 ,y2, &2 *hminus);
398 (delta_y y1 y2 sqrt2 sqrt2 sqrt2 y6 < #0.14 ) \/
399 (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 > #0.03) \/
400 (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 < &0) \/
401 (y_of_x rad2_x y1 y2 y3 y4 y5 y6 < &2) \/
402 (y_of_x (truncate_gamma23_x_C (#0.037) (&1 / &w1) (h0cut y1) (h0cut y2) (h0cut y6)) y1 y2 y3 y4 y5 y6 >
403 a_spine5 + b_spine5 * dih_y y1 y2 y3 y4 y5 y6)
406 let template_F23d = `\ y3m y3M y5m y5M y6m y6M (w1:num) (w2:num). ineq
407 [(&2 * hminus, y1, &2 * hplus);
408 (&2 ,y2, &2 *hminus);
413 ((y_of_x (truncate_gamma23_x_B (h0cut y1)) y1 y2 y3 y4 y5 y6 >
414 a_spine5 + b_spine5 * dih_y y1 y2 y3 y4 y5 y6) \/
415 (y_of_x rad2_x y1 y2 y3 y4 y5 y6 < &2) \/
416 (delta_y y1 y2 sqrt2 sqrt2 sqrt2 y6 > #0.14 ) \/
417 (delta_y y1 y2 sqrt2 sqrt2 sqrt2 y6 < &0 ) \/
418 (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 > #0.14) \/
419 (delta_y y1 sqrt2 y3 sqrt2 y5 sqrt2 < &0) )`;;
421 let ineq_F23 i3 i5 i6 j =
422 let _ = (j>=0 && j <=5) or failwith "ineq_F23" in
423 let template = List.nth [template_F23b;template_F23b2;template_F23c;
424 template_F23d;template_F23c2;template_F23c3] j in
425 let x i = List.nth [`&2`; `&2 * hminus` ; `sqrt8`] i in
427 let mid i = if (i>0) then 1 else 0 in
428 let m = mk_small_numeral in
429 let w1 = 1 + mid i6 in
430 let w2 = 1 + mid i3 + mid i5 in
431 mk_tplate template [x i3;X i3; x i5;X i5; x i6 ;X i6; m w1; m w2];;
434 let min14 = 0.14 -. 1.0e-12 in
435 let max14 = 0.14 +. 1.0e-12 in
436 let tag_all = [Marchal;Cfsqp_branch 3;Flypaper["OXLZLEZ";];
437 Xconvert;Penalty(200.0,5000.0);Branching;] in
438 [[Set_rad2;Delta126min min14;Delta135min min14] @ tag_all;
439 [Delta126min min14;Delta135min min14] @ tag_all;
440 [Delta126min min14;Delta135min (0.0);Delta135max max14] @ tag_all;
441 tag_all;tag_all;tag_all];;
444 let i3i5i6s = [(0,0,0);(0,0,1);(1,0,1);(0,1,1);(0,1,0)] in
446 List.nth i3i5i6s i in (* wlog by symmetry *)
447 let ext = List.nth ["b";"b2";"c";"d";"c2";"c3"] j in
448 let tg0 = (List.nth tags_F23 j) in
449 let tg = (if (i=0) then [Tex] else []) @ [Split (split_F4 i3 0 i5 i6)] @ tg0 in
451 idv = Printf.sprintf "ZTGIJCF23v2 %d %d %d 7907792228 %s" i3 i5 i6 (ext);
452 ineq = ineq_F23 i3 i5 i6 j;
453 doc = "This is the $2$- and $3$-cell inequality for five or more leaves.";
458 (0,0);(0,1);(0,3);(0,4);(0,5);
459 (1,0);(1,1);(1,2);(1,3);
460 (2,0);(2,1);(2,2);(2,3);
461 (3,0);(3,1);(3,2);(3,3);
464 map (fun (i,j) -> add (make_F23 i j)) f23_cases;;
469 map (fun t -> t.idv) (Ineq.getprefix "ZTGIJCF23v2");;
472 let ztg23v2 = [(* "GLFVCVK2v2 a"; "GLFVCVK2v2 b"; *)
473 "QITNPEA 4003532128 b sym v2";
474 "QITNPEA 4003532128 b2 v2"; "QITNPEA 4003532128 c"; "QITNPEA 4003532128 d";
475 (*"ZTGIJCF23v2 0 0 0 7907792228 b";*)
476 "ZTGIJCF23v2 0 0 0 7907792228 b2";
477 "ZTGIJCF23v2 0 0 0 7907792228 c2";
478 "ZTGIJCF23v2 0 0 0 7907792228 c3";
479 "ZTGIJCF23v2 0 0 0 7907792228 d";
480 "ZTGIJCF23v2 0 0 1 7907792228 b"; "ZTGIJCF23v2 0 0 1 7907792228 b2";
481 "ZTGIJCF23v2 0 0 1 7907792228 c"; "ZTGIJCF23v2 0 0 1 7907792228 d";
482 "ZTGIJCF23v2 0 1 0 7907792228 c2";
483 "ZTGIJCF23v2 0 1 0 7907792228 c3";
484 "ZTGIJCF23v2 0 1 1 7907792228 b";
485 "ZTGIJCF23v2 0 1 1 7907792228 b2"; "ZTGIJCF23v2 0 1 1 7907792228 c";
486 "ZTGIJCF23v2 0 1 1 7907792228 d"; "ZTGIJCF23v2 1 0 1 7907792228 b";
487 "ZTGIJCF23v2 1 0 1 7907792228 b2"; "ZTGIJCF23v2 1 0 1 7907792228 c";
488 "ZTGIJCF23v2 1 0 1 7907792228 d"];;
492 let truncate_gamma23_x = new_definition `truncate_gamma23_x iw1 iw2 m1 m2 m3 m5 m6 =
494 (compose6 (truncate_gamma3f_x (#0.14) m1 m2 m6)
495 dummy6 dummy6 dummy6 proj_x1 proj_x2 proj_x6)
498 (compose6 (truncate_gamma3f_x (#0.14) m1 m3 m5)
499 dummy6 dummy6 dummy6 proj_x1 proj_x3 proj_x5)
502 (mk_126 (truncate_dih_x (#0.14)) +
503 mk_135 (truncate_dih_x (#0.14)))) *
504 uni((truncate_gamma2_x m1),proj_x1)`;;
506 let gamma23_008_x = new_definition `gamma23_008_x m1 =
507 compose6 (truncate_gamma3f_x (&0) m1 (&1) (&1))
508 dummy6 dummy6 dummy6 proj_x1 proj_x2 proj_x6
510 compose6 (truncate_gamma3f_x (&0) m1 (&1) (&1))
511 dummy6 dummy6 dummy6 proj_x1 proj_x3 proj_x5
512 + scalar6 (dih_x - (mk_126 (dih_x) + mk_135 (dih_x)))
515 let gamma23_erase126_x = new_definition `gamma23_erase126_x m1 =
516 compose6 (truncate_gamma3f_x (&0) m1 (&1) (&1))
517 dummy6 dummy6 dummy6 proj_x1 proj_x3 proj_x5
518 + scalar6 (dih_x - mk_135 (dih_x))
521 let nonf_gamma23_008_x = prove_by_refinement(
522 `!m1 x1 x2 x3 x4 x5 x6.
523 gamma23_008_x m1 x1 x2 x3 x4 x5 x6 =
524 truncate_gamma3f_x (&0) m1 (&1) (&1) (&0) (&0) (&0) x1 x2 x6 +
525 truncate_gamma3f_x (&0) m1 (&1) (&1) (&0) (&0) (&0) x1 x3 x5 +
526 (dih_x x1 x2 x3 x4 x5 x6 -
527 (dih_x x1 x2 (&2) (&2) (&2) x6 + dih_x x1 (&2) x3 (&2) x5 (&2))) *
531 (REWRITE_TAC[gamma23_008_x;mk_456;rotate5;rotate6;rotate4;scalar6;sub6;add6;mul6;constant6;compose6;proj_x1;proj_x2;proj_x3;proj_x4;proj_x5;proj_x6;two6;uni;proj_y4;proj_y5;proj_y6;dummy6;mk_126;mk_135])
535 let nonf_gamma23_erase126_x = prove_by_refinement(
536 `!m1 x1 x2 x3 x4 x5 x6.
537 gamma23_erase126_x m1 x1 x2 x3 x4 x5 x6 =
538 truncate_gamma3f_x (&0) m1 (&1) (&1) (&0) (&0) (&0) x1 x3 x5 +
539 (dih_x x1 x2 x3 x4 x5 x6 - dih_x x1 (&2) x3 (&2) x5 (&2)) * #0.008
543 (REWRITE_TAC[gamma23_erase126_x;mk_456;rotate5;rotate6;rotate4;scalar6;sub6;add6;mul6;constant6;compose6;proj_x1;proj_x2;proj_x3;proj_x4;proj_x5;proj_x6;two6;uni;proj_y4;proj_y5;proj_y6;dummy6;mk_126;mk_135])
547 let gamma23_full_x = new_definition `gamma23_full_x m1 =
548 (compose6 (gamma3_x m1)
549 dummy6 dummy6 dummy6 proj_x1 proj_x2 proj_x6) +
550 (compose6 (gamma3_x m1)
551 dummy6 dummy6 dummy6 proj_x1 proj_x3 proj_x5) +
552 (dih_x - (mk_126 dih_x + mk_135 dih_x)) *
553 uni((gamma2_x_div_azim m1),proj_x1)`;;