将句子翻译成FOL表达式,对常量和量词感到困惑

Translate sentence into FOL expression, confused about constants and quantifiers

将以下语句翻译成 FOL 句子

1) Alex 喜欢 John

赞(alex, john) - 我知道这是正确的

2) 每个人要么是男人要么是女人

AxAy( 男人(x) v 女人(y) )

编辑:这样更好吗??: Az(Person(z) -> man(x) v woman(y)) 或编辑:这样更好吗??: Ax(Person(x) -> man(x) v woman(x))

3) 没有人既是男人又是女人

Ex( (男人(x) ^ 女人(x)) v (男人(x) ^女人(x)) )

4) Alex 喜欢一个喜欢女人的男人

AxEy(点赞(男(x), 女(y)) -> 点赞(亚历克斯, 男(x)))

谢谢

Here is a screenshot of the background info

编辑:对于数字 3, 我在网上找到了这个 "The exclusive disjunction of p and q asserts that either p is true or q is true but not both. The natural, but long-winded, way to express exclusive disjunction, then, is (p | q) & ~(p & q)."

如果这可以应用,那么我假设正确答案是 Ax( (man(x) v woman(x)) ^ ¬(man(x) & woman(x)) )

但现在我对 2 和 3 有何不同感到困惑...

Hey I just wanted to know if these were correct

1。测试翻译的正确性

测试一阶句子是否与非正式规范一致的方法之一是使用模型。

要执行测试,您需要:

  1. 确定你的第一个句子中有多少关系并列出。此列表将扮演您模型的逻辑签名的角色。

  2. 现在取一组足够大的个体,将所有有趣的属性组合分配给至少一个个体。

  3. 根据你对第一句中关系含义的理解,将属性分配给个人。

  4. 最后,对于每个普遍量化的变量,尝试对变量进行不同的个体分配,并检查 属性 是否成立。

考虑 post.

中的示例之一

非正式说明亚历克斯喜欢一个喜欢女人的男人

我们有

  • 一个常数符号:Alex
  • 两个一元关系:Man(x)Woman(x)
  • 二元关系:喜欢(x,y)

1.1 1号结构

现在考虑一个结构,其中我们有一个 Alex 的个人,一个不是 Alex 的男人的个人,一个不是 Alex 的女人的个人。

让我们从三个开始:p1、p2、p3。

  • Alex 是 p1
  • 男(p2)
  • 女性(p3)
  • 女性(p1)
  • 喜欢 (p2,p3)
  • 喜欢 (p1,p2)

非正式说明说亚历克斯喜欢一个男人,也喜欢另一个女人。我们的模型满足这个规范。

现在考虑取自 OP 的以下语句:

AxEy(Likes( man(x), woman(y) ) -> Likes(alex, man(x) ))

此语句来自不同的语言。这里man(x)woman(y)是一元函数而不是一元关系,所以我们无法检查这句话。

我不会进一步推测 woman(y)man(x) 是一个函数(双关语) ).相反,我会考虑换一个句子。

AxEy(Man(x) & Woman(y) & Likes( x, y ) -> Likes(alex, x ))

让我们看看如果 x=p2 和 y=p1 会发生什么。在我们的模型中,前提

Man(p2) & Woman(p3) & Likes( p2, p3 )

成立,结论

Likes(p1,p2)

也成立,因此在这个变量赋值下公式成立。

1.2结构2号

现在考虑一个不同的模型。这次有四个人:p1,p2,p3,p4.

  • Alex 是 p1
  • 男(p2)
  • 男(p4)
  • 女性(p3)
  • 女性(p1)
  • 喜欢 (p2,p3)
  • 喜欢 (p1,p2)
  • 喜欢 (p4,p3)

这个模型也满足我们的非正式规范,因为亚历克斯喜欢 p2 是男人,喜欢 p3 是女人。

考虑赋值 x=p4 和 y=p3。

我们的模型再次证明了前提

 Man(p4) & Woman(p3) & Likes( p4, p3 )

然而结论

 Likes(p1,p4)

在我们的模型中不成立。由于 x 是普遍量化的,这可能是一个问题,因为公式在此分配下不成立,但是 y 在存在量词下。让我们看看是否可以找到 y 的赋值,将我们的公式变成 x=p4.

的真语句

这确实是可能的。让y=p2.

 Man(p4) & Woman(p2) & Likes( p4, p2 )

不成立,因此公式

 Man(p4) & Woman(p2) & Likes( p4, p2 ) -> Likes(p1,p4)

是真的。这听起来更好,因为我们采用的公式与非正式规范的预期含义相去甚远。原来的规范显然不是在说一个男人喜欢另一个男人。所以我们还没有完成。

1.3结构3

考虑一个只有两个个体的模型:p1 和 p2。

  • Alex 是 p1
  • 男(p2)
  • 女性(p1)

非正式说明在这个模型中不成立,所以我们的句子也应该是假的。有四种可能的变量赋值

  • x=p1,y=p2
  • x=p1,y=p1
  • x=p2,y=p1
  • x=p2,y=p2

由于Like(x,y)在我们的模型中总是假的,前提不成立因此根据蕴涵规则,公式为真。所以我们的句子在它不应该成立的模型中也是正确的。再一次,我们的 first-order 形式化并不反对非正式规范。

这似乎是我们用来测试翻译的一个非常复杂的过程。它假设有一定的寻找反例的技巧,并始终牢记非正式规范的预期含义。

2。如何提出正确的翻译

让我们回顾一下我们的非正式规范

非正式说明亚历克斯喜欢一个喜欢女人的男人

并以更易于翻译的方式重新表述

Alex喜欢一个男人,这个男人喜欢某个女人

这句话中有两个部分与

相关联
  1. Ex (Man(x) & Likes(Alex,x))
  2. Ey (女人(y) & 喜欢(x,y))

所以我们有

Ex (男人(x) & 喜欢(Alex,x) & Ey (女人(y) & 喜欢(x,y)))。

您喜欢 prenex 范式,其中所有量词都集中在一个量词前缀中。我们可以应用逻辑等价得到

ExEy(男人(x)和喜欢(Alex,x)和女人(y)和喜欢(x,y))。

现在让我们检查一下这个陈述是否与上一节中每个结构中的规范一致。

2.1结构1

由于变量是存在量化的并且规范成立,我们只需要为公式找到一个令人满意的赋值。

考虑

  • Alex 是 p1
  • x = p2
  • y = p3

在此赋值下合取成立。

2.2结构2

可以使用与上一小节相同的赋值。实际上 结构1是结构2的子结构。对于一个存在量化的陈述,我们知道如果它在一个子结构中为真,那么它在整个结构中也为真。

2.3结构3

因为在我们的结构中没有元素对 (x,y) 使得 Likes(x,y),合取

 Man(x) & Likes(Alex,x) & Woman(y) & Likes(x,y)

不可能是真的,所以这个说法是假的。我们也知道结构 3 不满足我们的非正式规范,所以我们的公式通过了我们的测试。

我们的测试程序绝不是完整的。然而,它给了我们一些保证,翻译确实是正确的。