logic
logic
「邏輯學」。釐清前因後果,把整件事情想清楚的學問。
音譯「邏輯學」、意譯「推理學」或「論證學」。台灣採用音譯,原因大概很恐怖。
台灣也有人譯作「理則學」。但是這個名稱不是學者提出來的,而是知名幫派份子兼通緝要犯提出來的。聯合日本人顛覆清國,聯合蘇聯人顛覆民國。部下殺人如麻,是個恐怖的人。
邏輯學與程式語言
邏輯學不屬於計算機科學系的授課範圍。然而卡內基美隆大學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 | 若且唯若、当且仅当
註:邏輯學採用→ ↔。數學採用⇒ ⇔。 數學當中,→是趨近,↔是對應。
針對一種運算(多種運算),枚舉輸入輸出,製作表格,稱作「真值表truth table」。看了真值表,就知道了一種運算的功能。
p | q ‖ ¬p | p∧q | p∨q | p→q | p↔q ---|---‖-----|-----|-----|-----|----- ⊤ | ⊤ ‖ ⊥ | ⊤ | ⊤ | ⊤ | ⊤ ⊤ | ⊥ ‖ ⊥ | ⊥ | ⊤ | ⊥ | ⊥ ⊥ | ⊤ ‖ ⊤ | ⊥ | ⊤ | ⊤ | ⊥ ⊥ | ⊥ ‖ ⊤ | ⊥ | ⊥ | ⊤ | ⊤
compound proposition
複合命題宛如數學算式。
(p ∧ (p → q)) → q
connective precedence and connective associativity
優先權與結合性宛如先乘除後加減。
優先權:相異運算子的運算順序。
優先權即是上述表格順序¬ ∧ ∨ → ↔。¬最高↔最低。 例如p ∨ q ∧ r的運算順序是p ∨ (q ∧ r)。 例如p → q ∧ r的運算順序是p → (q ∧ r)。
結合性:相同運算子的運算順序。
結合性各自不同。 一、¬不討論結合性。畢竟是一元運算。 二、∧ ∨ ↔可以是左結合或右結合。兩者運算結果相同。 例如p ∧ q ∧ r的運算順序可以是(p ∧ q) ∧ r或p ∧ (q ∧ r)。 三、→是右結合。 例如p → q → r的運算順序是p → (q → r)。 如果覺得太複雜,那麼可以簡化成一律都是右結合。
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 / contradiction
複合命題細分為:
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 | ¬p∨q ---|---‖-----|------ ⊤ | ⊤ ‖ ⊤ | ⊤ ✔ ⊤ | ⊥ ‖ ⊥ | ⊥ ✔ ⊥ | ⊤ ‖ ⊤ | ⊤ ✔ ⊥ | ⊥ ‖ ⊤ | ⊤ ✔
恆真句、恆假句,表示成邏輯等價:
(p∧(p→q))→q ≡ ⊤ tautology ¬((p∧(p→q))→q) ≡ ⊥ contradiction
equivalence改寫成複合命題
≡換成↔。
logical equivalence: p → q ≡ ¬p ∨ q tautology: p → q ↔ ¬p ∨ q ≡ ⊤
觀察真值表。邏輯等價成立,複合命題恆真。
p | q ‖ 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) = ⊤
有效時,真值表當中,當前提皆是⊤,則結論必須是⊤。
p | q | r ‖ p→q | q→r | 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 is valid when p₁ ∧ p₂ ∧ ... ∧ pₙ ≡ ⊥
前提恆假導致結論可真可假,稱作「爆炸explosion」。
經典範例:p是真、非p是真,導致任何敘述是真。
p, ¬p ⊨ q
也可以是假。
p, ¬p ⊨ ¬q
廣義版本,差別只在於爆炸,視作有效。:-(
inference改寫成複合命題
,換成∧。⊨換成→。
logical inference: p → q , q → r ⊨ p → r tautology: (p → q) ∧ (q → r) → (p → r) ≡ ⊤
觀察真值表。邏輯推論有效,複合命題恆真。
p | q | r ‖ p→q | q→r | p→r (p→q) ∧ (q→r) → (p→r) ---|---|---‖-----|-----|----- ---------------------- ⊤ | ⊤ | ⊤ ‖ ⊤ | ⊤ | ⊤ ✔ ⊤ ⊤ | ⊤ | ⊥ ‖ ⊤ | ⊥ | ⊥ ⊤ ⊤ | ⊥ | ⊤ ‖ ⊥ | ⊤ | ⊤ ⊤ ⊤ | ⊥ | ⊥ ‖ ⊥ | ⊤ | ⊥ ⊤ ⊥ | ⊤ | ⊤ ‖ ⊤ | ⊤ | ⊤ ✔ ⊤ ⊥ | ⊤ | ⊥ ‖ ⊤ | ⊥ | ⊤ ⊤ ⊥ | ⊥ | ⊤ ‖ ⊤ | ⊤ | ⊤ ✔ ⊤ ⊥ | ⊥ | ⊥ ‖ ⊤ | ⊤ | ⊤ ✔ ⊤
rule of inference
邏輯學家已經發明許多推論規則。以下介紹其中三個:
一、肯定前件modus ponens:
p p → q ⎯⎯⎯⎯⎯ q
二、否定後件modus tollens:
p → q ¬q ⎯⎯⎯⎯⎯ ¬p
三、歸謬法reductio ad absurdum:
p → q p → ¬q ⎯⎯⎯⎯⎯⎯ ¬p
延伸閱讀:adequacy
邏輯運算¬、∧、∨是充分的,足以製造全部的真假組合。
註:此處只談「充分的」,沒有談「必要的、最少的」。
p | q ‖ ⊤ | p∨q | p∨¬q| p | |¬p∧¬q| ⊥ | ---|---‖-----|-----|-----|-----|- ... -|-----|-----| ⊤ | ⊤ ‖ ⊤ | ⊤ | ⊤ | ⊤ | | ⊥ | ⊥ | ⊤ | ⊥ ‖ ⊤ | ⊤ | ⊤ | ⊤ | | ⊥ | ⊥ | ⊥ | ⊤ ‖ ⊤ | ⊤ | ⊥ | ⊥ | | ⊥ | ⊥ | ⊥ | ⊥ ‖ ⊤ | ⊥ | ⊤ | ⊥ | | ⊤ | ⊥ |
2 values. (⊤ and ⊥) N = 2 variables. (p and q) 2^N = 4 inputs. (⊤⊤/⊤⊥/⊥⊤/⊥⊥) 2^2^N = 16 different functions. (⊤⊤⊤⊤/⊤⊤⊤⊥/⊤⊤⊥⊤/...)
邏輯運算→、↔是多餘的,用於簡潔呈現邏輯推論和邏輯等價的複合命題。 符號外觀源自後面章節提到的衍生。
logical equivalence: p ≡ q tautology: p ↔ q ≡ ⊤
logical inference: p₁ , p₂ , ... , pₙ ⊨ q tautology: p₁ ∧ p₂ ∧ ... ∧ pₙ → q ≡ ⊤
其實→、↔可以全面換成¬、∧、∨。
p→q ≡ ¬p∨q p↔q ≡ (p∧q)∨(¬p∧¬q)
logical inference (derivation)
inference
方才使用真值表。現在使用規則表。
邏輯命題習慣用A、B、C。
直式 半直半橫 橫式 A A , B A , B ⊢ A ∧ B B ⎯⎯⎯⎯⎯ ⎯⎯⎯⎯⎯ A ∧ B A ∧ B
特殊等號⊢稱作「可衍生derivability」。
rule of inference
邏輯學家已經發明一套推論規則:
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
雙重否定定律 爆炸 歸謬法
註:此處的⊥不是先前章節的假false。 此處的⊥不是先前章節的恆假句contradiction。 此處的⊥是一種特殊的命題。 此處的⊥稱作bottom。bottom是⊥這個符號的原始名稱。 有些邏輯學家將此處的⊥定義成A ∧ ¬A,呼應恆假句。
註:順便介紹其他符號的原始名稱。 ⊤ top / down tack 頂/朝下圖釘 ⊥ bottom / up tack 底/朝上圖釘 ⊢ turnstile 驗票閘門 ⊨ double turnstile 雙重驗票閘門
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)
axiom
各種命題A、B、C、……都可以假設數值是真,作為最初的前提,作為衍生的起點。
現在改成只有部分敘述可以假設數值是真,作為最初的前提,作為衍生的起點。這些敘述稱作「公理axioms」。
deductive system:演繹系統。衍生起點可以是任意命題。 axiomatic system:公理系統。衍生起點只能是指定敘述。
知名的公理系統:
Gentzen system:一個公理,多個規則。我不打算深入介紹。 Hilbert system:三個公理,一個規則。我不打算深入介紹。
logical equivalence (derivation)
equivalence
方才使用真值表。現在使用規則表。
實施兩次邏輯推論:左式衍生右式,右式衍生左式。如果兩者皆可衍生,那麼兩者等價。
¬(A ∨ B) ⟛ (¬A ∧ ¬B)
特殊等號⟛稱作「互相可衍生interderivability」。
logical inference
proof【名稱尚待確認】
邏輯推論本身作為邏輯敘述,拿來進行邏輯推論。
如此一來,就能調整前提結論。
A ⊢ C B ⊢ C ⎯⎯⎯⎯⎯⎯⎯⎯⎯ A , B ⊢ C
邏輯學家已經發明許多推論規則。以下介紹其中三個:
(Γ Σ Δ Π各是一連串敘述。敘述數量可以是零個。)
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
恆真句/公理可以寫成推論規則的模樣:前提是空集合,結論是恆真句/公理。
⊨ ¬(p ∧ ¬p) tautology ⊢ ¬(A ∧ ¬A) axiom
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)
順帶一提,邏輯學家依據上述六種規則,創造五種邏輯運算的真值表。綜觀歷史,先有規則表,才有真值表。
好久好久以前,邏輯學只有規則表。邏輯推論過程冗長,令人望而生畏。直到真值表橫空出世,邏輯學搖身一變宛如數學。自此邏輯學就變得平易近人了。
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: Γ ⊨ Δ derivable: Γ ⊢ Δ
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: (Γ ⊢ Δ) → (Γ ⊨ Δ) complete: (Γ ⊨ Δ) → (Γ ⊢ Δ)
complete but not sound https://math.stackexchange.com/questions/441025/
形容詞sound、名詞soundness。
可靠的:可衍生的邏輯推論都是有效的。
這套前提衍生的所有結論,皆有唯一解⊤。
前提很合理,結論皆實話。所到之處,皆為實話。宛如洪水。
形容詞complete、名詞completeness。
完備的:有效的邏輯推論都是可衍生的。
凡有唯一解⊤,必是這套前提衍生的結論。
前提很充足,道盡一切實話。所有實話,皆可觸及。宛如連通。
satisfiable / consistent
形容詞satisfiable、名詞satisfiability。
可滿足的:存在一種interpretation,使得敘述是⊤。
這個敘述不是恆假句。
形容詞consistent、名詞consistency。
一致的:存在一種interpretation,使得結論皆⊤。
這個演繹系統/公理系統,所有結論∧起來,不是恆假句。
soundness implies consistency
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,當前提皆真,則結論皆真。
換句話說,可靠的情況下,若前提不是恆假句,則一致。
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
命題邏輯(零階邏輯):變數是一個數值。運算一共五種。
謂詞邏輯(一階邏輯):變數是一個集合。追加兩種運算。
可以推廣成更高階,但是沒有太大意義。