Your SlideShare is downloading. ×
coqun
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

coqun

1,339
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,339
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. はじめに ゼミ 授業 おわりに  にわとりかんさつにっき in お茶大 ますこ もえ (twitter ID: @MoCo7) August 29, 2010にわとりかんさつにっき in お茶大 1/24
  • 2. はじめに ゼミ 授業 おわりに自己紹介 お茶大の学生 (M2) 所属: shift/reset 推進委員会 好きなもの: OCaml,Coq,圏論,ect.にわとりかんさつにっき in お茶大 2/24
  • 3. はじめに ゼミ 授業 おわりに  研究室にわとりかんさつにっき in お茶大 3/24
  • 4. はじめに ゼミ 授業 おわりにボス: ProofGeneralにわとりかんさつにっき in お茶大 4/24
  • 5. はじめに ゼミ 授業 おわりにボス: ProofGeneral 浅井先生にわとりかんさつにっき in お茶大 4/24
  • 6. はじめに ゼミ 授業 おわりにボス: ProofGeneral 浅井先生 昨日の OCaml Meeting の talker の 1 人にわとりかんさつにっき in お茶大 4/24
  • 7. はじめに ゼミ 授業 おわりにボス: ProofGeneral 浅井先生 昨日の OCaml Meeting の talker の 1 人 ⇑ この本の筆者にわとりかんさつにっき in お茶大 4/24
  • 8. はじめに ゼミ 授業 おわりに学生 D1 1 人 M2 4 人 M1 2 人 B4 1 人にわとりかんさつにっき in お茶大 5/24
  • 9. はじめに ゼミ 授業 おわりにCoq ゼミ 2008 年前期開催 Coq を勉強しよう ! というゼミでした 内容: 1 install,関数,大域的変数,Specification の定義 2 命題論理 3 関数の拡張,述語論理 4 implication 以外の論理演算,等式の証明 5 帰納的なデータ型,再帰関数の定義,帰納法 6 リスト,帰納的な命題の定義 7 演習 (TAPL 8 章,soundness) http://pllab.is.ocha.ac.jp/lab.htmlにわとりかんさつにっき in お茶大 6/24
  • 10. はじめに ゼミ 授業 おわりにゼミで学んだこと 型 = 命題 プログラム = 証明にわとりかんさつにっき in お茶大 7/24
  • 11. はじめに ゼミ 授業 おわりにゼミで学んだこと /)◦∀◦( yay! /)◦∀◦( 型 = 命題 プログラム = 証明 (◦∀◦)/ yay! (◦∀◦)/にわとりかんさつにっき in お茶大 7/24
  • 12. はじめに ゼミ 授業 おわりにゼミで学んだこと Coq 楽しそう 証明に良さそうだにわとりかんさつにっき in お茶大 7/24
  • 13. はじめに ゼミ 授業 おわりにゼミで学んだこと Coq 楽しそう 証明に良さそうだ 後期: CPDT をやって転覆 M2 は研究に Coq を使えていない ... ! (使いたい !)にわとりかんさつにっき in お茶大 7/24
  • 14. はじめに ゼミ 授業 おわりにCoq 楽しいよ Coq ICFP2009 の B. C. Pierce の招待講演 “Lambda, the Ultimate TA: Using a Proof Assistant to Teach Programming Language Foundations” from Theory of PL for PL geeks to Software Foundation to the masses http://www.cis.upenn.edu/~bcpierce/sfにわとりかんさつにっき in お茶大 9/24
  • 15. はじめに ゼミ 授業 おわりに今年の大学院の授業 大学院の授業: 先生達が好きなことをやる 浅井先生は ... functional derivation の手法で色々な セマンティクスのインタプリタを導くにわとりかんさつにっき in お茶大 10/24
  • 16. はじめに ゼミ 授業 おわりに時折出る課題 { 引き算,四則演算 } インタプリタを ... 普通に書く reduction semantics で書く CPS 変換 非関数化 factorial 関数や fibonacci 関数を ... CPS 変換 非関数化にわとりかんさつにっき in お茶大 11/24
  • 17. はじめに ゼミ 授業 おわりにfactorial 関数 (CPS) let rec fac n = if n <= 0 then 1 else n * fac ( n - 1 ) let rec fac_cps n k = if n <= 0 then k 1 else fac_cps ( n - 1 ) ( fun x - > k ( n * x ) ) let main n = fac_cps n ( fun x - > x )にわとりかんさつにっき in お茶大 12/24
  • 18. はじめに ゼミ 授業 おわりにfactorial 関数 (非関数化) type cont = C0 | C1 of int * cont let rec apply k x = match k with | C0 - > x | C1 (n , k ) - > apply k ( n * x ) let rec fac_defunc n k = if n <= 0 then apply k 1 else fac_defunc ( n - 1 ) ( C1 (n , k ) ) let main n = fac_defunc n C0にわとりかんさつにっき in お茶大 13/24
  • 19. yはじめに ゼミ 授業 おわりに時折出る無茶振り (?) ~ じゃ、正当性の 証明は Coq で。にわとりかんさつにっき in お茶大 14/24
  • 20. はじめに ゼミ 授業 おわりに  売られた喧嘩は買いましょう !!にわとりかんさつにっき in お茶大 15/24
  • 21. はじめに ゼミ 授業 おわりに  売られた喧嘩は買いましょう !! 出さ 定理 証明しにわとりかんさつにっき in お茶大 15/24
  • 22. はじめに ゼミ 授業 おわりにCPS 変換の正当性 (factorial) Theorem ∀n ∈ N, f acds n = f accps n idにわとりかんさつにっき in お茶大 16/24
  • 23. はじめに ゼミ 授業 おわりにCPS 変換の正当性 (factorial) Theorem ∀n ∈ N, f acds n = f accps n id Lemma ∀n ∈ N, k ∈ N → N, k (f acds n) = f accps n k 証明: n に関する帰納法にわとりかんさつにっき in お茶大 16/24
  • 24. はじめに ゼミ 授業 おわりにCPS 変換の正当性 (factorial) Theorem ∀n ∈ N, f acds n = f accps n id Lemma ∀n ∈ N, k ∈ N → N, k (f acds n) = f accps n k 証明: n に関する帰納法 上の定理は k = id にすれば示せるにわとりかんさつにっき in お茶大 16/24
  • 25. はじめに ゼミ 授業 おわりに非関数化の正当性 (factorial) Theorem ∀n ∈ N, f accps n id = f acdef unc n C0にわとりかんさつにっき in お茶大 17/24
  • 26. はじめに ゼミ 授業 おわりに非関数化の正当性 (factorial) Theorem ∀n ∈ N, f accps n id = f acdef unc n C0 Lemma ∀n ∈ N, k ∈ N → N, c ∈ cont, (∀a ∈ N, k a = apply c a) → f accps n k = f acdef unc n c 証明: n に関する帰納法にわとりかんさつにっき in お茶大 17/24
  • 27. はじめに ゼミ 授業 おわりに非関数化の正当性 (factorial) Theorem ∀n ∈ N, f accps n id = f acdef unc n C0 Lemma ∀n ∈ N, k ∈ N → N, c ∈ cont, (∀a ∈ N, k a = apply c a) → f accps n k = f acdef unc n c 証明: n に関する帰納法 上の定理は k = id,c = C0 に すれば示せるにわとりかんさつにっき in お茶大 17/24
  • 28. はじめに ゼミ 授業 おわりにCPS 変換 & 非関数化の正当性 (fibonacci) let rec fib n = if n <= 1 then 1 else fib ( n - 1 ) + fib ( n - 2 ) 定式化: ほぼ factorial と同じ格好 証明: well founded induction で頑張るにわとりかんさつにっき in お茶大 18/24
  • 29. はじめに ゼミ 授業 おわりにCPS 変換 & 非関数化の正当性 (fibonacci) let rec fib n = if n <= 1 then 1 else fib ( n - 1 ) + fib ( n - 2 ) 定式化: ほぼ factorial と同じ格好 証明: well founded induction で頑張る ?? 非関数化すると apply 関数と相互再帰の形になり Coq で上手く定義出来ない ... (証明も美しくない)にわとりかんさつにっき in お茶大 18/24
  • 30. はじめに ゼミ 授業 おわりにfibonacci (CPS, OCaml) let rec fib_cps n k = if n < 2 then k 1 else fib_cps ( n - 1 ) ( fun x - > fib_cps ( n - 2 ) ( fun y - > k ( x + y ) ) )にわとりかんさつにっき in お茶大 19/24
  • 31. はじめに ゼミ 授業 おわりにfibonacci (defunctionalized, OCaml) type cont = | C0 | C1 of int * cont_t | C2 of int * cont_t let rec apply k x = match k with | C0 - > x | C1 (n , k ) - > fib_defunc ( n - 2 ) ( C2 (x , k ) ) | C2 ( n1 , k ) - > apply k ( n1 + x ) and fib_defunc n k = if n < 2 then apply k 1 else fib_defunc ( n - 1 ) ( C1 (n , k ) )にわとりかんさつにっき in お茶大 20/24
  • 32. はじめに ゼミ 授業 おわりにfibonacci (Coq) Fixpoint app ( k : cont_fib ) ( x : nat ) ( count : nat ) { struct count } : option nat : = match count with | O = > None | S count ’ = > match k with | C0_fib = > Some x | C1_fib n k = > fib_defunc ( minus n 1 ) ( C2_fib x k ) count ’ | C2_fib n1 k = > app k ( plus n1 x ) count ’ end end with fib_defunc ( n : nat ) ( k : cont_fib ) ( count : nat ) { struct count } : option nat : = match count with | O = > None | S count ’ = > match n with | O | S O = > app k 1 count ’ | S m = > fib_defunc m ( C1_fib m k ) count ’ end end .にわとりかんさつにっき in お茶大 21/24
  • 33. はじめに ゼミ 授業 おわりに真面目な研究もやっています D1 の先輩: Coqer · · · 強正規化性の証明,プログラム抽出 M1 の後輩: Coqer / Agdar · · · functional derivation の証明 (今は Agda 勉強中)にわとりかんさつにっき in お茶大 22/24
  • 34. はじめに ゼミ 授業 おわりにちなみに 私の研究: shift/reset の直接実装 最近は Caml Light に shift/reset 導入 functional derivation の手法を利用して, definitional interpreter =⇒ ZINC の証明 怪しい変換の部分に Coq を使いたい ... かも ? 圏論の方で Coq を使いたい ... かも ??にわとりかんさつにっき in お茶大 23/24
  • 35. はじめに ゼミ 授業 おわりに  おわり u u h ¤ h ¤ hにわとりかんさつにっき in お茶大 24/24

×