工学部専門科目「計算と論理」

日時 火曜日2限(10:30〜12:00)
場所 総合研究7号館情報1
担当教員:五十嵐 淳
オフィスアワー:火曜日 17:00〜18:00 (総合研究7号館224)
(その他の時間は要アポイントメント)
担当TA:佐藤聡太(通信情報システムコースD3)

お知らせ

講義内容

数理論理学の基礎と,数理論理学を用いた計算機プログラムの検証について講述する.また,講義を補完するため,証明支援系(計算機上で数学的証明を行うシステム)である Rocq を用いた演習を行う.

講義スケジュールと配布資料

回数date内容(予定)資料宿題
110/6 導入, Basics.v
210/13休講
310/20 Basics.v, Induction.v
410/27 単純型付ラムダ計算
511/10 単純型付ラムダ計算(つづき)
611/17 Lists.v
711/26 Poly.v
812/1 多相ラムダ計算 System F
912/8 演習
1012/15 Tactics.v
1112/22 Logic.v
121/5 自然演繹とRocq
131/12 IndProp.v
141/19 カリーハワード同型対応,ProofObjects.v
1/20(?) 演習
期末試験?

自習の進め方(宿題について)

  1. 教科書の該当する章のファイルを Proof General (もしくは RocqIDE) で読み込む.
  2. Rocq への読み込みコマンドを使いながら教科書を読み進める.
  3. 練習問題の指示に従ってファイルを書き換える(解答を埋める).
  4. Rocq に読み込ませてみて,背景が青(緑)になれば無事に Rocq のチェックに通った,ということ.ただし, Proof General, RocqIDE は Qed. の打ち忘れ(よくある!)を関知してくれないので,make XXXX.vo (XXXX.v をチェックするなら)を実行するか RocqIDE で Compile → Compile Buffer を実行して再確認してください.

FAQ

Proof General, RocqIDE の操作

機能 Proof General RocqIDE (メニュー操作)
一歩読み進める(Rocqにテキストの内容を送信) C-c C-n Navigation → Forward
一歩戻る (undo) C-c C-u Navigation → Backward
カーソル位置まで進む(戻る) C-c RET Navigation → Go to
ファイル末尾まで読み込む C-c C-b Navigation → End
証明すべき命題(ゴール)を表示 C-c C-p
既になされた証明・定義を表示 C-c C-t
SearchAbout C-c C-a C-a Queries → SearchAbout (F2)

リソース

教科書
Benjamin C. Pierce 他著 Software Foundations シリーズ 第1巻 Logical Foundations (この本家版は時おりバージョンアップがあるので使わないでください.)
参考書
ボランティアによる教科書の和訳版(元になった版は2011年版です.内容の食い違いについては教科書の記述を優先します.)
Rocq: 公式サイト
ProofGeneral
emacs から Rocq を操作するためのソフトウェア.
Company-coq
ProofGeneral の拡張集. forall と打つと ∀ で表示されたりするのでうれしい. 自動補完などもできる.
coquille
vim から Coq を操作するためのソフトウェア.(使ったことありません.動作報告求む.)
Coqoon
Eclipse から Coq を操作するためのプラグイン.(使ったことありません.動作報告求む.)
vscoq
Visual Studio Code から Coq を操作するためのプラグイン.(使ったことありません.動作報告求む.)

五十嵐 淳