数理解析・計算機数学IV

講師Jacques Garrigue 教授
開講部局理学部/理学研究科 2024年度春学期
対象者理学部4年生・理学研究科(博士前期課程・博士後期課程)

授業の目的

証明の正しさとはどうやって保証されるものなのか。自分が書いた証明に自信が持てないことはないだろうか。 多くの人が確認すれば、少し安心できるようになるが、証明が非常に大きくなるとそれも困難である。 人間と違い、正しくプログラムされた計算機は絶対に間違わない。計算機に論理の基礎を教えると、証明に間違いや不足がないことをチェックしてもらえる。定理証明支援系のCoqはそういうプログラムの一つである。 また、証明が必要なのは数学だけではない。特に、計算機のプログラムも間違いが起きやすく、その正しさを保証するのはまた証明である。プログラムが大きくなると必然的に証明が大きくなるので、ここでも計算機による証明が期待される。

この講義ではCoqを使い、数学の証明や証明付きプログラムを書く方法を習う。同時にその裏付けである関数型プログラミングと型理論にも触れることになる。

Coqは型理論に基づいた論理を基礎とし、同じ言語の中でプログラムと証明が表現できる。証明も人間が書くが、正しさがコンピュータに保証される。プログラム抽出機能により、証明されたプログラムを普通にコンパイルできる形に変換でき、高速に実行することもできる。

証明対象はプログラムに限定されるわけではなく、通常の数学の定理も証明できる。有名なものとして、4色定理や群論のFeit-Thompson定理がCoqで証明された。型理論の表現力を活用し、数論・代数学や解析学も扱える。なお、今回の講義では、この二つの定理に使われたMathCompというライブラリーを最初から使う予定である。

達成目標

  • 数理論理学とコンピュータによる証明の原理を理解する
  • 具体的なプログラムの証明をする
  • 数学の簡単な定理の証明をする

授業の工夫

証明の正しさとは何か、そして実際に自分で安全な証明をどう書くのかをテーマにした講義で、実習の部分もあります。 この講義では理論的な面(論理学・型理論・アルゴリズム)と実践(実際にCoqを使ってコンピューターで証明を書く)を並行して進めています。そこで理論と実践がつながることが重要であり、場合によって、実践で扱う内容のために新たに理論(論理体系)を作ることにもなりました。最終的に数学の学生がうまく証明を書けることの助けになったと信じたい。また、扱えうテーマについて、途中から学生と相談して決めています。

授業の内容や構成

詳しい講義予定(シラバス)は第1回の講義で配布する。授業の前半を講義、後半を実習に充てる。

この講義では新しいプログラミング言語と証明言語を習うことになるので、まずはその利用原理を教える。簡単な証明の書き方に慣れて来たら、プログラムの証明方法や様々な概念の扱い方を見る。

特に以下の内容を予定している。

  • Coqによる関数型プログラミング
  • 命題・述語論理とCoqの論理
  • SSReflectの基礎
  • 帰納法と帰納的な定義
  • プログラムの証明・数学的な証明
  • 論理や数学の進んだ証明(MathCompの進んだ利用など)

講義資料

講義資料は以下の URL から入手できる。
https://www.math.nagoya-u.ac.jp/~garrigue/lecture/2024_SS/index.html

参考書

  • 萩原学,アフェルト・レナルド、「Coq/SSReflect/MathCompによる定理証明:フリーソフトではじめる数学の形式化」、森北出版(2018)
  • Ilya Sergey, "Programs and Proofs: Mechanizing Mathematics with Dependent Types" (2014–2017)
    https://ilyasergey.net/pnp/
  • Yves Bertot, Pierre Castéran, "Interactive Theorem Proving and Program Development", Springer(2004)

課外学修等

この講義は実習時間がとってあるが、課題が時間内に終わらないことが多い。
自分のパソコンで環境を整え、課題を解く時間が必要になる。それに関して講義内で指示する。



クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 - 非営利 - 継承 4.0 国際 ライセンスの下に提供されています。




投稿日

February 20, 2026