02 · 整數:代表元與等價關係
整數:代表元與等價關係¶
用自然數對 `(a,b)` 表示差 `a-b`,理解不同數對為何能表示同一整數。
閱讀本章前
你已能沿著自然數的遞迴定義閱讀加法與相等。
完成本章後,你可以
- 用自己的話說明「整數:代表元與等價關係」中的數學定義
- 指出定義在 Python 資料中的表示方式
- 依據實際實作預測一段小型執行過程
數學定義
`(a,b)` 與 `(c,d)` 表示同一整數,若且唯若 `a+d=b+c`。整數是數對在此等價關係下形成的類。
資料表示
`Integer` 保存兩個自然數 `positive` 與 `negative`。`(3,1)` 和 `(4,2)` 是不同物件,卻都表示 2。
Python 實作
`(a,b) ~ (c,d)` → `a + d == b + c` → `Integer.__eq__`
與本章一起閱讀的實作與測試
數學定義
數學定義¶
(a,b) 與 (c,d) 表示同一整數,若且唯若 a+d=b+c。整數是數對在此等價關係下形成的類。
資料表示
資料表示¶
Integer 保存兩個自然數 positive 與 negative。(3,1) 和 (4,2) 是不同物件,卻都表示 2。
Python 實作
Python 實作¶
Integer.__eq__ 計算交叉和;normalize() 消去兩側共同部分,得到 (2,0) 之類的規範代表元。
本課程使用的精確對應關係:
執行過程
執行過程¶
比較兩個整數會觸發底層自然數加法與相等,日誌因而顯示定義如何重用上一章的運算。
執行前預測
先判斷兩個數對是否相等,並預測規範化後的表示。
實驗 · 整數:代表元與等價關係
尚未執行
⌘ / Ctrl + Enter
輸出
請先寫下預測,再執行。
用測試核對
用測試核對¶
測試同時涵蓋不同代表元的相等、運算封閉性與規範化,確保結果在等價關係下定義良好。
適用範圍
適用範圍¶
數對是教學表示,不如 Python int 有效率;其價值在於讓商結構可見。