0 符號、演算、與抽象化

0.1 騎士與惡棍之島

剛剛你是怎麼解這問題的?許多人解這類問題用的是窮舉法:假設A是騎士、B也是騎士,看看會不會有矛盾,接著假設A是騎士、B是惡棍,看看是否有矛盾... 依此類推。

我們想介紹另一種做法。我們將「A是騎士」簡寫成A. 如果A說了某個陳述S, 我們無法知道S是否成立,但我們知道

    A <=> S  

其中的 (<=>) 可以理解為邏輯中「若且唯若」的關係,也可以簡單理解為(真假值的)「等於」。若用口語說,當我們寫 P <=> Q, 表示 P 和 Q 的真假值相同。確實,假定A說了陳述S,如果A是騎士,S便是真的;如果A不是騎士,S便是假的。因此「A說了陳述S」可寫成 A <=> S。

「若且唯若」這符號有幾個性質。首先,對任何陳述 P, 可知 P <=> P 必定為真:

  (P <=> P) <=> true 

我們將這條規則命名為「自反恆真」。 給定二元關係 <=:,如果 x <=: x 對任何 x 均成立,我們說 <=: 有自反性(reflexivity). 「自反恆真」即「自反性恆為真」的意思。 其次,既然 (<=>) 可以理解為「等於」,理所當然該有交換律: (<=>) 和 (=) 都是「等於」。我們在此處使用不同符號,僅是為了區分出先後次序:同一行內部的相等用 (<=>), 行與行之間的相等用 (=). 本書其他地方的用法可能不同。

    P <=> Q
 =  Q <=> P 

最後,很少人注意到,真假值的「等於」是有結合律的:對任何 P, Q, 和 R, 我們有這樣的性質: (P <=> Q) <=> R 只在 P, Q, 和 R 都是真假值(或邏輯陳述)時有意義,否則 P, Q, 和 R無法用 (<=>) 串起。反例: (3 = 3) = 3 可化簡成 true = 3, 但後式中等號兩邊的值型別不同,不是合法的句子。也許因為我們較常考慮數字的相等,而較少用符號表達真假值的相等,(<=>) 的結合律並不廣為人知。

    (P <=> Q) <=> R
 =  P <=> (Q <=> R) 

為了練習,我們多考慮一些情況。假設我們問A:「你是騎士嗎?」而A 回答「是的!」這可以記成A <=> A. 然而,根據自反恆真,A <=> A可以化簡為true. 這意味著:在這島上不管你問誰「你是騎士嗎」,對方都會回答「是」。

如果A說:「B是騎士」呢? 這可以記成A <=> B. 由此我們無法知道B到底是騎士還是惡棍,但我們可以知道A和B是同一種人。

現在想想問題0.1 :居民 A 說「如果你問 B 他自己是不是騎士,他會說是。」這可以記成 A <=> (B <=> B). 我們來演算看看:

   A <=> (B <=> B)
=    {- 自反恆真-}
   A <=> true
=    {- 結合律與自反恆真 -}
   A 

也就是說,我們不知道B到底是騎士還是惡棍,卻可知道A一定是騎士!這段演算中,把 A <=> true 換成 A 的最後一步,直覺上似乎很直觀。如果要探究理由,其實用了結合律與自反恆真:(A <=> A) <=> true 根據結合律可代換為 A <=> (A <=> true), 因此 A <=> true 可代換成 A.

再考慮一個熱身題:如果A說「我和B是同一種人」呢?這可記成A <=> (A <=> B)。我們算算看:

      A <=> (A <=> B)
    =   {- 結合律 -}
      (A <=> A) <=> B
    =   {- 自反恆真 -}
      true <=> B
    =   {- 交換律與自反恆真 -}
      B

這次,我們不知A是騎士還是惡棍,卻可知B一定是騎士。

最後,我們該回到本章開頭的問題了。你站在山洞口,面對洞口的老人。姑且稱呼他為A. 要怎麼想出一個問題問他,用來判斷島上到底有沒有金子呢?之前介紹邏輯符號的目的是讓我們可避免瞎猜,而用代數解未知數的方式把問題推演出來。把「島上有金子」這個命題記為G. 我們希望問某個問題Q。如果A對問題Q回答「是」,就表示島上有金子,反之則否。

  • 「A對問題Q回答『是』」記為A <=> Q;

  • 「A對問題Q回答『是』,島上便有金子」其實應該是一個若且唯若的命題,寫成G <=> (A <=> Q)。

而根據交換律和結合律,我們可以推演:

       G <=> (A <=> Q)
    =    {- 結合律 -}
       (G <=> A) <=> Q
    =    {- 交換律 -}
       Q <=> (G <=> A)  

我們可得知Q <=> (G <=> A),也就是說我們要問A的問題Q就是G <=> A:「請問,『島上有金子』和『你是騎士』是不是等價的呢?」不妨試試看能否把這句子講得不那麼繞口?

希望這個島上不論騎士或惡棍,邏輯都蠻不錯,才聽得懂這種問題囉!