跳转至

谓词逻辑

第四章 一阶谓词逻辑

深入到原子命题内部,探究“个体与总体”的内在联系

深入到“语言”的层次,探究“主谓宾”之间的关系

词 = 最小的语义单位

个体词 = 可以独立存在的客体

个体常项:\(a,b,c,...\) 不可变的

个体变项:\(x,y,z,...\) 可以变的,只是个占位符;取值范围为 \(D\) ,称为个体域或论域。【特殊的个体域:世间一切事物】

谓词 = 刻画个体词性质或关系的词

注:输出真值。什么样是合法的谓词?对于每一个个体词都可以确定真假。换句话说,给定个体词常项之后就成为命题。

用大写字母 \(P, Q, R\) 表示谓词,用小写字母表示在谓词中 \(P(x),Q(x,y)\) ,可以看作 个体域\(\{1,0\}\) 上的一个映射;;

谓词常项,谓词变项:具体的某个谓词或者一个占位符

\(n\) 元谓词:含有 \(n\) 个个体变项的谓词

命题变项 = 零元谓词

命题 = 零元谓词 + 谓词常项

函数 = x 的 ?

注:输出个体

从一个个体域到另一个个体域的映射

\(father(x) = y\) 是一个函数; \(CLASSMATE(mother(x),father(x))\) 是谓词。

量词 = 对个体变项在论域内限制(数量)的词

注:输出真值

全称量词: \((\forall x)\) 所有的 \(x\)

存在量词: \((\exists x)\) 存在一个 \(x\)

(量词的)辖域:量词约束的范围;处在对应变项辖域中的个体变项称为约束变项(元);否则称为自由变项(元)

量词易名规则

\((\forall x)(...) = (\forall y)(...)\)

注意:不能重名!

一个谓词公式如果无自由变元,它就表示一个命题。

一阶谓词逻辑公式

一阶谓词逻辑:量词仅能作用于个体词,而不能作用于命题变项和谓词变项

符号集合

个体常项,个体变项;命题变项;谓词符号,函数符号;联结词符号;量词符号,括号与逗号

构造方法

  1. 命题常项,命题变项,原子谓词公式是。
  2. 如果 \(A\) 是,那么 \(\lnot A\)
  3. 如果 \(A,B\) 都是,而且不存在个体词 \(x\)\(A,B\) 中受约束状态不同;那么 \(A \wedge B , A \vee B , A \rightarrow B, A \leftrightarrow B\) 都是
  4. \(A\) 是,且 \(x\)\(A\) 中存在且均为自由变元;那么 \((\forall x)A\) 是, \((\exists x)A\)
  5. 只有有限次的运用才是

自然语言的形式化

一元谓词:“是”

所有的 \(A\)\(B\)\((\forall x)(A(x) \rightarrow B(x))\)

有的 \(A\)\(B\)\((\exists x) (A(x) \wedge B(x))\)

没有 \(A\)\(B\)\(\lnot(\exists x)(A(x) \wedge B(x)) = (\forall x)(A(x) \rightarrow \lnot B(x))\)

特定论域 \(C\) 下讨论: 外面套一层“特性谓词”框定论域;全称用 \(\forall ,\rightarrow\) ;特称用 \(\exists, \wedge\)

多元谓词:“关系”

注:小心隐含关系,如“两只猫”就是两只不同的猫

有且仅有 = 至少存在一个,任意剩下的都跟找出来的这个相同

注意:

拆到最简

最简单:没有动宾结构,没有宾语

一元谓词到“是”

多元谓词到一个谓词

如:\(R(x)\) 表示 \(x\) 能抓住老鼠 不行!; \((\exists y)(R(y) \wedge C(x,y))\) 可以!

“或”:异或还是同或?

多次量化

从右向左结合(量词的优先级要高于逻辑)

只有名称相同的谓词才能交换顺序

有限论域下,谓词公式向命题公式的转化

本质:全称量词是合取的推广,存在量词是析取的推广

方法:从左往右拆,一层一层套, \(\forall \rightarrow \wedge,\exists \rightarrow \vee\)

谓词公式的普遍有效性问题

“解释”&“赋值”

解释:包括“【个体域 \(D\)】 ,个体常项符号 \(a\) , 谓词符号 \(P\) ,函数符号 \(f\) ” 的意义

赋值:指定自由出现的个体常项的值

对谓词公式解释+赋值可以称为命题

普遍有效:任何解释下都为真

不可满足:在任何解释下都为假

可满足:存在一个解释为真

有限域上的讨论 = 可满足与普遍有效只与个体数量有关

这是因为谓词是可以随便指定的,因此只与“问题本身”和“问题形式有关”

  1. 若在某一 \(k\) - 个体域普遍有效(可满足),则在任意 \(k\) -个体域上普遍有效(可满足)
  2. 【越小越普遍有效】若在某一 \(k\) - 个体域普遍有效,则在任意 \(k-1\) -个体域上普遍有效
  3. 【越大越可满足】若在某一 \(k\) - 个体域可满足,则在任意 \(k+1\) -个体域上可满足

可判定性

一般不可判定,可判定的类型:

  1. 仅含一元谓词变项
  2. 单一前束形式: \((\forall/\exists x_1)(\forall/\exists x_2) \cdots (\forall/\exists x_n)P(x_1,x_2,\cdots,x_n)\) 同一种谓词, \(P\) 中无量词和其他自由变项
  3. 个体域有限

如果公式是普遍有效的或者不可满足的,那么可以在有限步以内完成判定;否则不一定。

第五章 谓词逻辑的等值和推理演算

本章只从语义描述,无形式化的证明

谓词公式的等值

定义

\(A \leftrightarrow B\) 普遍有效,记作 \(A = B, A \Leftrightarrow B\) .

等值式

命题公式的等值式

注意:\(\rightarrow\) 不满足结合律与交换律; \(\leftrightarrow\)\(\leftrightarrow\) 不满足分配律

否定等值式 = 否定与量词的交换

\(\lnot (\forall x)P(x) = (\exists x)\lnot P(x), \lnot (\exists x)P(x) = (\forall x) \lnot P(x)\)

分配等值式

对公式的分配律

\(p,q\) 代表的公式需要与前面的量词变元无关。

  1. \((\forall x)(P(x) \vee q) = (\forall x)P(x) \vee q,\; (\exists x)(P(x) \vee q) = (\exists x)P(x) \vee q\)
  2. \((\forall x)(P(x) \wedge q) = (\forall x)P(x) \wedge q,\; (\exists x)(P(x) \wedge q) = (\exists x)P(x) \wedge q\)
  3. \((\forall x)(P(x) \rightarrow q) = \color\red{(\exists x)} P(x) \rightarrow q, (\exists x)(P(x) \rightarrow q) = \color\red{(\forall x)} P(x) \rightarrow q\)
  4. \((\forall x)(p \rightarrow Q(x)) = p \rightarrow (\forall x) Q(x), (\exists x)(p \rightarrow Q(x)) = p \rightarrow (\exists x) \rightarrow Q(x)\)
对谓词公式的分配

\(\forall\)\(\wedge\) 搭配(本质上都是 \(\wedge\)) , \(\exists\)\(\vee\) 搭配(本质上都是 \(\vee\)

\((\forall x)(P(x) \wedge Q(x)) = (\forall x)P(x) \wedge (\forall x)Q(x)\) \((\exists x)(P(x) \vee Q(x)) = (\exists x) P(x) \vee (\exists x) Q(x)\)

变量不同名情况下的“分配”

\((\forall x) P(x) \vee (\forall y)Q(y) = (\forall x)(\forall y)(P(x) \vee Q(y))\) \((\exists x)P(x) \wedge (\exists y)Q(y) = (\exists x)(\exists y)(P(x) \wedge Q(y))\)

等值演算

演算规则

置换规则 = 与命题公式完全相同,换掉完整的一个公式

换名规则/代替规则 = 给约束变元换名字 / 给自由变元换名字【注意:不能出现重名】

范式

前束范式

\(A\) 为一阶谓词公式,且

  1. 所有量词都位于该公式的最左侧
  2. 所有量词前均不含否定词
  3. 所有量词辖域均延伸到公式末端

则称 \(A\) 为一阶谓词公式。

一般形式

\((Q_1 x_1)(Q_2 x_2) \cdots (Q_n x_n) M(x_1,x_2,\cdots,x_n)\)\(M\) 为基式或母式,不含任何量词 \(Q_i\)\(\forall, \exists\)

存在定理

等值的前束范式一定存在,但不一定唯一

求前束范式的步骤
  1. 消去 \(\rightarrow, \leftrightarrow\) (用定义)
  2. 右移 \(\lnot\) (用否定律和德摩根)
  3. 左移 \(\forall, \exists\) 利用量词分配 & 变量易名

注意:不同时

情况1:

\((\forall x)P(x) \wedge (\exists y) Q(y)\)

  1. \(= (\forall x)(P(x) \wedge (\exists y)Q(y)) \\= (\forall x)(\exists y)(P(x) \wedge Q(y))\)
  2. \(= (\exists y)Q(y) \wedge (\forall x)P(x) \\= (\exists y)(Q(y) \wedge (\forall x)P(x)) \\=(\exists y)(\forall x)(Q(y) \wedge P(x)) \\= (\exists y)(\forall x)(P(x) \wedge Q(y))\)

这两者是等价的,因为 \(x,y\) 没有任何关系,两者是相互独立的变量。

情况2:

\((\forall x)(P(x) \wedge (\exists y)(Q(x,y)))\)

  1. \(=(\forall x)(\exists y)(Q(x,y) \wedge P(x))\)

情况3:

\((\forall x)(P(x) \wedge (\exists y)(Q(y)))\)

注意:区分自由和约束,搞清楚约束的范围

SKOLEM 标准形

定义:仅保留全称量词的前束范式

等值性:不可满足意义下等值

方法:

  1. 先化成前束范式
  2. 然后把所有的存在量词全部作替换
  3. (最前面)无约束的的替换成客体变元 \(a,b,c\) ,同时对后面进行替换
  4. 后面被约束的构造成所有约束的函数,如 \((\forall x)(\forall y)(\exists a) \cdots\) ,令 \(a = f(x,y)\) ,同时对后面进行替换;
  5. 最后再把所有的个体常项全藏起来,个体变项不变

谓词逻辑的推理

推理形式

我们称前提 \(A_1,A_2,\cdots, A_n\) 能够推出 结论 \(B\) 当且仅当 \((A_1 \wedge A_2 \wedge \cdots \wedge A_n) \rightarrow B\) 为重言式

满足上述条件永真式的蕴含式为推理形式,也可以记作 \(A_1 \wedge A_2 \wedge \cdots \wedge A_n \Rightarrow B\) .

基本推理形式

  1. 合取与析取: \((\forall x)P(x) \vee (\forall x)Q(x) \Rightarrow (\forall x)(P(x) \vee Q(x)),\; (\exists x)(P(x) \vee Q(x)) \Rightarrow (\exists x)P(x) \wedge (\exists x)Q(x)\)
  2. 蕴含: \((\forall x)(P(x)\rightarrow Q(x)) \Rightarrow (\forall x)P(x) \rightarrow (\forall x)Q(x)\)\(\cdots \Rightarrow (\exists x)P(x) \rightarrow (\exists x)Q(x)\)
  3. 双蕴含: \((\forall x)(P(x)\leftrightarrow Q(x)) \Rightarrow (\forall x)P(x) \leftrightarrow (\forall x)Q(x)\)\(\cdots \Rightarrow (\exists x)P(x) \leftrightarrow (\exists x)Q(x)\)
  4. 三段论:\((\forall x)(P(x) \rightarrow Q(x)) \wedge (\forall x)(Q(x) \rightarrow R(x)) \Rightarrow (\forall x)(P(x) \rightarrow R(x))\)\((\forall x)(P(x) \rightarrow Q(x)) \wedge P(a) \Rightarrow Q(a)\)
  5. 万人迷: \((\forall x)(\forall y)P(x,y) \Rightarrow (\exists x)(\forall y)P(x,y)\)\((\exists x)(\forall y)P(x,y) \Rightarrow (\forall y)(\exists x) P(x,y)\)

对推理形式的证明【与命题逻辑完全相同】

证明 \(A \Rightarrow B\)

  1. \(A \rightarrow B\) 为普遍有效

  2. \(A \wedge \lnot B\) 为不可满足

  3. \(\lnot B \rightarrow \lnot A\) 为普遍有效
  4. 在任一解释下...

推理规则

命题逻辑中也有的:前提引入\结论引入\代入规则\置换规则\分离规则\条件证明规则

谓词逻辑特有的:

  1. 全称举例(UI): \((\forall x)P(x) \Rightarrow P(c),\text{if } c \in U\)
  2. 全称推广(UG): \(P(c) \text{ for an arbitrary c} \in U \Rightarrow (\forall x)P(x)\)
  3. 存在举例(EI): \((\exists x)P(x) \Rightarrow P(c), \text{ for some } c \in U\)
  4. 存在推广(EG):\(P(c) \text{ for some } c \in U \Rightarrow (\exists x)P(x)\)

注:可以这么理解,当我们写 \(P(c)\) 的时候,我们本质上在写一族的公式,这些公式并不一定相同。比如 \(P(x) = (\exists z)(z < x)\)

归结推理法

原理: \(A_1 \wedge A_2 \wedge \cdots \wedge A_n \Rightarrow B\) 当且仅当 \(G = A_1 \wedge A_2 \wedge \cdots \wedge A_n \wedge \lnot B\) 是矛盾式

方法:

  1. 构建前束范式,消去 \(\exists\) 量词(注意,这一过程是保持不可满足性的)
  2. 扔掉全称量词,(化为合取范式)以 \(\wedge\) 为分隔符,拆分为子句集 \(S\)
  3. 作归结直到空公式

如何归结? 1. \(C_1 = P(x) \vee Q(x),C_2 = \lnot P(a) \vee R(y)\) (两者无共同变元, \(C_2\)\(\lnot P(x)\) 亦可,也就是说, \(P(x)\) 是“包含着” \(P(a)\) 的。) 2. 归结成 \(Q(a) \vee R(y)\)

注意,可以对 \(A_i\) 分别标准化,然后其子句集的并就是最终的子句集

附录

SKOLEM I 型