Propositional Logic

Introduction 引入

Turing's Halting Problem 停机问题

所有计算机程序只有两个结局——

graph LR
a("program(input)") --> c(Halt)
a --> b(Infinite loop)

这里有两个程序:

def countdown(n):
	while n > 0:
		n -= 1

这个程序 countdown 很容易看出最终是会 halt 的,因为它不断减少 n 的值,直到 n<=0 便停止。

def mystep(n):
	while n != 1:
		if n%2 == 0:
			n = n//2 # 偶数整除2
		else:
			n = 3*n + 1 # 奇数乘 3 加 1

第二个程序 mystep 便无法直接判断是否会 halt,因为 n 不一定会出现 1 的值。

问题: 世界上是否存在一个程序可以检测所输入的程序是 Halt 还是 Infinite loop

Proof

假如这个程序 LoopChecker 真的存在

def LoopChecker(program, inputs):
	if ...:
		return "Halt"
	else:
		return "Infinite loop"

那我们可以创建一个程序 trouble ,把 LoopChecker 的结果反过来,即如果程序是 halt 的,我就让它死循环,如果是 infinite loop 的,我就中断它。这个就是 proof by contradiction。

def trouble(program, inputs):
	if LoopChecker(program, inputs) == "Halt":
		while True: # 死循环
			... 
	else: 
		return # 中断
trouble(trouble, trouble) # 自相矛盾

Logic and Basic Operators

Statement / Proposition

Definition

A statement is a sentence that is either True or False.

Examples:

Tip

不提供 x,y 则无法判断 True or False

Logic Operators

Logic operators are used to construct new statements from old statements

P Q P ∧ Q P ∨ Q
True True True True
True False False True
False True False True
False False False False

We can define logic operators on three or more statements, e.g.

p∧q―∨r
Note

 ― 是 NOT 的另外一种写法

p∧q―∨r≡¬(p∧q)∨r

Logic Operators Construction

We can construct new operator from AND, OR, NOT

Exclusive-or (XOR) 异或

p⊕q≡(p∨q)∧¬(p∧q)
p q p∨q ¬(p∧q) p⊕q≡(p∨q)∧¬(p∧q)
True True True False False
True False True True True
False True True True True
False False False True False

(p∨q)∧¬(p∧q) 只是其中一种定义,只要你所写的定义返回的值跟 ⊕ 一致 (logical equivalence),便是 ⊕ 的定义。

Important

Logical equivalence: Two statement have the same truth table

p⊕q≡(p∧¬q)∨(¬p∧q)≡¬(p∧q)∧¬(¬p∧¬q)

Writing Logical Formula for a Truth Table

  1. 看 True 的行,撰写 logic statement,之后用 OR 连接
  2. 看 False 的行,撰写 logic statement 后用 AND 连接

Idea 1: Focus on True Row (DNF)

p q r output Logic statement
T T T F
T T F T (p∧q∧¬r)
T F T T ∨(p∧¬q∧r)
T F F F
F T T T ∨(¬p∧q∧r)
F T F T ∨(¬p∧q∧¬r)
F F T T ∨(¬p∧¬q∧r)
F F F F

Hence, the logic statement is

(p∧q∧¬r)∨(p∧¬q∧r)∨(¬p∧q∧r)∨(¬p∧q∧¬r)∨(¬p∧¬q∧r)

Idea 2: Focus on False Row (CNF)

For each False row, the logic statement must be False only for that specific inputs.

p q r output Logic statement
T T T F ¬(p∧q∧r)
T T F T
T F T T
T F F F ∧¬(p∧¬q∧¬r)
F T T T
F T F T
F F T T
F F F F ∧¬(¬p∧¬q∧¬r)

The logic statement is

¬(p∧q∧r)∧¬(p∧¬q∧¬r)∧¬(¬p∧¬q∧¬r)

The logic statement of #Idea 1 Focus on True Row and #Idea 2 Focus on False Row are logically equivalent.


Logical Rules

t 指 tautology 永真,即 TRUE
c 指 contradiction 永假,即 FALSE

Logical Rules Explanation Case 1 Case 2
Commutative laws(交换律) 两边可互换 p∧q≡q∧p p∨q≡q∨p
Associative laws(结合律) 只用同一种运算符时,括号不影响结果 (p∧q)∧r≡p∧(q∧r) (p∨q)∨r≡p∨(q∨r)
Distributive laws(分配律) 等同于乘法分配律 a(b+c)=ab+ac p∧(q∨r)≡(p∧q)∨(p∧r) p∨(q∧r)≡(p∨q)∧(p∨r)
Identity laws(同一律) 当 t 在 AND、c 在 OR 时,结果保持不变 p∧t≡p p∨c≡p
Negation laws(否定律) 自己和自己取反:OR 必真、AND 必假 p∨¬p≡t p∧¬p≡c
Double negative law(双重否定律) 负负得正 ¬(¬p)≡p
Idempotent laws(幂等律) 重复不改变结果 p∧p≡p p∨p≡p
Universal bound laws(domination/范围律) OR 遇到 t 为恒真;
AND 遇到 c 为恒假
p∨t≡t p∧c≡c
De Morgan's laws(德摩根律) 展开后 OR、AND 调转 ¬(p∧q)≡¬p∨¬q ¬(p∨q)≡¬p∧¬q
Absorption laws(吸收律) 括号内的结果无关大雅 p∨(p∧q)≡p p∧(p∨q)≡p
Negations of t and c(永真/永假的否定) t 和 c 是相反的 ¬t≡c ¬c≡t

Proof of Absorption law

L.H.S.≡p∨(p∧q)≡(p∧t)∨(p∧q)≡p∧(t∨q)≡p∧t≡p≡R.H.S.

Simplify Statement

Exercise generated by AI

  1. Simplify (q∧p)∧¬p
(q∧p)∧¬p≡q∧(p∧¬p)≡q∧c≡c
  1. Simplify (p∧q)∨(p∧¬q)
(p∧q)∨(p∧¬q)≡p∧(q∨¬q)≡p∧t≡p
  1. Simplify (p∧q)∨(p∧q∧r)
(p∧q)∨(p∧q∧r)≡(p∧q)∨[(p∧q)∧r]≡(p∧q)
  1. Simplify ¬(¬p∨q)∧(p∨q)
¬(¬p∨q)∧(p∨q)≡(p∧¬q)∧(p∨q)≡¬q∧[p∧(p∨q)]≡¬q∧p
  1. Simplify ¬(¬(p∨q)∧¬q)
¬(¬(p∨q)∧¬q)≡(p∨q)∨q≡(p∨q)∨(q∨q)≡(p∨q)∨q≡p∨q
  1. Simplify (p∧q)∨(p∧¬q)∨(¬p∧q)
(p∧q)∨(p∧¬q)∨(¬p∧q)≡p∧(q∨¬q)∨(¬p∧q)≡p∧t∨(¬p∧q)≡p∨(¬p∧q)≡(p∨¬p)∧(p∨q)≡t∧(p∨q)≡p∨q

Conditional Statement

IF-Then

p⏟hypothesis→q⏟conclusion

It means

P Q P→Q
T T T
T F F
F T T
F F T

只有当前提 hypothesis P 为 TRUE ,且结论 Q 是 FALSE 时,P→Q 才会是 FALSE
如果前提 P 本身为 FALSE 时,无论结论 Q 如何,都是 TRUE

Logical Formula for If-Then

我们可以用 #Writing Logical Formula for a Truth Table 的方式推导 If 的 logical formula

Idea 1: Focus on TRUE
P Q P→Q Logical statement
T T T (P∧Q)
T F F
F T T ∨(¬P∧Q)
F F T ∨(¬P∧¬Q)

The logical formula is

(P∧Q)∨(¬P∧Q)∨(¬P∧¬Q)≡Q∧(P∨¬P)⏟t∨(¬P∧¬Q)≡Q∨(¬P∧¬Q)≡(Q∨¬P)∧(Q∨¬Q)⏟t≡¬P∨Q

这个 logical formula 可以很明白的说出 if 的关系,即只要 Q 是 TRUE,P→Q 必然为 TRUE。

Negation of If-Then

如果要否定 P→Q,即 ¬(P→Q) ,我们要给出 P 为 TRUE,而 Q 为 FALSE 的例子
Proof

¬(P→Q)≡¬(¬P∨Q)≡P∧¬Q
Note

¬(P→Q) 表示 P→Q 为 False。
要证明 P→Q 不成立,必须给出一个情况:P 为 True,但 Q 为 False。

Contrapositive 逆否命题

The contrapositive of p→q is ¬q→¬p
Proof

p→q≡¬p∨q≡q∨¬p≡¬q→¬p

有时候直接证 p→q 比较难,但证 ¬q→¬p 反而容易。

If and Only If (IFF)

p⟺q≡(p→q)∧(q→p)≡(p→q)∧(¬p→¬q)
P Q P↔Q P→Q ¬Q→¬P
T T T T T
T F F F F
F T F T T
F F T T T

Arguments

Argument is a sequence of statements
用数学符号表示为:

P1∧P2∧⋯∧Pn⏟Assumptions / Premises→Q⏟Conclusion

Argument is valid if whenever all the assumption are true, then the conclusion is true.

Example

  1. If it is raining, then I need an umbrella.
  2. It is raining.
    ∴ I need an umbrella
Note

Argument 只关心当假设 assumption 为 TRUE 时,结论 conclusion 是否为 TRUE
而并不关心事件 / statement 是 TRUE 还是 FALSE,即 assumption 可以为 False 且 conclusion 也变成 False。

Modus Ponens 肯定前件

If p then q, and p is true, then q is true.
用数学公式写:

p→qp∴q

Equivalently, (p→q)∧p→q

Note

单独一个字母出现在代表为 TRUE,如 p,¬q 是指 p,¬q 是 TRUE.

在拉丁文中,Modus Ponens 意思是 method of affirming 肯定法

Modus Tollens

p→q¬q∴¬p

Equivalently, (p→q)∧¬q→¬p

Example

  1. If typhoon, then class cancels.
  2. Class does not cancel
    ∴ No typhoon

在拉丁文中,Modus Tollens 意思是 method of denying 拒绝法

Invalid Arguments

p→qq∴p

这个例子就是弄混了 #IF-Then 的关系,p→q 并不代表 q→p。

p→q¬p∴¬q

这个在 #IF-Then 中有详细说明(参见 #^b05206)

如果要证明 argument 是 invalid,只需要提出一个反例即可。

Valid argument 并不代表是 true conclusion,例如如果 argument 的 assumption 是 FALSE 的,那 conclusion 就不一定是 TRUE。

Contradiction

¬p→c∴p

If assumption is true, then the conclusion is true.

Generalization

p∴p∨qq∴p∨q

Specialization

p∧q∴pp∧q∴q

Elimination

p∨q¬q∴pp∨q¬p∴q

Transitivity

p→qq→r∴p→r
Caution

如果第二行 q 和 r 交换,即 r→q, argument 便不成立

Proof by Division into Cases

p∨qp→rq→r∴r