【问题标题】: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.

【问题讨论】:

    标签: prolog universal existential-type quantifiers


    【解决方案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.
    猜你喜欢
    • 2013-03-27
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    相关资源
    最近更新 更多