私はちょうどプロローグを勉強しています。頭がおかしくなりません。Prolog Unification with not()
は私がa(v).
次のプログラムに
value(v).
a(X) :- not(value(X)).
があるとしvalue(v)
が正しい証明することができるよう、私にはfalseを与えます。
a(w)
実際にはvalue(w)
がないので、試してみても正しいことは証明できません。
私の理解では、a(X).
を要求すると、value(X)
が妥当性を失わせる可能性がある最初の可能な値が与えられます。 value(v)
だけが正しいので、無限の可能性があります。
しかし、なぜPrologは回答を続けるのですかfalse
?すべての
あなたは***改ざん***をどのように表示するかによって、偽とは何ですか?何かが間違っていることをどのように証明しますか?それの一つの見方は、証明不可能なものは全て偽*であり、真実であるものすべてが証明できる(あなたには議論の余地がある)世界に住んでいると想像することができます。プロローグでは、 '\ +'演算子は失敗のセマンティクスとして否定をもって動作します。これは上で説明したものです。いくつかの手がかりを与えることを願っています。 – Limmen
はい、偽を定義できないと定義した場合、Prologは正しいと証明できない例を提供して目標を達成できますか? – user3207838
しかし、私は問題はPrologが常に**本当に**を作ることを探しているということです。この場合、エンジンを元に戻すのですか? – user3207838