这是声明:
除了企鹅和鸵鸟以外,所有的鸟都能飞,除非它们 有一个破碎的翼。
这是我的尝试:
∀x鸟类(x)→苍蝇(x)^((鸟类(x,企鹅)^鸟类(x, 鸵鸟))断开(翼)→¬fly(X))
我的尝试是否正确? 我们如何在谓词逻辑中呈现“except”? 感谢
答案 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)) >