Logo
Section 1 / 5

谓词

了解谓词及其与命题的区别。

检查点

谓词

了解谓词及其与命题的区别。

在英语中,一个陈述句的谓词是指除了主语以外的所有部分。例如,考虑句子:

史密斯身高超过六英尺。

“身高超过六英尺”就是一个谓词。它只有在指定了主语之后才成为一个完整的句子。一旦我们确定了主语,这个陈述句可能为真,也可能为假。因此,谓词描述的是主语可能具有也可能不具有的某种属性。

幸运的是,在数学中,我们可以使用变量来表示未指定的主语。使用变量是一种精确表达许多思想的强大方式:这正是一阶逻辑的基础。正如我们将看到的,这种逻辑非常强大,甚至可以用它来表述数学(以及其他领域)中的若干未解难题。

什么是谓词?

在数学逻辑中,谓词是包含一个或多个变量的语句。我们可以将这些变量看作占位符。这些变量可以取自一个称为其定义域的集合中的任意值。谓词断言的是定义域中的元素可能具有也可能不具有的某种性质。要成为一个真正的谓词,每当我们将定义域中的任意值代入变量时,该谓词都必须变成一个命题。

为了更具体地理解,考虑三位学生:简、吉姆和扎因,他们参加了一门离散数学课程。假设我们想知道哪些学生在这门课中获得了A。我们可以构造如下带有变量 xx 的句子:

  • A(x)A(x):xx 在离散数学课程中获得了A。

“在离散数学课程中获得了A”是一个谓词。变量 xx 使我们能够将这个谓词用于完整句子中。A(x)A(x) 不是一个命题,因为它含有变量。但当我们用某个具体值(即班级中某位学生的姓名)替换 xx 时,它就变成了一个命题,并具有明确的真值。在这种情况下,我们称对谓词进行了实例化。重要的是,从定义域中对变量进行的每一次实例化都应产生一个命题。

定义域必须始终清晰明确。如果存在任何歧义,我们必须明确指出定义域。对于 A(x)A(x),xx 的定义域是注册了离散数学课程的学生。为了具体说明,我们设定义域为 D={D = \{ 吉姆, 简, 扎因 }\}。

我们可以对 xx 从 DD 中任取一个值来实例化这个谓词。实例化 A(x)A(x) 会使其变为一个具有明确真值的命题。例如,当用吉姆替换 xx 时,我们得到命题:

  • A(A(吉姆)):吉姆在离散数学课程中获得了A。

我们也可以将谓词可视化为一组真值。列标题是定义域中的各个值。例如,如果只有吉姆没有获得A,那么 A(A(简)) = 真,A(A(吉姆)) = 假,A(A(扎因)) = 真,我们可以将 A(x)A(x) 视为如下表格:

简吉姆扎因
真假真

表中“真”表示该命题为真,“假”表示该命题为假。

我们再定义另一个与上述相同定义域 DD 的谓词。设:

  • F(x)F(x):xx 在期末考试中得分至少达到90%。

对于 F(x)F(x),我们注意到:

  • xx 是一个变量。
  • xx 的定义域仍然是 DD。
  • 谓词描述的是定义域中元素所具备的某种属性。

如果只有扎因在期末考试中得分达到90%以上,那么 F(F(扎因)) = 真,而 F(F(简)) = F(F(吉姆)) = 假。同样,我们可以用以下表格来可视化该谓词的真值:

简吉姆扎因
假假真

设:

  • P(x)P(x):x>7x > 7,其中 xx 是整数。

求 P(4),P(−3),P(0),P(7),P(14),P(517)P(4), P(-3), P(0), P(7), P(14), P(517) 的真值。

计算结果如下表所示:

命题真值理由
P(4)P(4)假4≯74 \ngtr 7
P(−3)P(-3)假−3≯7-3 \ngtr 7
P(0)P(0)假0≯70 \ngtr 7
P(7)P(7)假7≯77 \ngtr 7
P(14)P(14)真14>714 > 7
P(517)P(517)真517>7517 > 7

在此例中,上述表格并不完整。我们仅确定了定义域中一部分值的真值。完整的真值表将包含无穷多个条目,每个整数对应一条。


下面我们来看一个涉及多个变量的例子。


考虑以下谓词:

  • P(x,y,z)P(x, y, z):5x+2y=3z5x + 2y = 3z,其中 x,y,zx, y, z 为整数。

我们考察一些变量取值的可能性:

P(x,y,z)P(x, y, z)属性判断真值理由
P(1,2,1)P(1, 2, 1)5×1+2×2=3×15×1 + 2×2 = 3×1假9≠39 ≠ 3
P(1,2,3)P(1, 2, 3)5×1+2×2=3×35×1 + 2×2 = 3×3真9=99 = 9
P(0,3,2)P(0, 3, 2)5×0+2×3=3×25×0 + 2×3 = 3×2真6=66 = 6
P(6,−3,8)P(6, -3, 8)5×6+2×(−3)=3×85×6 + 2×(-3) = 3×8真24=2424 = 24
P(1,−1,1)P(1, -1, 1)5×1+2×(−1)=3×15×1 + 2×(-1) = 3×1真3=33 = 3
P(−1,−2,−4)P(-1, -2, -4)5×(−1)+2×(−2)=3×(−4)5×(-1) + 2×(-2) = 3×(-4)假−9≠−12-9 ≠ -12

谓词代码示例

在计算机程序中,我们常在条件语句中使用谓词。以下是一个 Python 示例代码。运行此代码可查看不同 x 值下谓词 P(x):x<7P(x): x < 7 的真值。

注意: 我们可以更改 domain 中的值,以尝试不同的 x 取值。

1domain = {14, 3, 12, -1, 0, 7} 2for x in domain: 3 if x < 7: 4 print("P(" + str(x) + ") is true.") 5 else: 6 print("P(" + str(x) + ") is false.")

说明

  • 第1行: 指定变量 x 的定义域。
  • 第2行: 遍历 x 的每个取值,检查谓词。
  • 第3行: if 语句中的谓词为 P(x):x<7P(x): x < 7。
  • 第4行: 当谓词为真时执行此行。
  • 第6行: 当谓词为假时执行此行。

闰年代码示例

在以下程序中,对不同 y 值计算谓词 L(y)L(y) 的真值。谓词 LL 定义如下:

L(y):y 是闰年。L(y): y \text{ 是闰年。}

若某年能被4整除但不能被100整除,或者能被400整除,则该年为闰年。

注意: 我们可以更改 domain 中的值,以尝试不同的 y 值,判断某年是否为闰年。

1domain = {2014, 2103, 1208, 2087, 1604, 714, 1700, 1800, 1900, 2100, 2200, 2000} 2for y in domain: 3 if (y % 4 == 0 and y % 100 != 0) or (y % 400 == 0): 4 print("L(" + str(y) + ") is true because " + str(y) + " is a leap year.") 5 else: 6 print("L(" + str(y) + ") is false because " + str(y) + " is not a leap year.")

说明

  • 第1行: 指定包含不同 y 值的定义域。
  • 第2行: 遍历定义域中的每个 y 值,判断是否为闰年。
  • 第3行: if 语句中的谓词为 L(y):yL(y): y 是闰年。
  • 第4行: 当谓词为真时执行此行。
  • 第6行: 当谓词为假时执行此行。

Quiz

单选题

哪个选项是谓词?

1 / 2

逻辑推理

全称量词