第三章 逻辑公式
命题的的命题
**命题变量:**命题变量的值只有T和F,命题变量又称布尔变量。
NOT、AND、OR、XOR
当且仅当:
蕴含:
计算机的命题逻辑
计算机程序中总是会出现命题和逻辑连接词。例如以下这段代码:
若令A表示x >0,B表示命题y >100,那么,条件表达式可以重写为:
通过真值表,我们可以证明上式和 A OR B 是等价的。因此,我们可以在不改变代码行为的前提下,用简单表达式替换复杂表达式,简化刚才的代码段:
在计算机科学领域,简化逻辑表达式具有十分重要的现实意义。在程序中简化表达式能够提高程序的可读性和可理解性。而且,简化后的程序可能运行得更快,因为它们需要的操作更少。在硬件方面,简化表达式能够降低芯片上逻辑门的数目,因为逻辑公式可以描述数字电路。尽量减少逻辑公式,意味着电路门的数量减少。最小化门的数量可带来巨大的好处:门越少,芯片越小,消耗的电量越少,缺陷率越低,而且制造成本也越低。
符号表示:
等价行和有效性
**永真式:**是指无论变量如何取值,总是为真的公式。永真式描述的是基本的逻辑真相。如果要证明一个定理成立,只需证明这个定理是永真式即可。如果(FIFF G)是永真命题,那么语句F和G等价。
可满足式:是指有时候为真的公式,即存在某种变量取值使公式为真。
另外,永真性和可满足性之间存在密切关系:语句P是可满足的,当且仅当它的否命题NOT§不是永真式。
命题代数
**析取式:**析取式就是对AND项取OR,其中每个AND项是变量或变量的非构成的AND操作。
析取范式:析取式其中每个AND项是由各个变量或者变量的“非”依次构成。这种形式的表达式称为析取范式 ( disjunctive normal form, DNF )。
**合取式:**合取式就是对OR项取AND,其中 OR项是变量或者变量的“非”。
合取范式:合取式其中每个OR项是由各个变量或者变量的“非”依次构成。这种形式的表达式称为析取范式 ( conjunctive normal form,CNF )。
**定理:**每个命题公式都等价于一个析取范式和一个合取范式。
例子:
真值表:
析取范式:
合取范式:
等价性证明
通过真值表检查等价性或永真性,很容易让人精疲力竭,另一种办法是,有时候我们可以使用代数证明等价性。命题公式可能涉及很多不同的操作符,因此第一步我们要约减操作符,只保留三种:AND,OR和 NOT。
等价公理
**定理:**任何命题公式都可以通过上述等价公理转换成析取范式或合取范式。
**定理:**两个命题公式是等价的,当且仅当可以通过上述等价公理证明它们是等价的。
谓词公式
存在量词
任意量词
混合量词(一句话中既有存在量词也有任意量词)
量词的顺序(混合量词中,量词的顺序不同,其表达的意思也不同)
否定量词:
以下两个句子表达的是同一件事:
不是每个人都喜欢冰淇淋。有的人不喜欢冰淇淋。
同理,下面这两个句子的意思也一样:
没有人喜欢被嘲笑。每个人都不喜欢被嘲笑。
谓词公式的永真性
一个很有用的永真断言:
证明:
相反,以下公式不是永真式:
证明: