私の SWI-Prolog ナレッジ ベースには、次の 2 つの事実が含まれています。
f(a,b).
f(a,c).
今、私がクエリを提起した場合
?- f(a,c).
true.
しかし
?- f(a,b).
true ;
false.
f(a,b) が真であり偽でもあるのはなぜですか? これは、KB に 3 つのファクトがある場合にも発生します。f(a,d) を追加するとします。KB では、f(a,d) は true (のみ) ですが、f(a,b) と f(a,c) は true と false の両方です。何が起こっているのでしょうか? Prolog がこれらのクエリに対して (のみ) 真の回答をするようにするにはどうすればよいでしょうか?