は、我々は次のプログラムがあるとします。Prologの否定と論理否定
a(tom).
v(pat).
と(falseを返す)問い合わせ:
\+ a(X), v(X).
トレースするとき、私はXがトムにインスタンス化になっていることがわかります述語a(tom)は成功し、したがって+ a(tom)は失敗します。
私は、Prologのnot(+)が単なるテストであり、インスタンス化を引き起こさないというチュートリアルを読んでいます。
誰かが私のために上記の点を明確にしてもらえますか?私はインスタンス化を見ることができます。
私は、否定(失敗としての否定)と論理否定の間に違いがあることを理解します。どの記事が同じように振る舞い、どのような振る舞いが違うのかを説明する良い記事を参照できますか?
flounderingで何を理解していますか?私の理解には、単に「セーフノット(G): - (地面(G)、\ + G)」のようなcoroutiningゴールが答えの一部であることを意味します。しかし、あなたは別の考え方を持っているようです。 – false
第2ニート:グラウンドは必要ではなく、ネゲートされたゴールの外側で発生する変数のグラウンドを主張するだけで十分です。それでも要求するのはあまりにも多いです。 – false
私はあなたの質問を理解するか分からない。 'セーフノット(G): - (地上(G)、\ + G).'は、解決策を持っている場合に逃げるための解決策です。フラウンダリングのために、私はNAFのPrologの考え方のために、正解ではない答えを導く目標の発生を意図しています。 – NotAUser