数学基础
谓词逻辑
谓词逻辑用量词 (“对所有 ,”)和 (“存在 使得 ”)扩展了命题逻辑,使我们能够形式化关于某个论域中每个元素或某个元素的陈述,并用塔斯基满足语义对其进行推理。
直观"所有"与"存在"
“这个房间里的每一位学生都通过了考试”和“这个房间里有某位学生通过了考试”是两个截然不同的断言,尽管都在谈论同一个房间。谓词逻辑把这种区别明确化:谓词 是一个性质,当把 替换为论域(话语域) 中的具体对象时就变成一个真假分明的命题。全称量词 断言 对 中每个对象都成立;存在量词 断言 对 中至少一个对象成立。
大学形式句法与量词否定
定义: 量词与自由/约束变量
给定论域 与谓词 :(“对所有 ,”)在 中为真当且仅当 对 的每个元素都成立;(“存在 使得 ”)为真当且仅当 至少对一个元素成立。位于约束它的量词作用域内的变量称为约束变量;否则称为自由变量。没有自由变量的公式称为语句,在给定结构中具有确定的真值。
这条定律是说:“并非人人都具有性质 ”恰好等价于“有人不具有 ”。与之对偶的定律 说“没有人具有性质 ”等价于“人人都不具有 ”。这两条定律是德摩根定律对 的量词版本,是把所有否定向内推、从而达到前束范式(所有量词移到最前面的公式,例如 不含量词的 )的关键步骤。
| 公式 | 等价前束形式 |
|---|---|
大学主要定理:实例化与量词顺序
对任意具有论域 的结构 、任意赋值 ,以及 中对 可代入的任意项 :若 ,则 。规则形式:。
为什么成立?
意味着“无论把 换成什么, 都成立”——所以代入任意具体的项 , 也必须成立。这条规则把一般规律变成具体实例:从“”在 处实例化,得到“”,即经典三段论的第一个前提。
证明
我们直接从塔斯基满足语义出发论证,该语义按公式结构递归定义了在一个结构中的真。
由 的语义子句:。假设前提 ;由此子句, 对每个 都成立,毫无例外。
既然该断言对每个 都成立,它特别地对 (项 在赋值 下于 中所表示的元素)也成立。代入这个特定的 ,得到 。
由代入引理(一个把变量赋值与项代入联系起来的标准结果,可对 的结构作归纳证明):,该引理恰好在 对 中的 可代入时成立(即 的自由变量不会被意外约束)。应用此引理,把 转化为 。
由于 、、 都是任意的,从 到 的推理在每个结构、每种赋值下都保真:该规则是可靠的。
对任意结构 与公式 :。其逆蕴含一般不成立。
为什么成立?
要求存在单一的见证元素 对每个 都适用(“固定”见证),而 只要求每个 都有某个见证元素,不同的 可以对应不同的见证元素(“可变”见证)。固定见证自动也是可变见证(重复使用即可),但反过来不然——这正是“有人爱着所有人”(一个普遍的爱人)与“人人都被某人所爱”(可能各不相同)之间的区别,是谓词逻辑澄清的自然语言中经典的歧义来源。
证明
正向。 设 。由 的语义子句,;应用于此处得到某个 使得 。
对此应用 的子句,得 对每个 都成立,因为 遍历整个 ,与之后选取哪个 无关。
现在固定任意 来验证 。由上一段,取 得 ,这表明在 下 本身就是 的见证元素;因此 。
由于 是任意的, 对每个 都成立,这正是 的语义子句。这就证明了 。
逆命题不成立:反例。 设 的论域为 (整数),把 解释为“”。此时 为真:对每个整数 ,取 即有 。但 为假:它需要一个单一整数 大于每个整数 ,而不存在这样的最大整数(对任何候选 ,整数 都违反 )。所以 成立而 不成立,说明逆蕴含一般不成立。
大学实际应用与典型例题
SQL 没有原生的“所有”关键字,所以关系数据库用量词否定定律来编码 :“”变成 `NOT EXISTS (... WHERE NOT P ...)`,即程序员正是按照 通过对 的双重否定来实现 。形式化规约语言(Z 记法、Hoare 逻辑前/后置条件、TLA+)直接使用 与 来陈述正确性性质,如“每个数组下标都在范围内”或“存在一条有效的执行路径”,验证工具随后用实例化与消去量词的技术来检查这些性质。
例题: 关系除法:"购买了每种商品"
数据库中有表 `Purchases(customer, product)` 与 `Products(product)`。用谓词逻辑形式化“顾客 购买了每种商品”,然后只用 `NOT EXISTS` 转换成 SQL 查询。
解答
设 表示“ 出现在 Purchases 中”, 表示“ 出现在 Products 中”。“顾客 购买了每种商品”即 。
SQL 没有 ,于是对 应用量词否定定律 ,即把全称量词改写成“不存在顾客 没买的产品”:。
这可直接翻译为:`SELECT c FROM Customers c WHERE NOT EXISTS (SELECT FROM Products p WHERE NOT EXISTS (SELECT FROM Purchases WHERE customer = c.c AND product = p.product))`——实现关系除法的经典“双重 NOT EXISTS”模式,正是全称量词转存在量词否定定律的直接应用。
例题: 形式规约:排序不变式
某排序算法的后置条件规定为 ,其中 是长度为 的数组。验证者想检查 处的具体实例。哪条推理规则支持从后置条件中提取出 ?所得公式是什么?
解答
设 表示 。后置条件即 。
由上面证明的全称实例化的可靠性,对论域中任意项 有 ——这里取 :由 有效地推出 ,即 。
由于当 时 为真(这是验证者另行检查的一个附加条件,例如根据数组声明的长度),接着用肯定前件式得到所需的 ——这正是验证者想要检查的实例,通过把全称实例化与肯定前件式串联得到。
哪个公式在逻辑上等价于 ?
设论域为 , 表示“”,下列哪项为真?
SQL 的 `NOT EXISTS (... WHERE NOT P ...)` 模式对 实现的是哪个量词?
已知 在结构 中为真,对项 用全称实例化可以得出哪个结论?
参考文献
- Herbert B. Enderton (2001). A Mathematical Introduction to Logic
- David Hilbert, Wilhelm Ackermann (1928). Grundzüge der theoretischen Logik