繁体   English   中英

序言中的Horn子句是什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM