Propositional Logic - 命题逻辑
本页目录
\mathscr{L}^p
形式语言(Formal Language)
语言(Language):
- 字母表(Alphabet)
- 语法(Syntax)
- 语义(Semantics)
字母表
命题(Proposition)
- 原子命题(Atomic Proposition, atom):最小的不可分的命题。
- 复合命题(Compound Proposition)
逻辑连接词(Logic Connectives)
- 否定(Not, Negation) (
\neg) - 合取 (And, Conjunction)(
\land) - 析取 (Or, Disjunction)(
\lor) - 异或 (Exclusive Or)(
\oplus) - 蕴含 (Implication) (
\to) - 等价(If and only if, Equivalence)(
\leftrightarrow)
标点符号(Punctuation)
语法
表达式 (Expression):有限的符号组合。
- 良构公式(Well-formed formulas, wff)
WFF 的形式归纳定义: \text{Form}(\mathscr{L}^p) 是满足以下条件的表达式的最小集合:
\text{Atom}(\mathscr{L}^p) \subseteq\text{Form}(\mathscr{L}^p)- 若
\alpha \in\text{Form}(\mathscr{L}^p),则(\neg \alpha) \in\text{Form}(\mathscr{L}^p) - 若
\alpha,\beta \in\text{Form}(\mathscr{L}^p),则(\alpha \land \beta), (\alpha \lor \beta), (\alpha \to \beta), (\alpha \leftrightarrow \beta) \in\text{Form}(\mathscr{L}^p)
概念
- 空表达式(Empty expression):长度为
0的表达式,记作\lambda。 - 连接(Concatenation):
uv表示按顺序连接两个表达式u,v得到的结果,\lambda u = u\lambda = u。 - 段(Segment):若存在表达式
w_1,w_2使得u = w_1 v w_2,则称v是u的一个段。 - 真段(Proper segment):若
v是u的段,且v非空并且v \ne u,则v是u的真段。 - 初始段/前缀(Initial segment / Prefix)与终止段/后缀(Terminal segment / Suffix):若
u = vw,其中u,v,w为表达式,则v是u的初始段(前缀),w是u的终止段(后缀)。 - 真前缀(Proper prefix)与真后缀(Proper suffix):若
u = vw,其中u,v,w为表达式,且v,w均非空,则v是u的真前缀,w是u的真后缀。
WFF 的性质:
- WFF 是非空的表达式。
- WFF 中的开闭括号数量相等。
- 良构公式
\varphi \in \mathscr{L}^P的任意真前缀 中,左括号(opening brackets)的个数严格多于右括号(closing brackets)的个数。 - 类似地,
\varphi \in \mathscr{L}^P的任意真后缀中,右括号的个数严格多于左括号的个数。 - 因此,真前缀与真后缀都不是
\mathscr{L}^P中的良构公式。
可以使用这些性质来判定一个表达式不是一个 WFF,但要判定一个表达式是 WFF,需要使用定义中的构造规则。
也就是说,一个表达式是 WFF 当且仅当它有一个解析树(Parse Tree):

或简化形式:

概念
- 子公式(subformula):公式
G若在公式F内出现,则称G是F的子公式。 - 真子公式(proper subformula):若
G是F的子公式且G \neq F,则称G是F的真子公式。 - 解析树节点(parse tree nodes):
F的解析树的所有节点所对应的公式,构成F的子公式集合。 - 直接子公式(immediate subformulas):某公式在其解析树中的子节点(children)所对应的公式。
- 主连接词(leading connective):用于连接这些子节点的连接词。
唯一可读性定理(Unique Readability Theorem):有唯一的一种方式来构造每个 WFF。(消除二义性(Ambiguity))
- 证明:考虑
\varphi = (\neg\alpha)和\varphi = (\alpha * \beta)。
为了可读性,有惯例:
- 将
F和(F)视为相同的公式。 - 优先级(Precedence):从高到低为
(), \neg,\land,\lor,\to,\leftrightarrow。 - 结合性(Associativity):
\land, \lor, \leftrightarrow具有结合性。\to具有右结合性。
语义
常见逻辑连接词(Logical Connectives)真值表(Truth table)
\neg, \land 的真值表显然。
\lor 注意是“Inclusive Or”。
\to 的真值表:
P |
Q |
P\to Q |
|---|---|---|
| false | false | true |
| false | true | true |
| true | false | false |
| true | true | true |
这里 P 是前件(Antecedent),Q 是后件(Consequence),P\to Q 相当于 \neg P\lor Q。
\leftrightarrow 的真值表:
P |
Q |
P\leftrightarrow Q |
|---|---|---|
| false | false | true |
| false | true | false |
| true | false | false |
| true | true | true |
真值赋值(Truth Valuation)
- 函数
v:\mathrm{Atom}(\mathscr{L}^P)\to\{0,1\}。 - 记号:若
p\in \mathrm{Atom}(\mathscr{L}^P),则用v(p)或p^v表示p在赋值v下的真值,且p^v\in\{0,1\}。
若 A \in \mathscr{L}^p:
• 若 \forall v,有 A^v=1 则称 A 为永真式(tautology/重言式)
• 若 \forall v,有 A^v=0 则称 A 为永假式(contradiction/矛盾式)
• 若 \exists v,使得 A^v=1 则称 A 为可满足的(satisfiable)
要证明某个式子是永真式/永假式/可满足的,可以用:
- 赋值树(Valuation Tree):

- 反证法(Proof by Contradiction)
- 真值表
逻辑等价(Logical Equivalence):在任意赋值下,两个式子都有相同的值,则称它们等价。也就是说,A\leftrightarrow B 是永真式。



代换实例(Substitution Instance): 将一个式子里的某些部分替换为其他式子,且保持替换的一致性(相同的部分替换为相同的式子)得到的式子。
- 一个永真式的代换实例仍然是永真式。
代换定理: 如果A是一个 wff ,它有一个子式C,且C \equiv D,则将A中的某些C代换成D得到的结果B有A\equiv B。
逻辑等价(\equiv)意味着真值表相同,它是 \text{Form}(\mathscr{L}^p) 上的一个等价关系,也就是说满足自反性,对称性和传递性。
一组式子的可满足性(Satisfiability):若 \Sigma \subseteq\text{Form}(\mathscr{L}^p),则定义 \Sigma^v=1 当且仅当 \forall B\in \Sigma, B^v=1。若存在某种赋值 v 使得 \Sigma^v=1, 则称 \Sigma 是可满足的(Satisfiable);称 v 满足了 \Sigma.
蕴含(Entailment): 假设 \Sigma \subseteq\text{Form}(\mathscr{L}^p), \alpha\in\text{Form}(\mathscr{L}^p),称 \Sigma 蕴含 A(记作 \Sigma \vDash A ),或 A 是 \Sigma 推出的结论,当且仅当 \forall v, \Sigma^v =1\to A^v=1。
A\equiv B当且仅当A\vDash B且B\vDash A。\varnothing \vDash A说明A是永真式(因为空集是空真的)。A\vDash B当且仅当A\to B是永真式。
证明蕴含关系:
- 列真值表,说明
\Sigma ^v=1的行中都有A^v=1。 - 反证法,假设存在
v使得\Sigma^v=1但是A^v=0,导出矛盾。
证明不蕴含关系: - 找到一种赋值
v使得\Sigma^v=1但是A^{v}=0。
n 元布尔函数(N-ary Boolean Functions):
f:\{ T,F \}^{n}\to \{ T, F \}
共有 2^{2^n} 种可能的 n 元布尔函数。
一些有意义的二元布尔函数:
- 或非(Joint Denial):
p \downarrow q \equiv \neg(p\lor q) - 与非(Alternative Denial):
p\uparrow q \equiv \neg(p\land q) - 异或(Exclusive or):
p \otimes q\equiv \neg(p\leftrightarrow q)。
完备集合(Adequate Set): 所有 wff 都能只用集合中的连接词表示。
定理: \{ \neg, \land, \lor \},\{ \neg, \land \}, \{ \neg, \lor \}, \{ \neg, \to \} 都是完备集合。
要证明一个集合完备,只需证明其他逻辑连接词可以只用集合中的连接词表示(这里的全集是 \{ \neg, \land, \lor , \to, \leftrightarrow \})。
要证明一个集合不完备,可以考虑证明该集合构造出来的式子具有一些特性,然后说明用某个其他连接词构造的式子不具备这个特性,从而证明后者无法用前者表示。
定理:任意的 n 元布尔函数都可以只用一个完备集合中的连接词定义。
形式推演系统
形式证明系统(Formal Proof System)
- 语言 (符号,字母表,wff)
- 推理(公理,推理规则)
由前提 \Sigma 可以推出结论 A 记作:
\Sigma \vdash A
Hilbert-style System
\mathscr{H}
线性。
语言:
- 字母表:
\Sigma=\{ (,),\neg, \to, p, q, r, \dots \} - 公式:与 wff 类似的定义。
公理(Axioms):
A\to(B\to A)(A\to(B\to C))\to((A\to B)\to(A\to C))(\neg A\to \neg B)\to(B\to A)
注意这里是语法和符号上的公理,和语义无关。
推理规则(Inference rule):
- 分离规则(Modus ponens, MP):
\displaystyle \dfrac{(A \to B,\, A)}{B}
证明(Proof):
- 以
\Sigma为前提(Premises)对A的一个证明,是一个有限序列A_{1}, A_{2}, \dots, A_{n}。 - 对于任意
i\leq n,A_{i}是以下三种情况之一:- 是
\mathscr{H}中的一个公理,或一个\Sigma中的一个公式。 - 是
A_{j}(j<i)。 - 是通过 MP 从
A_{j}, A_{k}(j, k<i)推导出来的。
- 是
- 这里我们称
A_{n}是\mathscr{H}中的一个定理(Theorem)。 A_{n}可被证明记作\Sigma\vdash A_{n}。- 若
\Sigma=\varnothing,则简记为\vdash A_{n}。
例如 (Theorem H1) A\to A 的证明:

(可靠性定理/Soundness)若 \vdash A,则 \vDash A 。
也就是说,任何 Hilbert 系统证明出来的结论都是永真式。
- 可以对证明序列的长度
\mathscr{l}归纳来证明此类定理。- Base case:长度为
1的情况。 - I.H.:假设对
k<n成立。 - Inductive step:证明对
n成立。
- Base case:长度为
(单调性定理/Monotonicity) 若 \Sigma\vdash A,则 \Sigma \cup \{ B \} \vdash A。
导出规则(Derived rules): 从 MP 出发可以证明的一些推导规则,用于简化证明。
- Deduction Rule:
\Sigma\cup \{ A \} \vdash B \text{ iff } \Sigma \vdash A\to B
例如 (Theorem H2)(A\to B)\to((B\to C)\to(A\to C))的证明:

- Contrapositive Rule:
\text{if } \Sigma\vdash \neg B\to \neg A, \text{then } \Sigma\vdash A\to B
(Theorem H3)
\vdash \neg \neg A\to A
- Transitivity Rule (Proven by H2):
\frac{\Sigma\vdash A\to B \text{ and } \Sigma\vdash B\to C}{\Sigma\vdash A\to C} - Exchange of antecedent rule:
\frac{\Sigma\vdash A\to(B\to C)}{\Sigma\vdash B\to(A\to C)}
(Theorem H4)\vdash A和\vdash \neg A可以证明任何事。
\vdash \neg A\to(A\to B)
\vdash A\to(\neg A\to B) - Double Negation Rule (Proven by H3)
\frac{\vdash \neg \neg A}{\vdash A}
\frac{\vdash A}{\vdash \neg \neg A}
为了证明中的方便,引入记号:(Theorem H5)
\vdash\text{true}
\vdash \neg \text{false} - Reductio ad absurdum (reduction to absurdity/proof by contradiction)
\frac{\vdash \neg A\to\text{false}}{\vdash A}
(Theorem H6)
\vdash (A\to \neg A)\to \neg A
Natural Deduction System
语言:
- 字母表:
\Sigma =\{ (,),\neg,\land, \lor, \to,\leftrightarrow,p,q,r, \dots \} - 公式:与 wff 类似的定义。
推理规则(Inference Rules):
- 自反(Reflexivity):
\Sigma \cup {\alpha}\vdash\alphaor\Sigma,\alpha\vdash\alpha - 每条规则包括 introduction 和 elimination 两部分。
\land\text{i}:\frac{\alpha \,\, \beta}{\alpha \land\beta}\land \text{e}:
\frac{\alpha \land\beta}{\alpha}, \frac{\alpha \land\beta}{\beta}\to\text{e}:
\frac{(\alpha\to\beta) \,\, \alpha}{ \beta}\to\text{i}:
\frac{\boxed{\begin{aligned} \alpha \\ \dots \\ \beta \end{aligned}}}{\alpha\to\beta}
或: 若\Sigma,\alpha\vdash_{ND} \beta,则\Sigma\vdash_{ND}(\alpha\to\beta)。这里被框起来的就是一个子证明(Subproof)。

子证明里面可以用外部的行,外部不可以用子证明里面的行。\lor\text{i}:
\frac{\alpha}{(\alpha \lor\beta)}, \frac{\alpha}{(\beta \lor\alpha)}\lor\text{e}(Proof by cases):
\frac{(\alpha_{1}\lor\alpha_{2})\,\,\boxed{\begin{align} \alpha_{1} \\ \dots \\ \beta \end{align}}\,\,\boxed{\begin{align} \alpha_{2} \\ \dots \\ \beta \end{align}}}{\beta}\neg\text{i}(用\perp表示矛盾):
\frac{\boxed {\begin{align} \alpha \\ \dots \\ \perp \end{align}}}{\neg\alpha}\neg\text{e}或\perp\text{i}:
\frac{\alpha\,\,\neg\alpha}{\perp}\neg \neg\text{e}:
\frac{(\neg(\neg\alpha))}{\alpha}\perp\text{e}:
\frac{\perp}{\alpha}
导出规则(Derived Rules)若有 \Sigma\vdash_{ND}\alpha,则可视为有一个导出规则
\frac{\Sigma}{\alpha}
- 否定后件(Modus tollens, MT):
\{ (p\to q,\neg q) \}\vdash _{ND}(\neg p) \neg \neg i:
\frac{\alpha }{(\neg(\neg\alpha))}- 反证法(Proof by contradiction, reductio ad absurdum)
\frac{\boxed{\begin{align} (\neg\alpha) \\ \dots \\ \perp \end{align}}}{\alpha} - 排中律(Law of Excluded Middle, Tertiam non datur)
\frac{}{(\alpha \lor(\neg \alpha))}
这些证明都是语法上的(Syntactic)。不用关心语义。
可靠性和完备性
可靠性(Soundness):证明的结论(Conclusion)总是前提(Premises)的一个逻辑上的结果(Consequence)。也就是说,我们称证明系统可靠,当
\Sigma\vdash A\implies \Sigma\vDash A
完备性(Completeness):任何逻辑上的结果可以被证明系统证明。也就是说,我们称证明系统完备,当
\Sigma\vDash A\implies \Sigma\vdash A
要证明 ND 的可靠性,可以通过对证明序列的长度来归纳得到。
- Base Case:
n=1,则\alpha是一个前提,则\alpha \in \Sigma,根据定义,\Sigma\vDash\alpha。 - I.H.:
\Sigma\vdash\alpha\implies \Sigma\vDash\alpha对长度k的证明成立。 - Inductive Step:考虑第
k+1步推出\alpha的各种情况。- 考虑有 Sub-proof 的情况,比如第
k+1行是一个\to\text{i}: \beta\to \gamma,I.H. 就不能直接用了,因为前k行不是完整的证明。但是可以令\Sigma'=\Sigma \cup \{ \beta \},在新的\Sigma'下,前k行就变成完整的证明了,由于 I.H. 对任意的\Sigma都成立,所以\Sigma'\vdash \gamma \implies \Sigma'\vDash\gamma,也就是\Sigma\cup \{ \beta \}\vDash \gamma。从而可以通过反证法证明\Sigma\vDash \beta\to\gamma。
有了可靠性,证明蕴含就可以用:真值表,定义,反证法,以及 用 ND 证明。
- 考虑有 Sub-proof 的情况,比如第
要证明 ND 的完备性,设 \Sigma=\{ a_{0},a_{1},\dots,a_{n} \} ,可以分别证明三个引理:
- Lemma 1: 若
\Sigma\vDash\beta,则\emptyset \vDash(a_{0}\to(a_{1}\to(\dots\to(a_{n}\to\beta))))。 - Lemma 2: 对任意 wff
\gamma,若\emptyset\vDash \gamma, 则\emptyset\vdash_{ND}\gamma。(永真式可以被证明) - Lemma 3: 若
\emptyset\vdash_{ND}(a_{0}\to(a_{1}\to(\dots\to(a_{n}\to\beta)\dots)),则\{ a_{0},a_{1},\dots,a_{n} \}\vdash_{ND}\beta。也就是说\Sigma\vdash_{ND}\beta。
Lemma 1 容易用反证法证明。Lemma 3 可以重复用\to\text{e}消去最后得到\beta证明。
Lemma 2: - 例如有两个 Atom
p,q,就只需要证明p,q\vdash\gamma,\ p, \neg q\vdash\gamma,\ \neg p, q \vdash \gamma,\ \neg p, \neg q\vdash \gamma四种情况。因为,我们可以用排中律构造一个这样的证明:
- 对于
n个 Atomp_{1},p_{2},\dots,p_{n}的一般情况,有子引理(Sublemma):对任意由这些 Atom 组成的 wff\gamma,对任意赋值v,有:- 若
\gamma^v=1,则\{ \hat{p_{1}}, \hat{p_{2}}, \dots, \hat{p_{n}} \}\vdash\gamma。 - 若
\gamma^v=0,则\{ \hat{p_{1}}, \hat{p_{2}}, \dots, \hat{p_{n}} \}\vdash\neg \gamma。
- 若
- 这里
\hat{p_{i}}=\begin{cases}p_{i} & p_{i}^v=1 \\ \neg p_{i} & p_{i}^v=0\end{cases}。 - 如果证明了这个 Sublemma,那么其第一种情况(
\gamma^v=1) 恰好对应了前面的构造,所以就能证明 Lemma 2。
Sublemma 的证明: - 对
\gamma的构造进行归纳证明。 - Base case:
\gamma=p_{1}(atom)- 若
\gamma^v=p_{1}^v=1,则\hat{p_{1}}=p_{1}\vdash p_{1}=\gamma。 - 若
\gamma^v=p_{1}^v=0,则\hat{p_{1}}=\neg p_{1}\vdash\neg p_{1}=\neg \gamma。
- 若
- Inductive Hypothesis: 用
P(\gamma)表示\gamma符合 Sublemma,假设P(\gamma_{1}), P(\gamma_{2})成立。 - Inductive Step:
- Case 1:
\gamma=\neg \gamma_{1}。- 若
\gamma^v=(\neg \gamma_{1})^v=1,则\gamma_{1}^v=0。则有\{ \hat{p_{1}}, \hat{p_{2}}, \dots, \hat{p_{n}} \} \vdash \neg \gamma_{1}=\gamma。 - 若
\gamma^v=(\neg \gamma_{1})^v=0,则\gamma_{1}^v=1。则有\{ \hat{p_{1}}, \hat{p_{2}}, \dots, \hat{p_{n}} \} \vdash \gamma_{1}。用\neg \neg\text{i}规则,有\{ \hat{p_{1}}, \hat{p_{2}}, \dots, \hat{p_{n}} \}\vdash (\neg(\neg \gamma_{1}))=\neg \gamma。
- 若
- Case 2:
\gamma=\gamma_{1}\to \gamma_{2}。- 若
\gamma^v=0,则\gamma_{1}^v=1, \gamma_{2}^v=0。假设\gamma_{1}包含\{ q_{1},\dots,q_{k} \}这些 Atom,\gamma_{2}包含\{ r_{1},r_{2},\dots,r_{w} \}这些 Atom,则 I.H. 给出\{ \hat{q_{1}},\dots,\hat{q_{k}} \}\vdash \gamma_{1}, \{ \hat{r_{1}}, \dots, \hat{r_{w}} \}\vdash \neg \gamma_{2}。由于这里的前提都是\{ \hat{p_{1}}, \hat{p_{2}}, \dots, \hat{p_{n}} \}\vdash\gamma的子集,所以可以得到\{ \hat{p_{1}}, \hat{p_{2}}, \dots, \hat{p_{n}} \}\vdash\gamma_{1}, \{ \hat{p_{1}}, \hat{p_{2}}, \dots, \hat{p_{n}} \}\vdash\neg\gamma_{2}。只要构造一个从这两个命题出发对\neg(\gamma_{1}\to \gamma_{2})的证明即可。这用 PBC 是容易的。 - 若
\gamma^v=1,类似的去讨论即可。
- 若
- 其他二元连接符的 Cases 也类似。
- Case 1:
Resolution
定义单式/文字(Literal):Atom 或 Atom 的否定。
定义子式/子句(Clause):
- 析取子式(Disjunctive Clause):用
\lor连接单式。 - 合取子式(Conjunctive Clause):用
\land连接单式。
定义合取范式(Conjunctive Normal Form, CNF):用\land连接析取子式,形如
(l_{11} \lor\dots \lor l_{1n_{1}})\land\dots \land(l_{k1}\lor\dots \lor l_{kn_{k}})
定义析取范式(Disjunctive Normal Form, DNF):用\lor连接合取子式,形如
(l_{11} \land\dots \land l_{1n_{1}})\lor\dots \lor(l_{k1}\land\dots \land l_{kn_{k}})
Lemma: 若A是 CNF 形式,B是 DNF 形式,则\neg A与一个 DNF 形式的式子逻辑等价,\neg B与一个 CNF 形式的式子逻辑等价。
Theorem: 任何式子A\in\text{Form}(\mathscr{L}^p)都可以与 CNF 形式和 DNF 形式的式子等价。 - 证明:
- Case 1:
A为永真式,则A\equiv p\lor \neg p(CNF/DNF)。 - Case 2:
A为矛盾,则A\equiv p\land \neg p(CNF/DNF)。 - Case 3:
A可满足。不失一般性,假设真值表为:
- Case 1:
| P | Q | A |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
- 则
A的真值表与(row 1 and row 3)相同,即A\equiv(\neg p\land \neg q)\lor(p\land \neg q)(DNF)。 - 另外,
A的真值表与 (not row 2 and not row4)相同,即A\equiv \neg(\neg p\land q)\land \neg(p\land q)\equiv(p\lor \neg q)\land(\neg p\lor \neg q)(CNF).
将任意式子转化为 DNF/CNF:

定义 B 为 A 的主合取/析取范式(Principle CNF/DNF):
B是A的 CNF/DNF。- 每个
B中的子句(clause)都包含A中的所有命题变量恰好一次,且没有两个相同的子句。
要写出主 CNF 和主 DNF,可以先写出真值表,DNF 就是所有值为 1 的 row 析取,CNF 就是所有值为 0 的 row 先否定再合取。
Resolution(归结/消解)也称为 Refutation System,用于(计算机辅助)证明矛盾。
只考虑 CNF。
归结推理规则(Resolution Inference):
\dfrac{(\alpha \lor p) \ \ \ ((\neg p)\lor\beta)}{(\alpha \lor\beta)}
特例:
\dfrac{(\alpha \lor p)\ \ \ (\neg p)}\alpha{}
\dfrac{p\ \ \ (\neg p)}{\perp}
在 Resolution Proof 中,要证明 \Sigma\vdash_{\text{Res}}\varphi:
- 转换为证明
\Sigma\cup \{ \neg \varphi \}\vdash_{\text{Res}}\perp。 - 首先把
\neg \varphi和\Sigma转换为 CNF。 - 将 CNF 从
\land分开,变成一堆析取子式(Disjunctive Clauses)。 - 再把析取子式从
\lor分开,把每个析取子式变成单式的集合。 - 在这些集合上不断使用 Resolution Inference,直到不再可以使用,或获得
\perp证明命题。
这里\perp为空子句/空集。
例如,要证明 \{ p,q \}\vdash_{\text{Res}}(p\land q):
- 前提转换为
\{ p,q,\neg(p\land q) \}。 - 转换为 CNF
\{ p,q,\neg p\lor \neg q \}。 - 变成集合记号
\{ p \}, \{ q \}, \{ \neg p,\neg q \}。 - 应用 Resolution Inference。

Resolution Proof System 是可靠且完备的。
Satisfiability(SAT)问题:一组命题逻辑公式是否可以同时满足。(例如,解决软件包依赖关系)
SAT Solver 可用 Resolution 实现。