QEの計算例: 全称量化子 を含む論理式の量化子消去
例題
方程式 が実根(実数解)をもたないための の条件を求めよ。
解法
1階述語論理式の構成
この問題で示すべき条件を書き出して変形すると
任意の実数 が方程式 の根になることはない
任意の実数 に対して関数 が成り立つことはない
任意の実数 に対して が成り立つ
となりますので、この問題を表す1階述語論理式は
となります。
Mathematica への論理式の入力とQEによる解法
Mathematica に入力する論理式を定義します。
f2 = ForAll[x, a x^2 + b x + c != 0]
Reduce関数に論理式を入力して量化子消去を実行します。
Reduce[f2, Reals]
すると、次の出力が得られます。
(c < 0 && ((b < 0 && a < b^2/(4 c)) || (b == 0 && a <= 0) || (b > 0 && a < b^2/(4 c)))) || (c > 0 && ((b < 0 && a > b^2/(4 c)) || (b == 0 && a >= 0) || (b > 0 && a > b^2/(4 c))))
出力の意味は次の論理式です:
ちょっと複雑ですね。
これも、先の例と同様に、変数を消去する順序を変えて、再計算してみましょう。
Reduce[f2, {a,b,c}, Reals]
すると、次の出力が得られます。
(a < 0 && c < b^2/(4 a)) || (a == 0 && b == 0 && (c < 0 || c > 0)) || (a > 0 && c > b^2/(4 a))
出力の意味は次の論理式です:
上の論理式は、一番外側に選言(または)がありますので、そこで論理式を分けましょう。同値な論理式は、次の「1. または 2. または 3.」となります(3つの論理式の並べ方を変えています)。
論理式 3. の は と同値ですから、論理式 3. からは
という条件が導かれます。
一方、論理式 1. と 2. に出てくる不等式については、の正負に注意して分母を払うと、それぞれ
- より
- より
となり、の正負にかかわらず、(すなわち、判別式の値が負)という条件にまとめられます。ゆえに、論理式 1. と 2. からは
という条件が導かれます。