在一阶逻辑中,我知道规则。但是,每当我将一些句子转换为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)
当然,我同意这本书,但是我的版本有任何问题 !!
答案 0 :(得分:3)
这
∃ x ∀ y [C( x )∧F( y )∧吃( x , y )]
它遵循∀ y F( y ),即一切都是食物。 (“存在一个孩子 x ,对于所有 y , y 是食物”并且还有其他一些命题。)它也遵循孩子吃自己:如果我们用任意常数 c 表示孩子并填写,我们得到
∀ y [C( c )∧F( y )∧吃( c ,ÿ)]
由于 y 是普遍量化的,我们可以通过将其替换为 c 来实例化
C( c )∧F( c )∧吃( c , c )
这是一种不受欢迎的事态。
从你的第二个例子
∀ x ∀ y [海龟( x )∧兔子( y )∧Nowststs( x , y )]
紧随其后
∀ x 海龟( x )∧∀ y 兔子( y )∧∀ x ∀ y 持续时间( x , y )
即,一切都是乌龟,一切都是兔子,一切都比一切都好,包括它自己。
本书中的版本使用→表示对于每个对象 y ,如果它是食物,那么它会被<吃掉EM> X 。你需要一个条件来表达“所有X都是Y”或“每个X都是Y”形式的句子。
答案 1 :(得分:2)
每当你在英语句子中有每个(或任何或 no )时,相应的FOL句子应该同时具有通用量词和它的含义。例如。名词短语每个人的翻译模板将是:
∀ x (man(x) ⇒ ...)
如果你的英语句子不包含任何决定因素,那么重新制定它,以便其中的每个名词都带有一个限定词。这样,到FOL的映射变得清晰。例如。模糊/模糊的句子
Turtles outlast Rabbits.
可以用几种语义不同的方式重新制定:
顺便说一下,有一个online tool APE可以将英语句子转换成FOL,前提是你先重新编写句子,使它们落入这个工具所支持的英语片段中。但请注意,此工具返回单个FOL读数,即它不会枚举输入可能包含的所有歧义。
答案 2 :(得分:1)
您没有先检查y
是否是食物。考虑到你的陈述,让a
成为孩子,即。 C(a)
是真的。然后(∃x)(∀y) C(x) ∧ Eat(x,y)
隐含(∃x) C(x) ∧ Eat(x,a)
。换句话说,你说有些孩子会吃任何东西,而不仅仅是食物。