序言中的普遍和存在量词

use*_*809 7 prolog existential-type universal quantifiers

如何在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.
Run Code Online (Sandbox Code Playgroud)

gus*_*bro 7

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

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

spider(blackwidow).
 ...
Run Code Online (Sandbox Code Playgroud)

现在,您可以将您的句子重写为prolog查询非常简单:

¬∃x(哺乳动物(X)∧蜘蛛(X))//哺乳动物不是蜘蛛的情况

?- \+((mammals(X), spider(X))).
true.
Run Code Online (Sandbox Code Playgroud)

∀X(哺乳动物(X)⇒蜘蛛(X))//所有哺乳动物都是非蜘蛛.

?- forall(mammals(X), \+spider(X)).
true.
Run Code Online (Sandbox Code Playgroud)

  • 您可以添加在条件成立时成功的过程,只需将查询添加到过程的主体上即可.例如:`no_mammal_is_spider: - \+((哺乳动物(X),蜘蛛(X))). (2认同)
  • %所有哺乳动物要么是'q',要么'b'会写成`forall(mammals(X), ( q(X) ; b(X) ) ).` (2认同)