數學證明與數學原理/預備知識/證明結構
在深入探討如何構建證明的細節之前,我們將從一個示例開始。它是一個關於實數三角不等式的證明,證明基本上與三角不等式中給出的證明相同。
- 定理:如果x和y是實數,則
該證明從絕對值的定義開始
- 定義:如果x是實數,則x的絕對值,記為|x|,為
在本例中,該證明被分為三個部分;有兩個引理,或輔助定理,接著是主定理的證明。現在您不必理解所有細節,因為本書的目標之一就是幫助您理解這些細節。
- 引理:如果x是實數,則
- 證明:令x為實數。則x ≥ 0或x < 0。如果x ≥ 0,則根據定義,|x| = x。因此
- 如果x < 0,則根據定義,|x| = −x。因此在這種情況下
- 無論哪種情況,
- 引理:如果x是實數,m是實數且m ≥ 0,並且−m ≤ x ≤ m,則|x| ≤ m。
- 證明:令x和m為實數,並假設m ≥ 0且−m ≤ x ≤ m。則x ≥ 0或x < 0。如果x ≥ 0,則根據定義,|x| = x,因此
- 如果x < 0,則根據定義,|x| = −x,因此
- 無論哪種情況,|x| ≤ m。
- 定理:如果x和y是實數,則
- 證明:令x和y為實數。則根據第一個引理,
- 將這些加起來得到
- 因此,根據第二引理,
層次結構
[edit | edit source]我們將證明分解成幾個部分,原因有兩點。首先,這樣做可以節省精力,避免重複相同的論證。在本例中,我們將第一個引理應用於 `x` 和 `y`,因此我們不需要為這兩個變數證明相同的結論。
第二個原因更偏心理層面。人類更傾向於以層次化的方式獲取資訊,資訊越多,使用的層級就越多。書籍通常分為章節,章節又分為節,節分為段落,段落分為句子,句子分為短語,短語分為單詞。因此,將一個定理分解成更小的部分,而不是將其作為單個長字串的語句,並不罕見。在本例中,我們將部分分解成單獨的引理,但在證明內部進行分段也很常見。從邏輯上講,引理就是一個定理,但它被認為是一個更大結果的一部分,而不是獨立存在的。在這一點上,它們類似於支援大型程式的子例程。
還要注意,各個部分都有清晰的標記:**定理**、**引理** 和 **證明** 這幾個詞都以粗體字標記,以便讀者可以瞭解證明的組織方式。這類似於書籍中章節標題標記每個章節的方式。
推進
[edit | edit source]證明也具有邏輯上的推進過程。主定理依賴於引理,而不是反過來,並且在每個證明中,語句都來自於之前的語句。但是,這也有例外,例如,證明使用了關於不等式和加法的幾個事實,這些事實應該是讀者熟悉的。其中包括:
- 如果 `x` ≥ `y`,則 `-x` ≤ `-y`。
- 如果 `x`≤`y` 且 `y`≤`z`,則 `x`≤`z`。
- 如果 `x`≤`y` 且 `u`≤`v`,則 `x`+`u`≤`y`+`v`。
- `x` ≥ 0 或 `x` < 0
- `-(x+y)`=`-x`-`y`
這些陳述應該被視為既定事實,還是在使用之前需要先證明呢?很誘人地說,把它們作為既定事實,但這樣的話,你該在哪裡止步呢?也許你可以直接將定理本身作為既定事實,從而避免證明的必要性。但證明的意義在於說服人們定理是正確的,而僅僅將定理本身作為既定事實,不太可能說服任何人。另一個極端是,你可以要求證明這些陳述,然後要求證明用於證明它們的陳述,等等。這個過程可以無限地進行下去,而沒有任何東西會被宣佈為已證明。
這裡要說明的是,任何證明都不會在真空中進行;它總是使用更基本的定理或第一原理,而反過來,被證明的內容可能被用來證明更高階的定理。推進避免了迴圈推理,但你無法避免擁有第一原理。
同樣,定義也有自己的推進過程。絕對值是用序關係(≤, ≥, <, >)定義的。但然後你就可以用絕對值來定義它們,例如 `x`≥`y` 意味著 `|x-y|`=`x-y`,從而形成迴圈定義。這種定義行不通,因此,就像定理一樣,也需要有一些沒有定義的術語。這些被稱為**原始概念**或**未定義術語**,所有其他定義都基於它們。
推理
[edit | edit source]將陳述組合在一起以確定另一個陳述的真實性的方法被稱為**推理規則**。它們來自於邏輯,但應用於數學證明。例如,如果我們將第一個引理的開頭部分改寫,將每個陳述放在單獨一行,並給出每個陳述的理由,結果如下:
-
`x` 是一個實數。(假設)(1)
-
如果 `x` 是一個實數,則 `x` ≥ 0 或 `x` < 0。(全屬性)(2)
-
`x` ≥ 0 或 `x` < 0。(根據 1 和 2)(3)
這比證明中通常顯示的細節更多,但讀者應該能夠填補這些細節。
如果我們讓 `P` 代表陳述 "x 是一個實數",讓 `Q` 代表陳述 "x ≥ 0 或 x < 0",那麼我們將得到上面片段的更通用形式:
-
`P` (假設)(1)
-
`P` 蘊含 `Q`(先前定理)(2)
-
`Q` (根據 (1) 和 (2))(3)
這裡我們使用 "P 蘊含 Q" 作為 "如果 P 則 Q" 的縮寫版本。這裡應用的規則是:
- 從
- P
- `P` 蘊含 `Q`
- 推匯出
- Q.
該規則的通用形式是:
- 從
- (特定形式的陳述列表)
- 推匯出
- (另一個陳述)。
這種形式涵蓋了大約一半的推理規則。
帶子證明的推理
[edit | edit source]剩下的規則需要子證明,或者說證明中的證明。我們說,證明中陳述必須遵循證明中之前陳述的例外情況是公理或之前證明的定理。另一個例外情況是暫時假設,它們出現在證明或子證明的開頭。例如,短語 "令 x 為一個實數" 出現在第一個引理的證明開頭。我們並不打算從現在起將 x 代表一個實數,而僅僅是在當前證明中這樣做。事實上,證明中有三個這樣的暫時假設:
- 令 `x` 為一個實數。
- 如果 `x` ≥ 0 ...
- 如果 `x` < 0 ...
在每種情況下,證明或子證明都使用假設推匯出結論,建立兩者之間的關係。
為了說明它在示例中的作用,第一個引理的證明以
- 令 `x` 為一個實數。
結束於
這使我們能夠推斷出定理的陳述:
- 如果 `x` 是一個實數,則
令 `P` 代表陳述 "x 是一個實數",讓 `Q` 代表陳述:
那麼證明的整體形式是:
- 假設 `P`
- (一些推導)
- Q
- 因此,`P` 蘊含 `Q`。
本例中應用的規則是:
- 如果透過假設
- P
- 可以推匯出
- Q
- 則推匯出
- `P` 蘊含 `Q`
該規則的通用形式是:
- 如果透過假設
- (特定形式的陳述列表)
- 可以推匯出
- (另一個陳述)。
這種形式涵蓋了大多數剩餘的推理規則;剩餘的少數規則更復雜,但以兩種基本形式作為構建塊。
使用推理規則並用它們來檢驗證明的有效性是為了避免依賴直覺作為檢驗標準。如前一節所示,有時直覺並不可靠。當包含足夠的細節時,檢查證明是否有效的過程是一個非常機械的過程。事實上,已經出現了專門執行此操作的計算機程式,它們可以確保人為錯誤不會潛入冗長而複雜的證明中。
在最底層,該證明具有以下基本要素
- 語句
- 這些語句所指的物件。在本例中,物件是實數,但它們通常可以是任何事物。
- 這些物件的屬性,換句話說,謂詞。
- 將簡單語句和謂詞組合成更復雜語句的方法,例如,“P 或 Q”,是 P 和 Q 的組合。
- 運算,或將物件組合成其他物件的方法,例如從 x 和 y 中得到 x+y。
- 存在於證明之外的語句:公理、定義、先前證明的定理。
- 推理規則,說明如何從語句和子證明構造證明。
當特定於數學的謂詞、公理等被移除後,剩下的就屬於邏輯領域,這將是下一章的主題。在本章中,我們將開始探索如何構建證明,使用純粹的邏輯語句作為示例。