本日のC.A.D.

A.W.Strzebonski "Cylindrical Algebraic Decomposition using validated numerics" の 7.2. Randomly generated systems で使用された入力です.元の code では CylindricalDecomposition ですが,変数順序を heuristic に委ねるため,無指定の Reduce で実行しました.

Wolfram Language 12.3.0 Engine for Linux x86 (64-bit)
Copyright 1988-2021 Wolfram Research, Inc.

In[1]:= rana={-363 + 177*x1 - 125*x1*x2^2 + 444*x2^3 - 766*x2*x3 + 477*x1*x2*x3 + 447*x3^2 == 0 && 864 - 55*x1^3*
x2 - 491*x2^2 + 959*x1*x2^3 - 465*x1*x3^2 > 0,566 + 180*x1^2*x2^2 + 264*x1^2*x3 + 919*x2^2*x3 + 941*x2^3*x3 + 481
*x1*x2*x3^2 - 519*x2*x3^3 >= 0,634 - 508*x3 + 896*x3^3 - 342*x1*x2*x4 - 462*x2*x3*x4 + 144*x2*x4^2 >= 0,-120 + 38
*x2^3*x4 + 207*x3*x4 + 872*x3^2*x4 + 165*x2*x3^2*x4 + 672*x2*x3*x4^2 + 87*x3^2*x4^2 == 0,-394 + 902*x2 - 282*x1*x
2 + 347*x3 + 389*x2*x3 - 209*x1*x2*x3 + 987*x2*x3^2 == 0 && -202 + 292*x2^3 + 326*x2^2*x3 + 728*x2*x3^2 - 80*x3^3
 > 0 && -866 - 1024*x1^4 - 886*x2*x3 - 736*x1*x2^2*x3 + 763*x2*x3^3 >= 0};                                       

In[2]:= ranb={446 + 511*x3 - 190*x1^3*x3 + 132*x2^2*x3 + 968*x1^2*x2*x4 + 226*x1*x2*x3*x4 + 645*x2*x3*x4^2 > 0,-4
47 - 312*x3 + 623*x3^2 - 912*x2*x4 + 555*x4^2 == 0 && -730 - 978*x2*x3 + 557*x2*x3^2 + 487*x1^2*x4 - 701*x2*x3*x4
 + 470*x2*x4^2 + 297*x3*x4^2 >= 0,-894 - 884*x2*x3 - 290*x3^2 + 144*x1*x3^2 - 887*x2*x3^2 + 20*x3^3 == 0 && -100 
+ 571*x1*x3 - 314*x2^3*x3 + 398*x1*x3^3 - 522*x2*x3^3 >= 0,505 + 834*x2^3*x3 + 887*x2*x3^2 + 151*x3^3 - 243*x2*x3
^3 == 0 && -323 - 408*x1^2*x2 + 484*x1*x2^2 + 556*x3 + 705*x1*x2*x3 > 0 && 422 - 225*x1^4 + 903*x1^2*x3^2 - 944*x
2^2*x3^2 + 996*x3^4 >= 0,-263 - 172*x2 + 78*x2^2 + 41*x2*x3 + 864*x4 + 623*x2*x4 + 293*x3*x4 > 0 && 781 + 948*x1^
2 - x3 - 946*x1^3*x4 - 606*x1*x3*x4 >= 0};                                                                       

In[3]:= ranc={-417 + 159*x1^3 + 210*x1^3*x2 + 358*x1*x2^2*x3 + 605*x2*x3^3 == 0 && -1016 + 1010*x2 + 516*x1*x2 - 
960*x3 + 571*x1*x3 - x3^2 > 0 && -4 + 627*x1^2 - 100*x1*x2 - 670*x3 + 670*x1*x3 >= 0,-502 - 1013*x1*x2*x3 + 328*x
2^2*x3 + 330*x1*x3^2 + 884*x3*x4 + 502*x1*x3*x4 == 0 && 313 - 636*x2 - 997*x1*x3 - 573*x3^2 + 591*x3*x4 >= 0,790 
+ 446*x2^3 + 189*x1^2*x3 + 399*x1*x2*x3 - 110*x3^2 - 19*x2*x3^2 > 0 && 60 - 531*x1^2 - 691*x1*x2 + 908*x1^2*x3 - 
935*x1*x2*x3 + 431*x2^2*x3 - 747*x3^3 >= 0,275 + 130*x3^2 - 279*x2*x4 - 113*x3*x4 + 620*x4^2 > 0 && 542 + 680*x1*
x3 + 75*x2^2*x3 + 550*x1*x3^2 + 621*x1*x3*x4 >= 0,-218 + 955*x1^2*x2*x3 + 520*x2*x3^3 + 1017*x3^4 + 250*x1*x2*x4 
- 391*x2^3*x4 - 525*x1*x3*x4^2 > 0};                                                                             

In[4]:= First@Timing@Reduce[#,Reals]&/@rana//Timing                                               

Out[4]= {1.426756, {0.467609, 0.346341, 0.038994, 0.43843, 0.134579}}

In[5]:= First@Timing@Reduce[#,Reals]&/@ranb//Timing                                               

Out[5]= {7.619839, {0.886294, 0.062116, 0.02397, 4.808107, 1.835422}}

In[6]:= First@Timing@Reduce[#,Reals]&/@ranc//Timing                                               

Out[6]= {17.547247, {3.909086, 3.40725, 4.59773, 0.081719, 5.538123}}

同じ入力に対する tst12 の実行結果です.

                         GP/PARI CALCULATOR Version 2.14.0 (development git-b0a4238356)
                          amd64 running linux (x86-64/GMP-6.2.1 kernel) 64-bit version
                     compiled: Feb 21 2021, gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)
                                            threading engine: single
                                 (readline v8.0 enabled, extended help enabled)

                                     Copyright (C) 2000-2021 The PARI Group

PARI/GP is free software, covered by the GNU General Public License, and comes WITHOUT ANY WARRANTY WHATSOEVER.

Type ? for help, \q to quit.
Type ?17 for how to get moral (and possibly technical) support.

parisizemax = 20000002048, primelimit = 500000
? wt=getwalltime();rana7(7*23);print("total = ",strtime(getwalltime()-wt),".");print();
[[[x1,3,6],[x2,3,7],[x3,2,4]]]
 *** reordering by degree.
 *** using the sum of squares projection.
[x3,2]
[x1,4]
[x2,11]
time = 261 ms.
45 743(16,30) 704(324,304) 
 *** combined adjacent 173 cells.
[[[x1,2,3],[x2,3,5],[x3,3,5]]]
 *** reordering by degree.
 *** using the sum of squares projection.
[x1,1]
[x3,2]
[x2,3]
time = 66 ms.
13 109(8,2) 277(70,0) 
 *** combined adjacent 184 cells.
[[[x1,1,1],[x2,1,3],[x3,3,3],[x4,2,3]]]
 *** reordering by degree.
 *** using the sum of squares projection.
[x1,1]
[x2,2]
[x4,2]
[x3,2]
time = 115 ms.
5 23(0,2) 69(10,10) 98(0,0) 
 *** combined adjacent 44 cells.
[[[x1,0,0],[x2,3,3],[x3,2,5],[x4,2,6]]]
 *** reordering by degree.
 *** using the sum of squares projection.
[x1]
[x2,1]
[x3,1]
[x4,3]
time = 74 ms.
11 47(8,0) 78(38,0) 78(0,0) 
 *** combined adjacent 13 cells.
[[[x1,4,4],[x2,3,11],[x3,3,10]]]
 *** reordering by degree.
 *** using the sum of squares projection.
[x1,2]
[x3,5]
[x2,10]
time = 1,151 ms.
33 143(16,23) 4(58,6) 
 *** combined adjacent 2 cells.
total = 3,205 ms.

? wt=getwalltime();rana7(7*29);print("total = ",strtime(getwalltime()-wt),".");print();
[[[x1,3,4,6],[x2,3,4,7],[x3,2,3,4]]]
 *** reordering by d+sotd+o.
 *** using the sum of squares projection.
[x3,2]
[x1,4]
[x2,11]
time = 230 ms.
45 743(16,30) 704(324,304) 
 *** combined adjacent 173 cells.
[[[x1,2,4,3],[x2,3,4,5],[x3,3,4,5]]]
 *** reordering by d+sotd+o.
 *** using the sum of squares projection.
[x1,1]
[x3,2]
[x2,3]
time = 66 ms.
13 109(8,2) 277(70,0) 
 *** combined adjacent 184 cells.
[[[x1,1,3,1],[x2,1,3,3],[x3,3,3,3],[x4,2,3,3]]]
 *** reordering by d+sotd+o.
 *** using the sum of squares projection.
[x1,1]
[x2,2]
[x4,2]
[x3,2]
time = 107 ms.
5 23(0,2) 69(10,10) 98(0,0) 
 *** combined adjacent 44 cells.
[[[x1,0,0,0],[x2,3,4,3],[x3,2,4,5],[x4,2,4,6]]]
 *** reordering by d+sotd+o.
 *** using the sum of squares projection.
[x1]
[x2,1]
[x3,1]
[x4,3]
time = 78 ms.
11 47(8,0) 78(38,0) 78(0,0) 
 *** combined adjacent 13 cells.
[[[x1,4,4,4],[x2,3,4,11],[x3,3,4,10]]]
 *** reordering by d+sotd+o.
 *** using the sum of squares projection.
[x1,2]
[x3,5]
[x2,10]
time = 1,169 ms.
33 143(16,23) 4(58,6) 
 *** combined adjacent 2 cells.
total = 3,205 ms.

? wt=getwalltime();rana7(7*31);print("total = ",strtime(getwalltime()-wt),".");print();
[[[x1,8,13,18,6],[x2,13,17,21,7],[x3,6,10,10,4]]]
 *** reordering by sum(d+td in terms)+o.
 *** using the sum of squares projection.
[x3,2]
[x1,4]
[x2,11]
time = 222 ms.
45 743(16,30) 704(324,304) 
 *** combined adjacent 173 cells.
[[[x1,5,8,11,3],[x2,9,11,19,5],[x3,8,11,18,5]]]
 *** reordering by sum(d+td in terms)+o.
 *** using the sum of squares projection.
[x1,1]
[x3,2]
[x2,3]
time = 66 ms.
13 109(8,2) 277(70,0) 
 *** combined adjacent 184 cells.
[[[x1,1,2,3,1],[x2,3,2,9,3],[x3,5,6,7,3],[x4,4,5,9,3]]]
 *** reordering by sum(d+td in terms)+o.
 *** using the sum of squares projection.
[x1,1]
[x2,2]
[x4,2]
[x3,2]
time = 108 ms.
5 23(0,2) 69(10,10) 98(0,0) 
 *** combined adjacent 44 cells.
[[[x1,0,0,0,0],[x2,5,11,12,3],[x3,8,8,17,5],[x4,8,8,21,6]]]
 *** reordering by sum(d+td in terms)+o.
 *** using the sum of squares projection.
[x1]
[x2,1]
[x3,1]
[x4,3]
time = 72 ms.
11 47(8,0) 78(38,0) 78(0,0) 
 *** combined adjacent 13 cells.
[[[x1,7,14,13,4],[x2,15,16,30,11],[x3,16,22,28,10]]]
 *** reordering by sum(d+td in terms)+o.
 *** using the sum of squares projection.
[x1,2]
[x2,5]
[x3,6]
time = 767 ms.
15 55(12,11) 6(26,6) 
 *** combined adjacent 1 cells.
total = 2,406 ms.

? wt=getwalltime();ranb7(7*23);print("total = ",strtime(getwalltime()-wt),".");print();
[[[x1,3,3],[x2,2,4],[x3,1,5],[x4,2,3]]]
 *** using the sum of squares projection.
[x4,1]
[x3,3]
[x2,5]
[x1,8]
time = 174 ms.
21 175(12,15) 915(102,86) 1192(390,0) 
 *** combined adjacent 44 cells.
[[[x1,2,1],[x2,1,5],[x3,2,6],[x4,2,6]]]
 *** reordering by degree.
 *** using the sum of squares projection.
[x1,1]
[x2,2]
[x4,5]
[x3,8]
time = 145 ms.
25 195(16,18) 180(0,60) 270(64,0) 
 *** combined adjacent 178 cells.
[[[x1,1,3],[x2,3,4],[x3,3,9]]]
 *** reordering by degree.
 *** using the sum of squares projection.
[x1,2]
[x2,2]
[x3,3]
time = 134 ms.
7 31(4,0) 21(0,24) 
 *** combined adjacent 6 cells.
[[[x1,4,5],[x2,3,7],[x3,4,9]]]
 *** reordering by degree.
 *** using the sum of squares projection.
[x1,2]
[x2,6]
[x3,16]
time = 1,358 ms.
95 152(16,87) 251(14,8) 
 *** combined adjacent 151 cells.
[[[x1,3,3],[x2,2,4],[x3,1,4],[x4,1,5]]]
 *** reordering by degree.
 *** using the sum of squares projection.
[x3,2]
[x4,5]
[x2,8]
[x1,21]
time = 311 ms.
75 1681(14,80) 13707(546,668) 13910(0,5540) 
 *** combined adjacent 7087 cells.
total = 10,369 ms.

? wt=getwalltime();ranb7(7*29);print("total = ",strtime(getwalltime()-wt),".");print();
[[[x1,3,4,3],[x2,2,4,4],[x3,1,4,5],[x4,2,4,3]]]
 *** using the sum of squares projection.
[x4,1]
[x3,3]
[x2,5]
[x1,8]
time = 174 ms.
21 175(12,15) 915(102,86) 1192(390,0) 
 *** combined adjacent 44 cells.
[[[x1,2,3,1],[x2,1,3,5],[x3,2,3,6],[x4,2,3,6]]]
 *** reordering by d+sotd+o.
 *** using the sum of squares projection.
[x1,1]
[x2,2]
[x4,5]
[x3,8]
time = 145 ms.
25 195(16,18) 180(0,60) 270(64,0) 
 *** combined adjacent 178 cells.
[[[x1,1,4,3],[x2,3,4,4],[x3,3,4,9]]]
 *** reordering by d+sotd+o.
 *** using the sum of squares projection.
[x1,2]
[x2,2]
[x3,3]
time = 108 ms.
7 31(4,0) 21(0,24) 
 *** combined adjacent 6 cells.
[[[x1,4,4,5],[x2,3,4,7],[x3,4,4,9]]]
 *** reordering by d+sotd+o.
 *** using the sum of squares projection.
[x1,2]
[x2,6]
[x3,16]
time = 1,371 ms.
95 152(16,87) 251(14,8) 
 *** combined adjacent 151 cells.
[[[x1,3,4,3],[x2,2,2,4],[x3,1,3,4],[x4,1,4,5]]]
 *** reordering by d+sotd+o.
 *** using the sum of squares projection.
[x3,2]
[x2,3]
[x4,6]
[x1,12]
time = 216 ms.
49 709(4,26) 4191(300,386) 5002(0,2064) 
 *** combined adjacent 2701 cells.
total = 6,579 ms.

? wt=getwalltime();ranb7(7*31);print("total = ",strtime(getwalltime()-wt),".");print();
[[[x1,6,11,12,3],[x2,5,7,15,4],[x3,5,3,16,5],[x4,4,8,12,3]]]
 *** using the sum of squares projection.
[x4,1]
[x3,3]
[x2,5]
[x1,8]
time = 174 ms.
21 175(12,15) 915(102,86) 1192(390,0) 
 *** combined adjacent 44 cells.
[[[x1,2,5,3,1],[x2,5,3,13,5],[x3,8,7,14,6],[x4,9,7,16,6]]]
 *** reordering by sum(d+td in terms)+o.
 *** using the sum of squares projection.
[x1,1]
[x2,2]
[x3,4]
[x4,6]
time = 158 ms.
19 139(20,14) 136(0,52) 218(56,0) 
 *** combined adjacent 124 cells.
[[[x1,3,5,9,3],[x2,6,13,13,4],[x3,18,15,27,9]]]
 *** reordering by sum(d+td in terms)+o.
 *** using the sum of squares projection.
[x1,2]
[x2,2]
[x3,3]
time = 113 ms.
7 31(4,0) 21(0,24) 
 *** combined adjacent 6 cells.
[[[x1,10,17,17,5],[x2,11,24,24,7],[x3,19,25,30,9]]]
 *** reordering by sum(d+td in terms)+o.
 *** using the sum of squares projection.
[x1,2]
[x2,6]
[x3,16]
time = 1,371 ms.
95 152(16,87) 251(14,8) 
 *** combined adjacent 151 cells.
[[[x1,6,8,9,3],[x2,5,2,7,4],[x3,4,3,8,4],[x4,5,4,12,5]]]
 *** reordering by sum(d+td in terms)+o.
 *** using the sum of squares projection.
[x2,1]
[x3,2]
[x4,4]
[x1,6]
time = 123 ms.
23 199(4,8) 556(92,48) 1058(228,0) 
 *** combined adjacent 11 cells.
total = 4,510 ms.

? wt=getwalltime();ranc7(7*23);print("total = ",strtime(getwalltime()-wt),".");print();
[[[x1,3,8],[x2,2,6],[x3,3,7]]]
 *** reordering by degree.
 *** using the sum of squares projection.
[x2,3]
[x3,7]
[x1,22]
time = 385 ms.
87 1795(42,71) 561(314,1257) 
 *** combined adjacent 244 cells.
[[[x1,1,4],[x2,2,3],[x3,2,8],[x4,1,3]]]
 *** reordering by degree.
 *** using the sum of squares projection.
[x4,2]
[x2,3]
[x1,4]
[x3,10]
time = 244 ms.
41 245(22,18) 901(276,140) 667(0,506) 
 *** combined adjacent 268 cells.
[[[x1,2,6],[x2,3,6],[x3,3,8]]]
 *** reordering by degree.
 *** using the sum of squares projection.
[x1,2]
[x2,4]
[x3,16]
time = 304 ms.
59 675(30,29) 1162(326,306) 
 *** combined adjacent 521 cells.
[[[x1,1,3],[x2,2,2],[x3,2,6],[x4,2,4]]]
 *** reordering by degree.
 *** using the sum of squares projection.
[x2,2]
[x1,2]
[x4,4]
[x3,4]
time = 161 ms.
11 53(4,7) 189(0,0) 317(76,64) 
 *** combined adjacent 189 cells.
[[[x1,2,3],[x2,3,4],[x3,4,4],[x4,2,3]]]
 *** reordering by degree.
 *** using the sum of squares projection.
[x4,1]
[x1,3]
[x2,4]
[x3,6]
time = 896 ms.
37 277(21,24) 1677(182,84) 1725(850,0) 
 *** combined adjacent 70 cells.
total = 9,355 ms.

? wt=getwalltime();ranc7(7*29);print("total = ",strtime(getwalltime()-wt),".");print();
[[[x1,3,4,8],[x2,2,4,6],[x3,3,4,7]]]
 *** reordering by d+sotd+o.
 *** using the sum of squares projection.
[x2,3]
[x3,7]
[x1,22]
time = 379 ms.
87 1795(42,71) 561(314,1257) 
 *** combined adjacent 244 cells.
[[[x1,1,3,4],[x2,2,3,3],[x3,2,3,8],[x4,1,3,3]]]
 *** reordering by d+sotd+o.
 *** using the sum of squares projection.
[x4,2]
[x2,3]
[x1,4]
[x3,10]
time = 217 ms.
41 245(22,18) 901(276,140) 667(0,506) 
 *** combined adjacent 268 cells.
[[[x1,2,3,6],[x2,3,3,6],[x3,3,3,8]]]
 *** reordering by d+sotd+o.
 *** using the sum of squares projection.
[x1,2]
[x2,4]
[x3,16]
time = 273 ms.
59 675(30,29) 1162(326,306) 
 *** combined adjacent 521 cells.
[[[x1,1,3,3],[x2,2,3,2],[x3,2,3,6],[x4,2,3,4]]]
 *** reordering by d+sotd+o.
 *** using the sum of squares projection.
[x2,2]
[x1,2]
[x4,4]
[x3,4]
time = 163 ms.
11 53(4,7) 189(0,0) 317(76,64) 
 *** combined adjacent 189 cells.
[[[x1,2,4,3],[x2,3,4,4],[x3,4,4,4],[x4,2,4,3]]]
 *** reordering by d+sotd+o.
 *** using the sum of squares projection.
[x4,1]
[x1,3]
[x2,4]
[x3,6]
time = 886 ms.
37 277(21,24) 1677(182,84) 1725(850,0) 
 *** combined adjacent 70 cells.
total = 9,202 ms.

? wt=getwalltime();ranc7(7*31);print("total = ",strtime(getwalltime()-wt),".");
[[[x1,13,14,21,8],[x2,7,10,17,6],[x3,10,14,16,7]]]
 *** reordering by sum(d+td in terms)+o.
 *** using the sum of squares projection.
[x2,3]
[x3,7]
[x1,22]
time = 390 ms.
87 1795(42,71) 561(314,1257) 
 *** combined adjacent 244 cells.
[[[x1,4,3,11,4],[x2,4,5,7,3],[x3,10,7,20,8],[x4,3,3,7,3]]]
 *** reordering by sum(d+td in terms)+o.
 *** using the sum of squares projection.
[x4,2]
[x2,3]
[x1,4]
[x3,10]
time = 222 ms.
41 245(22,18) 901(276,140) 667(0,506) 
 *** combined adjacent 268 cells.
[[[x1,9,10,16,6],[x2,9,11,17,6],[x3,12,11,23,8]]]
 *** reordering by sum(d+td in terms)+o.
 *** using the sum of squares projection.
[x1,2]
[x2,4]
[x3,16]
time = 321 ms.
59 675(30,29) 1162(326,306) 
 *** combined adjacent 521 cells.
[[[x1,3,2,8,3],[x2,3,6,5,2],[x3,8,7,15,6],[x4,5,4,9,4]]]
 *** reordering by sum(d+td in terms)+o.
 *** using the sum of squares projection.
[x2,2]
[x1,2]
[x4,4]
[x3,4]
time = 163 ms.
11 53(4,7) 189(0,0) 317(76,64) 
 *** combined adjacent 189 cells.
[[[x1,4,8,11,3],[x2,6,11,15,4],[x3,9,12,16,4],[x4,4,8,11,3]]]
 *** reordering by sum(d+td in terms)+o.
 *** using the sum of squares projection.
[x4,1]
[x1,3]
[x2,4]
[x3,6]
time = 874 ms.
37 277(21,24) 1677(182,84) 1725(850,0) 
 *** combined adjacent 70 cells.
total = 9,311 ms.