序言中的普遍和存在量词

Posted

技术标签:

【中文标题】序言中的普遍和存在量词【英文标题】:universal and existential quantifier in prolog 【发布时间】:2015-03-28 23:38:08 【问题描述】:

如何在 prolog 中实现以下规则。

我将“没有蜘蛛是哺乳动物”这句话写成存在性和普遍性:

¬∃x(mammals(X) ∧ spider(X) ) //It is not the case that mammals are spider

∀X(mammals(X) ⇒ ¬spider(X)) //All mammals are non-spider.

【问题讨论】:

【参考方案1】:

假设您有一个包含以下事实的数据库:

mammals(cat).
mammals(dog).
 ...

spider(blackwidow).
 ...

现在你可以很简单地将你的句子改写成序言查询:

¬∃x(mammals(X) ∧ spider(X) ) //哺乳动物不是蜘蛛

?- \+((mammals(X), spider(X))).
true.

∀X(mammals(X) ⇒ ¬spider(X)) //所有哺乳动物都不是蜘蛛。

?- forall(mammals(X), \+spider(X)).
true.

【讨论】:

有没有办法在“x.pl”环境中实现这些规则?我的意思是将规则添加到数据库中? 您可以添加一个条件成立时成功的过程,只需将查询添加到过程的主体。例如:no_mammal_is_spider:- \+((mammals(X), spider(X))). 感谢您的回答。您能否指导我如何在序言中添加以下句子作为规则? ∀X(q(X) OR b(X) ⇒ Mammal(X)) %所有哺乳动物都是“q”或“B”。我写了但我不知道是什么问题:C(cat).Mammal (X) :- forall(q(X) V b(X)) 最后我应该回答这个问题:“猫”是哺乳动物吗? ?-mammal(cat) %所有哺乳动物要么是‘q’要么是‘b’将被写成forall(mammals(X), ( q(X) ; b(X) ) ). mammal(b). mammal(q). forall(mammal(X), ( q(X) ; b(X) ) ). q(cat). cat(pishi). 然后我写?- mammal(pishi) 但我得到false。而不是true.

以上是关于序言中的普遍和存在量词的主要内容,如果未能解决你的问题,请参考以下文章

人工智能中的存在量词和通用量词

常用逻辑用语@命题@猜想@量词

Z3Py 中的量词错误

Java Pattern 类中的“空”间隔量词

如何在 OO 编程中实现存在量词?

使用 Coq 证明存在量词