2016-03-03 63 views
1

我不明白什么Horn子句是在序言。 •Horn子句是一个恰好具有一个正文字的子句。prolog中的Horn子句是什么?

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

因此,对于这个一个它不是一个喇叭条款的原因有多个条款吗?或者有什么方法可以将其表述为喇叭条款?

+0

我强烈建议您访问此链接(http://www.learnprolognow.org/slides/official/Horn.pdf) –

回答

4

由于\+表示否定为失败(*),因此您给出的作为示例的子句不具有纯粹的逻辑含义,但取决于Prolog的评估策略。在古典逻辑中,号角子句是最多有一个正面文字的子句。使用逻辑符号,它可以写为¬ A1 ∨ ... ∨ ¬ An ∨ B,相当于A1 ∧ ... ∧ An → B。用人的话来说,这意味着:假设A1到An可以证明,那么我们可以证明B.在Prolog中,我们把它写成b :- a1, ..., an.当我们知道没有条件时某些事情是真的时候,有一种特殊的形式叫做事实。从逻辑上讲,你可以把它写成true → A,在Prolog中这就是a.

(*)一个公式是错误的,因为它不能被证明是正确的。另一个可以谷歌密切相关的关键字是封闭的世界假设。

+1

以下是捐款:¬,∨,∧,→ – false

+0

merci beaucoup! –