1 (* tests of nonlinear inequalities from ineq.hl *)
2 (* removed from glpk model OXLZLEZ *)
4 let do_betas x = all_forall (snd(dest_eq(concl(BETAS_CONV x))));;
5 let all_forall =Sphere.all_forall;;
10 let mk_tm23 i3 i5 i6 =
11 let x i = List.nth [`&2`; `&2 * hminus`; `&2 * hplus` ; `sqrt8`] i in
13 let mid i = if (i=1) then 1 else 0 in
14 let m = mk_small_numeral in
15 let w1 = 1 + mid i6 in
16 let w2 = 1 + mid i3 + mid i5 in
17 list_mk_comb (template23, [x i3;X i3; x i5;X i5; x i6 ;X i6; m w1; m w2]);;
19 let mk_ineq23 i3 i5 i6 = all_forall (snd(dest_eq(concl(BETAS_CONV (mk_tm23 i3 i5 i6)))));;
23 id = Printf.sprintf "ZTGIJCF23 %d %d %d 7907792228" i3 i5 i6;
24 ineq = mk_ineq23 i3 i5 i6;
25 doc = "This is the 2&3-cell inequality for five or more leaves.";
26 tags = [Cfsqp;Flypaper];
32 add23 i3 i5 i6 done done done;;
38 id = "QITNPEA 9507854632";
39 ineq = all_forall `ineq
40 [(&2 * hminus,y1, &2 * hplus);
47 ((gamma23f y1 y2 y3 y4 y5 y6 1 1 sqrt2 lmfun - #0.00242
48 - #0.00609451*dih_y y1 y2 y3 y4 y5 y6 > #0.0) \/
49 (y_of_x rad2_x y1 y2 y3 y4 y5 y6 < &2) \/
50 (eta_y y1 y2 y6 > sqrt2 ) \/
51 (eta_y y1 y3 y5 > sqrt2))`;
53 Note the upper bound on $y_4$ is $2.1$.
54 This is an inequality for $23$-cells used to prove the cluster inequality.";
55 tags = [Tex;Cfsqp;Clusterlp];
60 id = "QITNPEA 9507854632";
61 ineq = all_forall `ineq
62 [(&2 * hminus,y1, &2 * hplus);
69 ((gamma23f y1 y2 y3 y4 y5 y6 1 1 sqrt2 lmfun - #0.00242
70 - #0.00609451*dih_y y1 y2 y3 y4 y5 y6 > #0.0) \/
71 (y_of_x rad2_x y1 y2 y3 y4 y5 y6 < &2) \/
72 (eta_y y1 y2 y6 > sqrt2 ) \/
73 (eta_y y1 y3 y5 > sqrt2))`;
75 Note the upper bound on $y_4$ is $2.1$. The same inequality holds when
76 $y_4\\ge 2.1$. In fact, \\ineq{4003532128} is even stronger.
77 This is an inequality for $23$-cells used to prove the cluster inequality.";
78 tags = [Tex;Cfsqp;Clusterlp];
83 ineq = all_forall `ineq
84 [(&2 * hminus,y1, &2 * hplus);
87 (#2 ,y4, &2 * hminus);
91 ( (gamma4f y1 y2 y3 y4 y5 y6 lmfun > #0.0) \/
92 (dih_y y1 y2 y3 y4 y5 y6 < #1.575) )`;
99 id = "QITNPEA 4 blades, 3 quarters, 1 23-cell";
100 ineq = all_forall `ineq
101 [(&2 * hminus,y1, &2 * hplus);
102 (&2,y2, &2 * hminus);
103 (&2,y3, &2 * hminus);
105 (&2,y5, &2 * hminus);
106 (&2,y6, &2 * hminus);
107 (&2,y7, &2 * hminus);
108 (&2,y8, &2 * hminus);
109 (&2,y9, &2 * hminus);
110 (&2,y10, &2 * hminus);
111 (&2,y11, &2 * hminus);
112 (&2,y12, &2 * hminus);
113 (&2,y13, &2 * hminus)
115 ((gamma23f y1 y2 y3 y4 y5 y6 1 1 sqrt2 lmfun
116 + gamma4f y1 y3 y7 y9 y12 y5 lmfun
117 + gamma4f y1 y7 y8 y10 y13 y12 lmfun
118 + gamma4f y1 y8 y2 y11 y6 y13 lmfun > #0.0) \/
120 dih_y y1 y2 y3 y4 y5 y6
121 + dih_y y1 y3 y7 y9 y12 y5
122 + dih_y y1 y7 y8 y10 y13 y12
123 + dih_y y1 y8 y2 y11 y6 y13 < &2 * pi
125 (y_of_x rad2_x y1 y2 y3 y4 y5 y6 < &2))`;
127 This is a numerical test of the 4-blade inequality in the case of three quarters
128 and one 23-cell. It is too large to be directly checked by rigorous nonlinear
129 optimization. Instead it is broken into smaller pieces.";
130 tags = [Cfsqp;Clusterlp;Derived];
135 id = "OCTAHEDRON OXLZLEZ TEST 4 blades, 3 quarters, 1 4-cell wt 1/2";
136 ineq = all_forall `ineq
137 [(&2 * hminus,y1, &2 * hplus);
138 (&2,y2, &2 * hminus);
139 (&2,y3, &2 * hminus);
140 (&2 * hminus ,y4, &2 *hplus);
141 (&2,y5, &2 * hminus);
142 (&2,y6, &2 * hminus);
143 (&2,y7, &2 * hminus);
144 (&2,y8, &2 * hminus);
145 (&2,y9, &2 * hminus);
146 (&2,y10, &2 * hminus);
147 (&2,y11, &2 * hminus);
148 (&2,y12, &2 * hminus);
149 (&2,y13, &2 * hminus)
151 ((gamma4f y1 y2 y3 y4 y5 y6 lmfun / &2 + beta_bump_force_y y1 y2 y3 y4 y5 y6
152 + gamma4f y1 y3 y7 y9 y12 y5 lmfun
153 + gamma4f y1 y7 y8 y10 y13 y12 lmfun
154 + gamma4f y1 y8 y2 y11 y6 y13 lmfun > #0.0) \/
156 dih_y y1 y2 y3 y4 y5 y6
157 + dih_y y1 y3 y7 y9 y12 y5
158 + dih_y y1 y7 y8 y10 y13 y12
159 + dih_y y1 y8 y2 y11 y6 y13 > &2 * pi
162 dih_y y1 y2 y3 y4 y5 y6
163 + dih_y y1 y3 y7 y9 y12 y5
164 + dih_y y1 y7 y8 y10 y13 y12
165 + dih_y y1 y8 y2 y11 y6 y13 < &2 * pi - #0.002
168 This is a numerical test of the 4-blade inequality in the case of three quarters
169 and one 4-cell of wt 1/2.
170 This is the most important case of the inequality.
171 It is too large to be directly checked by rigorous nonlinear
172 optimization. Instead it is broken into smaller pieces.";
173 tags = [Cfsqp;Clusterlp;Derived];
180 ineq = all_forall `ineq
193 (cayleyR x12 x13 x14 x15 x23 x24 x25 x34 x35 x45 < &0)`;
195 doc = "A Cayley Menger determinant is positive. This was part of Local Fan, but
196 is no longer needed.";
205 (#0.591 - #0.0331 *k + #0.506 * lmfun h <=
206 regular_spherical_polygon_area (cos (acs (h/ &2) - pi/ &6)) k)`;;
214 (#1.591 - #0.0331 *k + #0.506 * lmfun (#1.0) <=
215 regular_spherical_polygon_area (cos (#0.797)) k)`;;
230 doc="We can use extremal edge properties and the tame table D calculations
231 to reduce to the case where $y_4=\\sqrt8$ and $y_5,y_6$ are extremal.";
232 tags = [Cfsqp;Lp;Tex];
233 ineq = all_forall `ineq
241 (taum y1 y2 y3 sqrt8 y5 y6 > #0.2759)`;
247 doc="We can use dimension reduction methods to simplify this inequality.";
248 tags = [Cfsqp;Lp;Tex;Penalty(5.0,500.0)];
249 ineq = all_forall `ineq
254 (sqrt8,y4,&2 * #2.52);
261 ((tauq y1 y2 y3 y4 y5 y6 y7 y8 y9 > #0.492) \/
262 (enclosed y1 y5 y6 y4 y2 y3 y7 y8 y9 < sqrt8 ))`;
269 ineq = all_forall `ineq
277 (taum y1 y2 y3 y4 y5 sqrt8 > #0.3493)`;
284 ineq = all_forall `ineq
292 (taum y1 y2 y3 y4 y5 sqrt8 > #0.3493)`;
296 id = "9620775909 fake";
297 doc="For reference only:
298 We can use dimension reduction methods to simplify this inequality.
299 The constant was 0.492.";
300 tags = [Cfsqp;Lp;Tex;Penalty(5.0,500.0)];
301 ineq = all_forall `ineq
306 (sqrt8,y4,&2 * #2.52);
313 ((tauq y1 y2 y3 y4 y5 y6 y7 y8 y9 > #0.492) \/
314 (enclosed y1 y5 y6 y4 y2 y3 y7 y8 y9 < sqrt8 ))`;
321 let profile_apex5_d = new_definition
322 `profile_apex5_d r s = tame_table_d (r-1) (s+1)`;;
324 let profile_std56_flat_free_d = new_definition
325 `profile_std56_flat_free_d r s = if (r,s) = (6,0) then #0.91 else
326 (&2 - &s)* #0.128 + (&r + &2 * &s - &4) * #0.44`;;
328 let profile_apex4_d = new_definition
329 `profile_apex4_d r s = if (r,s)=(4,0) then #0.4773 else #0.3493`;;
335 ineq = all_forall `ineq
343 (taum y1 y2 y3 y4 y5 sqrt8 > #0.3493)`;
346 (* In lp2009 but not graph0 *)
358 ( taum y1 y2 y3 y4 y5 y6 >= #0.0)`;;
369 ( taum y1 y2 y3 y4 y5 y6 - #0.2759 > #0.0)`;;
372 (* These are inequalities found in the lp2009.cc file
373 that were not found in the graph0.mod file *)
378 doc="deprecated and false";
380 ineq = all_forall `ineq
388 ( (taum y1 y2 y3 y4 y5 y6) -
389 #0.231 - (#0.622 * (dih_y y1 y2 y3 y4 y5 y6))
390 - (#2.09 / #2.0) - ((#0.54 / #2.0) * (y1 - #2.0))
391 + (#0.578 * (y2 + y6 - #4.0)) > #0.0)`;
398 (*found in lp2009 but not graph0 *)
411 (( tauq y1 y2 y3 y4 y5 y6 y7 y8 y9 - #0.206 > #0.0) \/
412 ( enclosed y1 y5 y6 y4 y2 y3 y7 y8 y9 < #2.52 ) \/
413 ( delta_y y1 y2 y3 y4 y5 y6 < &0) \/
414 ( delta_y y7 y2 y3 y4 y8 y9 < &0))`;;
421 doc="This original version of the inequality. There are six derived versions.";
423 ineq = all_forall `ineq[
430 (dih_y y1 y2 y3 y4 y5 y6 - #1.448 -
431 (#0.266 * (y1 - #2.0)) +
432 (#0.295 * (y2 - #2.0)) +
433 (#0.57 * (y3 - #2.0)) -
434 (#0.745 * (y4 - #2.52)) +
435 (#0.268 * (y5 - #2.0)) +
436 (#0.385 * (y6 - #2.52)) > #0.0)`;
442 let iqd s dart sym t =
443 let c = mk_mconst (dart,tyR) in {
446 tags = [Cfsqp;Lp;] @ (if sym then [Lpsymmetry] else []);
447 ineq = Ineq.mk_tplate templateC (c:: t);
452 let mk_QITNPEA' i3 i4 i5 i6 =
453 let template = `\ y3m y3M y4m y4M y5m y5M y6m y6M w m. ineq
454 [(&2 * hminus, y1, &2 * hplus);
455 (&2 ,y2, &2 *hminus);
460 ((gamma4f y1 y2 y3 y4 y5 y6 lmfun / &w + &m *beta_bump_y y1 y2 y3 y4 y5 y6
461 - #0.0105256 + #0.00522841*dih_y y1 y2 y3 y4 y5 y6 > #0.0) \/
462 (y_of_x rad2_x y1 y2 y3 y4 y5 y6 > &2))` in
463 let x i = List.nth [`&2`; `&2 * hminus`; `sqrt8`] i in
465 let mid i = if (i=1) then 1 else 0 in
466 let w = 1 + mid i3 + mid i4 + mid i5 + mid i6 in
467 let m = if (w =2) && (i4 = 1) then `1` else `0` in
468 Ineq.mk_tplate template [x i3;X i3; x i4;X i4; x i5;X i5; x i6 ;X i6; mk_small_numeral w; m];;
472 ineq = mk_QITNPEA' 0 1 0 0;
473 doc = "This is a $4$-cell (nonquarter) inequality for four blades.";
474 tags = [Cfsqp;Flypaper;Penalty(50.0,500.0)];
477 let add = Parse_ineq.execute_cfsqp;;