摘要
同一个真值函数有无穷多个表示它的公式,而随手取其中一个,都看不出它说的是什么。本课固定两种模子,在等价的意义下每个公式都能放进其中之一:析取范式,即文字的合取式的析取式;以及合取范式,即文字的析取式的合取式。本课定义文字、子句和简单合取式;证明当每个文字换成其相反文字时,否定把一种范式变为另一种,这就是两者之间的对偶性;从真值表构造主范式,并证明它们是唯一的。存在定理得到两个证明:一个借助真值表,作为功能完全性的推论;另一个对复杂度归纳,只有或非这一种情形,并且使用该证明所要求的双重归纳假设。最后可以看到它们为何值得花这番功夫:合取范式的有效性和析取范式的可满足性一眼就能判定。
学习目标
- 识别文字、子句、简单合取式以及处于析取范式或合取范式的公式,区分形式与等价:形式是符号串的性质,等价是意义的性质。
- 从真值表构造公式的主析取范式和主合取范式,并证明主范式是唯一的,且它决定公式的等价类。
- 利用对偶性、广义德摩根律与分配律以及语义替换,对复杂度归纳证明每个公式都等价于某个析取范式和某个合取范式。
- 一眼判定合取范式的有效性和析取范式的可满足性,并把范式应用于语义后承以及范式最小规模的估计。
本单元前面的几课赋予了公式意义:关于命题逻辑的语义学的一课把每个赋值扩张到全体公式;关于语义后承与语义等价的一课定义了等价 并证明了语义替换;关于广义德摩根律与分配律的一课把这些定律推广到 个公式的合取与析取;关于功能完全性的一课表明每个真值函数都由某个公式表示。然而,一个真值函数由无穷多个公式表示,它们彼此可能相差很大:、 和 是同一事物的三个名字。既然如此,就宜于在每个等价类中选出一个形式固定的代表,它读起来毫不费力,而且某些问题看一眼就能回答。这就是范式。
文字、子句与范式
回顾关于广义定律的一课中 个公式的合取与析取的记号,它由递归定义,并且从左结合;单个公式的合取与析取就是该公式本身。
同一课中证明了,在等价的意义下,项的顺序和结合方式不改变公式(广义结合律以及与顺序和重复无关性);因此我们也写 而不加括号,理解为从左结合。
文字是一个变元 ,称为正文字,或者是一个变元的否定 ,称为负文字。文字 的相反文字记作 ,它是同一变元的、符号相反的文字:
由定义得 。两个文字若其中一个是另一个的相反文字,就构成一个互补对,例如 和 。
子句是文字的析取式 ,简单合取式是文字的合取式 ,两种情形下都有 ;因此单独一个文字既是子句又是简单合取式。若一个文字是子句或简单合取式的 之一,就说它出现在其中。
一个公式若是简单合取式的析取式,就处于析取范式;若是子句的合取式,就处于合取范式;也就是说,它分别具有下面两种形式之一,其中 和 是自然数,每个 是一个文字:
我们说 是 的一个析取范式,如果它处于析取范式并且 ;合取范式同理。长度 可以随合取式(或子句)而不同:要求所有合取式含有相同个数的文字,就不得不用重复来填充,却什么也没有增加。
公式 处于析取范式,其中 、 和 ;它不处于合取范式,因为它不是合取式(它的两个成分不同,而合取式是一个双重否定),也不是子句:读作析取式时,它有一项 既不是文字,也不是文字的析取式。公式 同时处于两种范式:作为单个简单合取式()的析取式,以及作为每个只含一个文字的三个子句的合取式。同样, 既是子句,即 的合取范式,又是两个各含一个文字的合取式组成的析取范式。
与此相反, 和 不处于任何一种范式,尽管前者等价于 ,后者等价于 ,而这两者是处于范式的。
值得停下来想一想“处于范式”是什么意思。它是圆圈和圆盘组成的符号串的性质,而不是其意义的性质:关于自然数上与公式上的归纳法的一课证明了唯一可读性,因此一个公式是不是析取式、是什么的析取式,只有一个答案。然而,正式缩写使得一些公式处于范式却看不出来。蕴涵 被定义为 :不是说它等价于这个子句,而是说它就是这同一个符号串,因此它本来就处于范式。更令人意外的是双重否定。根据 和 的定义,符号串 就是 ,即 ;由此 不是文字,但逐字逐符地说,它就是子句 。
合取与析取的值
从关于语义学的一课中取来派生联结词的值:;,它取值 当且仅当两者都取值 ;以及 当且仅当两者都取值 。关于广义德摩根律与分配律的一课对项数归纳,把它们推广到 个公式,即值引理:对每个赋值 ,合取 取值 于 当且仅当每个 取值 于 ;析取 取值 于 当且仅当某个 取值 于 。这里引用该引理而不重复其证明,它是计算任何范式的值的工具。
对每个文字 , 的否定等价于其相反文字 ;特别地,,对每个赋值 都成立。
证明
若 是变元 ,其相反文字是 ,它恰好就是符号串 :没有什么需要证明。
若 是 ,其否定是 ,它不是文字;由双重否定律(关于语义后承与语义等价的一课),它等价于 ,而这正是 的相反文字。
在两种情形下, 和 在每个赋值下取相同的值,而 的值由否定的值给出。
第二种情形很容易被忽略:对范式取否定时,人们倾向于在文字的位置上写 ,而 不是文字。正是双重否定把结果送回模子里。
简单合取式是可满足的,当且仅当它不含任何互补对。子句是有效的,当且仅当它含有某个互补对。
证明
若一个简单合取式含有 和 ,由上一引理,在每个赋值下两者之一取值 ;由值引理,该合取式在每个赋值下取值 。
若它不含任何互补对,就定义一个赋值:给每个以正文字身份出现在其中的变元以 ,给每个以负文字身份出现在其中的变元以 (其余变元给 )。这个定义不矛盾,因为没有变元以两种方式出现。
在这个赋值下它的所有文字都取值 ,由值引理该合取式取值 :它是可满足的。
若一个子句含有 和 ,则在每个赋值下两者之一取值 ,该子句取值 :它是有效的。
若它不含任何互补对,那么给它的正变元以 、给它的被否定变元以 的赋值使它的所有文字都取值 ;由值引理,该子句在此赋值下取值 ,因而不是有效的。
正在加载内容…
已完成
登录账户以保存您的进度