prolog中的普遍存在量词
如何在prolog中实现以下规则 我把“蜘蛛都不是哺乳动物”这句话写成了存在论和普遍论:prolog中的普遍存在量词,prolog,universal,existential-type,quantifiers,Prolog,Universal,Existential Type,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. 假设您有一个包含以下事实的数据库: mammals(cat). mammals(dog). ... spider(blackwidow).
¬∃x(mammals(X) ∧ spider(X) ) //It is not the case that mammals are spider
∀X(mammals(X) ⇒ ¬spider(X)) //All mammals are non-spider.
假设您有一个包含以下事实的数据库:
mammals(cat).
mammals(dog).
...
spider(blackwidow).
...
现在,您可以发出一个非常简单的命令,将您的句子改写为prolog查询:
,∃x(哺乳动物(x)∧ 蜘蛛(X))//哺乳动物不是蜘蛛
?- \+((mammals(X), spider(X))).
true.
及
∀X(哺乳动物(X)⇒ 蜘蛛(X))//所有哺乳动物都不是蜘蛛
?- forall(mammals(X), \+spider(X)).
true.
有没有办法在“x.pl”环境中实现这些规则?我的意思是将规则添加到数据库中?您可以添加一个在条件成立时成功的过程,只需将查询添加到过程体中即可。例如:
没有哺乳动物是蜘蛛:-\+((哺乳动物(X),蜘蛛(X))。
谢谢你的回答。你能指导我如何在序言中添加以下句子吗?∀X(q(X)或b(X)⇒ 哺乳动物(X))%所有哺乳动物都是“q”或“B”。我写了它,但我不知道问题出在哪里:C(cat)。
哺乳动物(X):-forall(q(X)vb(X))最后我应该回答这个问题:“cat”是哺乳动物吗<代码>?-哺乳动物(猫)%所有的哺乳动物都是“q”或“b”,将被写入所有的哺乳动物(X)、(q(X);b(X))。哺乳动物(b)。
哺乳动物(q)。
所有的哺乳动物(X)、(q(X);b(X))。
q(猫)。
猫(pishi
但是我得到了false
。而不是true
。