Chapter 2 Tutorials
Chapter 2 Problems
T1
利用真值指派讨论证明形如\(Q\rightarrow(R\rightarrow Q)\)的命题逻辑合式公式是永真式
解
对于任意指派函数\(\sigma\),
若\(\sigma(Q)=0\),则
否则,\(\sigma(Q)=1\),此时\(\sigma(R\rightarrow Q) = \sigma(R\rightarrow 1)=1\),于是
综上得证
T2
证明公式集合\(\Gamma\)不可满足当且仅当\(\Gamma \models 0\)
解
-
解1:根据定义
-
充分性:假设\(\Gamma\)不可满足。若\(\Gamma \not \models 0\),则存在真值指派\(\sigma\)满足\(\Gamma\)且\(\sigma(0)=0\),于是\(\Gamma\)可满足,与假设矛盾。因此\(\Gamma\)不可满足时必有\(\Gamma \models 0\)
-
注意:不应使用\(\Gamma \models \neg 0\)或\(\Gamma \models 1\)的说法
-
由于教材的定义中仅给出了指派满足\(\Gamma\)时的要求,因此这里只能用反证法
-
-
必要性:假设\(\Gamma \models 0\)。若\(\Gamma\)可满足,则存在真值指派\(\sigma\)满足\(\Gamma\),由于\(\Gamma \models 0\),此时\(\sigma(0)=1\),这是不可能的。因此\(\Gamma \models 0\)时\(\Gamma\)不可满足。
-
-
解2:推论式重要定理
- 充分性:\(\Gamma=\{Q_1, Q_2, \cdots,Q_n\}\)不可满足,当且仅当任意\(\sigma\)都有\(\sigma(Q_1\land Q_2\land \cdots \land Q_n)=0\),于是\(\sigma(Q_1\land Q_2\land \cdots \land Q_n \rightarrow 0)=1\),所以\(\Gamma \models 0\)
- 必要性:\(\Gamma \models 0\)当且仅当\(Q_1\land Q_2\land \cdots \land Q_n \rightarrow 0\)为永真式,若\(\Gamma\)可满足,则存在\(\sigma\)使得\(\sigma(Q_1\land Q_2\land \cdots \land Q_n)=1\),导致\(\sigma(Q_1\land Q_2\land \cdots \land Q_n \rightarrow 0)=0\),产生矛盾,因此\(\Gamma\)不可满足
T3
设\(\Gamma_1, \Gamma_2\)是公式集合,\(B\)是公式。\(\Gamma_2 \models B\),对于\(\Gamma_2\)中每个公式\(A\),都有\(\Gamma_1 \models A\)。
证明\(\Gamma_1 \models B\)
解
-
解1:根据定义
- 任取指派\(\sigma\),若\(\sigma\)满足\(\Gamma_1\),则\(\forall A \in \Gamma_2,\sigma(A)=1\),于是\(\sigma\)满足\(\Gamma_2\)。由于\(\Gamma_2\models B\),故\(\sigma(B)=1\)。所以\(\Gamma_1 \models B\)
-
解2:推论式重要定理
-
不妨设\(\Gamma_1=\{Q_1, Q_2, \cdots,Q_n\}, \Gamma_2=\{A_1, A_2, \cdots, A_m\}\)。
\(\forall A_i \in \Gamma_2, \Gamma_1 \models A_i\) 当且仅当 \(\forall A_i \in \Gamma_2, Q_1\land Q_2\land \cdots \land Q_n \rightarrow A_i\)为永真式。
任取\(\sigma\),若\(\sigma(Q_1\land Q_2\land\cdots\land Q_n)=1\) 则
\[\sigma(Q_1\land Q_2\land \cdots \land Q_n \rightarrow A_1\land A_2\land\cdots\land A_m)=1 \tag{1} \]\(\Gamma_2\models B\) 当且仅当 \(A_1\land A_2\land\cdots\land A_m \rightarrow B\) 为永真式,所以
\[\sigma(A_1\land A_2\land\cdots\land A_m \rightarrow B)=1 \tag{2} \]由\((1),(2)\)知,
\[\sigma(Q_1\land Q_2\land \cdots \land Q_n \rightarrow B) = 1 \]由\(\sigma\)的任意性知,\(\sigma(Q_1\land Q_2\land \cdots \land Q_n \rightarrow B\) 是永真式,故\(\Gamma_1 \models B\)
- 注意,我们没有介绍推论式的传递性,因此这里需要先将推论式转化为命题公式,然后利用指派的计算来间接证明。
-
T4
已知\(A\)与\(A*\)是对偶式,证明:
<1> 若\(A\)是永真式,则\(A*\)是永假式
<2> 若\(A\)是永假式,则\(A*\)是永真式
证
-
若\(A\)是永真式,则\(A\Leftrightarrow 1\),由对偶定理得\(A*\Leftrightarrow 0\),所以\(A*\)是永假式
-
同理可得
T5
判断对错:任意命题合式公式可以等价转化为复杂度不超过二的形式 ✖️ 某助教当年犯过的愚蠢错误(目移
T6
(2)今有一命题逻辑合式公式\(F_2\)为
根据Week1T1(1)中真值表写出\(F_2\)的主析取范式与主合取范式
解
主析取范式
主合取范式
T7
设命题逻辑合式公式\(F\)中有\(n\)个命题逻辑变量、\(m\)个联结词,
试设计一个时间复杂度为\(\mathcal O\big(2^n(n+m-1)\big)\)的算法统计\(F\)的
-
主析取范式中有几个极小项
-
主合取范式中有几个极大项
写出伪代码即可
解
def calculate(formula: str, var: list[str]):
cnt = 0
for i in range(1 << len(var)):
cnt += eval(formula,
**{x: (i >> j) & 1 for j, x in enumerate(var)})
return cnt
写在等值演算题目前
等值演算应该使用\(\Leftrightarrow\)连接前后两步,不应该使用\(=\)连接,更不应该不连接。尽管课本第一章提到可以使用\(=\)代替\(\Leftrightarrow\),但这样做容易造成与指派函数运算的概念混淆,因此不推荐这样做。
有先后顺序的两步等值演算不能二合一跳步骤,否则无法区分你究竟是没写步骤还是推到一半不会了索性写个结论装样子。
\(\lor\)先于\(\land\)计算时要加括号。
T8
使用等值演算把
等价转化到
Prof:
T9
使用等值演算证明\((P\lor \neg Q)\land (P \lor Q) \land (\neg P \lor \neg Q) \Leftrightarrow \neg(\neg P \lor Q)\)
Prof.
第一步,反用分配律;第二步,正用分配律
- 某一小部分同学在第一步「正用」分配律,把\((P\lor Q)\)分配到\((P\lor \neg Q)\)的两边,导致中间过程十分繁琐。
T10
使用等值演算证明公式 \((P\rightarrow Q) \land (Q\rightarrow r) \land \neg(P\rightarrow r)\) 是永假式
Hint.
有同学在化简\((P\lor \neg Q) \land Q\)型中间结果时,「在跳步骤的过程中」发生错误。
而部分同学的结果却是\((P\lor \neg Q) \land Q \Leftrightarrow P\)
T11
使用等值演算证明\(P\rightarrow (Q \rightarrow P) \Leftrightarrow \neg P \rightarrow (P\rightarrow Q)\)
Prof.
实际上这是两个永真式,有同学化简时出现错误:
写在完全集题目前
在本节题目中,如果我们说一个命题逻辑合式公式\(F\)定义了一个联结词\(\Delta\),那么这个公式\(F\)中不能出现\(0,1\)。
尽管为了方便我们在缩写定义等众多其他地方允许使用\(0,1\),但如果我们允许\(F\)中也出现\(0,1\),则很多联结词集合的表达能力会被增强,导致一些结论不再成立。
T12
证明\(\{\land, \lor, \oplus\}\)不是完全集
Prof.
我们知道\(\{\lor, \land, \neg\}\)是完全集,因此只要说明题给不能表示\(\neg\)即可。经过试凑注意到:
取\(\sigma(p/0)\),假设任意题给连接词组成的仅含\(p\)的复杂度为\(n\)的合式公式\(Q\)的真值均为\(\sigma(Q)=0\)。
-
\(n=0\)时\(\sigma(p)=0\),假设成立
-
\(n \geq 0\)时,设\(Q\)为\(L\Delta R, \Delta \in \{\land, \lor, \oplus\}\),而\(\sigma(L\land R)=0\land 0=0\),\(\sigma(L\lor R)=0\lor 0=0\),\(\sigma(L\oplus R)=0\oplus 0=0\)。故假设成立
综上,\(p^\sigma=0\)时,任意题给连接词组成的仅含\(p\)的合式公式真值均为0,而\(\sigma(\neg p)=1\)。因此题给不能表示\(\neg\),从而不是完全集
Hint.
-
有人不小心取了\(\sigma(p/1)\),这时,\(\sigma(p \oplus p) = 0 = \sigma(\neg p)\),不能说明\(\neg\)无法被表示。
-
还有同学只说明了单个联结词不能表示\(\neg\),却没有证明联结词的组合也不能表示\(\neg\)
T13
证明若\(\{\Delta\}\)为完全集(\(\Delta\)为一「二元联结词」),
- 必有\(1\Delta 1 = 0, 0 \Delta 0 = 1\)
- 必有\(1\Delta0=0\Delta1\)
Prof.
<1>
若\(1\Delta1=1\),则对于任意仅由\(P,\Delta\)组成的命题逻辑公式\(F\),必有\(\sigma(F[P/1])=1\);
若\(0\Delta0=0\),则对于任意仅由\(P,\Delta\)组成的命题逻辑公式\(F\),必有\(\sigma(F[P/0])=0\)。
而公式\(G\equiv \neg P\)满足\(\sigma(G[P/1])=0\)和\(\sigma(G[P/0])=1\)。因此以上两种情形中,\(\{\Delta\}\)不能表示\(\neg\),不是完全集
从而得证
<2>
前文已证\(1\Delta 1 = 0, 0 \Delta 0 = 1\),那么若\(1\Delta 0 = 1, 0\Delta 1 = 0\)则\(P\Delta Q = \neg Q\),因此\(P,Q,\Delta\)组成的任意合式公式均等价于\(\neg \neg \cdots \neg P\)或\(\neg \neg \cdots \neg Q\),而\(\{\neg\}\)并不是完全集,因此\(\Delta\)无法表示全部二元联结词。
\(1\Delta 0 = 0, 0\Delta 1 = 1\)时\(P\Delta Q = \neg P\)同理。故若\(\{\Delta\}\)为完全集,必有\(1\Delta0=0\Delta1\)。
T14
(3) 证明\(\{\oplus, \land, \leftrightarrow\}\)是极小完全集
是完全集
\(\neg p \Leftrightarrow p\leftrightarrow (p\oplus p)\)
\(p\lor q \Leftrightarrow \neg(\neg p\land \neg q)\)
故\(\{\oplus, \land ,\leftrightarrow\}\)可表示\(\{\neg,\land, \lor\}\),因此是完全集
\(\{\oplus,\land\}\)不是完全集
取\(\sigma: p^\sigma = 0\),由于\(\sigma(0\oplus 0)=\sigma(0\land 0)=0\),归纳可知任意仅由\(p,\oplus,\land\)生成的公式\(Q\),必有\(\sigma(Q)=0\),而\(\sigma(\neg p)=1\neq 0\),故\(\{\oplus, \land\}\)不能表示\(\neg\),从而不是完全集
\(\{\oplus, \leftrightarrow\}\)不是完全集
不要求掌握如下做法,只要会利用T15结论即可
\(p\land p\Leftrightarrow p, p\land \neg p \Leftrightarrow 0\)
对于由\(p,q,\oplus,\leftrightarrow\)生成的公式\(Q\)的复杂度做归纳,
假设\(Q[q/p],Q[q/\neg p]\)要么都等值于\(p\)的文字,要么都等值于逻辑常量
复杂度为\(1\)时:\(p\oplus p\Leftrightarrow 0, p\oplus \neg p\Leftrightarrow 1\),\(p\leftrightarrow p \Leftrightarrow 1, p\Leftrightarrow \neg p \Leftrightarrow 0\),满足归纳假设
假设复杂度\(\leq n\)时满足归纳假设,则对于复杂度为\(n+1\)的公式\(Q\)
-
若\(Q=L\oplus R\),\(L,R\)的复杂度\(\leq n\)。那么\(Q[q/p] = L[q/p]\oplus R[q/p]\),\(Q[q/\neg p] = L[q/\neg p]\oplus R[q/\neg p]\). 要么都是文字与常量的异或,要么都是文字与文字的异或,要么都是常量与常量的异或,于是\(Q[q/p],Q[q/\neg p]\)要么都等值于\(p\)的文字,要么都等值于逻辑常量
-
\(Q=L\leftrightarrow R\)同理
因此归纳假设对于任何\(p,q,\oplus,\leftrightarrow\)生成的公式\(Q\)成立,然而\((p\land q)[q/p]=p\),\((p\land q)[q/\neg p]=0\)分别等值于\(p\)的文字和常量\(0\),这说明\(\{\oplus,\leftrightarrow\}\)不能表示\(\land\),从而不是完全集
\(\{\land, \leftrightarrow\}\)不是完全集
取\(\sigma: p^\sigma =1\),由于\(1\land 1 = 1\leftrightarrow 1 = 1\),归纳可知\(p,\land,\leftrightarrow\)生成的公式\(Q\)必有\(\sigma(Q)=1\),但\(\sigma(\neg p)=0\),这说明\(\{\oplus,\leftrightarrow\}\)不能表示\(\neg\),从而不是完全集
T15(选做)
证明真值表列中有「偶数个1」的二元联结词无法表示除\(\neg\)外真值表列中有「奇数个1」的联结词
Prof.
设n元合式公式\(P, Q\)真值表中均有偶数个1,同时\(P \Delta Q\)的真值表中,有\(r_{11}\)行对应\(P=Q=1\)的情况,有\(r_{10}\)行对应\(P=1,Q=0\)的情况,有\(r_{01}\)行对应\(P=0, Q=1\)的情况,有\(r_{00}\)行对应\(P=Q=0\)的情况。那么有
继续推出
以上我们就枚举了令\(P \Delta Q\)为真的所有可能的组合情况,不难发现\(P \Delta Q\)的真值表中必有偶数个\(1\),无法得到奇数个\(1\)的情况。
T16(必做)
注意到对于任意指派\(\sigma\),总有
-
若\(p^\sigma=q^\sigma\)成立,则\(\sigma(p\lor q) = p^\sigma\)
-
否则,\(p^\sigma\neq q^\sigma\)成立,从而\(\sigma(p\lor q)=1\)
行于命途的人儿啊,我想请你证明:
对于任意不包含\(\oplus, \leftrightarrow,p,q,(,)\)以外符号的命题逻辑合式公式\(Q\),
以下两个条件不能同时成立:
-
若\(p^\sigma=q^\sigma\),则\(\sigma(Q)=p^\sigma\)
-
若\(p^\sigma\neq q^\sigma\),则\(\sigma(Q)=1\)
Hint1: 将\(q\)转化为\(p\)或\(\neg p\),将\(L\leftrightarrow R\)转化为\(\neg L\oplus R\)
Hint2: 先证明更加一般的结论:两种情况下\(Q\)要么都等值于\(p\)的文字,要么都等值于常量
[Lemma]
如果公式\(L,R\)都不含\(p\)以外的变元,那么当\(L,R\)均等值于常量或均等值于\(p\)的文字时,\(L\oplus R\)等值于一常量,否则\(L\oplus R\)等值于一文字.
Proof:
-
\(L,R\)均等值于常量时,显然\(L\Delta R\)等值于常量
-
\(L,R\)均等值于文字时,不妨设\(L\Leftrightarrow w_l, R\Leftrightarrow w_r\)。此时
\[L\oplus R\Leftrightarrow w_l\oplus w_r \Leftrightarrow (w_l\land \neg w_r)\lor (\neg w_l\land w_r) \]由于\(w_l,w_r\)要么是\(p\)要么是\(\neg p\),因此\(w_l\Leftrightarrow w_r\)或\(w_l\Leftrightarrow\neg w_r\)。
-
\(w_l\Leftrightarrow w_r\)时,
\[\begin{aligned} & L\oplus R \Leftrightarrow (w_l\land \neg w_l)\lor(\neg w_l\land w_l)\\ &\Leftrightarrow 0\lor 0 \Leftrightarrow 0 \end{aligned} \]此时\(L\oplus R\)等值于常数
-
\(w_l\Leftrightarrow\neg w_r\)时,
\[\begin{aligned} &L\oplus R \Leftrightarrow (w_l\land w_l)\lor(\neg w_l\land \neg w_l)\\ &\Leftrightarrow w_l\lor \neg w_l \Leftrightarrow 1 \end{aligned} \]此时\(L\oplus R\)等值于常数
-
-
\(L,R\)中其一等值于常量,其一等值于文字时,根据对称性,不妨设\(L\Leftrightarrow c, R\Leftrightarrow w\)。此时
\[L\oplus R\Leftrightarrow c\oplus w \]若\(c=1\),则\(L\oplus R\Leftrightarrow 1\oplus w \Leftrightarrow \neg w\);
若\(c=0\),则\(L\oplus R\Leftrightarrow 0\oplus w \Leftrightarrow w\)。
故此时\(L\oplus R\)等值于文字
综上,\(L,R\)均等值于常量或均等值于文字时,\(L\oplus R\)等值于常量,否则等值于文字。(写「得证」也可)
[Proof]
如果一个公式\(F\)不含\(p,q\)以外的变元,且联结词或者为\(\neg\),或者为\(\oplus\),则\(F[q/p]\)等值于一常量当且仅当\(F[q/\neg p]\)等值于一常量.
按运算顺序归纳证明:
如果公式\(Q\)不含\(p,q\)以外的变元,不含\(\neg,\oplus\)以外的联结词,则\(Q\)满足性质\(\Psi\):
\(Q[q/p]\)等值于常量当且仅当\(Q[q/\neg p]\)等值于常量;\(Q[q/p]\)等值于文字当且仅当\(Q[q/\neg p]\)等值于文字。
-
设\(Q\)是\(p\)或\(q\)的文字,则\(Q[q/p]\Leftrightarrow Q[q/\neg p]\)或\(Q[q/p]\Leftrightarrow \neg Q[q/\neg p]\),故\(Q\)满足\(\Psi\)
-
设\(Q\equiv \neg L\),而\(L\)满足\(\Psi\). 显然\(Q\)等值于常量当且仅当\(L\)等值于常量、\(Q\)等值于文字当且仅当\(L\)等值于文字,故\(Q\)也满足\(\Psi\)
设\(Q\equiv L\oplus R\),\(L,R\)均满足\(\Psi\). 由第二问知\(Q\)满足\(\Psi\)。
综上可知\(F\)满足性质\(\Psi\),得证。