[英]What is Horn clause in prolog?
我不明白序言中的Horn子句是什么。 •Horn子句是仅包含一个正文字的子句。
root(X) :- \+ left(X,Y), \+ right(X,Y).
因此,对于这个而言,它不是horn子句,因为它具有多个子句? 还是有什么方法可以将其表达为号角子句?
由于\\+
表示否定为failure(*),因此您作为示例给出的子句不具有纯粹的逻辑含义,而是取决于Prolog的评估策略。 在经典逻辑中,号角子句是一个最多具有一个正文字的子句。 使用逻辑符号,可以将其写为¬ A1 ∨ ... ∨ ¬ An ∨ B
,它等效于A1 ∧ ... ∧ An → B
。 用人类的话来说,这意味着:假设A1到An可以被证明,那么我们可以证明B。在Prolog中,我们将其反向写为b :- a1, ..., an.
当我们知道没有条件的事情是正确的时候,有一种特殊的形式叫做事实。 从逻辑上讲,您可以将其写为true → A
,在Prolog中,它变成a.
。
(*)公式是错误的,因为它不能被证明是正确的。 您可以在Google上搜索的另一个紧密相关的关键字是封闭世界假设。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.