【问题标题】:First-order predicate calculus, am I doing this right?一阶谓词演算,我这样做对吗?
【发布时间】:2014-03-17 01:30:47
【问题描述】:

这是声明:

除了企鹅和鸵鸟之外,所有鸟类都可以飞,或者除非它们 翅膀断了。

这是我的尝试:

∀x鸟(x)→飞(x)^((鸟(x,企鹅)^鸟(x, 鸵鸟))˅折断(翅膀)→¬飞(x))

我的尝试正确吗? 我们如何在谓词逻辑中呈现“除外”? 谢谢

【问题讨论】:

  • 这应该在 math.stackexchange.com 上询问(由于某种原因它没有出现在 Migration 下)。

标签: logic predicate calculus


【解决方案1】:

关于理解“除外”...

当我们说“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.

(顺便提一下,英语中“and”和“or”这两个词在符号表达中经常需要调整的方式。)

         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 except B”通常表示有 至少有一些例外情况。不仅有至少一个 鸟,但至少有一只企鹅不会飞。可能 通过适当使用存在量词添加到谓词句中 量词。

  • 几乎总是用英文写“A except B” 暗示A是最常见的情况,B是例外。在里面 在没有其他证据的情况下,我们假设 A. 在宇宙中 鸟类,大多数都可以飞,只有列出的例外不能飞。那里 在谓词逻辑中很难捕捉到 多数情况。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 表示断翼应该断(x)->wing(x)?
    • 没有。注意公式应该由propositions组成。 IE。 bird(x) 应该读作“x 是一只鸟”,fly(x) 表示“x 会飞”等等。那么wing(x) 会是什么?
    • 所以wing(x)是x有翅膀代表x有断翅膀我应该放brokenWing(x)?
    • 是的,这是一种可能性。
    • 这个答案中给出的模板没有捕捉到句子的全部意图。英文句子暗示企鹅不能飞,但这不是由建议的模板表示的。该模板捕获了鸟类不是企鹅但对企鹅鸟类是否会飞的情况保持沉默。
    【解决方案3】:

    您的问题有一个“序言”标签。在 Prolog 中它可以是:

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

    【讨论】:

    • 对不起,我不应该添加序言标签
    【解决方案4】:

    所以所有的鸟,而不是企鹅、鸵鸟和折断翅膀的鸟,都能飞

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

    或者这个可能

    ∀x (鸟(x) ^ ¬ (鸟(x, 企鹅) ^ 鸟(x, 鸵鸟) ^ 鸟(x,broken_wing))) → 飞(x))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-13
      • 2023-03-19
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      • 2015-06-09
      • 2014-06-28
      • 1970-01-01
      相关资源
      最近更新 更多