すごいCoq入門

2,059 views

Published on

第4回 #LT駆動 の発表スライドです

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,059
On SlideShare
0
From Embeds
0
Number of Embeds
80
Actions
Shares
0
Downloads
7
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

すごいCoq入門

  1. 1. すごいCoq入門 2014/06/07 #LT駆動 @minamiyama1994
  2. 2. 今日の流れ ● 自己紹介 ● Coqとは何か ● Coqで何ができるのか ● Coqデモ ● まとめ ● 質疑応答
  3. 3. 自己紹介 ● みんな僕のこと知ってるよね! ● 省略
  4. 4. Coqとは何か ● プログラミング言語 ● 定理証明系 ● Curry-Howard対応というのを利用し、型を使っ て形式的に定理を証明する
  5. 5. Coqで何ができるのか ● プログラムが必ず停止することを保証できる ● バッファオーバーランなどの基礎的なバグをコ ンパイル時に弾ける ● ある種の性質を証明できる ○ 正しく動作することがCoqで証明されたCコンパイラなど が存在する ● OCamlやHaskellなどのコードに変換できる
  6. 6. Coqデモその1~簡単な証明~ ● 「ある命題Aが成り立ち、Aが成り立てばBが成 り立つとき、Bが成り立つ」を証明する ● intros ● apply ● などのタクティス(証明に使える道具)が存在す る
  7. 7. Coqデモその1~ちょっと複雑な証明~ ● n + m = m + nを証明する ● Lemmaなどで証明に使うための補題を証明し ておいて、他の証明に流用できる ● inductionで帰納法が使える ● simpl,f_equal,rewriteなどのタクティスがある
  8. 8. Coqデモその1~ちょっと複雑な証明~ ● ( l1 ++ l2 ) ++ l3 = l1 ++ ( l2 ++ l3 )を証明する ○ l1,l2,l3はリスト ● 整数だけでなくリストにもinductionでの帰納法 は適用できる
  9. 9. Coqデモその1~実用的な証明のお話~ ● Fixpointなどで実際に動く関数が定義できる ● 関数に対して何らかの性質を証明したい! ○ ex.ソート関数に対して「ちゃんとソートできているのかど うか」を証明したい! ● ここでは「2n-1までの奇数の和とn^2は等しい」 ことを証明する
  10. 10. デモまとめ ● デモのコードはGistにあります ○ https://gist.github. com/minamiyama1994/db5cc050799b36a 2e13e ● Githubにもあります ○ https://github. com/minamiyama1994/LTDD/tree/04
  11. 11. まとめ ● Coqを使うと形式的な証明が行える ● 関数に対して何らかの性質を証明できる ● と言うか証明しないとコンパイルが通らない(事 がある) ○ バグのないプログラム! ● Coqカッコイイ
  12. 12. 時間があれば質疑応答に入ります ご清聴 ありがとうございました

×