Symbols_J:概要
Preface_J:前書き
Basics_J: 関数プログラミングとプログラムの証明
- 列挙型
- 簡約を用いた証明
- introsタクティック
- 書き換え(Rewriting)による証明
- Case分析
- Caseへのネーミング
- 帰納法
- 形式的証明と非形式的証明
- 証明の中で行う証明
- さらなる練習問題
Lists_J: 直積、リスト、オプション
Poly_J: 多相性と高階関数
Gen_J: 帰納法の仮定の一般化
Prop_J: 命題と根拠
Logic_J: Coqにおける論理
- 全称記号 と ならば
- 論理積、連言(Conjunction、AND)
- 論理和、選言(Disjunction、OR)
- 偽であるということ
- 否定
- 存在量化子
- 等しいということ(同値性)
- 命題としての関係
- 選択課題
Rel_J: 関係の性質
SfLib_J: Software Foundations ライブラリ
Imp_J: 単純な命令型プログラム
ImpParser_J: Coqでの字句解析と構文解析
Equiv_J: プログラムの同値性
- 宿題割当てについての一般的アドバイス
- 振る舞い同値性
- 振る舞い同値の性質
- ケーススタディ: 定数畳み込み
- プログラムが同値でないことを証明する
- 外延性を使わずに行う (Optional)
- さらなる練習問題
ImpList_J: Imp のリスト拡張
Hoare_J: ホーア論理
HoareAsLogic_J: 論理としてのホーア論理
Smallstep_J: スモールステップ操作的意味論
Types_J: 型システム
Stlc_J: 単純型付きラムダ計算
Typechecking_J: STLCの型チェッカ
MoreStlc_J: 単純型付きラムダ計算についてさらに
Records_J: STLCにレコードを追加する
References_J: 変更可能な参照の型付け
Subtyping_J: サブタイプ
RecordSub_J: レコードのサブタイプ
Norm_J: STLCの正規化
UseTactics_J: Coq用タクティックライブラリのご紹介
UseAuto_J: Coqの証明自動化の理論と実際
LibTactics_J: 使いやすい汎用タクティックのコレクション
- Coqのための追加の記法
- Ltacによるプログラミングのための道具類
- 後方/前方連鎖
- 導入と一般化
- 書き換え
- 反転(Inversion)
- 帰納法(Induction)
- 決定可能な等式
- 同値(Equivalence)
- N個の連言と選言
- タイプクラスのインスタンスを証明するためのタクティック
- 自動化起動のタクティック
- 証明コンテキストを整理するためのタクティック
- 開発目的のタクティック
- 標準ライブラリとのコンパチビリティ