Xk 量化子のネスト

 RedLog や Mathematica の量化子は変数のリストを束縛することが可能で,これまでも

ex ( {x,y} , x^2+y^2=2 and x+y=a );

のような例を数多く扱ってきましたが,実際に入力すれば,直ちに

ex(x,ex(y,a - x - y = 0 and x**2 + y**2 - 2 = 0))$

となることからも明らかなように,それは量化子のネストによって実現され,その換言はロジックとしても正しいものです.
 一方,QEPACD B にはリストの束縛機能はありませんので,最初から

echo -e "[] \n (a,x,y) \n 1 \n (Ex)(Ey)[ x^2+y^2=2 /\ x+y=a]. \n finish" | qepcad

のように入力するわけですが,量化子として前回述べた Xk を用いる際には,以下の注意が必要です.
 それは,一般に P を満たす X が丁度 1 個存在することを ∃!X ( P ) で表すとき,∃!(x,y) ( p ) と ∃!x ( ∃!y ( p ) ) とは同値とは限らないという事実です.例えば

∃!(x,y) ( x≦0 ∧ y≦0 ∧ a≦x+y )

は a=0 と同値ですが

E!y ( y≦0 ∧ a≦x+y )

は x=a と同値なので

∃!x ( E!y ( x≦0 ∧ y≦0 ∧ a≦x+y ) )

は a≦0 と同値になります.従って,例えば

echo -e "[] \n (a,x,y) \n 1 \n (X1x)(X1y)[ x^2+y^2=2 /\ x+y=a]. \n finish" | qepcad

と入力して

a + 2 >= 0 /\ a - 2 <= 0 /\ [ a - 2 = 0 \/ a + 2 = 0 ]

を得ても,それが円周と直線との共有点の個数が 1 となる条件だというのはロジックとして早計なのです.