离散数学——命题与逻辑

命题逻辑

命题逻辑是关于数学表达方面的研究。

命题

命题 是具有声明陈述性的语句(也就是说,陈述一个事实),并且不是真的就是假的。

命题变量 是一个表示命题的变量,就像代数中表示数字的变量一样。

命题变量通常使用 p,q,r,s,…p,q,r,s,\ldotsp,q,r,s,… 等字母表示。如果一个命题是真的那么它具有 真值 记为 T ,否则具有 假值 记为 F

研究这类关于命题的问题的领域称为 命题演算 或者 命题逻辑

复合命题 是将已经存在的命题通过 逻辑操作符 连接起来组成的新命题。

定义:让 ppp 是一个命题。则 ppp 的否定记为 ¬p\neg p¬p 有时也记为 pˉ\bar{p}pˉ​ ,是陈述:

“不是 ppp 的情况。”

≠p\neq p​=p 读作“非 ppp ”,它的真值和 ppp 相反。

下表列出了 ppp 与 ¬p\neg p¬p 的 真值表 ,每一行都是 ppp 一种真值情况和对应的 ≠p\neq p​=p 的真值情况 :

ppp ¬p\neg p¬p
T F
F T

命题的否定也可以看做是 否定运算符 作用在命题上的结果。否定运算符是逻辑运算符的一种,逻辑运算符也称为 联结词

定义:令 ppp 和 qqq 为命题。两个命题的 合取 记为 p∧qp \wedge qp∧q 是命题 “ ppp 和 qqq ”。合取命题的真值为真,当且仅当 ppp 和 qqq 均为真。

定义:令 ppp 和 qqq 为命题。两个命题的 析取 记为 p∨qp \vee qp∨q 是命题 “ ppp 和 qqq ”。合取命题的真值为假,当且仅当 ppp 和 qqq 均为假。

下表展示了合取运算符和析取运算符的真值表:

ppp qqq p∧qp \wedge qp∧q p∨qp \vee qp∨q
T T T T
T F F T
F T F T
F F F F

在这里我们需要区分一下 “或” 和 “异或”,“或” 指的是两种均可而“异或”指的是两者中只能有一个成立。

定义:令 ppp 和 qqq 为命题。两个命题的 异或 记为 p⊕qp \oplus qp⊕q 是命题 “ ppp 异或 qqq ”。异或命题的真值为真,当且仅当 ppp 和 qqq 只有一个为真。

下面是异或的真值表:

ppp qqq p⊕qp \oplus qp⊕q
T T F
T F T
F T T
F F F

条件语句

条件语句是另外一个组合命题的方式。

定义:令 ppp 和 qqq 为命题。那么 条件语句 p→qp \to qp→q 指的是“如果 ppp 那么 qqq ”。条件语句的真值为假,当且仅当 ppp 为真 qqq 为假。 ppp 称为假设、先行词、前提, qqq 称为结论或结果。

p→qp \to qp→q 被称为条件式是因为我们断言 qqq 为真在 ppp 成立的前提下。所以条件式也称为蕴含式。

下面是蕴含式的真值表:

ppp qqq p→qp \to qp→q
T T T
T F F
F T T
F F T

定义:令 ppp 和 qqq 为命题。那么 双条件语句 p↔qp \leftrightarrow qp↔q 指的是“ ppp 成立,当且仅当 qqq 成立”。条件语句的真值为真,当且仅当 ppp 的真值和 qqq 的真值相同。也称为等值式。

下面是等值式的真值表:

ppp qqq p↔qp \leftrightarrow qp↔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¬ 111
∧\wedge∧ 222
∨\vee∨ 333
→\to→ 444
↔\leftrightarrow↔ 555

逻辑位运算

在计算机中,通常用一个 二进制位 表示一个真值,即 111 代表 T 而 000 代表 F 。通常,一个 布尔型变量 的取值只有两种,即真和假。可以用一个二进制位表示一个布尔型变量。

逻辑运算符 ∧\wedge∧ 、 ∨\vee∨ 、 ⊕\oplus⊕ 和 ¬\neg¬ 分别可以用二进制运算AND、OR、XOR和NOT表示。

定义:一个 二进制串 是一个只包含 000 和 111 的序列。

我们定义按位与、按位或、按位异或和按位取反,即分别对二进制串的每一个对应位做与、或、异或、取反运算。

命题及其应用

命题的应用有:

  1. 将自然语言翻译成逻辑命题;
  2. 系统设计(检查是否存在逻辑错误,即自相矛盾的地方);
  3. 布尔搜索(带条件的搜索);
  4. 解决逻辑难题;
  5. 逻辑电路。

命题的等值演算

介绍

在代数学中经常通过将一个方程等值变换使得计算方便,在命题演算中也有相同的方法,两个形式不同的命题却有着相同的真值表是可能的,紧接着我们将对他们进行分类。

定义:一个复合命题总是真的,不管其中命题变量的真值情况如何,那么称为 重言式 ;同样,一个复合命题总是假的,不管其中命题变量的真值情况如何,那么称为 矛盾式 。一个复合命题既不是重言式也不是矛盾式,那么称为 偶然式

逻辑等值

两个复合命题在所有可能的情况下真值均相同,那么称为 逻辑等值

定义:两个复合命题 ppp 和 qqq 是逻辑等值的,当且仅当 p↔qp \leftrightarrow qp↔q 是重言式。记号 p≡qp \equiv qp≡q 说明 ppp 和 qqq 是逻辑等值的。

注意, ≡\equiv≡ 并不是逻辑联结词,但是它说明 p↔qp \leftrightarrow qp↔q 是重言式,有时候也用 ⇔\Leftrightarrow⇔ 代替。

在这里说明几个重要的等值式。

¬(p∨q)\neg (p \vee q)¬(p∨q) 和 ¬p∧¬q\neg p \wedge \neg q¬p∧¬q 逻辑等值,这条也被称为 德摩根律

p→qp \to qp→q 和 ¬p∨q\neg p \vee q¬p∨q 等值。

一般的,如果两个复合命题具有 nnn 个命题变量,那它们的比较真值表就具有 2n2^n2n 行。

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≡pp \wedge T \equiv pp∧T≡p 同一律
p∨F≡pp \vee F \equiv pp∨F≡p 同一律
p∧F≡Fp \wedge F \equiv Fp∧F≡F 零律
p∨T≡Tp \vee T \equiv Tp∨T≡T 零律
p∧p≡pp \wedge p \equiv pp∧p≡p 幂等律
p∨p≡pp \vee p \equiv pp∨p≡p 幂等律
¬(¬p)≡p\neg (\neg p) \equiv p¬(¬p)≡p 双重否定律
p∨q≡q∨pp \vee q \equiv q \vee pp∨q≡q∨p 交换律
p∧q≡q∧pp \wedge q \equiv q \wedge pp∧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≡Tp \vee \neg p \equiv Tp∨¬p≡T 排中律
p∧¬p≡Fp \wedge \neg p \equiv Fp∧¬p≡F 矛盾律

关于条件式和双条件式还有一些常用的等值式,在这里就不再列举了。读者只需要掌握上面的几个即可。

对于结合律和德摩根律,它们可以扩展到任意个命题变量的情况,对于任意个命题变量的情况也同样适用。

德摩根律

德摩根律告诉我们,合取的否定是析取,析取的否定是合取。这是一个非常重要的结论。

构造新的逻辑等值式

我们可以使用上面的等值变换构造新的逻辑等值式。

命题的满足性

如果一个复合命题是 可满足 的,那么存在一组命题变量的取值,使得这个命题的真值为真。如果不存在,那么这个命题恒为假,即 不可满足 也是矛盾式。这组使得这个命题的真值为真的一组命题变量的取值也称为满足性问题的一个

满足性的应用

满足性在以下方面有重要的应用:

  1. 机器人;
  2. 软件测试;
  3. 计算机辅助设计;
  4. 机器视觉;
  5. 集成电路;
  6. 计算机网络;
  7. 基因学。

解决可满足问题

目前为止唯一知道解决一般的可满足问题的方法就是枚举每一个命题变量的真值情况。

谓词和量词

谓词和量词介绍

到目前为止,我们没有办法来表达“所有”这个陈述。同样,也无法表达“存在”这个陈述。本节我们就要介绍表达“所有”和“存在”这两个陈述。

本章我们将介绍一种更有力的逻辑类型,称为谓词逻辑。我们将会介绍什么是谓词,以及量词,使我们能准确的表达“所有”和“存在”这两个陈述。

谓词

下面的表述:

“ x>3x \gt 3x>3 ”,“计算机 xxx 工作正常”。

都是数学中的断言,在计算机程序中或是系统规范中,这些断言既不是真的又不是假的在变量没有确定的时候。

表述“ x>3x \gt 3x>3 ”有两个部分,第一个部分是变量 xxx 是表达的 主语 。第二部分,“大于 333” 是句子的 谓语 。指的是主语拥有的一种属性。我们可以将表述“ x>3x \gt 3x>3 ”记为 P(x)P(x)P(x) , PPP 就是谓语, xxx 为主语, P(x)P(x)P(x) 也可说为是 xxx 的一个 命题函数 。一旦 xxx 确定,那么 P(x)P(x)P(x) 就是一个具有确定真值的命题。

命题函数不一定只有一个变量,也可拥有多个变量,例如表述“ x=y+3x = y + 3x=y+3 ” 就可以记为 Q(x,y)Q(x,y)Q(x,y) 。

一般的,一个带有 nnn 个变量 x1,x2,…,xnx_1,x_2,\ldots,x_nx1​,x2​,…,xn​ 的表述能够被写成 P(x1,x2,…,xn)P(x_1,x_2,\ldots,x_n)P(x1​,x2​,…,xn​) 。

一个表述具有 P(x1,x2,…,xn)P(x_1,x_2,\ldots,x_n)P(x1​,x2​,…,xn​) 的形式是命题函数 PPP 在 nnn 元组 (x1,x2,…,xn)(x_1,x_2,\ldots,x_n)(x1​,x2​,…,xn​) 下的值。 PPP 称为 nnn 元谓词。

在计算机编程中,在执行一组语句前的条件称为 前置条件 ,在执行完毕之后的条件称为 后置条件 ,判断一个程序是否正确我们可以假设前置条件均成立,如果后置条件相应成立,那么可以认为这个程序是正确的。

量词

这是一种重要的方法,叫做 量词 ,根据一个谓词创建一个命题。量词将变量控制在一个范围之内。在自然语言中,通常用“所有”、“一些”、“没有”、“很少”等词语描述。我们只关心两种量词:

  1. 全称量词 ,告诉我们命题函数对于任意的变量均为真;
  2. 特称量词 ,告诉我们命题函数对于一个或者多个变量均为真。

在逻辑学中,处理谓词和量词的领域称为 谓词演算

许多数学表达为真对于所有的在特定区域内的变量取值,这个区域称为 论域 ,简称为 。这个域必须是确定的,全称量词才有意义,也就是说域决定全称量词,全称量词也决定域。

定义:对于 P(x)P(x)P(x) 的全称量词表述为:

“ P(x)P(x)P(x) 对于任何的在域中的 xxx ”

记号 ∀xP(x)\forall x P(x)∀xP(x) 就是指 P(x)P(x)P(x) 的全称量词。 ∀\forall∀ 称为 全称量词 。读作“对于任意的 xxx 有 P(x)P(x)P(x) ”,如果有一个 xxx 的取值使得 P(x)P(x)P(x) 为假,那么称为 ∀xP(x)\forall x P(x)∀xP(x) 的一个 特例

命题 ∀xP(x)\forall x P(x)∀xP(x) 是假的,当且仅当域中存在特例。默认的,我们的域都是非空的,我们不讨论空域,因为这是没有意义的。

全称量词也可表述为合取的形式,例如命题 ∀xP(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)≡∀xP(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) 对于存在一个在域中的 xxx ”

记号 ∃xP(x)\exists x P(x)∃xP(x) 就是指 P(x)P(x)P(x) 的特称量词。 ∃\exists∃ 称为 特称量词

同样的,域必须确定,特称量词才有意义。 ∃xP(x)\exists x P(x)∃xP(x) 为真,当且仅当存在一个域中的 xxx 使得 P(x)P(x)P(x) 成立。

特称量词也可表述为析取的形式,例如命题 ∀xP(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)≡∃xP(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)

我们现在已经介绍了全称量词和特称量词,但是我们没有办法控制数量,例如“只存在 555 个 xxx 使得 P(x)P(x)P(x) ”。记号 ∃!\exists !∃! 或者 ∃1\exists_1∃1​ 就是 唯一量词 ,命题 ∃!xP(x)\exists ! x P(x)∃!xP(x) 或者 ∃1xP(x)\exists_1 x P(x)∃1​xP(x) 表示只在域中存在唯一的 xxx 使得 P(x)P(x)P(x) 。注意到,我们可以用全称量词和特称量词表述唯一性,因此可以避免使用唯一量词,但是在某些地方,使用唯一量词更加方便。

限制域上的量词

表述 ∀x<0(x2>0)\forall x \lt 0 (x^2 \gt 0)∀x<0(x2>0) 的含义为,在限制域 x<0x \lt 0x<0 上, x2>0x^2 \gt 0x2>0 均成立。等价于 ∀x(x<0→x2>0)\forall x (x \lt 0 \to x^2 \gt 0)∀x(x<0→x2>0) ,也就是说在限制域上的全称量词可以写作是在域上的全称量词加条件式。

同样,表述 ∃z>0(z2=2)\exists z \gt 0 (z^2 = 2)∃z>0(z2=2) 的含义为,在限制域 z>0z \gt 0z>0 上,存在 xxx 使得 z2=2z^2 = 2z2=2 成立。等价于 ∃x(z>0∧z2=2)\exists x (z \gt 0 \wedge z^2 = 2)∃x(z>0∧z2=2) ,也就是说在限制域上的特称量词可以写作是在域上的特称量词加合取式。

量词的优先级

量词比任何逻辑操作符的优先级都大。

绑定变量

当量词作用在变量 xxx 上时,我们说变量 xxx 是 被绑定的 。如果一个变量没有被绑定或等于一个特定的值,那么这个变量是 自由的

一个命题函数中的变量,要么是被绑定的要么是被赋予特殊值的,就是被全称、特称量词控制或者被赋值。

在逻辑表达中,应用量词的部分称为 作用域 。也就是说,不在作用域中的变量就是自由变量。

带有量词和谓词的逻辑等值

定义:两个带有带有量词和谓词的命题逻辑等值,当且仅当它们有相同的真值无论它们使用的谓词是什么也无论域是什么。我们使用记号 S≡TS \equiv TS≡T 来表达 SSS 和 TTT 逻辑等值。

证明两个带有量词和谓词的命题逻辑等值,我们先假设 SSS 成立,然后推出 TTT 成立,第二假设 TTT 成立,然后推出 SSS 成立。

量词的否定

量词的否定是一组重要的逻辑等值,即下面的两式子:

  1. ¬∀xP(x)≡∃x¬P(x)\neg \forall x P(x) \equiv \exists x \neg P(x)¬∀xP(x)≡∃x¬P(x)
  2. ¬∃xP(x)≡∀x¬P(x)\neg \exists x P(x) \equiv \forall x \neg P(x)¬∃xP(x)≡∀x¬P(x)

上面的两个式子称为 量词的德摩根律

我们把全称量词写成是合取的形式,然后运用德摩根律,就会得到右边的形式,所以称为量词的德摩根律。

将自然语言翻译成逻辑表达式

使用上述规则,可以将自然语言翻译成逻辑表达式。

在系统规范中使用量词

将上文的系统规范加上量词。

逻辑编程

一种很重要的编程语言是关于逻辑的。 Prolog 是一个关于逻辑的编程语言,广泛用于人工智能方面。在 Prolog 中,有两种类型的表述,一种为 Prolog 事实 ,另一种为 Prolog 规则 。Prolog 事实定义了一些特殊的元素使谓词是成立的,Prolog 规则通过利用已知的Prolog 事实去定义新的谓词。

嵌套量词

嵌套量词介绍

在上一节中我们介绍了全称量词和特称量词,在逻辑学中,量词是可以嵌套的,本节我们介绍 嵌套量词

用循环的思维思考嵌套量词是一个有效的方式,例如,考虑量词嵌套 ∀x∀y\forall x \forall y∀x∀y 外层循环是遍历了所有的 xxx 对于固定的 xxx 内层循环是遍历了所有的 yyy 。

量词的顺序

在一个逻辑表达式中通常有多个量词,此时量词的顺序就显得尤为重要,如果不是全都是全称量词或者特称量词,注意这个例子:

∀x∃yP(x,y)\forall x \exists y P(x,y)∀x∃yP(x,y) 并不和 ∃y∀xP(x,y)\exists y \forall x P(x,y)∃y∀xP(x,y) 等价。

将数学表述转换成嵌套量词

该部分请读者自行联系。

将嵌套量词转换成自然语言

该部分请读者自行联系。

将自然语言转换成嵌套量词

该部分请读者自行联系。

嵌套量词的否定

嵌套量词的否定只需要连续使用上述单个量词的否定即可。

推理规则

推理规则介绍

从本章开始,我们将要讲解证明相关的内容。

证明是通过已经存在的事实建立新的为真的数学表述的过程。一个 论点 是一系列的表达式最终得出的一个结论, 合法 指的是我们的结论、最终的表述必须遵循之前为真的表达式或者是前提。

我们也列举出一些错误的推论,称为 谬论

之后,我们将推理规则应用于量词和嵌套量词上。

命题逻辑的合法推理

论点是一些已知真值的命题的集合。而推理指给出一个未知真值的命题,通过论点推理出未知真值的命题的真值情况。

例如我们知道论点 ppp 和 p→qp \to qp→q 为真,那么:

p→qp∴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→qp \to qp→q 和 ppp 均为真,那么 qqq 也为真。我们说具有这种推理形式的的论点是合法的,因为当我们知道前提均为真,那么结论也必定为真。

我们将命题变量替换成我们的命题,这种替换称为将论点替换成 论点形式

定义:论点是一些已知真值的命题的集合,所有但不是最终的命题称为前提,最终的命题称为结论。一个论点是合法的当且仅当它的前提能够退出它的结论。

一个论题形式是一系列带有命题变量的复合命题。一个论题形式是合法的当且仅当,无论命题变量是什么样的,当前提均成立时,结论也成立。

合法的论题形式也可定义成 (p1∧p2∧…∧pn)→q(p_1 \wedge p_2 \wedge \ldots \wedge p_n) \to q(p1​∧p2​∧…∧pn​)→q 是永真式,此时 p1,p2,…,pnp_1,p_2,\ldots,p_np1​,p2​,…,pn​ 称为前提, qqq 称为结论。

命题逻辑的推理规则

我们可以通过一些常用的论题形式进行推论,这些常用的论题形式称为 推理规则

重言式 (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) 决定式

使用推理规则构建论点

例如:

我们知道前提:

  1. ¬p∧q\neg p \wedge q¬p∧q
  2. r→pr \to pr→p
  3. ¬r→s\neg r \to s¬r→s
  4. s→ps \to ps→p

结论: ttt 。

下面是推理过程:

1:¬p∧q前提引入2:¬p化简律 13:r→p前提引入4:¬r拒取律 2 35:¬r→s前提引入6:s假言推理 4 57: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​

在这里我们通过简单的 888 步构造出新的合法推理形式,但是要通过真值表验证却需要 252^525 行。

决定式

在计算机科学自动证明和机器证明方面,经常使用的一个推理规则就是 决定式

((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∨rq \vee rq∨r 称为归结式,在这里如果令 q=rq = rq=r 得到:

((p∨q)∧(¬p∨q))→q((p \vee q) \wedge (\neg p \vee q)) \to q ((p∨q)∧(¬p∨q))→q

令 r=Fr = Fr=F 那么就是析取三段论。

在自动证明和机器证明方面,决定式将作为唯一的推理规则使用,这是因为一个命题总可以写成是多个从句相合取。

一个 从句 指的是多个命题变量或命题变量的否定通过析取组合在一起。

我们将我们的前提转换成从句相合取的形式,就可以通过决定式进行自动推导。

谬论

将前提 p→qp \to qp→q 和 qqq 和结论 ppp 作为一个合法的推理形式,这种类型叫做 结论谬论

将前提 p→qp \to qp→q 和 ¬p\neg p¬p 和结论 ¬q\neg q¬q 作为一个合法的推理形式,这种类型叫做 否定假设谬论

量词的推理规则

全称实例化 是一个给定前提 ∀xP(x)\forall x P(x)∀xP(x) ,能得到结论 P(c)P(c)P(c) 的一个推理规则,在这里 ccc 是在域上的一个特殊的元素。

全称一般化 是一个给定前提 P(c)P(c)P(c) 其中 ccc 是在域上的任意一个元素 ,能得到结论 ∀xP(x)\forall x P(x)∀xP(x) 的一个推理规则。

特称实例化 是一个给定前提 ∃xP(x)\exists x P(x)∃xP(x) ,能得到结论 P(c)P(c)P(c) 的一个推理规则,在这里 ccc 是在域上使得 P(c)P(c)P(c) 成立的一个元素。

特称一般化 是一个给定前提 P(c)P(c)P(c) 其中 ccc 是在域上使得 P(c)P(c)P(c) 成立的一个元素,能得到结论 ∃xP(x)\exists x P(x)∃xP(x) 的一个推理规则。

组合命题推理规则和量词推理规则

通过将命题推理规则和量词推理规则组合起来,我们就能够推导出大部分的结论。

其中有一个推理形式是经常用到的:

前提 ∀x(P(x)→Q(x))\forall x (P(x) \to Q(x))∀x(P(x)→Q(x)) ,取一个域中元素 aaa 使得 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)) ,取一个域中元素 aaa 使得 ¬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→qp \to qp→q ,我们先假设 ppp 成立,然后通过推理规则证明 qqq 成立。

换质位推理法

不直接从前提到结论的证明方法叫做间接证明法。

一个有效的间接证明法叫做 换质位推理法 ,要证明命题 p→qp \to qp→q ,我们可以证明它的换质位命题 ¬q→¬p\neg q \to \neg p¬q→¬p 我们已经证明了这两个命题的等价性。因此,我们以 ¬q\neg q¬q 为前提, ¬p\neg p¬p 作为结论证明。

除此之外,我们有两种特殊快速证明方法,如果我们能直接证明 p→qp \to qp→q 中 ppp 一定是假的,那么命题 p→qp \to qp→q 也一定是真的,这叫 虚空证明 。同样的,如果我们能直接证明 p→qp \to qp→q 中 qqq 一定是真的,那么命题 p→qp \to qp→q 也一定是真的,这叫 不重要证明

反证法

如果我们想证明 ppp 成立,假设我们找到了一个矛盾式 qqq 使得 ¬p→q\neg p \to q¬p→q 为真。因为 qqq 恒为假,但是 ¬p→q\neg p \to q¬p→q 为真。此时 ¬p\neg p¬p 为假,这意味着 ppp 为真。那么我们如何找到一个矛盾式 qqq 呢?

因为 r∧¬rr \wedge \neg rr∧¬r 是一个矛盾式我们能证明 ppp 是真的通过证明 ¬p→(r∧¬r)\neg p \to (r \wedge \neg r)¬p→(r∧¬r) 是真的。这是另外一种间接证明法,叫做 反证法

我们假设 ppp 是假的,然后推出一个矛盾式 (r∧¬r)(r \wedge \neg r)(r∧¬r) 即可。

要想证明一个双条件式 p↔qp \leftrightarrow qp↔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)) 这种形式的命题的方法,其他命题读者可以查阅相关资料。

证明方法和策略

证明方法和策略介绍

在上一节中,我们介绍了证明的一些常用方法,本节作为上一节的延续,介绍一些其他的证明方法和策略。

全面证明与情况证明

有时,我们想证明命题:

(p1∨p2∨…∨pn)→q(p_1 \vee p_2 \vee \ldots \vee p_n) \to q (p1​∨p2​∨…∨pn​)→q

是困难的,我们可以通过等值变换去证明:

(p1→q)∧(p2→q)∧…∧(pn→q)(p_1 \to q) \wedge (p_2 \to q) \wedge \ldots \wedge (p_n \to q) (p1​→q)∧(p2​→q)∧…∧(pn​→q)

上式的等值的。这种证明称为 全面证明情况证明 的互换。

使用记号 “不失一般性” 代表我们已经证明了普通情况,可以不加其他条件推出特殊情况,这可以简化我们的情况证明。

存在性证明

证明具有 ∃xP(x)\exists x P(x)∃xP(x) 形式的命题称为存在性证明,一般情况我们寻找一个特例 aaa 使得 P(a)P(a)P(a) 成立,此时 aaa 也叫做 目击元素 ,这种证明方法也叫 构造证明

同时也存在 非构造证明 的方法,例如我们可以证明它的否定的全称命题为假。

唯一性证明

唯一性证明的两个步骤:

  1. 存在性:存在一个元素 xxx 满足命题。
  2. 唯一性:如果 y≠xy \neq xy​=x ,那么 yyy 就不满足命题。

同样的,我们也可以证明如果 yyy 也满足命题,那么 x=yx = yx=y 。

证明策略

有两种常用的证明策略:

  1. 前向证明,后向证明:前向证明说的是我们从前提出发一步一步推出结论,后向证明说的是我们从结论出发,我们需要什么二级前提才能证明结论,那么我们就去证明二级前提,一步一步推到前提。
  2. 适应证明:我们已经知道一些问题的证明方法,那么我们就能将这个方法用于类似问题的证明。

寻找一个特例

有时寻找一个特例是证明或证伪的一个好方法。

离散数学——命题与逻辑相关推荐

  1. 除非p否则q 除非P否则非Q 只有p才q 彻底搞懂离散数学命题符号化的逻辑 附公务员真题讲解

    语句大全 你要结婚了,女朋友分别对你说了这几句话,你好好捋一捋 1 如果你给我买钻戒,那么我嫁给你 补一下语文: 只有 2 只有你给我买钻戒,我才嫁给你 补一下语文: 除非.才 补一下语文: 否则 3 ...

  2. 离散数学 02.01 命题以及逻辑联结词

    第二章命题逻辑  \color{blue}{第二章 命题逻辑} 数理逻辑是用数学的方法研究思维规律的一门学科.由于它使用了一套符号,简洁地表达各种推理的逻辑关系,因此,数理逻辑一般也称为符号逻辑.数理 ...

  3. 离散数学 命题表达式计算器

    没来得及润色 写的很烂 有时间改成模块化 #include <bits/stdc++.h> //约定用户用'A'~'Z'作为命题变元 其他的视作非法 using namespace std ...

  4. 【二】头歌平台实验-离散数学逻辑与推理

    主要介绍基本逻辑运算,利用逻辑推理解决相关问题. 第1关:命题与逻辑 编程要求:编程得出(P→Q)∧R的真值表的所有结果. #coding=utf-8 import sympy as sym# 定义符 ...

  5. 离散数学第二版计算机系,离散数学 第2版

    图书简介 获奖情况:"十一五"国家级规划教材.国家级精品课配套教材 配套资源:电子课件.教学思路流程图 作者简介: 王元元,解放军理工大学教授,国家级教学名师,中国人工智能学会离散 ...

  6. 【离散数学】第一章 —— 基础:逻辑和证明

    嗨喽,宝子们,好久没有更新了.首先声明,我绝对没有偷玩hhh,只是因为最近忙着写毕业论文,然后又重新温习离散数学,时间比较紧凑,这不就马不停蹄的来了嘛. 叮叮叮,这将是一个全新的专栏--<离散数 ...

  7. 离散数学在计算机科学中的应用

    自从我们学院进行软件 工程认证后,期末考试的专业课全部是大题.这次离散数学的最后一题是:利用本学期学到的离散数学的知识阐释其在一个软件工程中的应用. 下面说说离散数学的应用. 离散数学在数据结构中的应 ...

  8. C语言与离散数学的结合--逻辑推理

    利用离散数学知识和C语言相关知识 此处有两种类型 1. 根据下面的命题,试用逻辑推理方法确定谁是作案者,写出推理过程. (1)营业员A或B偷了手表: (2)若A作案,则作案不在营业时间: (3)若B提 ...

  9. 浅谈逻辑:编程中最重要的基础

    "英语不好能不能学编程?" "编程是不是对数学要求很高?" 时不时会在公众号后台收到类似的疑问,即:数学/英语是否是学编程先决条件? 我觉得这个问题有点像,身高 ...

最新文章

  1. HTTP中Get与Post的区别
  2. map和hasmap的区别
  3. python九九乘法表求和,平均数,最大值,最小值、金字塔、等边三角形
  4. 【TensorFlow】CNN
  5. 关于MongoDB内存占用不断上升,导致OOM问题
  6. 高通首次演示基于3GPP的5G新空口连接 有望成为全球标准
  7. SVN错误:Attempted to lock an already-locked dir及不能提交.so文件
  8. C#程序读取MAC地址的方法
  9. 学习java第一天 (大白(●—●))
  10. Springboot记录
  11. java 结果用长整数型表示_java 编程 输入正整数n,计算n!结果用长整型数表示
  12. 如何在VMware Workstation上安装Windows Home Server Beta“ Vail”
  13. threejs 透视相机参数解析
  14. [幽默笑话]初中英语书中的LiLei和Hanmeimei应该结婚了吧!(转载)
  15. python json模块_python json模块使用详情
  16. vue手机端回退_从外链回退到vue应用不触发生命周期、beforeRouterEnter等钩子函数的问题...
  17. 练习:根据车牌信息,统计各省车牌持有量
  18. 在cmd中进入mysql的步骤
  19. 拖拽功能之水平拖动图片
  20. SWFObject 设置透明 Flash

热门文章

  1. HDU 多校联合第三场
  2. Hexo(sakura)主题Mashiro大佬同款LOGO修改方法
  3. cnn程序流程图_C# VISIO 画流程图
  4. VREP Remote API工作模式详解(未写完,完成度90%)
  5. 一、使用vue创建项目的详细步骤
  6. Reflex WMS入门系列四十:对某个托盘执行上架,系统不能自动建议货架?
  7. 水经注有哪些单款地图下载器授权
  8. 城市景观生态规划概述
  9. 培训心得--做人做事方式
  10. 【sketchup 2021】草图大师中二维图像交互(jpeg等格式图像的导入、图像的输出、图像导入变得模糊处理方法)与三维图像交互(其他软件导出的三维导入到草图大师、草图大师导出为三维模型】