prolog中的Horn条款是什么?

时间:2016-03-03 03:10:42

标签: prolog logic

我不明白Horn条款在prolog中是什么。 •Horn子句是一个只有一个正文字的子句。

     root(X) :- \+ left(X,Y), \+ right(X,Y).

所以对于这个,它不是一个角项,因为它有多个子句?或者有没有办法将其表达为角条款?

1 个答案:

答案 0 :(得分:4)

由于\+代表否定为失败(*),因此您提供的子句不具有纯逻辑意义,而是取决于Prolog的评估策略。在经典逻辑中,号角子句是一个最多只有一个正文字的子句。使用逻辑表示法,它可以写成¬ A1 ∨ ... ∨ ¬ An ∨ B,相当于A1 ∧ ... ∧ An → B。用人的话来说,这意味着:假设A1到An可以被证明,那么我们就可以证明B.在Prolog中,我们把它写成b :- a1, ..., an.当我们知道某事时,这是一种称为事实的特殊形式是没有条件的。从逻辑上讲,您可以将其写为true → A,在Prolog中只会变为a.

(*)公式是假的,因为它无法证明是真的。您可以谷歌搜索的另一个密切相关的关键词是封闭的世界假设。