すごいCoq入門
Upcoming SlideShare
Loading in...5
×
 

すごいCoq入門

on

  • 685 views

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

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

Statistics

Views

Total Views
685
Views on SlideShare
618
Embed Views
67

Actions

Likes
2
Downloads
2
Comments
0

1 Embed 67

https://twitter.com 67

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

すごいCoq入門 すごいCoq入門 Presentation Transcript

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