Loading AI tools
来自维基百科,自由的百科全书
在邏輯學中的三值邏輯(three-valued,也稱為三元(ternary),或三價(trivalent)邏輯,有時縮寫為3VL)是幾個多值邏輯系統中的其中之一。有三種狀態來表示真、假和一個表示不確定的第三值;這相對於基礎的二元邏輯(比如布爾邏輯,它只提供真假兩種狀態)。概念形式和基本思想最初由 JanŁukasiewicz和 C. I. Lewis創建。 然後這些由 Grigore Moisil以公理代數形式重新制定,並在 1945年擴展到 值邏輯。
同二值邏輯一樣,在三值邏輯中的真值可以使用各種三進制系統表示來數值表示。一些常見的例子有:
本文主要闡述了一個基於 {false,unknown,true} 狀態的克萊尼三值命題邏輯系統,並將一般的布爾連接詞擴展到三值上下文語境中。三值邏輯也有謂詞;這些可能具有與經典(二元)謂詞邏輯不同的量詞讀數,也可能包含替代量詞。
如果布爾邏輯具有 22 = 4 個單元運算符,則在三值邏輯中添加第三個狀態值,則導致在單個輸入值上共有 33 = 27 個不同的運算符。類似地,在布爾邏輯具有 222 = 16個不同的二元運算符(具有2個輸入的運算符)的情況下,三值邏輯具有 332 = 19,683 個這樣的運算符。當布爾運算符已有很多固有的名稱(例如否定、並且、或者,排除,等價、蘊含)的情況下,對三值邏輯中的運算符嘗試給予名稱,是不甚合理的。
下面是給有true(T)/false(F)/unknown(?)狀態的系統的一些邏輯運算的真值表。
A | B | A ∨ B | A ∧ B | ¬ A |
---|---|---|---|---|
T | T | T | T | F |
T | ? | T | ? | F |
T | F | T | F | F |
? | T | T | ? | ? |
? | ? | ? | ? | ? |
? | F | ? | F | ? |
F | T | T | F | T |
F | ? | ? | F | T |
F | F | F | F | T |
在這個真值表中,UNKNOWN狀態可以被比擬認為是一個密封的盒子,其中包含要麼一個明確的TRUE值要麼一個明確的FALSE值。不能隨時及時獲得任何特定UNKNOWN狀態秘密的表示TRUE還是FALSE的知識。但是,特定邏輯運算可以生成一個明確的結果,即使它們涉及到了至少一個UNKNOWN操作數(參看捷徑求值)。例如,因為TRUE ∨ TRUE等於TRUE,而TRUE ∨ FALSE等於TRUE,你同樣可以推出TRUE ∨ UNKNOWN等於TRUE。在這個例子中,因為兩個二價狀態都可以被UNKNOWN狀態暗含,但兩個狀態都生成相同的結果,在所有這三種情況下都是一個明確的TRUE結果。
數據查詢語言 SQL 實用了三值邏輯,作為處理字段內容值為 NULL的一種方式。最初使用 NULL值的意圖來表示在數據庫中缺失數據,即假設現實中有值存在,但該值當前並未記錄在數據庫中;注意缺失的值不同於數值零,或長度為零的空字串值,這兩者都表示已知的值。SQL 使用 Kleene K3 邏輯的通用片段,僅限於 AND,OR 和 NOT表。在 SQL中 NULL 值應被解釋為未知(UNKNOWN)。若以 NULL 與欄位值做關係比較,包括和另一個 NULL的比較,結果都是狀態為未知的。然而,這種語義選擇在某些集合操作中被放棄了,例如,UNION 或 INTERSECT,其中 NULL 被視為彼此相等。批評者斷言,這種不一致的性質剝奪了 SQL在處理 NULL 時直觀的語義。例如,考慮下列 SQL表達式:
City = 'Paris'
SQL 中在 City 字段中的 NULL 值表示理論中導致這個表達式,被確認為要麼 TRUE(比如 City 包含 'Paris'),要麼FALSE(比如 City 包含 'Philadelphia')的一缺失值。樣例 SQL 表達式依據如下規則確認:
在SQL 數據操縱語言中,表達式(比如在WHERE
子句中)的TRUE真值狀態發起在這個行上一個動作(比如返回這一行),而UNKNOWN或FALSE的真值狀態不做事情。[4]三值邏輯以這種方式來實現在SQL中,而對於SQL用戶表現得如同二值邏輯。
但是,SQL的檢查約束有不同的表現。只有FALSE真值狀態導致違反檢查約束。TRUE或UNKNOWN真值狀態指示一行已經成功的通過檢查約束驗證。[5]
在文章 Null中深入討論了三值邏輯的 SQL實現。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.