SlideShare a Scribd company logo
Proof Summit 2012




    ご清聴まことに感謝いたしております。
あなた誰?
• パンダです。
• 以上。
–反論はTwitterの
 @chiguriへ。




       ご清聴まことに感謝いたしております。
一応自己紹介
• 卒論でCoqを使わされて怖く
  なったチキン。
• 一応東工大の博士課程。
• Coqをいじって「対話的に
  証明した内容をいじる」と
  いう機能を開発中。
     ご清聴まことに感謝いたしております。
今日のお題




ご清聴まことに感謝いたしております。
Panda General




  ご清聴まことに感謝いたしております。
ちがう!




ご清聴まことに感謝いたしております。
Sort inside Coq




   ご清聴まことに感謝いたしております。
Sort?
• QuickとかMerge?
 –私はMergeが好きです


• じゃなくて


        ご清聴まことに感謝いたしております。
ここでいうSortは
• Prop/Set/Typeのこと

• Coq組み込みの型

• 帰納型の型

        ご清聴まことに感謝いたしております。
今日の内容
• Typeが少し変な挙動をする

• この挙動を内側からこっそり
  覗いてみる
 –OCaml debuggerを使う


         ご清聴まことに感謝いたしております。
まず外から見る
• クイズっぽく




     ご清聴まことに感謝いたしております。
ワタシノSortハ
       ナンデスカ
• Inductive t := a.
               タイプ

• 迷子の迷子の型t
  あなたのソートは
  なんですか?
 –Printしたら「Typeです」
 –Checkをしたら「Propです」
         ご清聴まことに感謝いたしております。
Prop!?




ご清聴まことに感謝いたしております。
ちなみに
• Inductive t := a | b.

• こちらの場合...
 –Printしたら「Typeです」
   • 同じ
 –Checkをしたら「Setです」
          ご清聴まことに感謝いたしております。
Sort polymorphism
• Sortをできる限り小さく見せ
  るための規則
 –list natがSetになるのはこいつの
  おかげ
 –私の研究が難しくなったのもこい
  つのおかげ(せい)

       ご清聴まことに感謝いたしております。
にしたってPropとは
• ちょっとやりすぎじゃない?

• 大丈夫だ、問題ない
–Propのeliminationが関わる
–詳細は省略


       ご清聴まことに感謝いたしております。
では
• Coqの内側から見てみる




     ご清聴まことに感謝いたしております。
早速準備!
• Coq-8.4のソースコードをDL!
• ./configure -debug
 –インストール場所はご自由に
• make
 –待つ
 –できたものがここにあります
         ご清聴まことに感謝いたしております。
OCamlDebug!
• Emacs+Tuaregでやる
 –TypeRexのほうが?


• coqtop.byteを対象に
 –directoryの指定などが面倒くさい
  ので準備してたスクリプトを使う

        ご清聴まことに感謝いたしております。
Inductive!
• 早速見てみよう
• Inductive t := a.




         ご清聴まことに感謝いたしております。
breakpointに
引っかかり・・・




   ご清聴まことに感謝いたしております。
そして中身が・・・




  ご清聴まことに感謝いたしております。
み え な い




 ご清聴まことに感謝いたしております。
<abstr>とかなんだよ
• あぶすとらくとでーたたいぷ
  とかいうやつ?
 –要するに型しかわからない


• まじf*ck

           ご清聴まことに感謝いたしております。
仕方がないので
• Coqのmliファイルをいじる
 –8.3pl2のころにやったので
 –精神的に(無駄に)つらい
  • ときどきml4ファイルも編集が必要
 –ときどきコンストラクタ名などが
  衝突する

       ご清聴まことに感謝いたしております。
結果
• github.com/chiguri/coq_debu
  gに
 –適当に利用してやってください
   • さっきの方法で使えるはず
     –ocamldebug用スクリプトはdebug
   • kernel/byterun/dllcoqrun.soがいる
     かも(インストールしない場合)

           ご清聴まことに感謝いたしております。
見え方
• Printを追っていくと見える
 –今回はmind_arityを見る
 –Checkを追っていくとSortの判定が
  見える




       ご清聴まことに感謝いたしております。
ほかに見えるもの
• eliminationに関わるものとか
 –もともと見えてるけど
• 内部表現いろいろ

• コマンドのスタック
  Lib.lib_stkとか
       ご清聴まことに感謝いたしております。
やったね
• 以上
• ご清聴に感謝




     ご清聴まことに感謝いたしております。
ためしに・・・
• Extractionを辿ろうとした

• 関数が見つからない
• 見つからない
• あれー・・・?

       ご清聴まことに感謝いたしております。

More Related Content

Similar to Proof Summit 2012

北海道の南端で勉強会やります
北海道の南端で勉強会やります北海道の南端で勉強会やります
北海道の南端で勉強会やります
deflis
 
“Septeni×Scala”勉強会#1資料_20150219_寺坂
“Septeni×Scala”勉強会#1資料_20150219_寺坂“Septeni×Scala”勉強会#1資料_20150219_寺坂
“Septeni×Scala”勉強会#1資料_20150219_寺坂
ikuyaterasaka
 
勉強会旅人のススメ
勉強会旅人のススメ勉強会旅人のススメ
勉強会旅人のススメand hyphen
 
Emscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョンEmscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョン
兎 伊藤
 
YAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaXYAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaXKazuyuki Todo
 
U-16プログラミングコンテスト CHaser を利用したプログラミング指導
U-16プログラミングコンテスト CHaser を利用したプログラミング指導U-16プログラミングコンテスト CHaser を利用したプログラミング指導
U-16プログラミングコンテスト CHaser を利用したプログラミング指導
NISHIHARA Shota
 
What's Cooking In Ruby 2.7
What's Cooking In Ruby 2.7What's Cooking In Ruby 2.7
What's Cooking In Ruby 2.7
Akinori Musha
 
libpgenでパケット操作
libpgenでパケット操作libpgenでパケット操作
libpgenでパケット操作
slankdev
 
Perlcasual #5 発表資料
Perlcasual #5 発表資料Perlcasual #5 発表資料
Perlcasual #5 発表資料
Junichi Ishida
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
Yusuke Wada
 
Aniki::Internal
Aniki::InternalAniki::Internal
Aniki::Internal
karupanerura
 
Raspberry Pi 最新情報 at OSC Tokyo 2014 秋
Raspberry Pi 最新情報 at OSC Tokyo 2014 秋Raspberry Pi 最新情報 at OSC Tokyo 2014 秋
Raspberry Pi 最新情報 at OSC Tokyo 2014 秋
Masafumi Ohta
 
Arduinoで二酸化炭素を測ろう
Arduinoで二酸化炭素を測ろうArduinoで二酸化炭素を測ろう
Arduinoで二酸化炭素を測ろう
NISHIHARA Shota
 
tsudaりについて
tsudaりについてtsudaりについて
tsudaりについて
Yoshikazu GOTO
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm
鉄次 尾形
 
研修担当者に聞く、学生のうちに学ぶべきこと
研修担当者に聞く、学生のうちに学ぶべきこと研修担当者に聞く、学生のうちに学ぶべきこと
研修担当者に聞く、学生のうちに学ぶべきことHiromu Shioya
 
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
 
メモリアロケーションからみた拡張ライブラリに大切なこと
メモリアロケーションからみた拡張ライブラリに大切なことメモリアロケーションからみた拡張ライブラリに大切なこと
メモリアロケーションからみた拡張ライブラリに大切なこと
Masaya TARUI
 

Similar to Proof Summit 2012 (18)

北海道の南端で勉強会やります
北海道の南端で勉強会やります北海道の南端で勉強会やります
北海道の南端で勉強会やります
 
“Septeni×Scala”勉強会#1資料_20150219_寺坂
“Septeni×Scala”勉強会#1資料_20150219_寺坂“Septeni×Scala”勉強会#1資料_20150219_寺坂
“Septeni×Scala”勉強会#1資料_20150219_寺坂
 
勉強会旅人のススメ
勉強会旅人のススメ勉強会旅人のススメ
勉強会旅人のススメ
 
Emscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョンEmscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョン
 
YAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaXYAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaX
 
U-16プログラミングコンテスト CHaser を利用したプログラミング指導
U-16プログラミングコンテスト CHaser を利用したプログラミング指導U-16プログラミングコンテスト CHaser を利用したプログラミング指導
U-16プログラミングコンテスト CHaser を利用したプログラミング指導
 
What's Cooking In Ruby 2.7
What's Cooking In Ruby 2.7What's Cooking In Ruby 2.7
What's Cooking In Ruby 2.7
 
libpgenでパケット操作
libpgenでパケット操作libpgenでパケット操作
libpgenでパケット操作
 
Perlcasual #5 発表資料
Perlcasual #5 発表資料Perlcasual #5 発表資料
Perlcasual #5 発表資料
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
 
Aniki::Internal
Aniki::InternalAniki::Internal
Aniki::Internal
 
Raspberry Pi 最新情報 at OSC Tokyo 2014 秋
Raspberry Pi 最新情報 at OSC Tokyo 2014 秋Raspberry Pi 最新情報 at OSC Tokyo 2014 秋
Raspberry Pi 最新情報 at OSC Tokyo 2014 秋
 
Arduinoで二酸化炭素を測ろう
Arduinoで二酸化炭素を測ろうArduinoで二酸化炭素を測ろう
Arduinoで二酸化炭素を測ろう
 
tsudaりについて
tsudaりについてtsudaりについて
tsudaりについて
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm
 
研修担当者に聞く、学生のうちに学ぶべきこと
研修担当者に聞く、学生のうちに学ぶべきこと研修担当者に聞く、学生のうちに学ぶべきこと
研修担当者に聞く、学生のうちに学ぶべきこと
 
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
 
メモリアロケーションからみた拡張ライブラリに大切なこと
メモリアロケーションからみた拡張ライブラリに大切なことメモリアロケーションからみた拡張ライブラリに大切なこと
メモリアロケーションからみた拡張ライブラリに大切なこと
 

Proof Summit 2012