数を、一歩ずつ作る。
基本的なPythonを道具として、数の規則がクラス、演算子、 デコレータへどう移されるかを読みます。 ペアノ算術や数の構成は、知らない状態から始められます。
- 0 と「次の数」 自然数の保存方法と足し算を作る
- 二つの自然数 差が同じ組を、同じ整数として扱う
- 二つの整数 比が同じ組を、同じ有理数として扱う
- 式と範囲 有理数で書けない実数を指定する
「数を構成する」とは、最初から使えるものとルールを決め、 そこから新しい数を作ることです。
普段は 2 や 1/2 を完成した数として使います。
この教材では、まず 0 と「次の数を作る操作」だけを用意し、
足し算、負の数、分数へ進みます。そのたびに、数学の定義が
どの属性・メソッド・分岐へ移されたかを実コードで確かめます。
ペアノ算術は、0と「次の数」を手掛かりに自然数を考えるための枠組みです。 この名前も内容も、最初の章で具体例から説明します。
前提にするPython、前提にしない数学¶
代入、関数、クラス、条件分岐、ループ、コレクション、例外、型注釈など、 基本的なPython構文は読めるものとします。一方で、次の仕組みは前提にしません。 このライブラリの設計を理解するために必要なので、最初の準備章から説明します。
a + bと__add__を結ぶPythonのデータモデル- 関数を別の関数で包むデコレータ
dataclassが生成するメソッドと、その生成を止める指定__post_init__、property、total_ordering- 等値比較・ハッシュ・
NotImplementedが守る約束
インストールは不要です。入力したコードはブラウザ内で実行されます。 ペアノ算術、整数や有理数の構成、多項式による実数の指定は、最初から説明します。
この教材での学び方¶
各章の冒頭には「ここまでに分かったこと」と「この章で学ぶこと」があります。 その後、上の6項目を同じ順序で進みます。実行ログは最初から意味が分かる説明文ではなく、 実装を読んだあとに、予想と実際の動きを照らし合わせる材料です。テストが通ることと、 数学の一般的な証明が済むことも区別します。
各章には、その場の問いに必要な peano の実装を掲載します。
抜粋の前後や別メソッドまで読みたい場合は、章内のリンクまたは
実装リファレンスから完全なファイルを開けます。
実装を事前に読んでいることは前提にしません。
答えを出せるだけでなく、「どの定義を、どの表現と分岐で実行し、 このログとテストから何が言えるか」を自分の言葉で説明できたら、その章の完了です。
学習ルート¶
この教材の範囲¶
ここでは、数体系の完全な形式化よりも、数学上の構成と公開ライブラリの実装を 対応付けて読むことを重視します。証明を省略する定理は、使う前に内容と役割を明示します。
次の内容は、最後まで前提にしません。
- Pythonの開発環境やパッケージ管理
- Pythonの基本構文そのものの入門
- ペアノ公理系の形式的な証明
- 抽象代数学や解析学の履修
- このリポジトリを事前に読んだ経験
準備ができたら、まずPythonが演算をライブラリへ委譲する仕組みから始めてください。