Logic

Logic

音譯「邏輯學」、意譯「推理學」或「論證學」。台灣採用音譯,原因大概很恐怖。

台灣也有人譯作「理則學」。但是這個名稱不是學者提出來的,而是知名幫派份子兼通緝要犯提出來的。聯合日本人顛覆清國,聯合蘇聯人顛覆民國。部下殺人如麻,是個恐怖的人。

一套運算規則。宛如數學。

書籍、講義

Stanford Introduction to Logic
The Logic Notes
Logic: The Laws of Truth
Logic as a Tool: A Guide to Formal Logical Reasoning
Mathematical Logic for Computer Science
An Introduction to Formal Logic
forall x: An Introduction to Formal Logic
An Introduction to Proof Theory: Normalization, Cut-Elimination, and Consistency Proofs

百科全書。

https://cs.lmu.edu/~ray/notes/logic/
https://plato.stanford.edu/

邏輯學不屬於計算機科學系的授課範圍。然而卡內基美隆大學CMU的計算機科學系相當另類。他們開設了邏輯學與程式語言的一系列課程,並且要求學生至少修習一門課程。

http://coursecatalog.web.cmu.edu/schools-colleges/schoolofcomputerscience/undergraduatecomputerscience/#bscurriculumtextcontainer
15-312	Foundations of Programming Languages
15-314	Programming Language Semantics
15-316	Software Foundations of Security and Privacy
15-317	Constructive Logic
15-414	Bug Catching: Automated Program Verification
15-424	Logical Foundations of Cyber-Physical Systems
17-355	Program Analysis
17-363	Programming Language Pragmatics
80-413	Category Theory

Propositional Logic

Proposition

邏輯命題宛如數學變數。

變數習慣用p、q、r。

  | name          | English       | Chinese
--| --------------| --------------| ------------------
p | proposition   | proposition   | 命題

數值只有兩種:⊤、⊥。

  | name          | English       | Chinese
--| --------------| --------------| ------------------
⊤ | true          | true          | 真
⊥ | false         | false         | 假
註:邏輯學採用⊤ ⊥。數學採用T F。
  數學當中,⊥是垂直。

Connective

邏輯連詞宛如數學運算。

運算只有五種:¬、∧、∨、→、↔。

  | name           | English        | Chinese
--| ---------------| ---------------| ------------------
¬ | negation       | not            | 非
∧ | conjunction    | and            | 且
∨ | disjunction    | or             | 或
→ | implication    | if ... then ...| 若…則…
↔ | bi-implication | if and only if | 若且唯若、当且仅当
註:邏輯學採用→ ↔。數學採用⇒ ⇔。
  數學當中,→是趨近,↔是對應。
註:運算子優先權precedence:即是表格順序。¬最高↔最低。
  運算子結合性associativity:一律都是左結合。

針對一種運算(多種運算),枚舉輸入輸出,製作表格,稱作「真值表truth table」。看了真值表,就知道了一種運算的功能。

 p | q ‖ ¬p  | p∧q | p∨q | p→q | p↔q 
---|---‖-----|-----|-----|-----|-----
 ⊤ | ⊤ ‖  ⊥  |  ⊤  |  ⊤  |  ⊤  |  ⊤  
 ⊤ | ⊥ ‖  ⊥  |  ⊥  |  ⊤  |  ⊥  |  ⊥  
 ⊥ | ⊤ ‖  ⊤  |  ⊥  |  ⊤  |  ⊤  |  ⊥  
 ⊥ | ⊥ ‖  ⊤  |  ⊥  |  ⊥  |  ⊤  |  ⊤  

Compound Proposition

複合命題宛如數學算式。

(p ∧ (p → q)) → q

Logical Operation in Programming Language

程式語言裡面也有邏輯變數,稱作布林Boolean。

logical variable | programming language
-----------------| --------------------
proposition      | Boolean

多數程式語言裡面沒有邏輯數值,以整數1和整數0代替。

例如C、C++、Python、Rust,關鍵字true等同整數1。

logical value    | programming language
-----------------| --------------------
⊤ true           | 1 integer one
⊥ false          | 0 integer zero

少數程式語言裡面才有邏輯數值,同樣也是兩種。

例如C#、JavaScript。

logical value    | programming language
-----------------| --------------------
⊤ true           | true  true
⊥ false          | false false

程式語言裡面也有邏輯運算,但是只剩三種。

logical operator | programming language
-----------------| --------------------
¬ negation       | !  logical NOT
∧ conjunction    | && logical AND
∨ disjunction    | || logical OR
→ implication    |
↔ bi-implication |

三種就夠用了。p→q即¬p∨q。p↔q使用==。

 p | q ‖ p→q | ¬p∨q 
---|---‖-----|------
 ⊤ | ⊤ ‖  ⊤  |  ⊤   
 ⊤ | ⊥ ‖  ⊥  |  ⊥   
 ⊥ | ⊤ ‖  ⊤  |  ⊤   
 ⊥ | ⊥ ‖  ⊤  |  ⊤   

Logical Equivalence(Interpretation)

Statement

邏輯敘述宛如數學函數function。

一個式子,未知數值。

(p ∧ (p → q)) → q

Interpretation

邏輯解釋宛如數學函數求值evaluation。

an interpretation:
let p = ⊤
    q = ⊤
get (p ∧ (p → q)) → q = ⊤

another interpretation:
let p = ⊤
    q = ⊥
get (p ∧ (p → q)) → q = ⊤
    :
    :

各個變數代入各種數值,建立真值表。

 p | q ‖ p→q | p∧(p→q) | (p∧(p→q))→q
---|---‖-----|---------|------------
 ⊤ | ⊤ ‖  ⊤  |    ⊤    |      ⊤
 ⊤ | ⊥ ‖  ⊥  |    ⊥    |      ⊤
 ⊥ | ⊤ ‖  ⊤  |    ⊥    |      ⊤
 ⊥ | ⊥ ‖  ⊤  |    ⊥    |      ⊤

Tautology

複合命題細分為:

tautology    :恆真句。各個變數代入各種數值,皆求得⊤。
contradiction:恆假句。各個變數代入各種數值,皆求得⊥。
contingency  :偶真句。上述兩種情況以外。

例如(p∧(p→q))→q是恆真句,¬((p∧(p→q))→q)是恆假句,p∧(p→q)是偶真句。

邏輯學家借用tautology和contradiction這兩個語言學詞彙,作為恆真句和恆假句。這兩個語言學詞彙的原意不是恆真和恆假。tautology原意是重言(言辭空廢的其中一種情況),中文音譯為套套邏輯。contradiction原意是語意相左,中文意譯為矛盾。:-(

有些邏輯學家創造logical truth和logical falsity這兩個詞彙,作為恆真句和恆假句。這兩個詞彙容易跟true和false搞混。:-(

UVa 11108

Equivalence

邏輯等價宛如數學恆等式identity。

左式右式的真值表相符。左式右式同時是⊤、同時是⊥。

p → q ↔ ¬p ∨ q 

↔換成≡,方便閱讀。

p → q ≡ ¬p ∨ q

Rule of Replacement

邏輯學家已經發明許多取代規則。以下介紹其中三個:

一、雙反律double negation law:

¬¬p ≡ p

二、笛摩根定律De Morgan's law:

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

三、逆否命題定律contraposition law:

p → q ≡ ¬q → ¬p

Logical Inference(Interpretation)

Statement

邏輯敘述宛如數學運算式expression。

一個式子,未知數值。

(p ∧ (p → q))

Argument

邏輯論點宛如數學方程式equation。

一個式子(甚至多個式子),假設數值。

(p ∧ (p → q)) = ⊤

Inference狹義版本

邏輯推論宛如數學方程組求解equation solving。

假設大量敘述的數值,求得特定敘述的數值。

這些敘述分別稱作「前提premiss」與「結論conclusion」。

assume (p → q) = ⊤      (premiss)
       ¬(q → r) = ⊥     (premiss)
solve (p → r) = ?       (conclusion)

建立真值表,嘗試求解。

 p | q | r ‖ p→q | ¬(q→r) ‖ p→r 
---|---|---‖-----|--------‖-----
 ⊤ | ⊤ | ⊤ ‖  ⊤  |    ⊥   ‖  ⊤  ✔
 ⊤ | ⊤ | ⊥ ‖  ⊤  |    ⊤   ‖  ⊥  
 ⊤ | ⊥ | ⊤ ‖  ⊥  |    ⊥   ‖  ⊤  
 ⊤ | ⊥ | ⊥ ‖  ⊥  |    ⊥   ‖  ⊥  
 ⊥ | ⊤ | ⊤ ‖  ⊤  |    ⊥   ‖  ⊤  ✔
 ⊥ | ⊤ | ⊥ ‖  ⊤  |    ⊤   ‖  ⊤  
 ⊥ | ⊥ | ⊤ ‖  ⊤  |    ⊥   ‖  ⊤  ✔
 ⊥ | ⊥ | ⊥ ‖  ⊤  |    ⊥   ‖  ⊤  ✔

邏輯推論,可能成功,可能失敗。

成功稱作「有效valid」。失敗稱作「無效invalid」。

一、前提充足,結論得以確定,要嘛全部⊤,要嘛全部⊥。(有效)
  宛如數學唯一解unique solution。
二、前提不足,結論無法確定,既有⊤也有⊥。(無效)
  宛如數學無限多解infinitely many solution。
三、前提相左,前提假設數值,真值表找不到這種組合。(無效)
  宛如數學無解inconsistency。

有效時,可以調整每個敘述,適度追加¬,使得數值都是⊤。

假設大量實話,求得特定實話。

assume (p → q) = ⊤
       (q → r) = ⊤
determine (p → r) = ⊤

有效時,可以寫成直式或者橫式。不必寫= ⊤。

特殊等號⊨稱作「導致entailment」。

直式     	半直半橫         	橫式
p → q    	p → q , q → r    	p → q , q → r ⊨ p → r
q → r    	—————————————
—————    	p → r
p → r

Inference廣義版本

邏輯推論可以改寫成複合命題。

邏輯推論 p₁ , p₂ , ... , pₙ ⊨ q
複合命題 p₁ ∧ p₂ ∧ ... ∧ pₙ → q
邏輯推論:每個敘述,需要假設數值。(考慮特定數值)
複合命題:每個敘述,並未假設數值。(考慮各種數值)

有效與無效,定義為整體是⊤與整體是⊥。

狹義版本 p₁ ∧ p₂ ∧ ... ∧ pₙ ∧ q
valid:   (p₁ ∧ p₂ ∧ ... ∧ pₙ ∧ q) = ⊤
invalid: (p₁ ∧ p₂ ∧ ... ∧ pₙ ∧ q) = ⊥

廣義版本 p₁ ∧ p₂ ∧ ... ∧ pₙ → q
valid:   (p₁ ∧ p₂ ∧ ... ∧ pₙ → q) = ⊤
invalid: (p₁ ∧ p₂ ∧ ... ∧ pₙ → q) = ⊥

廣義版本,還有另一種等價說法:當左側敘述皆是⊤,則右側敘述必須是⊤。教科書採用這種說法,不過這種說法忽略了⊥。

廣義版本,差別只在於左側敘述也可以是⊥。也就是說,前提相左的情況,本來視作無效,現在視作有效。

前提相左的情況,左式是⊥、左式是恆假句。恆假句,邏輯學家稱作「矛盾contradiction」。

p₁ ∧ p₂ ∧ ... ∧ pₙ = ⊥

前提相左的情況,根據→的真值表,結論可真可假。前提恆假導致結論可真可假,邏輯學家稱作「爆炸explosion」。

⊥ ⊨ ⊤
⊥ ⊨ ⊥

經典範例:p是真、非p是真,導致任何敘述是真(也可以是假)。

p, ¬p ⊨ q

廣義版本,差別只在於爆炸,視作有效。:-(

Inference

邏輯學家採用廣義版本。

若左側是真,則右側是真。若左側是假,則右側隨意。

p₁ ∧ p₂ ∧ ... ∧ pₙ → q   where (p₁ ∧ p₂ ∧ ... ∧ pₙ → q) = ⊤

∧換成,,→換成⊨,方便閱讀。

p₁ , p₂ , ... , pₙ ⊨ q

Rule of Inference

邏輯學家已經發明許多推論規則。以下介紹其中三個:

一、肯定前件modus ponens:

p
p → q
—————
q

二、否定後件modus tollens:

p → q
¬q
—————
¬p

三、歸謬法reductio ad absurdum:

p → q
p → ¬q
——————
¬p

Logical Inference(Derivation)

Inference

方才使用真值表。現在使用規則表。

Rule of Inference

邏輯命題習慣用A、B、C。

特殊等號⊢稱作「衍生derivation」。

直式     	半直半橫   	橫式
A        	A , B      	A , B ⊢ A ∧ B
B        	—————
—————    	A ∧ B
A ∧ B

邏輯學家已經發明一套推論規則:

introduction:
                                          [A]         [A]     
                                           ⋮           ⋮      
A , B          A            B              B           ⊥      
————— (∧I)   ————— (∨Iₗ)   ————— (∨Iᵣ)   ————— (→I)   ——— (¬I)
A ∧ B        A ∨ B        A ∨ B          A → B        ¬A     

elimination:
                                  [A] [B]    
                                   ⋮   ⋮     
A ∧ B        A ∧ B         A ∨ B , C , C     
————— (∧Eₗ)   ————— (∧Eᵣ)   ————————————— (∨E)
  A            B                C             

A , A → B        A , ¬A     
————————— (→E)   —————— (¬E)
    B              ⊥        

other:
                     [¬A]     
                      ⋮       
¬¬A         ⊥         ⊥       
——— (¬¬)   ——— (⊥)   ———  (RA)
 A          A         A       
雙反律     爆炸 :-(  歸謬法   

Derivation

利用規則表,前提一路變成結論。

套用規則稱作「衍生derivation、演繹deduction」。

例如且運算交換律「A ∧ B ⊢ B ∧ A」的衍生過程:

樹狀風格                            列表風格
derivation tree:                   derivation list:

A ∧ B         A ∧ B                1 │ A ∧ B
————— (∧Eᵣ)   ————— (∧Eₗ)             ├───────
  B             A                  2 │ B        from 1 (∧Eᵣ)
————————————————————————— (∧I)     3 │ A        from 1 (∧Eₗ)
          B ∧ A                    4 │ B ∧ A    from 2 3 (∧I)

Consequence

邏輯結果宛如數學因此therefore。

  | name                  | English | Chinese
--| ----------------------| --------| ----------
⊨ | semantic consequence  | entail  | 導致、蘊涵 :-(
⊢ | syntactic consequence | derive  | 衍生、推導
註:邏輯學採用⊢。數學採用∵和∴配對。
  數學當中,⊢是伴隨函子。
註:邏輯學採用⊨。數學沒有對應符號。
  數學不討論此概念。

Valid / Derivable

valid:     a inference is true by intepretation
derivable: a inference is true by derivation
valid:     A ⊨ B
derivable: A ⊢ B
valid but not derivable
https://math.stackexchange.com/questions/3987061/

形容詞valid、名詞validity。

有效的:根據真值表,若前提皆⊤,則結論是⊤。

當所有前提皆假設為⊤,則這個結論有唯一解⊤。

形容詞derivable、名詞derivability。

可衍生的:根據規則表,若前提皆⊤,則結論是⊤。

當所有前提皆假設為⊤,則可以衍生這個結論。

Sound / Complete

sound:    all derivable inferences are valid
complete: all valid inferences are derivable
sound:    (A ⊢ B) → (A ⊨ B)
complete: (A ⊨ B) → (A ⊢ B)
complete but not sound
https://math.stackexchange.com/questions/441025/

形容詞sound、名詞soundness。

可靠的:可衍生的邏輯推論都是有效的。

這套前提衍生的所有結論,皆有唯一解⊤。

前提很合理,結論皆實話。所到之處,皆為實話。宛如洪水。

形容詞complete、名詞completeness。

完備的:有效的邏輯推論都是可衍生的。

凡有唯一解⊤,必是這套前提衍生的結論。

前提很充足,道盡一切實話。所有實話,皆可觸及。宛如連通。

Satisfiable / Consistent

形容詞satisfiable、名詞satisfiability。

可滿足的:存在一種Interpretation,使得這個敘述是⊤。

形容詞consistent、名詞consistency。

一致的:存在一種Interpretation,使得所有結論皆⊤。

換句話說,所有結論∧起來,不是恆假句。

  sound ∧ conjunction of all premisses is not a contradiction
→ conjunction of all conclusions is not a contradiction (consistency)
soundness implies consistency
https://cs.stackexchange.com/questions/88274/

可靠的:可衍生的邏輯推論都是有效的。

有效的:若不是爆炸(若前提不是恆假句),那麼存在一種Interpretation,當前提皆真,則結論皆真。

換句話說,可靠的情況下,若前提不是恆假句,則一致。

Axiom

各種命題A、B、C、……都可以假設數值是真,作為最初的前提,作為衍生的起點。

現在改成只有部分敘述可以假設數值是真,作為最初的前提,作為衍生的起點。這些敘述稱作「公理axioms」。

deductive system:演繹系統。衍生起點可以是任意命題。
axiomatic system:公理系統。衍生起點只能是指定敘述。

知名的公理系統:

Gentzen system:一個公理,多個規則。我不打算深入介紹。
Hilbert system:三個公理,一個規則。我不打算深入介紹。

【名稱尚待確認】

邏輯推論本身作為邏輯敘述,拿來進行邏輯推論。

如此一來,就能調整前提結論。

A ⊢ C
B ⊢ C
—————————
A , B ⊢ C

恆真句/公理可以寫成推論規則的模樣:前提是空集合,結論是恆真句/公理。

⊨ ¬(p ∧ ¬p)   tautology
⊢ ¬(A ∧ ¬A)   axiom

邏輯學家已經發明許多推論規則。以下介紹其中三個:

(Γ Σ Δ Π各是一連串敘述。敘述數量可以是零個。)

introduction:
Γ, A ⊢ Δ            Γ ⊢ Δ, A          
———————————— (∨L)   ————————————— (∨R)
Γ, A ∨ B ⊢ Δ        Γ ⊢ Δ, A ∨ B     

elimination:
Γ, A ⊢ Δ         
Σ, B ⊢ Π, A      
——————————— (cut)   原理其實就是q→r, p→q ⊢ p→r,前提對調順序。
Γ, B ⊢ Δ, Π      

other:
         
————— (I)   同一律
A ⊢ A    

Intuitionistic Logic / Classical Logic

直覺主義邏輯:自訂規則。

經典邏輯:符合下述六種規則。也符合五種運算的真值表。

排中律    law of excluded middle       ⊢ (A ∨ ¬A)
無矛盾律   law of noncontradiction      ⊢ ¬(A ∧ ¬A)
追加無謂前提 monotonicity of entailment   (A ⊢ B) ⊢ (A , X ⊢ B)
消滅重複前提 idempotency of entailment    (A , A ⊢ B) ⊢ (A ⊢ B)
且運算交換律 commutativity of conjunction (A ∧ B) ⊢ (B ∧ A)
笛摩根對偶  De Morgan duality            ¬(A ∨ B) ⊢ (¬A ∧ ¬B)

順帶一提,邏輯學家依據上述六種規則,創造五種邏輯運算的真值表。先有本章的內容,才有上章的內容。

好久好久以前,邏輯學沒有真值表,邏輯學只有規則表。邏輯推論過程冗長,令人望而生畏。直到真值表橫空出世,邏輯學搖身一變宛如數學,自此邏輯學就變得平易近人了。

Logical Equivalence(Derivation)

Equivalence

方才使用真值表。現在使用規則表。

實施兩次邏輯推論:左式衍生右式,右式衍生左式。如果兩者皆可衍生,那麼兩者等價。

邏輯推論是單箭頭→,邏輯等價是雙箭頭↔,符號造型就是從衍生而來的。

Logical Reasoning

Logical Reasoning

邏輯推理。找到前提結論,製造邏輯推論。

邏輯學家考慮下述三種手法:

deductive reasoning:演繹。找到結論。
abductive reasoning:溯因。找到前提。
inductive reasoning:歸納。找到一個前提,挪作結論。

演繹當中,最經典的手法是「自然演繹natural deduction」:自訂前提,套用規則,不斷衍生,找到結論。先前章節已經介紹了。

Statistical Reasoning

統計推理。針對某些現象,進行取樣,將發生機率最高的事件聯繫配對在一起。簡單來說就是英國研究。

例如交通肇事者當中有70%擁有吃早餐的習慣。兩者關聯之後:吃早餐極可能導致車禍。

例如有錢屬於好事、照顧老弱婦孺屬於好事、為民服務是好事。這些關聯之後:地方首長發放敬老津貼、生育補助,地方首長是在做好事。

人類經常採用關聯,很少採用衍生。大部分人類的知識架構皆源自統計推理,而非邏輯推理。統計推理符合人類習性,自然而然就會適應。邏輯推理違反人類直覺,實施教育才能習得。

Predicate Logic

Predicate

邏輯謂詞宛如數學集合。

借鑑集合論,發明新變數:P(x)、P(x,y)。

一元版本P(x):x是正整數、x屬於S集合、……。

二元版本P(x,y):x包含y、x大於y、x等於y、……。

P(x)與P(x,y),寫作函數,當作變數,實為集合。

援引集合的概念,稍微符合真實世界常見情況。

     | name        | English     | Chinese
-----| ------------| ------------| ------------
P(x) | predicate   | predicate   | 謂詞

Connective

邏輯連詞宛如數學運算。

借鑑集合論,推廣舊運算:¬、∧、∨、→、↔。

舊運算全面改成集合運算,但是沿用舊符號。

logical operator | set operator
-----------------| --------------
¬ negation       | ‾ complement
∧ conjunction    | ∩ intersection
∨ disjunction    | ∪ union
                 | \ subtraction
→ implication    | ⊃ inclusion
↔ bi-implication | = equivalence

Compound Predicate

複合謂詞宛如數學算式。

(P(x) → Q(x)) ∨ (P(x) ∧ ¬Q(x))

Quantifier

邏輯量詞宛如數學性質符號。

借鑑集合論,發明新運算:∀、∃。

將複合謂詞變成邏輯命題。

  | name                       | English      | Chinese
--| ---------------------------| -------------| -------
∀ | universal quantification   | for all      | 所有
  |                            | given any    | 任意
∃ | existential quantification | for some     | 某些
  |                            | there exists | 存在

Proposition

複合謂詞變成邏輯命題,需要使用量詞。

一元謂詞需要一個量詞,二元謂詞需要兩個量詞。

∀xP(x)
∃x∀yP(x,y)

多元複合謂詞需要多個量詞。

∀x((P(x) → Q(x)) ∨ (P(x) ∧ ¬Q(x)))
∀x∀y(P(x) ∧ Q(y) ∧ R(y) ∧ S(x,y))

數值只有兩種:⊤、⊥。

∀xP(x) = ⊤
∀x∃yP(x,y) = ⊥
∀x(P(x) → Q(x)) ∨ (P(x) ∧ ¬Q(x)) = ⊥
∀x∀y(P(x) → Q(y) ∨ R(y)) = ⊥

Compound Proposition

複合謂詞變成邏輯命題之後,得以使用舊運算。

由於運算符號一模一樣的緣故,需要仔細解讀。

¬∀xP(x) → ∃x(¬P(x) → Q(x))

P(x) and Q(x) are predicates
¬P(x) → Q(x) is a compound predicate
∀xP(x) and ∃x(¬P(x) → Q(x)) are propositions
¬∀xP(x) → ∃x(¬P(x) → Q(x)) is a compound proposition

Rule of Replacement

命題運算¬改成謂詞運算¬。

¬∃xP(x) ≡ ∀x¬P(x)
¬∀xP(x) ≡ ∃x¬P(x)

這是錯誤範例。等號右側量詞短缺,文法錯誤。

∀x∀yP(x,y) ≡ ∀xP(x,y) ∧ ∀yP(x,y)

Propositional Logic / Predicate Logic

命題邏輯(零階邏輯):變數是一個數值。運算一共五種。

謂詞邏輯(一階邏輯):變數是一個集合。追加兩種運算。

可以推廣成高維度,但是沒有太大意義。

Modal Logic

Modal Logic

Formal Science

楔子

本章介紹邏輯學與數學、哲學、語言學之間的聯動,以及知名主題。由於我不是這些領域的專家,所以我只負責起個頭。想要知道更多,麻煩自行探索。

這些主題之間有點跳tone,閱讀起來應該不太容易吸收。作為彌補,我盡量寫得輕鬆歡樂,閱讀起來應該不太會有負擔。你就當作是閱讀農場文章八卦新聞吧。

科學與工程Science and Engineering

首先解釋科學與工程。兩者方向恰好相反。

科學:觀察現實,找到規律。

工程:利用規律,改造現實。

跟大自然相關的科學,叫做自然科學。例如物理學、化學、生物學、……。

針對人類,跟人類活動相關的科學,叫做人文科學。例如社會學、心理學、經濟學、……。

形式科學Formal Science

利用規律,改造架空世界。觀察架空世界,找到規律。

既非科學、亦非工程,一切都位於架空世界的學問,稱作形式科學。例如邏輯學、哲學、神學、數學、統計學、……。

(這些學問明明不是科學與工程,卻硬是冠上科學二字。)

台灣民眾對於這些學問相當陌生。背後原因曲折離奇,大概要從蘇聯扶植叛軍顛覆中華民國開始說起。由於這不是我的專長,就不多提了。

數學Mathmatics

數學既非科學、亦非工程。

數學的一切都位於架空世界,與現實無關。數學宛如動漫電玩、奇幻文學的背景設定。例如打倒史萊姆獲得經驗值秘銀比鋼鐵輕巧堅固dx無窮微小而略大於零0.999...等於1

雖然數學位於架空世界,但是數學的發展過程,經常借鑑現實世界。例如三角函數借鑑測量學、微積分借鑑物理學。

雖然數學位於架空世界,但是數學的創作內容,經常協助科學與工程。例如加法乘法用於計算價格(儘管也有人稱重喊價)、方程式描述水流軌跡(儘管未獲得證實)。

架空世界、現實世界,想要媒合這兩個世界,相當困難,很少人做得到。很多人感慨學數學沒用,倒不如說是因為他們想不到如何媒合。至於那些媒合成功的人,成為了令人景仰的科學家、工程師。

儘管很多人對數學避之唯恐不及,但是事實是數學已經風靡數百年。數學是史上最多人參與的、連載時間最長的、支線劇情最多的,呃,子供向幻想大作。隨時都有人追新番,每天都有人搞二創,哎喲宅到不行。

數學引進邏輯學

數學最初絕非嚴謹。例如擁有霸王色霸氣的人,被近海之主輕易咬斷一隻手。例如級數未必收斂。例如處處連續處處不可微分。即便劇情精彩不落俗套,也存在漏洞。

數學最後變得嚴謹。Peano替數學引進邏輯學。Hilbert提倡形式系統:數學定理必須源自公理、經過推理。後人繼承遺志,一步一腳印修補所有漏洞,讓數學全面符合邏輯學。

可說是史上最大規模跨界聯動。全場都沸騰了。人人熱淚盈眶。

公理Axiom

公理是最初的前提。

數學位於架空世界。數學家自行創造公理。數學家嘗試各種可能的公理,嘗試推導各種可能的定理。使用盡量少的公理,得到同樣多的定理,以簡馭繁。

公理稍微增加,定理大幅增加。數學家仔細權衡,不輕易增加公理。人物設定太過強大,劇情發展容易失控,一不小心變成糞作。

公理不是一次到位。當初Hilbert撰寫幾何教科書,每一版都重新修訂公理。現今的數學教科書,經過了歷代數學家的監修,已經難以修訂公理。不過還是可能存在更好的公理。如果你發現更好的公理,那麼可以撰寫論文投稿學術期刊,成為新銳作家。

哥德爾不完備定理Gödel's Incompleteness Theorems

Hilbert提倡形式系統。他希望數學是complete:一套公理能夠推導一切數學定理。只要數學家努力不懈持續探索,就能發掘所有真理。多麼美好!

Gödel隨即證明了數學不是complete。他發現到:Peano的自然數公理,存在無法推導的數學定理。無論數學家再怎麼努力推導,某些真理終究證明不了。

證明相當複雜,我沒有學會。知道結論就足夠了。請見哥德爾不完備定理哥德爾不動點引理

證明Proof

大學數學教科書充滿著證明,就是引進邏輯學的緣故。數學完全變了個樣。數學變成了只有御宅才能瞭解的學問。

哲學Philosophy

理解的學問。發掘細節、釐清因果、編成故事。

例如「生命的意義」理解生命、「什麼是科學」理解科學。

科學:觀察現實,找到規律。「研究科學」就是理解現實規律。因此「研究科學」這種行為也是哲學的範疇。歐美大學院校,研究科學而獲得博士學位的人,稱作哲學博士。台灣效仿歐美制度。台灣資工所博士班畢業生,其英文畢業證書上面寫的就是哲學博士。

哲學引進邏輯學

講幹話大賽的比賽規則。

因果Causation

事情演化的前後關連。

原因結果cause/effect針對現實世界,例如「下雨會潮濕」。

前提結論premiss/conclusion位於架空世界,例如「若下雨則潮濕」。

架空世界與現實世界經常進行媒合。例如肯定前件modus ponens與雨濕關連進行媒合:下雨是真,若下雨則潮濕是真,那麼潮濕是真。

p         下雨。
p → q     若下雨,則潮濕。
—————
q         潮濕。

例如歸謬法reductio ad absurdum與下雨亮暗關聯進行媒合:

p → q     每當下雨,天空就明亮。
p → ¬q    每當下雨,天空就昏暗。
——————
¬p        怎麼可能是因為下雨。

原因結果(基於觀察)、前提結論(基於假設),不是相同事物,兩者天差地遠。儘管大家經常運用邏輯推論描述因果,但是不一定能夠順利媒合。

悖論Paradox

一個邏輯敘述,無法指定唯一數值。

製造悖論的方法:以反義引述自身。

例如「我建立規則:『我建立的不是規則』」。

一、「我建立的東西」媒合邏輯變數p。

二、「是規則」和「不是規則」媒合邏輯數值⊤和⊥。

三、「我建立規則」媒合p = ⊤。

四、「我建立的不是規則」媒合p = ⊥。

五、變數p無法指定唯一數值。

悖論與矛盾不太一樣。

矛盾:一個敘述恆假。

悖論:一個敘述又真又假。

(悖論強行切開成兩個敘述,同時採納,則形成矛盾。)

悖論強行媒合邏輯推論,就會形成無窮迴圈。

一、若「我建立規則」確實是規則,則「我建立的不是規則」確實也是規則。

二、若「我建立的不是規則」是規則,則「我建立規則」不是規則。

三、若「我建立規則」不是規則,則「我建立的不是規則」不是規則。

四、若「我建立的不是規則」不是規則,根據雙反律,則「我建立規則」確實是規則。如此又回到起點了。

引述自身,邏輯學家稱作「自指self-reference」。以同義引述自身,語言學家稱作「重言tautology」。以反義引述自身,哲學家稱作「悖論paradox」。

哥德爾不完備定理的證明、停機問題的證明,就利用了悖論。悖論的情況下,無法指定唯一數值、無法辨認真假。因此無法推導所有定理、無法判斷是否停機。

然而只要避開悖論,也許就能順利推導定理、順利判斷停機。

道德經「道可道,非常道」可能就是奉勸大家避開悖論。

大家已經發現各式各樣的悖論:

Fact and Opinion事實與意見

事實是邏輯敘述數值已定。要嘛真、要嘛假。

意見是邏輯敘述數值未定。每個人自行假設數值。

事實通常符合邏輯推論。意見則未必。

「太陽很熱」是事實。可以利用科學研究所得到的規律進行邏輯推論,可以利用科學實驗確認邏輯敘述是真。例如太陽溫度5778K、陽光照射的地方溫度上升變熱。

「天氣很好」是意見。有人覺得天氣很好是涼爽乾燥,有人覺得天氣很好是晴空萬里。每個人依據自己的推論規則決定結論、設定真假,甚至沒有推論規則。

不管怎麼爭論,事實就是事實。不管怎麼爭論,意見沒有定論。

台灣國情特殊。記者經常報導意見,網民經常爭論意見,名嘴經常發表意見。不管怎麼吵,意見都不會有唯一結論。有可能這些人不熟悉邏輯學。也可能他們故意想讓大家遠離邏輯學。

比方說,新聞局員工,偕同報社舉辦週會,決定下週報導內容他跟幫派大老是好朋友一起出席報社員工家屬婚宴

上述比方都是事實。當事人現身說法(如果沒有說謊)。

他們想讓大家遠離邏輯學則是意見。這是我提出來的說法。

歐美國家的義務教育,內含邏輯推理。「分辨事實與意見」是小學、幼稚園課程內容。台灣的義務教育,內含邏輯運算,不含邏輯推理。台灣民眾普遍缺乏「分辨事實與意見」的能力,甚至連台灣法官也是如此

這也沒什麼,習慣就好了。

語言學Linguistics

說話和寫字的學問。屬於人文科學。

語言種類繁多。現實世界的語言有Mandarin、英語、西班牙語、……。架空世界的語言有昆雅語、克林貢語、……。

書寫系統種類繁多。現實世界的書寫系統分成五類:Abjad、Abugida、Alphabetic、Logographic、Syllabic。

一種語言通常採用一種書寫系統。以便將話語化作文字。例如Mandarin採用漢字的變種(屬於Logographic)、英語採用拉丁字母的變種(屬於Alphabetic)。

多種語言經常共用一種書寫系統。古代秦漢帝國四處征伐同化,導致東亞大陸諸多語言採用漢字。Mandarin唸作「好」,粵語唸作「侯」,客家語唸作「後」,閩南語唸作「賀」,日語唸作「摳」,儘管意義不盡相同,但是漢字一律寫作「」。

延伸閱讀:Chinese

好久好久以前,東亞大陸的許多民族,曾經建立了許多帝國。

古代曾有地名Cīna,位於東亞大陸。此地名源自秦漢帝國(秦漢魏晉宋齊梁陳)。中譯「支那/震旦」。

後來有地名Tabgach,位於差不多的地方。此地名源自鮮卑帝國(魏齊周隋唐)、沙陀帝國(漢周宋)。中譯「拓跋/桃花石」。

後來有地名Cathay,位於差不多的地方。此地名源自契丹帝國(遼)、党項帝國(夏)、蒙古帝國(元明)、女真帝國(金清)。中譯「契丹/國泰」。現今仍有地球人稱呼此地名,主要是北亞、西亞、東歐一帶的地球人。

事過境遷,東亞大陸的民族們,最近建立了兩個共和國。

民國官方將國內所有民族稱作「中華民族」,其居住地稱作「中華」。民國官方將國名定為「中華」,以地名當作國名。民國官方將國名翻譯為「China」而非「Central Flower」,以古代地名當作國名翻譯。

這導致當地人認為China是指這些民族的居住地(中華),Chinese是指這些民族的人和語言(華人和華語)。

中國官方將國內所有民族稱作「漢族」,其居住地稱作「中國」。國名翻譯維持原案。

這導致當地人認為China是指這些民族的居住地(中國),Chinese是指這些民族的人和語言(漢人和漢語)。

地球人與當地人的認知不盡相同。自從民國和中國將國名定為地名,現在地球人認為China是指民國和中國、也指所在地,Chinese是指中國公民與中國官方語言、也指當地的人和語言。

延伸閱讀:中文

所謂的「中文」是指「中國語與中國字」,詳細是指「中國官方制定的語言與書寫系統」。偶爾單指書寫系統。

中文是中國官方發明的新語言新文字。發明過程請見維基百科:

中國語Chinese language:中國官方稱作普通話,台灣官方稱作國語,地球人稱作Mandarin。(中國語是從Mandarin修改而得,然後中國語取代了Mandarin。地球人維持原本稱呼。)

中國字Chinese characters:中國官方稱作漢字,台灣官方稱作簡體字。各自都有政治目的。齣頭誠濟。

延伸閱讀:繁體中文

所謂的「繁體中文」是非常偏門的東西。

繁體中文是國民政府發明的新語言新文字。內容幾近原創,諸如筆劃寫法、筆劃順序、部首、注音符號、標點符號、句型(因為所以、雖然但是)、文法(文字順序打亂也沒關係)。繁體中文有別於明清白話文、四書五經(明清公務員考試標準)。

如果英語是中央帝國的語言,那麼繁體中文是西域蠻夷的語言。麥克阿瑟通西域、羅斯福變主幹道。因為大家不想承認自己是蠻夷,所以大人不會這樣教小孩。

延伸閱讀:語文

照理來說「語」和「文」分別是指語言和書寫系統。

例如English language和English alphabet分別翻譯成「英語」與「英文字母」。

但是Chinese language和Chinese character卻翻譯成「中文」與「中文字」。為何不是「中語」與「中文字」呢?我也不知道。

語言學引進邏輯學

邏輯學最初的用途,是為了確認說話是否有理有據。

日常生活的語言,有一些部分可以運用邏輯學。

https://cs.lmu.edu/~ray/notes/logic/

病句Solecism

一段話語,不符合語法、不符合語意。

一、不符合語法,例如詞彙搭配錯誤:

「這個地方的景色之壯麗,令人心曠神怡。」

不需要之這個字。

二、不符合語意,例如語序不同導致語意不同:

「有三個人每天去看電影。」

「每天有三個人去看電影。」

谷歌翻譯無法判別中文語意,翻譯結果毫無差別:

There are three people who go to the movies every day.

可靠性Soundness

邏輯推論當中,假設前提是真,得到結論是真。但是這只是假設。當前提確實是真,那麼結論也確實是真。這種情況稱作可靠。

語言學與邏輯學,媒合成功的情況下,得以運用邏輯推論,判斷話語是否合理。前提確實是真,結論即是真,視作正論,稱作可靠。前提確實是假,結論可真可假,視作病句,稱作不可靠。

proposition:
p         it is a penguin.     它是企鵝(數值是真)
q         it is a bird.        它是鳥(數值是真)
r         it can fly.          它會飛(數值是假)

inference:
p → q     a penguin is a bird. 企鵝是鳥
q → r     a bird can fly.      鳥會飛
—————
p → r     a penguin can fly.   企鵝會飛

架空世界,邏輯推論「p → q , q → r ⊨ p → r」是有效的。

現實世界,前提「企鵝是鳥」是真,前提「鳥會飛」是假。

根據真值表,因為其中一個前提「鳥會飛」是假,所以結論「企鵝會飛」可真可假。「企鵝會飛」不可靠。「企鵝會飛」是病句。

不可靠與矛盾不太一樣:

不可靠:邏輯推論,左式確實是假。

矛盾:邏輯推論,左式是恆假句。

「p → q , q → r ⊨ p → r」左式數值是假,顯然是不可靠。左式不是恆假句,既不是矛盾也不是爆炸。

先前的soundness與本章的soundness不太一樣:

先前:若邏輯推論是可衍生的,則邏輯推論是有效的。

(規則表衍生出來的結論,都符合真值表。)

本章:邏輯推論是有效的,而且,前提是真的。

(那麼結論確實是真的。)

這是什麼鬼

下面是媒合失敗的案例。這根本不是邏輯學。千萬不要媒合成這種奇怪的東西。數學函數中毒患者可能會這樣做。

predicate:
P(x)            x is a bird.         它是鳥
Q(x)            x can fly.           它會飛
  p             it is a penguin.     企鵝

inference:
P(p)            a penguin is a bird. 企鵝是鳥
P(x) → Q(x)     a bird can fly.      鳥會飛
———————————
Q(p)            a penguin can fly.   企鵝會飛

這是什麼鬼

下面也是媒合失敗的案例。影片作者分不清Propositional Logic和Predicate Logic的差別,將命題當作謂詞來解釋。

可以發現,不僅台灣法官不熟悉邏輯學,連台灣議員也不熟悉邏輯學,連台灣自媒體也不熟悉邏輯學。上述句子想要改成邏輯敘述,那麼記得加上量詞。

謬誤Fallacy

無法符合邏輯推論。

語言學與邏輯學,媒合成功的情況下,得以運用邏輯推論,判斷話語是否合理。邏輯推論可靠,視之為正論。邏輯推論不可靠,視之為病句。這類謬誤歸類於「形式謬誤formal fallacy」。

語言學與邏輯學,媒合失敗的情況下,需要檢討哪一處媒合失敗。這類謬誤歸類於「非形式謬誤informal fallacy」。

大家已經發現各式各樣的謬誤:

形式謬誤Formal Fallacy

形式謬誤種類繁多。大家自己看維基百科吧:

介紹一個形式謬誤「倒果為因affirming the consequent」。

proposition:
p         it rains.              下雨(數值是假)
q         it is wet.             潮濕(數值是真)

the inference is not valid:
q         it is wet.             潮濕
p → q     if it rains, then wet. 若下雨則潮濕
—————
p         it rains.              下雨

邏輯推論是無效的,先不管敘述數值為何。因此結論是病句。

住在海邊,海風吹來就會潮濕,不見得要下雨才會潮濕。

運氣很好的情況下,下雨是真,就會碰巧說對。有些人以為自己碰巧說對,就以為自己的邏輯推論有效。網路論壇經常有這種人。

取名倒果為因,是因為有一個有效的邏輯推論,長得跟它很像,而且兩者前提結論恰好顛倒。

valid    invalid
p        q    
p → q    p → q
—————    —————
q        p    

非形式謬誤Informal Fallacy

非形式謬誤種類繁多。大家自己看維基百科吧:

我做個簡易分類,以一階邏輯為例:

一、元素不存在。(幻想)

「程式語言是外功、演算法是內功。」

虛構事物「武俠小說」解釋現實事物「計算機科學」。

「哆啦A夢為什麼不把耳朵修好。未來科技不是很發達嗎?」

在虛構的故事當中尋求真實感的人腦袋一定有問題。

相反地,能讓虛構故事符合前提與結論,那是鬼才文豪。

「政府草菅人命,我對政府很失望。」

該人宇集合應是某些政府員工,但是該人根本不認識那些政府員工。該人宇集合沒有確切對象,只有幻想對象。

「總統草菅人命,我對總統很失望。」

該人宇集合沒有確切對象,只好抓總統來湊數。

二、宇集合不同。(立場不同)(定義不同)

「地球生物活不過千年。」

宇集合缺失。沒人去過海溝和地心進行確認。燈塔水母。

「天下無不是的父母。」

宇集合缺失。刑事案例不勝枚舉。

「感謝神明庇佑我渡過難關、保佑我平安。」

該人宇集合沒有醫生律師警察消防小7店員……。

「感恩師父!讚歎師父!」

該人宇集合只有師父。

「這次考試很簡單啊。」「那你考得不錯喔。」

兩人宇集合不同,其中一人參加很多困難的考試。注意到該人未必知識量較多、也未必高分。

「鋼鐵人和蝙蝠俠誰比較強?(比較漫畫角色強弱)」

兩人宇集合喬不攏。權謀、裝備、人脈這些算不算?體力腦力念力靈力咒力霸氣查克拉這些要用什麼公式來算?

「機器學習用到很多數學。」

這句話是主動賓結構。主語:機器學習。動詞:用到。賓語:很多數學。

該人賓語宇集合較小。純粹數學當中,機器學習用到分析與代數的一部分,其他分支還有數論、組合、幾何、拓樸、……。應用數學當中,機器學習用到資訊理論,其他主題還有微分方程、調和分析、賽局理論、……。除此之外,機器學習用到統計學,但是這不屬於數學。講難聽點,該人搞不好連大學數學系必修課程有哪些都不知道,搞不好連課程用書都沒讀過,符合第一類型的幻想。

又或者該人自訂主語宇集合。別人需要推測主語宇集合。這句話其實省略了「相對於其他資工系科目,……」。該人的比較對象是資工系其他科目。

三、變數不明。(細節不同)

「持槍殺人不對。壞人持槍殺人不對。警察持槍殺人、對象是上述壞人呢?」

除了持槍殺人之外,尚有一些變數沒有明講,例如動機。

追加變數、擴大真值表,該敘述不再是恆真句。

「L死亡之後,又出現後繼者M和N。(故事情節發展)」

御都合主義。隨意追加變數。反正只要硬掰成恆真句就行了。

四、變數數值不明。(資訊不足)

「孩子如果不上好國中,之後就考不上好高中,再來就考不進好大學,接著會找不到好工作,然後會窮困潦倒,一生就毀了!」

滑坡謬誤。變數數值不確定。

這句話可以媒合複合命題(¬p₁ → ¬p₂) ∧ (¬p₂ → ¬p₃) ∧ ...。如果每個括號都是真,那麼這句話是真。如果其中一個括號是假,那麼這句話是假。

該人必須等到該孩子出社會,才能根據事實,驗證括號真假。

又或者該人宇集合是地球上所有孩子。顯然每個括號都是假。反例實在太多。中了樂透翻轉人生,大有人在。

這句話媒合邏輯學,形成謬誤,缺乏道理。這句話媒合社會學,卻有幾分道理。類似的例子還有「有錢人的小孩子什麼都比較會」,邏輯雖假,但言之有理。話糙理不糙。

人類不見得依照邏輯過生活。所謂道理,見仁見智啦。

「米飯是垃圾食物。」

變數相依。變數數值不是定值。變數數值來自於其他變數(透過對比、聯想、……),導致某個Interpretation不可靠。

非形式邏輯Informal Logic

利用道德、偏好、聯想、暗示,藉此表達意見。

經典範例是網路論壇筆戰。例如下述評論,全篇只有意見,沒有事實。同時運用許多非形式邏輯的伎倆,以便維護當事人。

「投影片抄襲是原作跟抄襲者之間的問題」。非形式邏輯的伎倆。這是撇清關係。投影片用於學生,問題就關乎學生。

「學生學習權益上應該是沒什麼受損啦」。這是邏輯謬誤。以偏概全。他一個人的意見代表所有學生意見。

「說句真話,那些課亂上、愛教不教、不備課的老師我還覺得更可惡欸」非形式邏輯的伎倆。這是轉移話題。以他人錯誤掩飾當事人錯誤,藉此維護當事人。

「投影片即使是用別人的,至少還是得自己上、自己講解內容。」這是謬誤。將別人的投影片用於課程,自己講解內容,這就叫做抄襲。

「要知道只要有一個同學成績有誤但送出了,要更改的話,對同學跟老師都是非常麻煩的」這是謬誤,也是非形式邏輯的伎倆。作者暗示當事人擔心送錯成績導致延遲,藉此維護當事人。但是這是作者臆測。事實是從未有台大教師宣稱擔心送錯成績,也從未有台大教師宣稱因此導致延遲。事實是大部分台大教師都能準時送成績。

「但要帶風向甚至亂開玩笑、人身攻擊的,要記得低卡不是匿名的喔」非形式邏輯的伎倆。這是欺騙威脅。當事人犯錯可受公評,作者卻以此威脅其他網民。

退萬步而言,按照作者一開始的論點,當事人要提告,是當事人與網民之間的問題,與作者無關。作者自打臉。

可以發現,即便是台大資工系學生,也缺乏論述能力。整篇評論,運用各種伎倆,意圖遠離事實。這些伎倆不是義務教育的內容,但是作者卻學會了。各位可以想一想,作者是從哪裡學會這些伎倆,又是什麼人教會作者這些伎倆。

邏輯學Logic

邏輯學有許多分支。先前章節涉及的分支:

符號邏輯Symbolic Logic,特色是命題(變數)。

數學邏輯Mathematical Logic,特色是連詞(運算)。

形式邏輯Formal Logic,特色是規則(衍生)。

非形式邏輯Informal Logic,特色是聲東擊西。

邏輯學引進數學

邏輯學結合數學,稱作數學邏輯Mathematical Logic。

propositional logic:  binary (true/false)
three-valued logic:   ternary (true/false/unknown)
fuzzy logic:          real (probability)
deep learning:        function (probability distribution) 
paraconsistent logic: NaN/INF
propositional logic:  status
predicate logic:      set
modal logic:          necessity
temporal logic:       always
intensional logic:    abstraction

邏輯學結合演算法,稱作計算邏輯Computational Logic。

boolean logic: conjunctive normal form
combinatory logic: lambda calculus

邏輯學引進哲學

邏輯學結合哲學,稱作哲學邏輯Philosophical Logic,又稱作邏輯的哲學Philosophy of Logic。

例如「思維三律Law of Thought」。邏輯學根源。邏輯學家採用下述三個敘述,作為恆真句,以此進行邏輯推論、發明邏輯運算。

一、同一律law of identity:p = p。

二、無矛盾律law of noncontradiction:¬(p ∧ ¬p)。

三、排中律law of excluded middle:(p ∨ ¬p)。

建立邏輯學說,為何採用思維三律,而不是其他定律呢?探討這個問題,就是一種哲學。

邏輯學引進語言學

一、邏輯學的衍生規則,改成語言學的文法。這個領域稱作形式語言Formal Language。

結論是可衍生的=句子是文法正確的。

二、邏輯命題的數值從真假改成二補數、浮點數。這個領域稱作程式語言Programming Language。

結論是可衍生的=程式碼的語法是正確的。

邏輯推論=檢查語法。(大家使用編譯器自動檢查語法)

邏輯推理=設計程式語言。(大家目前只會手動設計語言)

三、前提結論,改成輸入輸出。衍生規則,改成程式碼。這個領域稱作,呃,自動化機械碼農。

邏輯推論=創造演算法。(知名專案AlphaCode)

邏輯推理=人工智慧。(知名話題AI Takeover)