我们之前说过,对于像
(现在是
)这样的形式语言的形式语义分为两部分。
- 指定解释的规则。一个解释为形式语法中非逻辑符号分配语义值。就像一个赋值是对命题语言的解释一样,一个模型是对谓词语言的解释。
- 为语言中较大的表达式分配语义值的规则。命题语言
的所有公式都是句子。这使得能够直接为较大的公式分配真值。对于谓词语言
,情况更加复杂。并非
的所有公式都是句子。我们需要定义辅助概念满足,并在分配真值时使用它。
一个模型是对谓词语言的解释。它包括两个部分:域和解释函数。在此过程中,我们将逐步指定一个示例模型
.
直观地说,域包含当前考虑的所有对象。它包含量词范围内的所有对象。
然后解释为“对于域中的任何对象
…”;
解释为“存在域中的至少一个对象
,使得…”。我们的谓词逻辑要求域是非空的,即它至少包含一个对象。
我们示例模型
的域,记为
,是 {0, 1, 2}。
- 解释函数是将语义值分配给每个运算符字母和谓词字母的函数。
模型
的解释函数是
。
- 对每个常数符号(即零元运算符字母)分配一个域中的成员。
直观地,常数符号命名该对象,该对象是域中的一个成员。如果域是上面的
并且
被分配到 0,那么我们认为
命名 0,就像名字'苏格拉底'命名苏格拉底这个人,或者数字'0'命名数字 0 一样。将 0 分配给
可以表示为

- 对每个n元运算符字母,其中n大于零,分配一个n+1元函数,该函数以对象(域中的成员)的有序n元组作为其参数,并以对象(域中的成员)作为其值。该函数必须在域中的所有n元组上定义。
假设域是上面的
,我们有一个二元运算符字母
。分配给
的函数必须在域中的每个有序对上定义。例如,它可以是函数
,使得



对操作符的赋值写成

假设
如上所述赋值为 0,并且
赋值为 1。 然后我们可以直观地认为非正式书写形式
代表(指代、具有值)1。 这类似于 “苏格拉底最著名的学生” 代表(指代)柏拉图,或 “2 + 3” 代表(具有值)5。
- 每个句子符号(即零元谓词符号)都被分配一个真值。 对于
一个句子符号,要么

或

这与句子符号在命题逻辑中所接受的处理方式相同。 直观地说,句子是真还是假,取决于句子符号是否被赋值为 “真” 或 “假”。
- 每个n元谓词符号,其中n大于零,都被分配一个n元关系(一个域成员的有序n元组集)。
直观地说,谓词对分配集中每个n元组都是真的。 令域为
如上,并假设赋值

假设
被赋值为0,
被赋值为1,
被赋值为2。然后直观地,
,
和
都应该是真的。然而,
等应该为假。这类似于“是否鹰钩鼻”对苏格拉底为真,而“是否大于”对
为真。
这个定义穿插着例子,因此比较分散。这里是一个更紧凑的总结。模型由两个部分组成:域和解释函数。
- 一个解释函数是将语义值赋予每个运算符字母和谓词字母。此分配按以下步骤进行
- 将每个常量符号(即零元运算符字母)分配给域中的一个成员。
- 将每个n元运算符字母(n大于零)分配给一个n+1元函数,该函数以对象的有序n元组(域的成员)作为其参数,并以对象(域的成员)作为其值。
- 将每个句子字母(即零元谓词字母)分配给一个真值。
- 将每个n元谓词字母(n大于零)分配给一个n元关系(一个有序n元组的集合),这些关系都是域中的成员。
一个例子模型在上面以片段的形式指定。这些片段,在
这个名字下收集在一起,是







我们还没有定义生成较大表达式语义值的规则。但是,我们可以看到一些我们希望该定义能够实现的简单结果。已经描述了一些这样的结果。



可以添加一些更多期望的结果




我们可以暂时假设数字 '0'、'1' 和 '2' 被添加到
并分别为它们分配数字 0、1 和 2。那么我们想要


由于 (1),我们希望得到这样的结果

由于 (2),我们希望得到这样的结果

域
只有有限多个成员;准确来说是 3 个。域可以有无限多个成员。下面是一个具有无限大域的示例模型
。
域
是自然数的集合

对单个常量符号的赋值可以与之前相同



例如,可以将二元运算符字母
赋值为加法函数

例如,可以将二元谓词字母
赋值为 *小于* 关系

扩展模型的规范应该产生一些结果。



对于每个 *x*,都存在一个 *y* 使得 *x* < *y*。因此我们希望得到的结果是

不存在 *y* 使得 *y* < 0 (记住,我们把自己限制在没有小于 0 的数字的域中)。因此,并非对于每个 *x* 来说,都存在一个 *y* 使得 *y* < *x*。因此我们希望得到的结果是
