Library curry_howard

カリーハワード対応とCoqのあいだ - Show Proof で学ぶ Coq のしくみ -

Coq はカリーハワード対応を利用して 証明をプログラムによって表現しているというのはよく知られています。
カリーハワード対応というのは、 命題と型、証明とプログラムが同じ構造になっているという話です。
しかし、Coq の proof editing mode で証明をしていると、 証明項(プログラムのことですが、あまりプログラムとしては意識しないので証明項と呼びましょう) がどのようなものか意識することは少ないのではないでしょうか。
たとえば、intros H がなにをする(どんな証明項を構築する)のか わかるでしょうか。
ここでは Coq のいろいろなコマンドがなにをするものなのか、また、 それをどうやって調べるのか説明します。
  • 自動証明
  • 証明項を直接指定する
  • 関数抽象を構築する
  • 関数適用とその引数部分を構築する
  • 関数適用とその関数部分を構築する
  • let 式を構築する
  • eq_refl で等式を証明する
  • eq_ind_r で等式による書き換えを行う
  • match 式を構築する
  • simpl change unfold fold pattern
  • clear rename move_after
  • 数学的帰納法を適用する
  • f_equal congr (SSReflect)
  • assert have (SSReflect)
  • wlog (SSReflect) suff (SSReflect)
  • replace
  • unlock
  • injection case_eq
  • now
  • discriminate
  • assumption
  • contradiction
  • inversion
  • subst
URL: https://akr.github.io/coq-curry-howard/curry_howard.html
リポジトリ: https://github.com/akr/coq-curry-howard