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 的,因为它不断减少
def mystep(n):
while n != 1:
if n%2 == 0:
n = n//2 # 偶数整除2
else:
n = 3*n + 1 # 奇数乘 3 加 1
第二个程序 mystep 便无法直接判断是否会 halt,因为
问题: 世界上是否存在一个程序可以检测所输入的程序是 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
A statement is a sentence that is either True or False.
Examples:
is a statement is not a statement is not a statement
不提供
Logic Operators
Logic operators are used to construct new statements from old statements
- NOT (
) - AND (
) - OR (
)
| P | Q | P | P |
|---|---|---|---|
| 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.
Logic Operators Construction
We can construct new operator from AND, OR, NOT
Exclusive-or (XOR) 异或
- When
, return False - When
, return True
| True | True | True | False | False |
| True | False | True | True | True |
| False | True | True | True | True |
| False | False | False | True | False |
Logical equivalence: Two statement have the same truth table
Writing Logical Formula for a Truth Table
- 看 True 的行,撰写 logic statement,之后用 OR 连接
- 看 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 | |
| T | F | T | T | |
| T | F | F | F | |
| F | T | T | T | |
| F | T | F | T | |
| F | F | T | T | |
| F | F | F | F |
Hence, the logic statement is
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 | |
| T | T | F | T | |
| T | F | T | T | |
| T | F | F | F | |
| F | T | T | T | |
| F | T | F | T | |
| F | F | T | T | |
| F | F | F | F |
The logic statement is
The logic statement of #Idea 1 Focus on True Row and #Idea 2 Focus on False Row are logically equivalent.
Logical Rules
指 tautology 永真,即 TRUE
指 contradiction 永假,即 FALSE
| Logical Rules | Explanation | Case 1 | Case 2 |
|---|---|---|---|
| Commutative laws(交换律) | 两边可互换 | ||
| Associative laws(结合律) | 只用同一种运算符时,括号不影响结果 | ||
| Distributive laws(分配律) | 等同于乘法分配律 | ||
| Identity laws(同一律) | 当 | ||
| Negation laws(否定律) | 自己和自己取反:OR 必真、AND 必假 | ||
| Double negative law(双重否定律) | 负负得正 | ||
| Idempotent laws(幂等律) | 重复不改变结果 | ||
| Universal bound laws(domination/范围律) | OR 遇到 AND 遇到 | ||
| De Morgan's laws(德摩根律) | 展开后 OR、AND 调转 | ||
| Absorption laws(吸收律) | 括号内的结果无关大雅 | ||
| Negations of t and c(永真/永假的否定) |
Proof of Absorption law
Simplify Statement
- Simplify
- Simplify
- Simplify
- Simplify
- Simplify
- Simplify
Conditional Statement
IF-Then
It means
- If
, then ; OR implies
| T | T | T |
| T | F | F |
| F | T | T |
| F | F | T |
只有当前提 hypothesis
如果前提
Logical Formula for If-Then
我们可以用 #Writing Logical Formula for a Truth Table 的方式推导 If 的 logical formula
Idea 1: Focus on TRUE
| Logical statement | |||
|---|---|---|---|
| T | T | T | |
| T | F | F | |
| F | T | T | |
| F | F | T |
The logical formula is
这个 logical formula 可以很明白的说出 if 的关系,即只要
Negation of If-Then
如果要否定
Proof
要证明
Contrapositive 逆否命题
The contrapositive of
Proof
有时候直接证
If and Only If (IFF)
| 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
用数学符号表示为:
Argument is valid if whenever all the assumption are true, then the conclusion is true.
Example
- If it is raining, then I need an umbrella.
- It is raining.
I need an umbrella
Argument 只关心当假设 assumption 为 TRUE 时,结论 conclusion 是否为 TRUE
而并不关心事件 / statement 是 TRUE 还是 FALSE,即 assumption 可以为 False 且 conclusion 也变成 False。
Modus Ponens 肯定前件
If
用数学公式写:
Equivalently,
单独一个字母出现在代表为 TRUE,如
在拉丁文中,Modus Ponens 意思是 method of affirming 肯定法
Modus Tollens
Equivalently,
Example
- If typhoon, then class cancels.
- Class does not cancel
No typhoon
在拉丁文中,Modus Tollens 意思是 method of denying 拒绝法
Invalid Arguments
这个例子就是弄混了 #IF-Then 的关系,
这个在 #IF-Then 中有详细说明(参见 #^b05206)
如果要证明 argument 是 invalid,只需要提出一个反例即可。
Valid argument 并不代表是 true conclusion,例如如果 argument 的 assumption 是 FALSE 的,那 conclusion 就不一定是 TRUE。
Contradiction
If assumption is true, then the conclusion is true.
Generalization
Specialization
Elimination
Transitivity
如果第二行