一阶谓词演算,我这样做对吗?

时间:2014-03-17 01:30:48

标签: logic predicate calculus

这是声明:

  

除了企鹅和鸵鸟以外,所有的鸟都能飞,除非它们   有一个破碎的翼。

这是我的尝试:

  

∀x鸟类(x)→苍蝇(x)^((鸟类(x,企鹅)^鸟类(x,   鸵鸟))断开(翼)→¬fly(X))

我的尝试是否正确? 我们如何在谓词逻辑中呈现“except”? 感谢

4 个答案:

答案 0 :(得分:4)

理解“除了”......

当我们说“A除了B”时,通常意味着A和B是相互排斥的。要么是A,要么是B,但不是两者。

如果按照集合来考虑那么

All birds can fly except for penguins and ostriches or unless they have a broken wing

可以重写为

In the universe of birds, there are exactly two distinct sets -- one in which every member of the set can fly and the other in which you find penguins and ostriches and birds with broken wings

(顺便说一句,请注意英语中的“和”和“或”一词需要在符号表达式中进行调整。)

         Birds
+-----------+------------+
|           |            |
|   Fly     | Exceptions |
|           |            |
+-----------+------------+

在谓词逻辑中表示互斥最容易通过异或(XOR)来处理。我们想说fly XOR exceptions

在允许量词限制话语范围的系统中,我们可以写:

∀x∊birds (fly(x) XOR (penguin(x) v ostrich(x) v brokenWing(x)))

如果量词是无限的,那么:

∀x (bird(x) → (fly(x) XOR (penguin(x) v ostrich(x) v brokenWing(x))))

如果XOR不在允许的运算符集中,那么您可能必须使用等价:

p XOR q ≡ ((p v q) & -(p & q))

在英语句子中隐藏的其他一些含义并未在上述建议中得到充分表达。

  • 谓词逻辑中的句子允许存在的情况 没有鸟,而英语句子可能意味着有 至少有一只鸟。

  • “A除了B”在英语中通常意味着有 至少有一些例外情况。不仅至少有一个 鸟,但至少有一只企鹅无法飞翔。可能 通过适当使用存在主义来添加到谓词句子中 量词。

  • “A除了B”在英语中几乎总是如此 意味着A是最常见的情况,B是例外。在里面 没有其他证据,我们会假设A.在宇宙中 鸟,大多数都可以飞,只有列出的例外不能飞。那里 在谓词逻辑中捕捉a的意义并不容易 多数案例。

答案 1 :(得分:2)

您的问题中有一个“prolog”标记。在Prolog中它可以是:

fly(X, WingCondition) :-
    bird(X),
    X \= penguin,
    X \= ostrich,
    WingCondition \= broken.

答案 2 :(得分:2)

不,你的尝试不正确。它说所有的鸟都会飞,而且有些鸟不会飞,所以这是一个矛盾。另请注意,broken(wing)根本没有提到x

作为提示,它应该看起来像

∀x (bird(x) ^ ¬<conditions under which birds don't fly>) → fly(x)

答案 3 :(得分:0)

所以所有鸟类,而不是企鹅,鸵鸟和翅膀断裂的鸟类,都可以飞

∀x(birds(x)^¬(birds(x,penguins)^ birds(x,ostriches)^ broken_wing(x)))→fly(x))

或者也许是

∀x(birds(x)^¬(birds(x,penguins)^ birds(x,ostriches)^ birds(x,broken_wing)))→fly(x))