【离散数学】数理逻辑之命题逻辑


1.数理逻辑

1.1命题逻辑

1.1.1命题定义和逻辑联结词

  命题指的是具有真假意义(要么为真,要么为假)的一句话,它常以陈述句形式出现,而疑问句,感叹句,祈使句等都不是命题。

  1. 你多大了?(疑问句,不是命题)
  2. 出来!(祈使句,不是命题)
  3. 今天真好!(感叹句,不是命题)
  4. 我正在说谎。(不是命题,这是典型的说谎悖论,无法辨明真假)
  5. 1+101=110。(是命题,只要当环境确定,就能辨明真假)
  6. 世界上有外星人。(是命题,虽然不清楚真假,但是的确存在真假)

  如果命题无法进一步分割成更小的命题,那么命题是复合命题;相反的,如果命题能够分割为更小的命题,那么命题是原子命题。我们常用大写字母(比如\(A,B...P_1,P_2\))等表示原子命题

e.g:考虑该命题是否为复合命题:张三不是个法外狂徒。

该命题是复合命题。因为它可以分割为更小的命题。即:张三是个法外狂徒。


下面阐述如何用逻辑联结词将原子命题组合成复合命题

1.否定联结词\(\neg\)\(\bar{}\).

一元运算符。假设存在命题A,那么\(\neg A\)为真当前仅当\(A\)为假。


2.合取联结词\(\wedge\).

二元运算符。假设存在命题A和命题B,那么\(A\wedge B\)为真当且仅当A和B都为真。而通常我们也习惯称\(A\wedge B\)为A且B。


3.析取联结词\(\vee\).

  二元运算符。假设存在命题A和命题B,那么\(A \vee B\)为假当且仅当A和B都为假。而通常我们也习惯称\(A\vee B\)为A或B。

  事实上,自然语言具有二义性,或可以分为可兼或和不可兼或。可兼或的表示符即为\(\vee\),比如明天要么下雨或者我考了90分,这个就可以用可兼或,因为二者可以同时发生。而不可兼指的就是不可以同时发生的两件事,比如我明天9:00钟会在公司上班或我明天9:00会在家里休息,这两件事是不可以同时发生的,所以是不可兼或。不可兼或的符号(就我目前接触到的)有两种,一种貌似不能用LaTeX打出来,它是这个样子:

image

而另外一种不可兼或的符号表示为:\(\oplus\).这与数字电路的异或符号是相同的。当然,也可以说不可兼或和异或就是同一个东西。

事实上,\(P \oplus Q\)\((P \vee Q) \wedge \neg(P \wedge Q)\)以及\((P \vee \neg Q) \vee(\neg P \vee Q)\)是等价的,因为不管P和Q的真值如何,这三者的真值总是相同的(可参考1.1.3节等价的定义)。


合取联结词和析取联结词的符号可以采用下列方式来记忆:

  1. 合取联结词\(\wedge\):其实\(\wedge\)和合的上半部分是一样的,因为合字不是“一口”嘛,那个其实长得就像合取的符号。
  2. 析取联结词\(\vee\):因为析谐音西,双V为W,而W是West的首字母。

4.条件联结词\(\rightarrow\).

  二元运算符。假设存在命题A和B,那么\(A \rightarrow B\)为假,当且仅当A为真且B为假。A通常被称为为条件或前因,B通常被称为是结果或结论。在数理逻辑中,\(A\)和B不一定有联系,比如A:太阳从西方升起,B:张三数学考试拿了满分。那么\(A \rightarrow B\)即为真,尽管A和B在现实生活中并没有什么联系。而且数理逻辑规定,当前因为F或者结论为T时,整个\(A \rightarrow B\)即为真。我个人习惯将\(A \rightarrow B\)说成A推B,或者A蕴含B。

  对于命题\(A \rightarrow B\)而言,我们常说:\(B \to A\)是它的逆命题,\(\neg A \to \neg B\)是它的否命题,\(\neg B \to \neg A\)是它的逆否命题。原命题和逆否命题是等价的,逆命题和否命题是等价的(可参考1.1.3节等价的定义)。


5.双条件联结词\(\leftrightarrow\).

  二元运算符。假设存在命题A和B,那么\(A \leftrightarrow B\)为真,当且仅当A和B同为真,或者同为假。在数理逻辑中,A和B在现实生活中不一定有联系。我个人习惯将\(A \leftrightarrow B\)说成A当且仅当B或者说A与B等价的,而事实上,到后面你会发现\(A \leftrightarrow B\)形式的命题和\((A \rightarrow B) \wedge (B \rightarrow A)\)形式的命题是等价的(可参考1.1.3节等价的定义)。


再次强调,在数理逻辑中,任何二元运算符两侧的命题A和命题B在现实生活中不一定具有联系

关于蕴含,等价,它们即可以指\(\to,\leftrightarrow\),也可以指\(\implies,\iff\)。到了1.1.3节就明白它们之间的区别了,以后根据具体语境进行区分即可。


1.1.2命题公式

  由1.1.1节可以得知,我们可以用大写符号去描述原子命题。比如P:Dio不是人。这是大写符号的一种用法,大写符号的另外一种用法就是指代任意的原子命题,此时的大写符号被称作是命题变元。命题和命题变元的区别是命题是有真值的,而命题变元是无法确定真值的。

考虑如下Java代码:

public class PropositionLogic {

    // 主函数
    public static void main(String[] args) {
        //  A B 均为命题 因为它们有真假值
        boolean A = true;// A:太阳从东方升起
        boolean B = false;// B:人长生不老
        System.out.println(PropositionFormula(A,B));// true
    }

    /**
     *
     * @param A 命题变元A 不能确定其真值
     * @param B 命题变元B 不能确定其真值
     * @return A 异或 B 不能确定其真值
     */
    private static boolean PropositionFormula(boolean A , boolean B){
        // (A ∨ B) ∧  ¬ (A ∧ B)
        return (A ||  B) && !( A && B);
    }

}

那么命题公式是什么呢?简单来说,命题公式就是用命题变元,T和F(表示真和假),逻辑联结词,括号组成的一个符号串。命题公式和命题变元一样不能确定真假值。严谨来说,命题公式是由有限步下列规则形成的符号串:

  1. A,B,C这些命题变元代表着命题公式。T和F也代表命题公式。
  2. 如果A是命题公式,那么\((\neg A)\)也是命题公式。
  3. 如果A和B是命题公式,那么\((A \wedge B)\),\((A \vee B)\)\((A \rightarrow B)\)\((A \leftrightarrow B)\)也是命题公式。

这里强调有限步骤是说,有限步骤内形成的命题公式才有讨论的意义。此外,我们常称在逐渐使用规则1,2,3的过程中所得到的命题公式为最后形成的命题公式的子公式

  比如\((P \to (\neg(Q \vee R)))\)的形成过程是这样的:

  1. P是命题公式
  2. Q是命题公式
  3. R是命题公式
  4. \((Q \vee R )\)是命题公式
  5. \((\neg(Q \vee R ))\)是命题公式
  6. \((P \to (\neg(Q \vee R)))\)是命题公式

之所以加括号是为了确保运算顺序,但是这样看着很麻烦。所以就又做了一些规定:

  1. 最外层括号可以去掉.
  2. 制定优先级从大到小为:\(\neg,\wedge,\vee,\to,\leftrightarrow\).

那么\((P \to (\neg(Q \vee R)))\)就可以看做是\(P \to \neg(Q \vee R)\).其实这个和数学上的加减乘除差不多。

  这里再次强调,命题公式本身不能确定真值或者说没有真值可言,只有给命题公式的命题变元进行赋值(即T或F),命题公式才有真值可言。好比函数\(f(x)=x+1\),只有当x确定了,你才知道\(f(x)\)是什么值,而命题公式也是如此。所以,命题公式也可以看做是n元函数,不过它的每个变元的取值只有\(\{T,F\}\),而值域也只有\(\{T,F\}\)罢了。

  而且,如果命题公式有n个命题变元,那么就有\(2^n\)种真值赋值方式(每个命题变元要么取T,要么取F)。如果在\(2^n\)种真值赋值下,命题公式恒为真,那么称命题公式为永真式(或重言式),如果在\(2^n\)种真值赋值下,命题公式恒为假,那么称命题公式为永假式(或矛盾式)。假如至少存在一种赋值使得命题公式为真,那么则称命题公式为可满足式。显然,只要命题公式不是永假式,那么它必然是可满足式。


1.1.3等价与蕴含

  对于给定的命题公式A和B,假设\(P_1,P_2,P_3...P_n\)是命题公式A和B出现的全部命题变元。如果对于这些变元的任意的真值指派下,命题公式A和B的真值始终是保持相同的。那么称A与B等价,记做\(A \iff B\)或者\(A =B\)。当然,这里说的等价和\(\leftrightarrow\)并不是同一个意思,后者是逻辑联结词,注意语境区分即可。

  比如之前说的命题公式\(A \leftrightarrow B\)\((A \rightarrow B) \wedge (B \rightarrow A)\)就是等价的,因为在A和B的任意真值指派下,二者的真值都是相同的。下面将阐述一些常见的等价公式:

  1. 分配律\(P\vee(Q \wedge R)=(P \vee Q) \wedge (P \vee R)\)\(P \wedge(Q \vee R)=(P \wedge Q) \vee (P \wedge R)\)。当然,准确来讲这个是左分配律,同样地右分配律也是成立的,这里就不赘述。
  2. 德.摩根律:\(\neg(P \wedge Q)=\neg P \vee \neg Q\)\(\neg(P \vee Q)=\neg P \wedge \neg Q\).对于德.摩根律的推广如下:
    • \(\neg (P_1 \wedge P_2\wedge P_3...\wedge P_n)=\neg P_1 \vee\neg P_2 \vee\neg P_3... \vee \neg P_n\)
    • \(\neg (P_1 \vee P_2\vee P_3...\vee P_n)=\neg P_1 \wedge\neg P_2 \wedge\neg P_3... \wedge \neg P_n\)
  3. 吸收律:\(P \wedge (P \vee Q)=P\)\(P\vee (P \wedge Q)=P\)
  4. 对于条件命题(即\(\to\))的逻辑等价式:
    • \(P \to Q=\neg P \vee Q\)
    • \(P \to Q=\neg Q \to \neg P\)(即原命题和逆否命题等价)
    • \(P \vee Q=\neg P \to Q\)
    • \(P \wedge Q=\neg(P \to \neg Q)\).
    • \(P \to (Q \to R) = (P \wedge Q) \to R\)
  5. 对于双条件命题(即\(\leftrightarrow\))的逻辑等价式:
    • \(P \leftrightarrow Q = (P \to Q) \wedge (Q \to P)\)
    • \(P \leftrightarrow Q = \neg P \leftrightarrow \neg Q\)
    • \(P \leftrightarrow Q=(P \wedge Q) \vee (\neg P \wedge \neg Q)\)
    • \(\neg (P \leftrightarrow Q)=P \leftrightarrow \neg Q\)

关于这些基本的等价公式,可以通过真值表进行验证。


接下来,阐述等价定理和置换定理:

等价定理:\(A \iff B\)当且仅当\(A \leftrightarrow B\)是重言式(永真式)。

证明如下:一方面,根据命题公式等价的定义,对于命题公式A和B含及的所有变元的任意真值指派下,A和B的真值都是一样的,即A与B同真或同假,那么可以推出\(A \leftrightarrow B\)是重言式。

另一方面,\(A \leftrightarrow B\)是重言式,即对于命题公式A和B含及的所有变元的任意真值指派下,\(A \leftrightarrow B\)都为T,这意味着,A和B同真或同假,那么根据命题等价的定义可以推断出\(A \iff B\)

等价定理的作用是揭示了命题等价和重言式之间的关系。如果我们想证明\(A \leftrightarrow B\)是重言式,那么我们只需证明\(A \iff B\)即可。反过来,如果我们想证明\(A \iff B\),那么也可以证明\(A \leftrightarrow B\)是重言式来完成,即证明\(A \leftrightarrow B \iff T\)


置换定理:假设X是命题公式A形成过程中的一个命题公式(即子公式),且\(X\iff Y\),那么将X替换为Y得到的新命题公式B与A是等价的。即\(A \iff B\).

举个例子,对于命题公式\(A:P \to (Q \to R)\),那么\((Q \to R)\)就是命题公式A形成过程中的一个命题公式,而我们知道\(Q \to R \iff \neg Q \vee R\).那么\(P \to (Q \to R) \iff P \to (\neg Q \vee R)\)

现在来整理证明命题公式A和B等价的方法。

1.方法1:采用真值表证明。但是我个人觉得超过3个 (或者说4个)命题变元就没必要用真值表证明了。

2.方法2:采用置换定理+基本等价式证明

3.方法3:证明\(A \leftrightarrow B \iff T\)。不推荐这样做。

补充说明,有时候让你证明某命题公式A为重言式,其实可以看做是让你证明\(A \iff T\).


下面阐述关于蕴含的相关定律:

对于给定的两个命题公式A和B,A蕴含B当且仅当\(A \to B\)为永真式,并记为\(A \implies B\).

当然,\(\implies\)\(\to\)是不一样的,后者是逻辑联结词。对于蕴含,我们更加关心当A为T时,B是否为T,如果B为T,那么我们就能说\(A \implies B\)

证明蕴含可以采用真值表法和\(A \to B \iff T\).除此外,还可以采用逻辑推证法

对于使得A为T的真值指派下,如果也使得B为T,那么即可证明\(A \to B\)为重言式,也即证明\(A \implies B\).当然,如果使得A为F的真值指派,显然\(A \to B\)为T,所以不考虑A为F的情况。反过来说,对于使得B为F的真值指派下,如果也使得A为F,那么也可以证明\(A \to B\)为重言式。

至于是正着来,还是反着来,根据实际情况来定:

e.g证明\(\neg Q \wedge(P \to Q) \implies \neg P\).

证明1:采用逻辑推证:考虑使得\(\neg Q \wedge(P \to Q)\)为T的真值指派I,那么\(Q\)为F,\(P \to Q\)为T,那么P为F,那么\(\neg P\)为T。

证明2:采用逻辑推证:考虑使得\(\neg P\)为F的真值指派I,那么P为T。对于\(\neg Q \wedge(P \to Q)\),若在真值指派I下,Q为T,那么\(\neg Q\)为F,那么\(\neg Q \wedge(P \to Q)\)为F;若在真值指派I下,Q为F,那么\(P \to Q\)为F,那么\(\neg Q \wedge(P \to Q)\)为F,总之,\(\neg Q \wedge(P \to Q)\)为F。

证明3:置换定理+逻辑推证:\(\neg Q \wedge(P \to Q)=\neg Q \wedge(\neg P \vee Q)=\neg Q \wedge\neg P\).即证明\(\neg Q \wedge\neg P \implies \neg P\)。考虑使得\(\neg Q \wedge\neg P\)为T的真值指派I,有\(\neg P\)为T。证明完毕。

证明4:证明\(\neg Q \wedge(P \to Q) \to \neg P \iff T\)

\[\begin{align*} & \quad \neg Q \wedge(P \to Q) \to \neg P \\ & =(\neg Q \wedge(\neg P \vee Q)) \to \neg P \\ & =(\neg Q \wedge\neg P \vee \neg Q \wedge Q) \to\neg P\\ &= (\neg Q \wedge\neg P) \to \neg P \\ & = (Q \vee P) \vee \neg P \\ & = Q \vee (P \vee \neg P) \\ & = Q \vee T \\ & = T \end{align*} \]

现罗列基本蕴含式:

  1. 化简式:\(P \wedge Q \implies Q,P \wedge Q\implies P\)
  2. 附加式:\(P \implies P \vee Q,Q \implies P \vee Q\)
  3. 变形附加式:\(\neg P \implies P \to Q,Q \implies P \to Q\)。不难推出\(\neg P \implies \neg P \vee Q = P \to Q\)\(Q \implies \neg P \vee Q = P \to Q\)
  4. 变形化简式:\(\neg (P \to Q) \implies P,\neg (P \to Q) \implies \neg Q\)。不难推出,由于\(\neg (P \to Q)=P \wedge \neg Q\),所以\(\neg (P \to Q) \implies P\)\(\neg (P \to Q) \implies \neg Q\)
  5. 析取三段论:\(\neg P \wedge (P \vee Q) \implies Q\)。不难推出,因为\(\neg P \wedge (P \vee Q)=\neg P \wedge Q\),所以析取三段论是成立的。
  6. 假言推理:\(P \wedge (P \to Q) \implies Q\)。因为\(P \wedge (P \to Q) =P \wedge (\neg P \vee Q)=P \wedge Q\)
  7. 拒取式:\(\neg Q \wedge (P \to Q) \implies \neg P\)。因为\(\neg Q \wedge (P \to Q) =\neg Q \wedge (\neg P \vee Q)=\neg Q \wedge \neg P\)
  8. 假言三段论:\((P \to Q ) \wedge ( Q \to R) \implies P \to R\)
  9. 二难推理:\((P \vee Q) \wedge(P \to R) \wedge(Q \to R) \implies R\)

我个人觉得至少需要记住1.化简式2.附加式。8.假言三段论:如果P推Q且Q推R,那么必然推出P推R。9.二难推理:如果P推R,如果Q推R,那么只要其中P或Q成立,那么就有R成立。当然,有必要的话也可以记住6假言推理,7拒取式。

将基本蕴含式考虑在内,那么我们可以有另外一种证明\(A \implies B\)的方式,即\(A =C=D...\implies E \implies F =G =B\)


关于\(A \iff B\)\(A \implies B\)\(B \implies A\)之间的关系,有以下定理:

\(A \iff B\)当且仅当\(A \implies B\)\(B \implies A\)

这个很显然,\(A \leftrightarrow B\)\((A \to B) \wedge (B \to A)\)是等价的。一方面\(A \iff B\)当且仅当\(A \leftrightarrow B \iff T\),即\((A \to B) \wedge (B \to A) \iff T\).那么有\(A \to B \iff T\)\(B \to A \iff T\),所以\(A \implies B\)\(B \implies A\)。另一方面,就不用证了。


简单总结一下,证明命题公式\(A\)\(B\)等价,可以采用置换定理,真值表法(即任意的真值指派下,命题公式A和B的真值是相同的),当然,也可以通过证明\(A \leftrightarrow B \iff T\),但是这种方法比较少用。

而证明\(A \implies B\),可以采用逻辑推证,真值表法(即任意的真值指派下,\(A \to B\)为重言式。),证明\(A \to B \iff T\),或者采用这种方式\(A =C=D...\implies E \implies F =G =B\)


1.1.4功能完备集

  功能完备集指的是一个逻辑联结词的集合,在该集合下,所有的命题公式都能由该集合中的逻辑联结词表示。常见的功能完备集如:\(\{\vee,\wedge,\neg\}\).这个功能完备集常用来证明等价和蕴含,因为\(\to ,\leftrightarrow\)都是能由它们转化的。

  而极小的功能完备集指的是一个功能完备集,并且该功能完备集的任意真子集都不能表示所有的命题公式。常见的极小功能完备集如\(\{\vee,\neg\}\)\(\{\wedge,\neg\}\).对于前者\(\{\vee,\neg\}\)\(P \wedge Q = \neg(\neg P \vee \neg Q)\).对于后者\(\{\wedge,\neg \}\),\(P \vee Q = \neg(\neg P \wedge \neg Q )\)


1.1.5范式

  证明命题公式是否为重言式或矛盾式,或者证明两个命题公式是否等价时,如果命题变元很多,那么真值表将会很麻烦,除此外,采用等价公式替换可能会使得证明过程不标准(不同的人可能证明方法不一样)。

  而范式的作用则是将证明过程标准化。范式主要分为主析取范式和主合取范式。

先阐述主析取范式:

考虑n个命题变元,\(P_1,P_2,P_3...P_n\),那么称,\(\hat{P_1}\wedge\hat{P_2}\wedge\hat{P_3}...\hat{P_n}\)为这n个命题变元的一个极小项,且:

\[\hat{P_i} = \begin{cases} P_i\\ \neg P_i \end{cases} \]

显然,对于n个命题变元而言,它们共有\(2^n\)个极小项,且对于每个极小项而言,有且仅有一组真值指派使其为真。而且进一步不难发现,任意两个不同的极小项之间的合取产生的命题公式必为矛盾式,不妨设\(m_i\)为极小项的一种表现形式,那么当i不等于j时,有\(m_i \wedge m_j \iff F\)。当然,也不难发现,所有极小项析取产生的命题公式必为重言式。即\(\vee_0^{2^n-1}m_i \iff T\).

\(m_{k_1} \vee m_{k_2}\vee m_{k_3}...\vee m_{k_s}(0\le k_1 < k_2 <k_3...<k_s \le 2^n -1)\)则是关于n个命题变元\(P_1,P_2,P_3...P_n\)的一个主析取范式


假设命题公式A含有n个命题变元,且它不是矛盾式,那么A必然能够等价于一个关于这n个命题变元的主析取范式。而且假设有k组真值解释使得命题公式A为T,那么该主析取范式涉及的极小项也必然是k个

关于主析取范式的撰写过程通常是:

  1. \(\to ,\leftrightarrow\)转变为\(\neg,\vee,\wedge\)

  2. 采用德.摩根律将\(\neg\)符号移到命题变元上去。

  3. 将命题公式转为\(A_1 \vee A_2 \vee A_3...\vee A_k\)的格式。对于\(A_i\),它的格式为\(\hat{A_{i1}} \wedge \hat{A_{i2}} \wedge \hat{A_{i3}}...\wedge \hat{A_{is}}\)这种格式。而\(\hat{A_{ij}}\)要么为\(A_{ij}\),要么为\(\neg A_{ij}\),此时的\(A_{ij}\)即为命题变元。

  4. 如果\(\hat{A_{i1}} \wedge \hat{A_{i2}} \wedge \hat{A_{i3}}...\wedge \hat{A_{is}}\),如果缺命题变元\(A_{ik}\),那么采用如下方法补上,即:

    \[\begin{align*} & \quad \hat{A_{i1}} \wedge \hat{A_{i2}} \wedge \hat{A_{i3}}...\wedge \hat{A_{is}} =\hat{A_{i1}} \wedge \hat{A_{i2}} \wedge \hat{A_{i3}}...\wedge \hat{A_{is}} \wedge (\neg A_{ik} \vee A_{ik}) \\ &=(\hat{A_{i1}} \wedge \hat{A_{i2}} \wedge \hat{A_{i3}}...\wedge \hat{A_{is}} \wedge \neg A_{ik}) \vee (\hat{A_{i1}} \wedge \hat{A_{i2}} \wedge \hat{A_{i3}}...\wedge \hat{A_{is}} \wedge A_{ik}) \end{align*} \]

  5. 去除重复的项。

e.g求出\((\neg P \to Q)\wedge (P \leftrightarrow R)\)的主析取范式。

\[\begin{align*} & \quad (\neg P \to Q)\wedge (P \leftrightarrow R) \\ &=(P \vee Q) \wedge \big(( P \wedge R) \vee (\neg P \wedge \neg R )\big) \tag 1 \\ & =((P \vee Q) \wedge ( P \wedge R)) \vee ((P \vee Q) \wedge (\neg P \wedge \neg R )) \\ & = ( P \wedge R) \vee ( P \wedge Q \wedge R) \vee (\neg P \wedge Q \wedge \neg R ) \\ & = ( P \wedge R \wedge(Q \vee \neg Q)) \vee ( P \wedge Q \wedge R) \vee (\neg P \wedge Q \wedge \neg R ) \\ & = ( P \wedge Q \wedge R) \vee ( P \wedge\neg Q \wedge R) \vee ( P \wedge Q \wedge R) \vee (\neg P \wedge Q \wedge \neg R ) \\ & = (\neg P \wedge Q \wedge \neg R ) \vee ( P \wedge\neg Q \wedge R) \vee ( P \wedge Q \wedge R)\\ \end{align*} \]

为了便于表示,我们常用二进制对结果进行对应。首先将字母按照从小到大进行排列(比如是\(P \wedge Q \wedge R\),而不是\(R\wedge Q \wedge P\)),其次将\(\neg P_i\)视作0,\(P_i\)视作1。那么\((\neg P \wedge Q \wedge \neg R )\)对应的二进制即为010,对应十进制的2。不难得到,上述的结果即为:\(m_2 \vee m_5 \vee m_7\),更简便地话,可以表示为\(\sum2,5,7\).

虽然,主析取范式可以用于标准化证明,但是实际操作却有时候也是麻烦的,比如上面的(1)式,如果将\(P \leftrightarrow R\)替换为\((\neg P \vee R) \wedge (\neg R \vee P)\)那么将会更为麻烦。一个Tip就是在撰写主析取范式时,尽可能使得\(\hat{P_i}\)\(\hat{P_j}\)之间的联结词是\(\wedge\)


主合取范式和主析取范式是类似的,主合取范式有极大项的概念,即考虑n个命题变元,\(P_1,P_2,P_3...P_n\),那么称,\(\hat{P_1}\vee\hat{P_2}\vee\hat{P_3}...\hat{P_n}\)为这n个变元的一个极大项,且:

\[\hat{P_i} = \begin{cases} P_i\\ \neg P_i \end{cases} \]

显然,有且仅存在一组真值指派使得关于这个n个命题变元的极大项为F,而且也可以得到共有\(2^n\)个极大项。不妨考虑\(M_i\)表示一个极大项,那么显然\(M_i \vee M_j \iff T\),且\(\wedge_0^{2^n-1}M_i \iff F\)

\(M_{k_1} \wedge M_{k_2}\wedge M_{k_3}...\wedge M_{k_s}(0\le k_1 < k_2 <k_3...<k_s \le 2^n -1)\)则是关于n个命题变元\(P_1,P_2,P_3...P_n\)的一个主析取范式。

特别地,关于极大和极小项有这样的联系,\(m_i = \neg M_i\),考虑命题公式A可由主析取范式表述为\(\sum k_1,k_2...k_s\),且\(0\le k_1 <k_2<k_3...<k_s\le 2^{n-1}\),那么A必然可以由主合取范式表述为\(\prod j_i,j_2...j_t\).且:

\(\{k_1,k_2...k_s\} \cap \{j_i,j_2...j_t\} =\varnothing\),\(\{k_1,k_2...k_s\} \cup \{j_i,j_2...j_t\} =\{0,1,2,3...2^n-1\}\)


  回到最开始,为什么说主合取范式和主析取范式可以证明命题公式是否为重言式或矛盾式呢?一方面,考虑主析取范式的性质\(\vee_0^{2^n-1}m_i \iff T\),如果你命题公式等价的主析取范式涉及到了\(2^n\)个极小项,那么它必然是重言式。另一方面,考虑主合取范式的性质\(\wedge_0^{2^n-1}M_i \iff F\),如果你命题公式等价的主合取范式涉及到了\(2^n\)个极大项,那么它必然是矛盾式。

  范式证明公式等价的核心是命题公式A和B有一个相同的主析取范式或主合取范式。

  但事实上,利用范式不一定就比真值表简单,范式是一种相对标准的公式化证明方法,因为它的结果是标准且唯一的,但是途中过程采取的手段却可能是不同的,比如有可能有些人采用的等价公式是不同的,而导致的时间消耗就可能是不同的。相比而言,真值表更加无脑,但它的问题是当命题变元增多的时候,它的消耗时间也在成倍增加,是个天然的指数问题。

  不过到底那个快,那个慢,目前也没必要去细究,我开始也觉得范式比真值表快,但是后来发现MIT6.042J课程提供的PDF的一段话(链接),也就产生了疑惑。

Theorem 3.4.5 (Completeness of the propositional equivalence axioms). Two propositional formula are equivalent iff they can be proved equivalent using the equivalence axioms listed above.

The benefit of the axioms is that they leave room for ingeniously applying them to prove equivalences with less effort than the truth table method. Theorem 3.4.5 then adds the reassurance that the axioms are guaranteed to prove every equivalence, which is a great punchline for this section. But we don’t want to mislead you: it’s important to realize that using the strategy we gave for applying the axioms involves essentially the same effort it would take to construct truth tables, and there is no guarantee that applying the axioms will generally be any easier than using truth tables.

这个问题暂时不用管,略过,略过。


1.1.6命题演算的推理理论

  对于条件式\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \to R\),我们常称\(H_1,H_2,H_3...H_n\)为条件式的前提组,而R为条件式的结论。这其实和之前\(A \to B\)的相关概念是一样的。如果该条件式是恒真式,那么我们就说\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \implies R\)

  之前已经阐述过证明蕴含的方法有真值表法,逻辑推证法,证明\(A \to B \iff T\)\(A =C=D...\implies E \implies F =G =B\)。但是,对于上述这种结构\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \to R\),我们可以采用演绎推理(形式推理)的方法。

演绎推理有最基本的两组规则:

P:前提可以在演绎推理的任意步骤中引入。

T:在演绎推理过程中,如果命题公式S由被已引入的公式蕴含或者等价,那么公式S也可以引入推理过程中。

这个T规则其实需要你记住基本等价公式和基本蕴含式后,才能更好运用,相关的式子请参看1.1.3节。

补充说明基本蕴含式:\(P,Q \implies P \wedge Q\).可以将这个当做是规定。


e.g1用演绎推理证明\((P \to Q) \wedge ( Q \to R) \wedge P \implies R\).

  1. \(P \to Q\) P(表示引入一个前提)
  2. \(Q \to R\) P
  3. \(P \to R\) T,1,2(表示由1,2引入3)
  4. \(P\) P
  5. \(R\) T 3,4

e.g2用演绎推理证明\((P \to R) \wedge (Q \to S)\wedge (P \vee Q) \implies R \vee S\)

  1. \(P \vee Q\) P
  2. \(\neg P \to Q\) T ,1
  3. \(Q \to S\) P
  4. \(\neg P \to S\) T,2,3
  5. \(\neg S \to P\) T,4
  6. \(P \to R\) P
  7. \(\neg S \to R\) T,5,6
  8. \(S \vee R\) T,7
  9. \(R \vee S\) T,8

你说,第7步能不能够直接跳到第9步呢?我觉得是可以的。但是,实际上是会扣分的。😆😆😆。所以还是按照规范来吧。


下面阐述附加前提技巧用以证明\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \implies R \to S\)

因为\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \implies R \to S\)当且仅当\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \to (R \to S)\)为重言式,而它又与\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \wedge R \to S\)是等价的,即\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \wedge R\implies S\)。附加前提规则简写为CP规则。

e.g3用CP证明\((P \to R) \wedge (Q \to S)\wedge (P \vee Q) \implies R \vee S\).

同一道题可以由多种证明方法,比如上述的e.g2就可以用CP来证明。

  1. \(\neg R\) P附加(表示将这个命题公式引入前提组)
  2. \(P \to R\) P
  3. \(\neg P\) T,1,2
  4. \(P \vee Q\) P
  5. \(\neg P \to Q\) T,4
  6. \(Q\) T 3,5
  7. \(Q \to S\) P
  8. \(S\) T,6,7
  9. \(\neg R \to S\) CP
  10. \(R \vee S\) T,9

这里需要注意一个P附加,那么就必须有个CP。P附加表示的是将某个命题公式引入,而CP则是表明由附加前提和命题前提组能得到有效结论\(\neg R \to S\).因为上面的1到8步只是说明了\((P \to R) \wedge (Q \to S)\wedge (P \vee Q) \wedge \neg R \implies S\),我们要由它转换到我们的证明目标上去。


下面阐述反证法用以证明\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \implies R\)

因为\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \implies R\),那么\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \to R\)是重言式,也就是说\(\neg (H_1 \wedge H_1 \wedge H_1 ...\wedge H_n ) \vee R\)是重言式,也就是说\((H_1 \wedge H_1 \wedge H_1 ...\wedge H_n ) \wedge \neg R\)是矛盾式。也即是说\((H_1 \wedge H_1 \wedge H_1 ...\wedge H_n ) \wedge \neg R \iff F\)。也就是说如果\(\neg R\)如果与任意一个前提\(H_i\),有\(\neg R \wedge H_i \iff F\),那么就有\((H_1 \wedge H_1 \wedge H_1 ...\wedge H_n ) \wedge \neg R \iff F\),也就反过来证明了\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \implies R\)

e.g4用反证法证明\((P \to R) \wedge (Q \to S)\wedge (P \vee Q) \implies R \vee S\)

  1. \(\neg (R \vee S)\) P假设(表示引入假设,也就是表示如若不然)
  2. \(\neg R \wedge \neg S\) T,1
  3. \(\neg R\) T,2
  4. \(\neg S\) T,2
  5. \(P \to R\) P
  6. \(\neg P\) T,3,5
  7. \(Q \to S\) P
  8. \(\neg Q\) T,4,7
  9. \(\neg P \wedge \neg Q\) T,6,8
  10. \(\neg (P \vee Q)\) T,9
  11. \(P \vee Q\) P
  12. \(\neg (P \vee Q) \wedge (P \vee Q)\) T,10,11(这里证明出来一个矛盾)




免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM