Coq/SSReflect/MathCompによる定理証明 フリーソフトではじめる数学の形式化 | 森北出版株式会社を買ったので、とりあえず環境だけ整える。
インストール環境
% uname -a Linux pi 4.4.0-122-generic #146-Ubuntu SMP Mon Apr 23 15:34:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux % more /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"
Ubuntu 16.04のパッケージシステムに従うとcoqのヴァージョンが古いのでCoq/SSReflect/MathCompの設定を参考にコンパイルする。
Ocamlのインストール
% sudo aptitude install ocaml % ocamlc -v The OCaml compiler, version 4.02.3 Standard library directory: /usr/lib/ocaml
関連ライブラリーのインストール
% sudo aptitude install camlp5
CoqIde用のライブラリーは以下のとおり。なお、Ubuntu 16.04だとlablgtkが古いと言われる(2.18推奨のところ、2.16)。
% sudo aptitude install liblablgtk2-ocaml-dev % sudo aptitude install liblablgtksourceview2-ocaml-dev
Coqのインストール
Releases · coq/coq · GitHubよりダウンロード。本では8.7.0をインストールしているが、8.8.0をインストールしてみる。
上述の本のバージョンよりかなり古い。
% tar xvfz coq-8.8.0.tar.gz % cd coq-8.8.0 % ./configure |& tee configure.log % make -j |& tee make.log % sudo make install |& tee make_install.log % coqc -v The Coq Proof Assistant, version 8.8.0 (May 2018) compiled on May 8 2018 20:32:08 with OCaml 4.02.3
MathCompとSSReflectのインストール
Releases · math-comp/math-comp · GitHubから1.7.0をダウンロードする。
% tar xvfz math-comp-mathcomp-1.7.0.tar.gz % cd math-comp-mathcomp-1.7.0/mathcomp % export COQBIN=/usr/local/bin/ (bashやzshの場合) % setenv COQBIN /usr/local/bin/ (cshやtcshの場合) % make -j 3 |& tee make.log % sudo make install |& tee make_install.log
動作確認
起動する。
% coqide &
開いたウィンドウの左側に以下を入力する。
From mathcomp Require Import ssreflect. Section ModusPonens. Variables X Y : Prop. Hypothesis XtoY_is_true: X -> Y. Hypothesis X_is_true: X. Theorem MP : Y. Proof. move: X_is_true. by []. Qed. End ModusPonens.
実行してみる。