命题逻辑是关于数学表达方面的研究。
命题 是具有声明陈述性的语句(也就是说,陈述一个事实),并且不是真的就是假的。
命题变量 是一个表示命题的变量,就像代数中表示数字的变量一样。
命题变量通常使用 p , q , r , s , … p,q,r,s,\ldots p,q,r,s,… 等字母表示。如果一个命题是真的那么它具有 真值 记为 T
,否则具有 假值 记为 F
。
研究这类关于命题的问题的领域称为 命题演算 或者 命题逻辑 。
复合命题 是将已经存在的命题通过 逻辑操作符 连接起来组成的新命题。
定义:让 p p p 是一个命题。则 p p p 的否定记为 ¬ p \neg p ¬p 有时也记为 p ˉ \bar{p} pˉ ,是陈述:
“不是 p p p 的情况。”
≠ p \neq p =p 读作“非 p p p ”,它的真值和 p p p 相反。
下表列出了 p p p 与 ¬ p \neg p ¬p 的 真值表 ,每一行都是 p p p 一种真值情况和对应的 ≠ p \neq p =p 的真值情况 :
p p p | ¬ p \neg p ¬p |
---|---|
T |
F |
F |
T |
命题的否定也可以看做是 否定运算符 作用在命题上的结果。否定运算符是逻辑运算符的一种,逻辑运算符也称为 联结词 。
定义:令 p p p 和 q q q 为命题。两个命题的 合取 记为 p ∧ q p \wedge q p∧q 是命题 “ p p p 和 q q q ”。合取命题的真值为真,当且仅当 p p p 和 q q q 均为真。
定义:令 p p p 和 q q q 为命题。两个命题的 析取 记为 p ∨ q p \vee q p∨q 是命题 “ p p p 和 q q q ”。合取命题的真值为假,当且仅当 p p p 和 q q q 均为假。
下表展示了合取运算符和析取运算符的真值表:
p p p | q q q | p ∧ q p \wedge q p∧q | p ∨ q p \vee q p∨q |
---|---|---|---|
T |
T |
T |
T |
T |
F |
F |
T |
F |
T |
F |
T |
F |
F |
F |
F |
在这里我们需要区分一下 “或” 和 “异或”,“或” 指的是两种均可而“异或”指的是两者中只能有一个成立。
定义:令 p p p 和 q q q 为命题。两个命题的 异或 记为 p ⊕ q p \oplus q p⊕q 是命题 “ p p p 异或 q q q ”。异或命题的真值为真,当且仅当 p p p 和 q q q 只有一个为真。
下面是异或的真值表:
p p p | q q q | p ⊕ q p \oplus q p⊕q |
---|---|---|
T |
T |
F |
T |
F |
T |
F |
T |
T |
F |
F |
F |
条件语句是另外一个组合命题的方式。
定义:令 p p p 和 q q q 为命题。那么 条件语句 p → q p \to q p→q 指的是“如果 p p p 那么 q q q ”。条件语句的真值为假,当且仅当 p p p 为真 q q q 为假。 p p p 称为假设、先行词、前提, q q q 称为结论或结果。
p → q p \to q p→q 被称为条件式是因为我们断言 q q q 为真在 p p p 成立的前提下。所以条件式也称为蕴含式。
下面是蕴含式的真值表:
p p p | q q q | p → q p \to q p→q |
---|---|---|
T |
T |
T |
T |
F |
F |
F |
T |
T |
F |
F |
T |
定义:令 p p p 和 q q q 为命题。那么 双条件语句 p ↔ q p \leftrightarrow q p↔q 指的是“ p p p 成立,当且仅当 q q q 成立”。条件语句的真值为真,当且仅当 p p p 的真值和 q q q 的真值相同。也称为等值式。
下面是等值式的真值表:
p p p | q q q | p ↔ q p \leftrightarrow q p↔q |
---|---|---|
T |
T |
T |
T |
F |
F |
F |
T |
F |
F |
F |
T |
等值式由两个双向箭头组成,这说明,等值式的真值表和 ( p → q ) ∧ ( q → p ) (p \to q) \wedge (q \to p) (p→q)∧(q→p) 相同。
我们到目前为止介绍了四个逻辑联结词(逻辑运算符):合取、析取、条件、双条件。还有一个一元运算符-否定。我们可以通过这几个联结词构造复杂的复合命题包含很多命题变量。同样,我们也可以通过真值表表示一个复合命题的真值情况。
下图是逻辑位运算符,先算括号,然后根据下标运算符决定运算次序。
逻辑运算符 | 优先级 |
---|---|
¬ \neg ¬ | 1 1 1 |
∧ \wedge ∧ | 2 2 2 |
∨ \vee ∨ | 3 3 3 |
→ \to → | 4 4 4 |
↔ \leftrightarrow ↔ | 5 5 5 |
在计算机中,通常用一个 二进制位 表示一个真值,即 1 1 1 代表 T
而 0 0 0 代表 F
。通常,一个 布尔型变量 的取值只有两种,即真和假。可以用一个二进制位表示一个布尔型变量。
逻辑运算符 ∧ \wedge ∧ 、 ∨ \vee ∨ 、 ⊕ \oplus ⊕ 和 ¬ \neg ¬ 分别可以用二进制运算AND、OR、XOR和NOT表示。
定义:一个 二进制串 是一个只包含 0 0 0 和 1 1 1 的序列。
我们定义按位与、按位或、按位异或和按位取反,即分别对二进制串的每一个对应位做与、或、异或、取反运算。
命题的应用有:
在代数学中经常通过将一个方程等值变换使得计算方便,在命题演算中也有相同的方法,两个形式不同的命题却有着相同的真值表是可能的,紧接着我们将对他们进行分类。
定义:一个复合命题总是真的,不管其中命题变量的真值情况如何,那么称为 重言式 ;同样,一个复合命题总是假的,不管其中命题变量的真值情况如何,那么称为 矛盾式 。一个复合命题既不是重言式也不是矛盾式,那么称为 偶然式 。
两个复合命题在所有可能的情况下真值均相同,那么称为 逻辑等值 。
定义:两个复合命题 p p p 和 q q q 是逻辑等值的,当且仅当 p ↔ q p \leftrightarrow q p↔q 是重言式。记号 p ≡ q p \equiv q p≡q 说明 p p p 和 q q q 是逻辑等值的。
注意, ≡ \equiv ≡ 并不是逻辑联结词,但是它说明 p ↔ q p \leftrightarrow q p↔q 是重言式,有时候也用 ⇔ \Leftrightarrow ⇔ 代替。
在这里说明几个重要的等值式。
¬ ( p ∨ q ) \neg (p \vee q) ¬(p∨q) 和 ¬ p ∧ ¬ q \neg p \wedge \neg q ¬p∧¬q 逻辑等值,这条也被称为 德摩根律 。
p → q p \to q p→q 和 ¬ p ∨ q \neg p \vee q ¬p∨q 等值。
一般的,如果两个复合命题具有 n n n 个命题变量,那它们的比较真值表就具有 2 n 2^n 2n 行。
p ∨ ( q ∧ r ) p \vee (q \wedge r) p∨(q∧r) 和 ( p ∨ q ) ∧ ( p ∨ r ) (p \vee q) \wedge (p \vee r) (p∨q)∧(p∨r) 等值,这也称为析取对合取的分配律。
下标展示了所有重要的等值变换, T
表示为一个永真命题, F
表示一个永假命题。
等值式 | 名称 |
---|---|
p ∧ T ≡ p p \wedge T \equiv p p∧T≡p | 同一律 |
p ∨ F ≡ p p \vee F \equiv p p∨F≡p | 同一律 |
p ∧ F ≡ F p \wedge F \equiv F p∧F≡F | 零律 |
p ∨ T ≡ T p \vee T \equiv T p∨T≡T | 零律 |
p ∧ p ≡ p p \wedge p \equiv p p∧p≡p | 幂等律 |
p ∨ p ≡ p p \vee p \equiv p p∨p≡p | 幂等律 |
¬ ( ¬ p ) ≡ p \neg (\neg p) \equiv p ¬(¬p)≡p | 双重否定律 |
p ∨ q ≡ q ∨ p p \vee q \equiv q \vee p p∨q≡q∨p | 交换律 |
p ∧ q ≡ q ∧ p p \wedge q \equiv q \wedge p p∧q≡q∧p | 交换律 |
( p ∧ q ) ∧ r ≡ q ∧ ( p ∧ r ) (p \wedge q) \wedge r \equiv q \wedge (p \wedge r) (p∧q)∧r≡q∧(p∧r) | 结合律 |
( p ∧ q ) ∧ r ≡ q ∧ ( p ∧ r ) (p \wedge q) \wedge r \equiv q \wedge (p \wedge r) (p∧q)∧r≡q∧(p∧r) | 结合律 |
p ∨ ( q ∧ r ) ≡ ( p ∨ q ) ∧ ( p ∨ r ) p \vee (q \wedge r) \equiv (p \vee q) \wedge (p \vee r) p∨(q∧r)≡(p∨q)∧(p∨r) | 分配律 |
p ∧ ( q ∨ r ) ≡ ( p ∧ q ) ∨ ( p ∧ r ) p \wedge (q \vee r) \equiv (p \wedge q) \vee (p \wedge r) p∧(q∨r)≡(p∧q)∨(p∧r) | 分配律 |
p ∨ ¬ p ≡ T p \vee \neg p \equiv T p∨¬p≡T | 排中律 |
p ∧ ¬ p ≡ F p \wedge \neg p \equiv F p∧¬p≡F | 矛盾律 |
关于条件式和双条件式还有一些常用的等值式,在这里就不再列举了。读者只需要掌握上面的几个即可。
对于结合律和德摩根律,它们可以扩展到任意个命题变量的情况,对于任意个命题变量的情况也同样适用。
德摩根律告诉我们,合取的否定是析取,析取的否定是合取。这是一个非常重要的结论。
我们可以使用上面的等值变换构造新的逻辑等值式。
如果一个复合命题是 可满足 的,那么存在一组命题变量的取值,使得这个命题的真值为真。如果不存在,那么这个命题恒为假,即 不可满足 也是矛盾式。这组使得这个命题的真值为真的一组命题变量的取值也称为满足性问题的一个 解 。
满足性在以下方面有重要的应用:
目前为止唯一知道解决一般的可满足问题的方法就是枚举每一个命题变量的真值情况。
到目前为止,我们没有办法来表达“所有”这个陈述。同样,也无法表达“存在”这个陈述。本节我们就要介绍表达“所有”和“存在”这两个陈述。
本章我们将介绍一种更有力的逻辑类型,称为谓词逻辑。我们将会介绍什么是谓词,以及量词,使我们能准确的表达“所有”和“存在”这两个陈述。
下面的表述:
“ x > 3 x \gt 3 x>3 ”,“计算机 x x x 工作正常”。
都是数学中的断言,在计算机程序中或是系统规范中,这些断言既不是真的又不是假的在变量没有确定的时候。
表述“ x > 3 x \gt 3 x>3 ”有两个部分,第一个部分是变量 x x x 是表达的 主语 。第二部分,“大于 3 3 3” 是句子的 谓语 。指的是主语拥有的一种属性。我们可以将表述“ x > 3 x \gt 3 x>3 ”记为 P ( x ) P(x) P(x) , P P P 就是谓语, x x x 为主语, P ( x ) P(x) P(x) 也可说为是 x x x 的一个 命题函数 。一旦 x x x 确定,那么 P ( x ) P(x) P(x) 就是一个具有确定真值的命题。
命题函数不一定只有一个变量,也可拥有多个变量,例如表述“ x = y + 3 x = y + 3 x=y+3 ” 就可以记为 Q ( x , y ) Q(x,y) Q(x,y) 。
一般的,一个带有 n n n 个变量 x 1 , x 2 , … , x n x_1,x_2,\ldots,x_n x1,x2,…,xn 的表述能够被写成 P ( x 1 , x 2 , … , x n ) P(x_1,x_2,\ldots,x_n) P(x1,x2,…,xn) 。
一个表述具有 P ( x 1 , x 2 , … , x n ) P(x_1,x_2,\ldots,x_n) P(x1,x2,…,xn) 的形式是命题函数 P P P 在 n n n 元组 ( x 1 , x 2 , … , x n ) (x_1,x_2,\ldots,x_n) (x1,x2,…,xn) 下的值。 P P P 称为 n n n 元谓词。
在计算机编程中,在执行一组语句前的条件称为 前置条件 ,在执行完毕之后的条件称为 后置条件 ,判断一个程序是否正确我们可以假设前置条件均成立,如果后置条件相应成立,那么可以认为这个程序是正确的。
这是一种重要的方法,叫做 量词 ,根据一个谓词创建一个命题。量词将变量控制在一个范围之内。在自然语言中,通常用“所有”、“一些”、“没有”、“很少”等词语描述。我们只关心两种量词:
在逻辑学中,处理谓词和量词的领域称为 谓词演算 。
许多数学表达为真对于所有的在特定区域内的变量取值,这个区域称为 论域 ,简称为 域 。这个域必须是确定的,全称量词才有意义,也就是说域决定全称量词,全称量词也决定域。
定义:对于 P ( x ) P(x) P(x) 的全称量词表述为:
“ P ( x ) P(x) P(x) 对于任何的在域中的 x x x ”
记号 ∀ x P ( x ) \forall x P(x) ∀xP(x) 就是指 P ( x ) P(x) P(x) 的全称量词。 ∀ \forall ∀ 称为 全称量词 。读作“对于任意的 x x x 有 P ( x ) P(x) P(x) ”,如果有一个 x x x 的取值使得 P ( x ) P(x) P(x) 为假,那么称为 ∀ x P ( x ) \forall x P(x) ∀xP(x) 的一个 特例 。
命题 ∀ x P ( x ) \forall x P(x) ∀xP(x) 是假的,当且仅当域中存在特例。默认的,我们的域都是非空的,我们不讨论空域,因为这是没有意义的。
全称量词也可表述为合取的形式,例如命题 ∀ x P ( x ) \forall x P(x) ∀xP(x) ,当域为 [ a , b , c , d ] [a,b,c,d] [a,b,c,d] 的时候,下面的命题逻辑等值:
P ( a ) ∧ P ( b ) ∧ P ( c ) ∧ P ( d ) ≡ ∀ x P ( x ) P(a) \wedge P(b) \wedge P(c) \wedge P(d) \equiv \forall x P(x) P(a)∧P(b)∧P(c)∧P(d)≡∀xP(x)
定义:对于 P ( x ) P(x) P(x) 的特称量词表述为:
“ P ( x ) P(x) P(x) 对于存在一个在域中的 x x x ”
记号 ∃ x P ( x ) \exists x P(x) ∃xP(x) 就是指 P ( x ) P(x) P(x) 的特称量词。 ∃ \exists ∃ 称为 特称量词 。
同样的,域必须确定,特称量词才有意义。 ∃ x P ( x ) \exists x P(x) ∃xP(x) 为真,当且仅当存在一个域中的 x x x 使得 P ( x ) P(x) P(x) 成立。
特称量词也可表述为析取的形式,例如命题 ∀ x P ( x ) \forall x P(x) ∀xP(x) ,当域为 [ a , b , c , d ] [a,b,c,d] [a,b,c,d] 的时候,下面的命题逻辑等值:
P ( a ) ∨ P ( b ) ∨ P ( c ) ∨ P ( d ) ≡ ∃ x P ( x ) P(a) \vee P(b) \vee P(c) \vee P(d) \equiv \exists x P(x) P(a)∨P(b)∨P(c)∨P(d)≡∃xP(x)
我们现在已经介绍了全称量词和特称量词,但是我们没有办法控制数量,例如“只存在 5 5 5 个 x x x 使得 P ( x ) P(x) P(x) ”。记号 ∃ ! \exists ! ∃! 或者 ∃ 1 \exists_1 ∃1 就是 唯一量词 ,命题 ∃ ! x P ( x ) \exists ! x P(x) ∃!xP(x) 或者 ∃ 1 x P ( x ) \exists_1 x P(x) ∃1xP(x) 表示只在域中存在唯一的 x x x 使得 P ( x ) P(x) P(x) 。注意到,我们可以用全称量词和特称量词表述唯一性,因此可以避免使用唯一量词,但是在某些地方,使用唯一量词更加方便。
表述 ∀ x < 0 ( x 2 > 0 ) \forall x \lt 0 (x^2 \gt 0) ∀x<0(x2>0) 的含义为,在限制域 x < 0 x \lt 0 x<0 上, x 2 > 0 x^2 \gt 0 x2>0 均成立。等价于 ∀ x ( x < 0 → x 2 > 0 ) \forall x (x \lt 0 \to x^2 \gt 0) ∀x(x<0→x2>0) ,也就是说在限制域上的全称量词可以写作是在域上的全称量词加条件式。
同样,表述 ∃ z > 0 ( z 2 = 2 ) \exists z \gt 0 (z^2 = 2) ∃z>0(z2=2) 的含义为,在限制域 z > 0 z \gt 0 z>0 上,存在 x x x 使得 z 2 = 2 z^2 = 2 z2=2 成立。等价于 ∃ x ( z > 0 ∧ z 2 = 2 ) \exists x (z \gt 0 \wedge z^2 = 2) ∃x(z>0∧z2=2) ,也就是说在限制域上的特称量词可以写作是在域上的特称量词加合取式。
量词比任何逻辑操作符的优先级都大。
当量词作用在变量 x x x 上时,我们说变量 x x x 是 被绑定的 。如果一个变量没有被绑定或等于一个特定的值,那么这个变量是 自由的 。
一个命题函数中的变量,要么是被绑定的要么是被赋予特殊值的,就是被全称、特称量词控制或者被赋值。
在逻辑表达中,应用量词的部分称为 作用域 。也就是说,不在作用域中的变量就是自由变量。
定义:两个带有带有量词和谓词的命题逻辑等值,当且仅当它们有相同的真值无论它们使用的谓词是什么也无论域是什么。我们使用记号 S ≡ T S \equiv T S≡T 来表达 S S S 和 T T T 逻辑等值。
证明两个带有量词和谓词的命题逻辑等值,我们先假设 S S S 成立,然后推出 T T T 成立,第二假设 T T T 成立,然后推出 S S S 成立。
量词的否定是一组重要的逻辑等值,即下面的两式子:
上面的两个式子称为 量词的德摩根律 。
我们把全称量词写成是合取的形式,然后运用德摩根律,就会得到右边的形式,所以称为量词的德摩根律。
使用上述规则,可以将自然语言翻译成逻辑表达式。
将上文的系统规范加上量词。
一种很重要的编程语言是关于逻辑的。 Prolog 是一个关于逻辑的编程语言,广泛用于人工智能方面。在 Prolog 中,有两种类型的表述,一种为 Prolog 事实 ,另一种为 Prolog 规则 。Prolog 事实定义了一些特殊的元素使谓词是成立的,Prolog 规则通过利用已知的Prolog 事实去定义新的谓词。
在上一节中我们介绍了全称量词和特称量词,在逻辑学中,量词是可以嵌套的,本节我们介绍 嵌套量词 。
用循环的思维思考嵌套量词是一个有效的方式,例如,考虑量词嵌套 ∀ x ∀ y \forall x \forall y ∀x∀y 外层循环是遍历了所有的 x x x 对于固定的 x x x 内层循环是遍历了所有的 y y y 。
在一个逻辑表达式中通常有多个量词,此时量词的顺序就显得尤为重要,如果不是全都是全称量词或者特称量词,注意这个例子:
∀ x ∃ y P ( x , y ) \forall x \exists y P(x,y) ∀x∃yP(x,y) 并不和 ∃ y ∀ x P ( x , y ) \exists y \forall x P(x,y) ∃y∀xP(x,y) 等价。
该部分请读者自行联系。
该部分请读者自行联系。
该部分请读者自行联系。
嵌套量词的否定只需要连续使用上述单个量词的否定即可。
从本章开始,我们将要讲解证明相关的内容。
证明是通过已经存在的事实建立新的为真的数学表述的过程。一个 论点 是一系列的表达式最终得出的一个结论, 合法 指的是我们的结论、最终的表述必须遵循之前为真的表达式或者是前提。
我们也列举出一些错误的推论,称为 谬论 。
之后,我们将推理规则应用于量词和嵌套量词上。
论点是一些已知真值的命题的集合。而推理指给出一个未知真值的命题,通过论点推理出未知真值的命题的真值情况。
例如我们知道论点 p p p 和 p → q p \to q p→q 为真,那么:
p → q p ∴ q \begin{aligned} & p \to q \\ & p \\ \therefore & q \end{aligned} ∴p→qpq
这里 ∴ \therefore ∴ 即“所以”。
表达式 ( ( p → q ) ∧ p ) → q ((p \to q) \wedge p) \to q ((p→q)∧p)→q 是重言式,如果我们知道 p → q p \to q p→q 和 p p p 均为真,那么 q q q 也为真。我们说具有这种推理形式的的论点是合法的,因为当我们知道前提均为真,那么结论也必定为真。
我们将命题变量替换成我们的命题,这种替换称为将论点替换成 论点形式 。
定义:论点是一些已知真值的命题的集合,所有但不是最终的命题称为前提,最终的命题称为结论。一个论点是合法的当且仅当它的前提能够退出它的结论。
一个论题形式是一系列带有命题变量的复合命题。一个论题形式是合法的当且仅当,无论命题变量是什么样的,当前提均成立时,结论也成立。
合法的论题形式也可定义成 ( p 1 ∧ p 2 ∧ … ∧ p n ) → q (p_1 \wedge p_2 \wedge \ldots \wedge p_n) \to q (p1∧p2∧…∧pn)→q 是永真式,此时 p 1 , p 2 , … , p n p_1,p_2,\ldots,p_n p1,p2,…,pn 称为前提, q q q 称为结论。
我们可以通过一些常用的论题形式进行推论,这些常用的论题形式称为 推理规则 。
重言式 ( p ∧ ( p → q ) ) → q (p \wedge (p \to q)) \to q (p∧(p→q))→q 是推理规则的基础,叫做 肯定前件式 。也称假言推理。
下表列出了其他常用的推理规则:
推理规则 | 名称 |
---|---|
( p ∧ ( p → q ) ) → q (p \wedge (p \to q)) \to q (p∧(p→q))→q | 假言推理 |
( ≠ q ∧ ( p → q ) ) → ≠ p (\neq q \wedge (p \to q)) \to \neq p (=q∧(p→q))→=p | 拒取式 |
( ( p → q ) ∧ ( q → r ) ) → ( p → r ) ((p \to q) \wedge (q \to r)) \to (p \to r) ((p→q)∧(q→r))→(p→r) | 假言三段论 |
( ( p ∨ q ) ∧ ¬ p ) → q ((p \vee q) \wedge \neg p) \to q ((p∨q)∧¬p)→q | 析取三段论 |
p → ( p ∨ q ) p \to (p \vee q) p→(p∨q) | 附加律 |
( p ∧ q ) → p (p \wedge q) \to p (p∧q)→p | 化简律 |
( ( p ) ∧ ( q ) → ( p ∧ q ) ) ((p) \wedge (q) \to (p \wedge q)) ((p)∧(q)→(p∧q)) | 合取式 |
( ( p ∨ q ) ∧ ( ¬ p ∨ r ) ) → ( q ∨ r ) ((p \vee q) \wedge (\neg p \vee r)) \to (q \vee r) ((p∨q)∧(¬p∨r))→(q∨r) | 决定式 |
例如:
我们知道前提:
结论: t t t 。
下面是推理过程:
1 : ¬ p ∧ q 前提引入 2 : ¬ p 化简律 1 3 : r → p 前提引入 4 : ¬ r 拒取律 2 3 5 : ¬ r → s 前提引入 6 : s 假言推理 4 5 7 : s → t 前提引入 8 : t 假言推理 6 7 \begin{aligned} 1: & \neg p \wedge q & \text{前提引入} \\ 2: & \neg p & \text{化简律 1} \\ 3: & r \to p & \text{前提引入} \\ 4: & \neg r & \text{拒取律 2 3} \\ 5: & \neg r \to s & \text{前提引入} \\ 6: & s & \text{假言推理 4 5} \\ 7: & s \to t & \text{前提引入} \\ 8: & t & \text{假言推理 6 7} \\ \end{aligned} 1:2:3:4:5:6:7:8:¬p∧q¬pr→p¬r¬r→sss→tt前提引入化简律 1前提引入拒取律 2 3前提引入假言推理 4 5前提引入假言推理 6 7
在这里我们通过简单的 8 8 8 步构造出新的合法推理形式,但是要通过真值表验证却需要 2 5 2^5 25 行。
在计算机科学自动证明和机器证明方面,经常使用的一个推理规则就是 决定式 。
( ( p ∨ q ) ∧ ( ¬ p ∨ r ) ) → ( q ∨ r ) ((p \vee q) \wedge (\neg p \vee r)) \to (q \vee r) ((p∨q)∧(¬p∨r))→(q∨r)
在这里, q ∨ r q \vee r q∨r 称为归结式,在这里如果令 q = r q = r q=r 得到:
( ( p ∨ q ) ∧ ( ¬ p ∨ q ) ) → q ((p \vee q) \wedge (\neg p \vee q)) \to q ((p∨q)∧(¬p∨q))→q
令 r = F r = F r=F 那么就是析取三段论。
在自动证明和机器证明方面,决定式将作为唯一的推理规则使用,这是因为一个命题总可以写成是多个从句相合取。
一个 从句 指的是多个命题变量或命题变量的否定通过析取组合在一起。
我们将我们的前提转换成从句相合取的形式,就可以通过决定式进行自动推导。
将前提 p → q p \to q p→q 和 q q q 和结论 p p p 作为一个合法的推理形式,这种类型叫做 结论谬论 。
将前提 p → q p \to q p→q 和 ¬ p \neg p ¬p 和结论 ¬ q \neg q ¬q 作为一个合法的推理形式,这种类型叫做 否定假设谬论 。
全称实例化 是一个给定前提 ∀ x P ( x ) \forall x P(x) ∀xP(x) ,能得到结论 P ( c ) P(c) P(c) 的一个推理规则,在这里 c c c 是在域上的一个特殊的元素。
全称一般化 是一个给定前提 P ( c ) P(c) P(c) 其中 c c c 是在域上的任意一个元素 ,能得到结论 ∀ x P ( x ) \forall x P(x) ∀xP(x) 的一个推理规则。
特称实例化 是一个给定前提 ∃ x P ( x ) \exists x P(x) ∃xP(x) ,能得到结论 P ( c ) P(c) P(c) 的一个推理规则,在这里 c c c 是在域上使得 P ( c ) P(c) P(c) 成立的一个元素。
特称一般化 是一个给定前提 P ( c ) P(c) P(c) 其中 c c c 是在域上使得 P ( c ) P(c) P(c) 成立的一个元素,能得到结论 ∃ x P ( x ) \exists x P(x) ∃xP(x) 的一个推理规则。
通过将命题推理规则和量词推理规则组合起来,我们就能够推导出大部分的结论。
其中有一个推理形式是经常用到的:
前提 ∀ x ( P ( x ) → Q ( x ) ) \forall x (P(x) \to Q(x)) ∀x(P(x)→Q(x)) ,取一个域中元素 a a a 使得 P ( a ) P(a) P(a) 成立,结论 Q ( a ) Q(a) Q(a) 。
上式称作 全称假言推理 。这是将全称一般化和假言推理组合起来。
另外一个:
前提 ∀ x ( P ( x ) → Q ( x ) ) \forall x (P(x) \to Q(x)) ∀x(P(x)→Q(x)) ,取一个域中元素 a a a 使得 ¬ Q ( a ) \neg Q(a) ¬Q(a) 成立,结论 ¬ P ( a ) \neg P(a) ¬P(a) 。
上式称作 全称拒取式 。这是将全称一般化和拒取式组合起来。
在本章我们介绍证明的一些记号和构造证明法。
主要我们要证明有 ∀ x ( P ( x ) → Q ( x ) ) \forall x (P(x) \to Q(x)) ∀x(P(x)→Q(x)) 这种形式的命题。
定理 是一个永远为真的表达,一般有严格的数学证明。不重要的定理称为命题。我们能 证明 一个定理为真。能用于证明的表达式可以是公理。
公理 人为认为永远为真的命题。
一些不重要的辅助证明的定理也叫做 引理 。
推论 是可以直接由定理推出的命题,不需要额外附加条件。
假说 是可以认为是真的命题,目前既没有证明也没有反例。一旦假说被证明,就称为定理,一旦找到了反例,那么就不是定理。
一般的,数学定理通常表述成全称量词的形式。
一般的,证明一个数学定理通常是证明这个命题在域中均成立。
直接证明法指的是证明一个命题 p → q p \to q p→q ,我们先假设 p p p 成立,然后通过推理规则证明 q q q 成立。
不直接从前提到结论的证明方法叫做间接证明法。
一个有效的间接证明法叫做 换质位推理法 ,要证明命题 p → q p \to q p→q ,我们可以证明它的换质位命题 ¬ q → ¬ p \neg q \to \neg p ¬q→¬p 我们已经证明了这两个命题的等价性。因此,我们以 ¬ q \neg q ¬q 为前提, ¬ p \neg p ¬p 作为结论证明。
除此之外,我们有两种特殊快速证明方法,如果我们能直接证明 p → q p \to q p→q 中 p p p 一定是假的,那么命题 p → q p \to q p→q 也一定是真的,这叫 虚空证明 。同样的,如果我们能直接证明 p → q p \to q p→q 中 q q q 一定是真的,那么命题 p → q p \to q p→q 也一定是真的,这叫 不重要证明 。
如果我们想证明 p p p 成立,假设我们找到了一个矛盾式 q q q 使得 ¬ p → q \neg p \to q ¬p→q 为真。因为 q q q 恒为假,但是 ¬ p → q \neg p \to q ¬p→q 为真。此时 ¬ p \neg p ¬p 为假,这意味着 p p p 为真。那么我们如何找到一个矛盾式 q q q 呢?
因为 r ∧ ¬ r r \wedge \neg r r∧¬r 是一个矛盾式我们能证明 p p p 是真的通过证明 ¬ p → ( r ∧ ¬ r ) \neg p \to (r \wedge \neg r) ¬p→(r∧¬r) 是真的。这是另外一种间接证明法,叫做 反证法 。
我们假设 p p p 是假的,然后推出一个矛盾式 ( r ∧ ¬ r ) (r \wedge \neg r) (r∧¬r) 即可。
要想证明一个双条件式 p ↔ q p \leftrightarrow q p↔q ,我们需要证明 ( p → q ) ∧ ( q → p ) (p \to q) \wedge (q \to p) (p→q)∧(q→p) 。
证明一个全称量词是假的,我们可以寻找一个 特例 。
有一些常见的在证明中的错误,其中有一个称为 循环证明 的错误证明,即用自己证明自己。
正如标题所说,本章只是证明理论的一个开始,我们只介绍了证明有 ∀ x ( P ( x ) → Q ( x ) ) \forall x (P(x) \to Q(x)) ∀x(P(x)→Q(x)) 这种形式的命题的方法,其他命题读者可以查阅相关资料。
在上一节中,我们介绍了证明的一些常用方法,本节作为上一节的延续,介绍一些其他的证明方法和策略。
有时,我们想证明命题:
( p 1 ∨ p 2 ∨ … ∨ p n ) → q (p_1 \vee p_2 \vee \ldots \vee p_n) \to q (p1∨p2∨…∨pn)→q
是困难的,我们可以通过等值变换去证明:
( p 1 → q ) ∧ ( p 2 → q ) ∧ … ∧ ( p n → q ) (p_1 \to q) \wedge (p_2 \to q) \wedge \ldots \wedge (p_n \to q) (p1→q)∧(p2→q)∧…∧(pn→q)
上式的等值的。这种证明称为 全面证明 与 情况证明 的互换。
使用记号 “不失一般性” 代表我们已经证明了普通情况,可以不加其他条件推出特殊情况,这可以简化我们的情况证明。
证明具有 ∃ x P ( x ) \exists x P(x) ∃xP(x) 形式的命题称为存在性证明,一般情况我们寻找一个特例 a a a 使得 P ( a ) P(a) P(a) 成立,此时 a a a 也叫做 目击元素 ,这种证明方法也叫 构造证明 。
同时也存在 非构造证明 的方法,例如我们可以证明它的否定的全称命题为假。
唯一性证明的两个步骤:
同样的,我们也可以证明如果 y y y 也满足命题,那么 x = y x = y x=y 。
有两种常用的证明策略:
有时寻找一个特例是证明或证伪的一个好方法。