3段階で考えよう
- 符号つきの数には大きさが必要です:Int.natAbsは|c|、ゼロからの距離を読みます——−11も11も同じ11で、符号はわざと忘れます。
- 記録natAbsHomは機械とその約束を並べて保存します:map_mul'は|a × b| = |a| × |b|を、map_one'は|1| = 1を、map_zero'は|0| = 0を固定します。
- 大きさは掛け算で積み上がります——それがmap_mul'——だから降下は大きさで容疑者の順位をつけられます:各解のcを|c|という自然数へ置き換えれば、「より小さい容疑者」は「必ず見つかる最小の数」になります。
小さな例で確かめる
測ってから掛けます:|−7| = 7、|3| = 3。そして実際|−7 × 3| = |−21| = 21 = 7 × 3。大きさは符号を気にせず、ゼロからの距離だけを見ます。