WRT點2,Wikipedia article似乎是一個很好的起點。
您已經體驗到NAF的理解可能會很困難。這部分可能是因爲(邏輯)否定它本來就很難,即使在簡單的比賽是謂詞演算定義(見例如Russel's paradox),以及部分是因爲Prolog的強大的變量是半球形,以保持實際的反例失敗,如果否定證明。看看你是否能理解forall/2的實際庫定義(請閱讀文檔,它的合成和有趣的),這是運行故障驅動迴路的首選方式:
%% forall(+Condition, +Action)
%
% True if Action if true for all variable bindings for which Condition
% if true.
forall(Cond, Action) :-
\+ (Cond, \+ Action).
我記得我第一次看到它,它看起來像魔術......
編輯有關的教程,我發現,而「洞穴探險」我的鏈接集,好site通過JRFisher。它充滿了有趣的東西,只是可惜它在解釋中有點簡潔,要求學生用經常的行爲來回答自己。請參閱paragraph 2.5,致力於否定失敗。我想你也可以享受第3節。Prolog如何工作
你通過掙扎瞭解什麼?就我的理解而言,它僅僅意味着像safenot(G)這樣的協同目標:當(地面(G),\ + G).'是答案的一部分時。但你似乎有一個不同的概念。 – false
第二點:不要求基礎性,只要堅持否定目標以外發生的變量的基礎性就足夠了。即使這樣也太需要了。 – false
我不確定我瞭解你的問題。 '保險單(G): - 當(地面(G),\ + G)。「是一個解決方案來解決那些有解決方案的案例。雖然爲了解決這個問題,我打算髮生一個目標,因爲NAF的Prolog概念導致了一個不正確的答案。 – NotAUser