我不明白Horn条款在prolog中是什么。 •Horn子句是一个只有一个正文字的子句。
root(X) :- \+ left(X,Y), \+ right(X,Y).
所以对于这个,它不是一个角项,因为它有多个子句?或者有没有办法将其表达为角条款?
答案 0 :(得分:4)
由于\+
代表否定为失败(*),因此您提供的子句不具有纯逻辑意义,而是取决于Prolog的评估策略。在经典逻辑中,号角子句是一个最多只有一个正文字的子句。使用逻辑表示法,它可以写成¬ A1 ∨ ... ∨ ¬ An ∨ B
,相当于A1 ∧ ... ∧ An → B
。用人的话来说,这意味着:假设A1到An可以被证明,那么我们就可以证明B.在Prolog中,我们把它写成b :- a1, ..., an.
当我们知道某事时,这是一种称为事实的特殊形式是没有条件的。从逻辑上讲,您可以将其写为true → A
,在Prolog中只会变为a.
。
(*)公式是假的,因为它无法证明是真的。您可以谷歌搜索的另一个密切相关的关键词是封闭的世界假设。