我不明白什麼Horn子句是在序言。 •Horn子句是一個恰好具有一個正文字的子句。prolog中的Horn子句是什麼?
root(X) :- \+ left(X,Y), \+ right(X,Y).
因此,對於這個一個它不是一個喇叭條款的原因有多個條款嗎?或者有什麼方法可以將其表述爲喇叭條款?
我不明白什麼Horn子句是在序言。 •Horn子句是一個恰好具有一個正文字的子句。prolog中的Horn子句是什麼?
root(X) :- \+ left(X,Y), \+ right(X,Y).
因此,對於這個一個它不是一個喇叭條款的原因有多個條款嗎?或者有什麼方法可以將其表述爲喇叭條款?
由於\+
表示否定爲失敗(*),因此您給出的作爲示例的子句不具有純粹的邏輯含義,但取決於Prolog的評估策略。在古典邏輯中,號角子句是最多有一個正面文字的子句。使用邏輯符號,它可以寫爲¬ A1 ∨ ... ∨ ¬ An ∨ B
,相當於A1 ∧ ... ∧ An → B
。用人的話來說,這意味着:假設A1到An可以證明,那麼我們可以證明B.在Prolog中,我們把它寫成b :- a1, ..., an.
當我們知道沒有條件時某些事情是真的時候,有一種特殊的形式叫做事實。從邏輯上講,你可以把它寫成true → A
,在Prolog中這就是a.
。
(*)一個公式是錯誤的,因爲它不能被證明是正確的。另一個可以谷歌密切相關的關鍵字是封閉的世界假設。
以下是捐款:¬,∨,∧,→ – false
merci beaucoup! –
我強烈建議您訪問此鏈接(http://www.learnprolognow.org/slides/official/Horn.pdf) –