4

在一阶逻辑中,我知道规则。但是,每当我将一些句子转换为 FOL 时,我都会出错,我阅读了很多书籍和教程,你有什么技巧可以帮助我吗?

我犯错误的一些例子

有些孩子会吃任何食物

C(x) means “x is a child.”
F(x) means “x is food.”
Eat(x,y) x eats y
I would have written like this:

(∃x)(∀y) C(x) ∧ Eat(x,y)

edit:  (∃x)(∀y) C(x) ∧  F(y) ∧ Eat(x,y)

But the book write it like this

(∃x)(C(x) ∧ (∀y)(F(y)→Eat(x,y)))

编辑 No2:我犯的第二类错误:海龟比兔子更长寿。

i'm writing it like this: ∀x,y Turtle(x)  ∧  Rabbit(y)  ∧ Outlast(x,y)

 but according to the book  ∀x,y Turtle(x)  ∧  Rabbit(y)  --> Outlast(x,y)

当然,我同意这本书,但是我的版本有什么问题吗?

4

3 回答 3

4

∃<em>x ∀ y [C( x ) ∧ F( y ) ∧ 吃( x , y )]

由此得出∀ y F( y ),即一切都是食物。(“存在一个孩子x使得对于所有yy是食物”和一堆其他命题成立。)同样可以得出孩子吃自己:如果我们用任意常数c表示孩子并将其填入,我们得到

y [C( c ) ∧ F( y ) ∧ 吃( c , y )]

并且由于y是普遍量化的,我们可以通过用c替换它来实例化它以获得

C( c ) ∧ F( c ) ∧ 吃( c , c )

这是不受欢迎的事态。

从你的第二个例子

xy [乌龟( x ) ∧ 兔子( y ) ∧ 长寿( x , y )]

它遵循

x乌龟( x ) ∧ ∀ y兔子( y ) ∧ ∀ xy长寿( x , y )

也就是说,一切都是乌龟,一切都是兔子,一切都比一切都长寿,包括它自己。

你书中的版本使用 → 表示对于每个对象y如果它是食物,那么它会被x吃掉。您需要一个条件句来表达“所有 X 都是 Y”或“每个 X 都做 Y”形式的句子。

于 2011-03-12T15:58:47.823 回答
3

每当您在英语句子中有限定词every(或anyno)时,相应的 FOL 句子应该同时具有全称量词和蕴涵。例如,名词短语every man的翻译模板是:

∀ x (man(x) ⇒ ...)

如果您的英文句子不包含任何限定词,请重新编写它,以便其中的每个名词都带有一个限定词。这样,到 FOL 的映射就变得清晰了。例如模棱两可/含糊的句子

Turtles outlast Rabbits.

可以用几种语义不同的方式重新表述:

  • 每只乌龟都比每只兔子都长寿。
  • 有些乌龟比每只兔子都长寿。
  • 有些乌龟比兔子活得更久。
  • 大多数乌龟比大多数兔子活得更久。
  • ...

顺便说一句,有一个在线工具 APE可以将英语句子转换为 FOL,前提是您首先重新编写句子,使它们落入该工具支持的英语片段中。但是请注意,此工具返回单个 FOL 读数,即它不会枚举输入可能包含的所有歧义。

于 2011-03-14T23:24:05.047 回答
2

你没有先检查是否y是食物。考虑到您的陈述,让我们a成为一个孩子,即。C(a)是真的。则(∃x)(∀y) C(x) ∧ Eat(x,y)暗示(∃x) C(x) ∧ Eat(x,a)。换句话说,你说有些孩子会吃任何东西,而不仅仅是食物。

于 2011-03-12T13:40:04.810 回答