先來談談推理中的通用切入點。
本格推理小說中存在的合理推理形式,首先必須遵守封閉性。也就是推理出發點,過程乃至答案,都是已知條件。
比如出發點是某線索,推理使用排除法,得到了嫌疑人中的兇手。
還有種推理,是兇手在人前做出的舉動暴露了他知道未公開的案情,比如偵探沒公開屍體身分,兇手卻說出屍體性別之類,是首先排除了其他狀況,確定只有兇手可能知道內情,一般人不可能知道,再應用該結論推出兇手,這種屬於特殊構造。
不符合條件的有從某線索(道具)依照使用該道具的某種可能猜出犯案手法,其中犯案手法並非一開始就在選項中,而是發散、不可能迭代窮舉的。
這裡說到了個關鍵,就是不能從"可能"去推理,因為推導出的可能性是不可數的;而必須從"不可能"去排除,因為這代表可能性隱含在已知條件裡。
"從可能去推理"是從不可數的可能中選擇一個,可以把這叫做"觀測",對線索的觀測是延伸已有線索敘述其背景,使得敘述中使用到該線索,是由小推大而只能說是種假設。推理就是在盡可能不使用"如果證據A那麼(可能)事件B"(A=>B)的情況下達到把事物唯一選擇出來的效果。
整理一下,上面敘述的推理規則還有推理出的可能性需要減少信息熵,且來自元素有限、可數集合。
以及,推理的最終目的必須是指明兇手,動機或手法等都是用來推導出兇手的,因為這樣能將問題限定在可數的集合(嫌疑人),已知選項中。
另一個推理規則是,如無必要,人們會使用最簡單的方法。這個性質使得我們可以假設一般人沒必要偽裝、從物品的使用推斷左右撇子、或是更複雜的推理:假定一個可能的犯案手法,其中手法本身包含著更簡單的手法,因此可以推斷假定不成立,或是對於兇手來說該手法並非更簡單的手法(他不能/不知道能做到,即反過來:使用非最簡單的手法是因為有必要),這個規則可以利用信息差製造出遞歸推理。
也可以從這規則推出另一個較複雜的規則:同一人在面對同類型的事時,如果沒有注意到先前的選擇,會選擇與先前同樣的選擇。我們說推理本身就是做出唯一選擇,既然這個定理用到了選擇算法便能用來推理,其中推理的是對方的選擇。可以假設已知對方是同一人,推理出舊事件是對方選擇造成的,且新事件現場存在的證物顯示對方沒注意到先前的選擇——該事件是下意識的發生,則現場應該有對方選擇造成的事件痕跡。接著可以假設沒有發現事件痕跡,就能推理出曾經有過,只是某個意外導致消失。
緊接著是兇手以外的人如無必要,都說實話,因為這是最簡單的。使用這個規則可以推理出誰的證詞中帶有矛盾,從而知道其有撒謊的必要;或者反過來,如果A的證言撒謊,則帶有不必要關係,從而A不可能撒謊。
剩下的,便是特殊構造了。比如使用"如果…那麼…但是…所以假設不成立"、"無論…都…"等等可以表達成邏輯的命題。
如果設計出基礎的推理切入點,再用來拼湊出特殊構造就輕鬆多了:
集合存在不可數種可能的系列操作,即每個可能都涉及對事物的操作。每個可能達到的效果都至少含有某些共通特徵(目的/操作/條件/遺留線索),這些特徵本身帶有邏輯式。每次對操作的推理都能得到新命題。最後,會使用每次推理得到的命題對集合做滿足性調查,進而對對應到的嫌疑人的集合做出推理。
引入算符:引入命題。推理就是多個命題的交集。
結合算符:(集合,集合):將集合跟集合的特徵結合。
分割算符(集合,離散狀態的特徵):將集合依特徵的狀態編碼成不相交的可數個子集合。
分解算符(操作):將選擇的操作作為集合
觀測算符(條件X,Y,Z…):從集合中選擇出一個包含選擇條件的操作,包含A代表可分解出A。代表集合存在某操作,或者代表如果(條件X,Y,Z…)那麼…,後者只能作為預設命題才合法,作為推理是不被接受的。
取小算符(集合,集合觀測出的多個操作集):若集合的特徵是可度量的,捨棄特徵度量較大的操作,或者A>B則A包含B,捨棄A。
反算符:對觀測出的操作應用線索的條件,得出矛盾,從而否定該操作。
原子操作:該操作只能被分解成它自己,是一個連續事件,可以用來計數。
現在假設一個案件。先假設推理路徑是對所有可能達到目的A的操作分割成兩份,再對其取小取到其中一個X,得到了第一階的資訊層次。再應用反算符否定該操作,從而是另一個操作Y,得出命題兇手有必要使用Y,這是第二階的資訊層次。現在對應到嫌疑人中,第一階XY將嫌疑人分兩類(可以使用X或可以使用Y),有必要使用Y又將嫌疑人分為兩類(有必要使用Y或沒必要使用Y)。
用簡單故事包裝:有人被投毒死在一個非封閉的房間,可以是在發現"屍體"前或是發現"屍體"後(先讓他吃安眠藥,再趁眾人沒注意餵他毒藥),後者是前者繞一大圈且風險較高,正常人沒必要的話會選擇前者,所有人不在場證明要嘛發現屍體前不再場,要嘛發現屍體時不再場。但是屍體身體裡發現了他平常吃的那顆藥被掉包成了安眠藥,發作時間也是眾人發現後很久才發作,而該藥物發作時間靠膠囊延遲也不可能那麼久。所以兇手是當時在現場,且有必要這麼做的人。而大部分在現場的人,也有辦法選擇在發現前去投毒,且這些人互相不認識而不能陷害彼此,只有某人因為色盲會把安眠藥跟毒藥搞混,所以某人是兇手。
再假設一個案件。推理路徑是對唯一的操作手法分解,再結合,得到兩個子操作須滿足甚麼條件,由此找到兇手。比如作案路徑必須經過A再經過B到達C,經過A需要條件A,經過B需要條件B,兩者需同時滿足。
可以分析,推理過程是透過增加線索一階一階建立訊息的,"如無必要,則…"反過來便是存在必要。除非線索之間能帶有遞歸性,比如讓案件中的人物也進行推理、為事物編號,或是推理對象遇到重複情況、新命題加入「與排除掉的具有相同特徵」這命題來重複使用,否則一個線索代表一個命題、佔據一個推理階段,通常用過即丟。
現在的問題是如何堆疊、構造推理。這需要把上面所謂的算符形式化。