依存型と形式証明を、検証器の実装を通じて学ぶ
Cやpythonといったありふれた言語で、教科書「Type Theory and Formal Proof An Introduction(R.NederpeltとH.Geuvers著)」で説明されている検証器を実装し、簡単な命題の証明の形式証明を各自の検証器で行えるようになる。実装に主眼を置くため、理論的な背景は解説しない。
ラムダ・キューブ、形式証明、依存型
✔ 専門力 | 教養力 | コミュニケーション力 | 展開力(探究力又は設定力) | 展開力(実践力又は解決力) |
木曜日は教科書を解説し、月曜日は演習風の実装の時間とする
授業計画 | 課題 | |
---|---|---|
第1回 | イントロダクション | 授業の内容を理解する |
第2回 | 実装(アルファ合同) | 授業の内容を理解する |
第3回 | ラムダ・キューブ | 授業の内容を理解する |
第4回 | 実装(ベータ変換) | 授業の内容を理解する |
第5回 | 表示的定義(別名) | 授業の内容を理解する |
第6回 | 実装(デルタ展開) | 授業の内容を理解する |
第7回 | 原始的定義(公理) | 授業の内容を理解する |
第8回 | 実装(型推論) | 授業の内容を理解する |
第9回 | 実装(複雑さ) | 授業の内容を理解する |
第10回 | ド・ブラウン・インデックス | 授業の内容を理解する |
第11回 | 実装(最適化) | 授業の内容を理解する |
第12回 | 命題・型(証明・項)対応(PAT) | 授業の内容を理解する |
第13回 | 証明支援系(Lean) | 授業の内容を理解する |
第14回 | A future of mathematics?(私見) | 授業の内容を理解する |
学修効果を上げるため,教科書や配布資料等の該当箇所を参照し,「毎授業」授業内容に関する予習と復習(課題含む)をそれぞれ概ね100分を目安に行うこと。
「Type Theory and Formal Proof An Introduction(R.NederpeltとH.Geuvers著)」, Cambridge University Press(学内から閲覧可能)
講義のホームページを作成し、補助資料を配置する
実装(ソースコード)と理解度チェックに基づく
(1) 1つ以上のプログラミング言語で簡単なコードが書けること(必須)
(2) C++のコンパイラがあれば、参考に講師の実装をバイナリで渡すことができる(必須ではない)
(3) 大学数学の知識は必要としない