本文及其系列文章用于离散数学(1)科目的期末考试复习
推理形式
我们将用自然语句描述的推理关系引入符号,抽象化并以条件式表现出来,就得到了一种推理形式。
比如:
如果$P$,则$Q$。非$Q$,所以非$P$
形式化之后就得到了 :
$((P\rightarrow Q)\land\neg Q)\rightarrow \neg P$
当然,也有一些推理形式是错误的,比如$((P\rightarrow Q)\land\neg P)\rightarrow \neg Q$。这种推理形式我们不太关心。我们关心的是那些前提真则结论必真的推理形式,我们叫它正确的推理形式。
即,给定两个命题公式$A,B$,如果$A$取值为真,那么$B$取值也必为真,那么说$A\rightarrow B$就是一个正确的推理形式。这时候,我们称$A$重言蕴含$B$,或者称$B$为$A$的逻辑推论,并用符号$A\Rightarrow B$表示。
$\Rightarrow$可以理解为我们之前在初高中常见的“推导出”的符号。
基本的推理公式
常用公式
- $P\land(P\rightarrow Q)\Rightarrow Q$⭐️⭐️
假言推理,或者说叫分离规则,最常用的公式
- $(P\rightarrow Q)\land(Q\rightarrow R) \Rightarrow P\rightarrow R$⭐️⭐️
三段论
- $P\land Q\Rightarrow P$⭐️
最基础的公式,常用于分离合取的不同公式
- $P\Rightarrow P\lor Q$⭐️
常用于增加条件,方便三段论规范性
其余常见公式
这里的公式都可以由常用公式推导出。
-
$\neg(P\rightarrow Q)\Rightarrow P$
-
$\neg(P\rightarrow Q)\Rightarrow \neg Q$
-
$\neg P\Rightarrow P\rightarrow Q$
-
$Q\Rightarrow P\rightarrow Q$
-
$\neg P\land(P \lor Q)\Rightarrow Q$
-
$\neg Q\land(P\rightarrow Q)\Rightarrow\neg P$
-
$(P\leftrightarrow Q)\land(Q\leftrightarrow R)\Rightarrow P\leftrightarrow R$
-
$(P\rightarrow R)\land(Q\rightarrow R)\land(P\lor Q)\Rightarrow R$
-
$(P\rightarrow Q)\land(R\rightarrow S)\land(P\lor Q)\Rightarrow Q\lor S$
-
$(P\rightarrow Q)\land(R\rightarrow S)\land(\neg Q\lor \neg S)\Rightarrow \neg P\lor\neg R$
-
$(Q\rightarrow R)\Rightarrow((P\lor Q)\rightarrow(P\lor R))$
-
$(Q\rightarrow R)\Rightarrow((P\rightarrow Q)\rightarrow(P\rightarrow R))$
证明推理公式的一般方法
如果想证明$A\Rightarrow B$,一般方法有两种.一种就是证明$A\rightarrow B$为重言式,另外一种是证明$A\land\neg B$是矛盾式。当然,还有一种更加直观的解释法,直接对公式本身进行解释分析(前提如果为真,如何如何),不过如果考试不要求则一般不用。
另外,如果我们于考场上做题的话,我们一般倾向于分离合取式,然后对于析取式我们把它转化为蕴含式。例如,我们更喜欢看到$\neg A\rightarrow B$而不是$A\lor B$。因为蕴含式可以更加符合我们直观上推导的形式,也更加方便实用假言推理和三段论。事实上,我们做这样类型的题目基本上都是通过前提引入、假言推理、置换、三段论来做的。
推理演算
推理演算规则
一般而言,如果用形式化语言表述的话我们有如下几条规则:
- 前提引入规则:在推理过程中,可以随时引入前提
- 结论引用规则:在推理过程中所得到的中间结论,可以用作后续推理的前提
- 代入规则:在推理的过程中,对重言式中的命题变项可以使用代入规则。
- 置换规则:在推理过程中,命题公式的任何部分公式都可以用与之等值的命题公式来替换
- 分离规则(假言推理):如果已知命题公式$A\rightarrow B$和$A$,则有命题公式$B$
例子
推理演算一般作为考试的一个重点,也是后续学习内容的重要基石。做题技巧比知识点本身更加重要。
例1:证明$(P\rightarrow (Q\rightarrow S))\land(\neg R\lor P)\land Q\Rightarrow R\rightarrow S$
证明:$\\ (1) \neg R\lor P (前提引入)\\ (2)\neg R\rightarrow P (1置换)\\ (3)R(附加前提引入)\\(4)P(2,3分离)\\(5)P\rightarrow (Q\rightarrow S)(前提引入)\\(6)Q\rightarrow S(4,5分离)\\(7)Q(前提引入)\\(8)S(6,7分离)\\(9)R\rightarrow S(条件证明规则)$
上面是一个比较典型的直接推导证明$A\rightarrow B$为重言式的过程。下面是一个尝试证明$A\land\neg B$是矛盾式的题目解法。
例2:证明$(\neg (P\rightarrow Q)\rightarrow \neg (R\lor S))\land((Q\rightarrow P)\lor\neg R)\land R\Rightarrow (P\leftrightarrow Q)$
证明:$\\(1)\neg (P\leftrightarrow Q) (附加前提引入,即要证否的公式引入)\\(2)\neg((P\rightarrow Q)\land(Q\rightarrow P))(1置换)\\(3)\neg(P\rightarrow Q)\lor\neg(Q\rightarrow P)(2置换)\\(4)(Q\rightarrow P)\rightarrow\neg(P\rightarrow Q) (3置换)\\(5)\neg(P\rightarrow Q)\rightarrow\neg(R\lor S)(前提引入)\\(6)(Q\rightarrow P)\rightarrow \neg(R\lor S)(4,5三段论)\\(7)(Q\rightarrow P)\lor\neg R(前提引入)\\(8)R\rightarrow(Q\rightarrow P)(7置换)\\(9)R\rightarrow \neg(R\lor S)(6,8三段论)\\(10)R(前提引入)\\(11)\neg(R\lor S)(9,10分离)\\(12)\neg R\land\neg S(11置换)\\(13)\neg R(12推导)\\(14)R\land\neg R(10,13推导)\\(15)矛盾(14推导)$
归结推理法
归结推理法的精髓就是,如果想要证明$A\Rightarrow B$,那么可以尝试证明$A\land\neg B$是矛盾式。
一般而言,归结推理法有以下几个大致不变的步骤。
- 建立子句集$S$。将$A\land\neg B$化成合取范式,然后把所有的子句放进$S$,构成子句集合。
- 对$S$做归结。归结的意思通过例子来展现比较直观:如果$S$中有两个子句$A=P\lor X,B=\neg P\lor Y$,那么对$A,B$做归结,得到归结式$X\lor Y$,并将这个归结式放入$S$中。
- 重复2,直至出现了矛盾式$\Box$。
给出例子可能更加好理解也更加直观。
例:证明$((P\rightarrow Q)\land(Q\rightarrow R))\Rightarrow (P\rightarrow R)$
证明:$\\$子句集为$S=\{\neg P\lor Q,\neg Q\lor R,P,\neg R\}\\$归结过程为:$\\(1)\neg P\lor Q\\(2)\neg Q\lor R\\(3)\neg P\lor R(1,2归结)\\(4)P\\(5)R(3,4归结)\\(6)\neg R\\(7)\Box(5,6归结)$