本日のC.A.D.

Quantified Formula: QE(forall a b c d) ((a^2*c + -1*a*c^2 + -1*a*d^2 + b^2*c + -1*a^3*c^2 + -1*a^3*d^2 + a^2*c^3 + a^2*c*d^2 + -1*a*b^2*c^2 + -1*a*b^2*d^2 + b^2*c^3 + b^2*c*d^2 = 0 and -1*a^2*d + -1*b^2*d + b*c^2 + b*d^2 + -1*a^2*b*c^2 + -1*a^2*b*d^2 + a^2*c^2*d + a^2*d^3 + -1*b^3*c^2 + -1*b^3*d^2 + b^2*c^2*d + b^2*d^3 = 0 and -1*b < 0 and -1*d < 0) => (-1*a + c = 0 and -1*b + d = 0))

https://github.com/ths-rwth/smtrat/blob/JLAMP-CDCAC/benchmarks/31.smt2
そのまま実行すると

? tst12([all,all,all,all],[b,a,c,d],(f1,f2,f3,f4,f5,f6)->imp(f1*f2*f3*f4,f5*f6),"a^2*c + -1*a*c^2 + -1*a*d^2 + b^2*c + -1*a^3*c^2 + -1*a^3*d^2 + a^2*c^3 + a^2*c*d^2 + -1*a*b^2*c^2 + -1*a*b^2*d^2 + b^2*c^3 + b^2*c*d^2 = 0, -1*a^2*d + -1*b^2*d + b*c^2 + b*d^2 + -1*a^2*b*c^2 + -1*a^2*b*d^2 + a^2*c^2*d + a^2*d^3 + -1*b^3*c^2 + -1*b^3*d^2 + b^2*c^2*d + b^2*d^3 = 0, -1*b < 0, -1*d < 0, -1*a + c = 0, -1*b + d = 0",7);Ans()
 *** using the sum of squares projection.
[d,4]
[c,9]
[a,24]
[b,28]
time = 3,877 ms.
111 4121(150,127) 63963(2022,4503) 643841(28592,52664) 
 *** combined adjacent 643840 cells.
1[true,true,true,true]
time = 2min, 25,341 ms.

となり,否定が false を見る方針なら

? tst12([ex,ex,ex,ex],[b,a,c,d],(f1,f2,f3,f4,f5,f6)->f1*f2*f3*f4*not(f5*f6),"a^2*c + -1*a*c^2 + -1*a*d^2 + b^2*c + -1*a^3*c^2 + -1*a^3*d^2 + a^2*c^3 + a^2*c*d^2 + -1*a*b^2*c^2 + -1*a*b^2*d^2 + b^2*c^3 + b^2*c*d^2 = 0, -1*a^2*d + -1*b^2*d + b*c^2 + b*d^2 + -1*a^2*b*c^2 + -1*a^2*b*d^2 + a^2*c^2*d + a^2*d^3 + -1*b^3*c^2 + -1*b^3*d^2 + b^2*c^2*d + b^2*d^3 = 0, -1*b < 0, -1*d < 0, -1*a + c = 0, -1*b + d = 0");Ans()
 *** using Lazard's method (MPP17).
[d,4]
[c,9]
[a,24]
[b,28]
time = 1,924 ms.
55 2057(32,44) 31935(982,2225) 0(14262,26188) 
1[false]
time = 42,614 ms.

となりますが,$p\to[q\land r]$ は $[p\to q]\land[p\to r]$,更に $[p\to q]\land[[p\land q]\to r]$ と変形できるので,分割して実行すると

? tst12([all,all,all,all],[b,a,c,d],(f1,f2,f3,f4,f5)->imp(f1*f2*f3*f4,f5),"a^2*c + -1*a*c^2 + -1*a*d^2 + b^2*c + -1*a^3*c^2 + -1*a^3*d^2 + a^2*c^3 + a^2*c*d^2 + -1*a*b^2*c^2 + -1*a*b^2*d^2 + b^2*c^3 + b^2*c*d^2 = 0, -1*a^2*d + -1*b^2*d + b*c^2 + b*d^2 + -1*a^2*b*c^2 + -1*a^2*b*d^2 + a^2*c^2*d + a^2*d^3 + -1*b^3*c^2 + -1*b^3*d^2 + b^2*c^2*d + b^2*d^3 = 0, -1*b < 0, -1*d < 0, -1*a + c = 0");Ans()
 *** using Lazard's method (MPP17).
[d,3]
[c,7]
[a,18]
[b,10]
time = 1,016 ms.
35 1189(118,60) 15615(574,1077) 129501(8480,10604) 
 *** combined adjacent 129500 cells.
1[true,true,true,true]
time = 22,563 ms.

? tst12([all,all,all],[b,a,d],(f1,f2,f3,f4,f5)->imp(f1*f2*f3*f4,f5),strrep("a^2*c + -1*a*c^2 + -1*a*d^2 + b^2*c + -1*a^3*c^2 + -1*a^3*d^2 + a^2*c^3 + a^2*c*d^2 + -1*a*b^2*c^2 + -1*a*b^2*d^2 + b^2*c^3 + b^2*c*d^2 = 0, -1*a^2*d + -1*b^2*d + b*c^2 + b*d^2 + -1*a^2*b*c^2 + -1*a^2*b*d^2 + a^2*c^2*d + a^2*d^3 + -1*b^3*c^2 + -1*b^3*d^2 + b^2*c^2*d + b^2*d^3 = 0, -1*b < 0, -1*d < 0, -1*b + d = 0",["c"],["a"]));Ans()
 *** using Lazard's method (MPP17).
[d,4]
[a,5]
[b,4]
time = 83 ms.
11 125(20,14) 1111(44,119) 
 *** combined adjacent 1110 cells.
1[true,true,true]
time = 133 ms.

となり,否定が false を見る方針でも

? tst12([ex,ex,ex,ex],[b,a,c,d],andx,"a^2*c + -1*a*c^2 + -1*a*d^2 + b^2*c + -1*a^3*c^2 + -1*a^3*d^2 + a^2*c^3 + a^2*c*d^2 + -1*a*b^2*c^2 + -1*a*b^2*d^2 + b^2*c^3 + b^2*c*d^2 = 0, -1*a^2*d + -1*b^2*d + b*c^2 + b*d^2 + -1*a^2*b*c^2 + -1*a^2*b*d^2 + a^2*c^2*d + a^2*d^3 + -1*b^3*c^2 + -1*b^3*d^2 + b^2*c^2*d + b^2*d^3 = 0, -1*b < 0, -1*d < 0, -1*a + c != 0");Ans()
 *** using Lazard's method (MPP17).
[d,3]
[c,7]
[a,18]
[b,10]
time = 999 ms.
17 591(26,14) 7174(258,524) 0(4094,3930) 
1[false]
time = 8,024 ms.

? tst12([ex,ex,ex],[b,a,d],andx,strrep("a^2*c + -1*a*c^2 + -1*a*d^2 + b^2*c + -1*a^3*c^2 + -1*a^3*d^2 + a^2*c^3 + a^2*c*d^2 + -1*a*b^2*c^2 + -1*a*b^2*d^2 + b^2*c^3 + b^2*c*d^2 = 0, -1*a^2*d + -1*b^2*d + b*c^2 + b*d^2 + -1*a^2*b*c^2 + -1*a^2*b*d^2 + a^2*c^2*d + a^2*d^3 + -1*b^3*c^2 + -1*b^3*d^2 + b^2*c^2*d + b^2*d^3 = 0, -1*b < 0, -1*d < 0, -1*b + d != 0",["c"],["a"]),7);Ans()
 *** using the sum of squares projection.
[d,4]
[a,5]
[b,4]
time = 125 ms.
5 59(6,2) 0(20,48) 
1[false]
time = 49 ms.

のように高速化できます.

ところでこの問題,入力の 2 つの等式

$\begin{eqnarray}
&& a^3 c^2+a^3 d^2-a^2 c^3-a^2 c d^2-a^2 c+a b^2 c^2+a b^2 d^2+a c^2+a d^2-b^2 c^3-b^2 c d^2-b^2 c=0,\\
&& a^2 b c^2+a^2 b d^2-a^2 c^2 d-a^2 d^3+a^2 d+b^3 c^2+b^3 d^2-b^2 c^2 d-b^2 d^3+b^2 d-b c^2-b d^2=0
\end{eqnarray}$

は,それぞれ

$\begin{eqnarray}
&& a(a^2+b^2+1)(c^2+d^2)=c(c^2+d^2+1)(a^2+b^2),\\
&& b(a^2+b^2-1)(c^2+d^2)=d(c^2+d^2-1)(a^2+b^2)
\end{eqnarray}$

と整理できるので,辺々を $(a^2+b^2)(c^2+d^2)$ で割りたくなりますが,$0< b\ \land\ 0< d$ により,それが可能であり

$\begin{eqnarray}
&& a+\frac{a}{a^2+b^2}=c+\frac{c}{c^2+d^2},\\
&& b-\frac{b}{a^2+b^2}=d-\frac{d}{c^2+d^2}
\end{eqnarray}$

そして,$s=a+bi,\ t=c+di$ とおくと

${\displaystyle s+\frac{1}{s}=t+\frac{1}{t}}$

つまり

${\displaystyle \frac{(s-t)(st-1)}{st}=\frac{1}{s}(s-t) \left( s-\frac{\bar{{t}}}{|t|^2}\right)=0}$

ここで,再び,$\mathrm{Im}{\, s}=b>0\ \land\ \mathrm{Im}{\, \bar{t}}=-d<0$ により,$s=t$ なので


$\begin{eqnarray}
\forall a\ \forall b\ \forall c\ \forall d &&[\, a(a^2+b^2+1)(c^2+d^2)=c(c^2+d^2+1)(a^2+b^2)\\
&& \land\ b(a^2+b^2-1)(c^2+d^2)=d(c^2+d^2-1)(a^2+b^2)\\
&& \land\ 0< b\ \land\ 0< d\ \to\ [\,a=c\ \land\ b=d\,]\,]
\end{eqnarray}$

を得ます.是即ち「上半平面を定義域とする Joukowsky 変換は単射である」です.

また,上記から入力の 2 つの等式の連言は $s=t\ \lor\ st=1\ \lor s=0\ \lor\ t=0$ と等価,つまり


$\begin{eqnarray}
\forall a\ \forall b\ \forall c\ \forall d &&[\,[\, a(a^2+b^2+1)(c^2+d^2)=c(c^2+d^2+1)(a^2+b^2)\\
&& \land\ b(a^2+b^2-1)(c^2+d^2)=d(c^2+d^2-1)(a^2+b^2)\,]\\
&& \leftrightarrow\ [\,[\,a=c\ \land\ b=d\,]\ \lor\ [\,ac-bd=1\ \land\ ad+bc=0\,]\\
&& \lor\ [\,a=0\ \land\ b=0\,]\ \lor\ [\,c=0\ \land\ d=0\,]\,]\,]
\end{eqnarray}$

であることも解かるので,実行してみると

? mulp=5;

 /* -> */
? tst12([ex,ex,ex,ex],[b,a,c,d],(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10)->f1*f2*not(or(or(or(f3*f4,f5*f6),f7*f8),f9*f10)),"a^2*c + -1*a*c^2 + -1*a*d^2 + b^2*c + -1*a^3*c^2 + -1*a^3*d^2 + a^2*c^3 + a^2*c*d^2 + -1*a*b^2*c^2 + -1*a*b^2*d^2 + b^2*c^3 + b^2*c*d^2 = 0, -1*a^2*d + -1*b^2*d + b*c^2 + b*d^2 + -1*a^2*b*c^2 + -1*a^2*b*d^2 + a^2*c^2*d + a^2*d^3 + -1*b^3*c^2 + -1*b^3*d^2 + b^2*c^2*d + b^2*d^3 = 0, -1*a + c = 0, -1*b + d = 0, a*c - b*d = 1, a*d + b*c = 0, a = 0, b = 0, c = 0, d = 0");Ans()
 *** using Lazard's method (MPP17).
[d,6]
[c,13]
[a,45]
[b,209]
time = 17,627 ms.
987 82344(314,704) 2147780(24596,93892) 0(638480,2355568) 
1[false]
time = 1h, 44min, 23,022 ms.

 /* <- */
? tst12([ex,ex,ex,ex],[b,a,c,d],(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10)->not(f1*f2)*or(or(or(f3*f4,f5*f6),f7*f8),f9*f10),"a^2*c + -1*a*c^2 + -1*a*d^2 + b^2*c + -1*a^3*c^2 + -1*a^3*d^2 + a^2*c^3 + a^2*c*d^2 + -1*a*b^2*c^2 + -1*a*b^2*d^2 + b^2*c^3 + b^2*c*d^2 = 0, -1*a^2*d + -1*b^2*d + b*c^2 + b*d^2 + -1*a^2*b*c^2 + -1*a^2*b*d^2 + a^2*c^2*d + a^2*d^3 + -1*b^3*c^2 + -1*b^3*d^2 + b^2*c^2*d + b^2*d^3 = 0, -1*a + c = 0, -1*b + d = 0, a*c - b*d = 1, a*d + b*c = 0, a = 0, b = 0, c = 0, d = 0");Ans()
 *** using Lazard's method (MPP17).
[d,6]
[c,13]
[a,45]
[b,209]
time = 17,751 ms.
987 82345(314,704) 2141738(24602,93897) 0(634478,2355040) 
1[false]
time = 1h, 43min, 47,907 ms.

といった結果を得ます.