ぐだぐだAgda
なごやちまつり
@chiguri
御清聴誠に感謝しております!
または
御清聴誠に感謝しております!
経験したのが7年前なだけの
Coqユーザーが
Agdaを仕事で
半年使っただけ
御清聴誠に感謝しております!
タイトル
• タイトルはcamlspotter様のブ
ログ記事「経験15年の
OCaml ユーザーが Haskell
を仕事で半年使ってみた」の
もじり
–あんなにすごい内容じゃないです
御清聴誠に感謝しております!
お前誰だよ
• 3月に無事博士号を
取得した元学生
• パンダ
–鶏付き
• 通称chiguri
• 今神奈川大学
御清聴誠に感謝しております!
昨日のProofSummitで
• Abellaをべらべらしゃべった
–これこそぐだぐだだった気もする
御清聴誠に感謝しております!
発表までの流れ
• 4月末に@tmiya_さん、@bleis
さん、@kyon_mmさんと東京
でお食事した
• 5月に@kyon_mmさんのつぶや
きによりまつりの存在を知った
• 登録して数日後、発表者になっ
ていた
御清聴誠に感謝しており...
なごやといえば?
• こわい
• なごやか
• まさかり
• きょん×ぶれ
• 関数型
• 証明
御清聴誠に感謝しております!
つまり
Agda
Coq
Epigram
などなど
爆発しろー
異論は
認める
さる事情から
• 仕事でAgdaを使うことに
• 今までCoqだったのに
• とりあえずAgdaの話をしよう
御清聴誠に感謝しております!
Agdaなグループ
• 今いる場所は、実にAgdaな
グループ
–Agda Implementors’ Meetingに
行っている
• 開発に近い人が・・・
–ウカツなこと言えない!
–コワイ!
御清聴誠に感謝しております!
Wikipediaより
御清聴誠に感謝しております!
職場で
隣に
います
おまけ:Agdaを
Google先生に聞くと
• Agodaホテルの宣伝がでる
–何度か試したせいで手元で出ない
御清聴誠に感謝しております!
脱線した
御清聴誠に感謝しております!
チュートリアル
• Agdaにももちろんある
–しかも開発者謹製!
• ちょっと不親切な部分もある
–構文に関する説明があまりないので
–よくあるエラーでも書いてくれると非常
に助かるのだけど・・・
御清聴誠に感謝しております!
AgdaとCoqの違い
• 文法・開発言語
(OCaml vs. Haskell)
• 型体系(pCIC vs. Martin-Löf)
• 構造的帰納法(有無)
• 証明(tactic vs. term)
御清聴誠に感謝しております!
コード紹介
• データ型の宣言とかHaskellほ
とんどそのまま
• 関数の定義もほとんどそのま
ま
御清聴誠に感謝しております!
パターンマッチ
• 関数の定義部で行う
–依存型の処理もここで行う
• case文どこ行った!!
御清聴誠に感謝しております!
仕様と証明
• Curry-Howard対応を厳密に
使うAgdaは、
–仕様は型として
–証明は項として
記述する
御清聴誠に感謝しております!
Coqでいうrewrite相当
• 「あとこれを等式で書き換え
るだけ」
• 等価性のパターンマッチ
–パターンマッチを書く場所と同じ
レベルでrewriteという記述がある
が、まだよくわかっていない
御清聴誠に感謝しております!
パターンマッチの列
• 3つのbool値をそれぞれパター
ンマッチすると
–2×2×2=8回分岐
• しかもその分岐の後が同じ(ように
見える式)だとなんかこうもやもや
• 短く書きたいなあ・・・
御清聴誠に感謝しております!
パラメータの関係
• 引数に.(式)と書くとその引数を他の
引数を使って表現できる
– 例)同じ値しか引数に来ない、リストの
長さが渡される、などなど
• チュートリアルに例がいくつかある
が、どうやって関係性を解決してい
るのかよく分からない...
でも実は
• 仕事では全く困ってない
• せいぜいときどき依存型が
出てくるだけだから
–その意味ではプログラミングしや
すいので問題ない
御清聴誠に感謝しております!
仕事でAgda
• 証明?→No
• 依存型プログラミング?→
多分No(若干Yes?)
• じゃあなによ?
御清聴誠に感謝しております!
D-Caseというものを少々
御清聴誠に感謝しております!
D-Case in Agda
• Agda wikiからたどれる
–Windowsのみインストーラで提供
• しかもJava7をインストールしていると
止められる(Java6以前を要求)
• D-Caseとは
–議論の流れを表したもの
–多くは...
AgdaからD-Caseを作る
• Agdaの型システムによって
– 分岐の網羅性
– パラメータの依存関係
などが検査・表現できる
• 通常、議論は
– 厳密でない
– 形式的に書きづらい
ため、postulate(仮定)を多用する
– 結果...
だから
• まだ私は生きています
• まさかりはやめて!
御清聴誠に感謝しております!
以上です
御清聴誠に感謝しております!
Upcoming SlideShare
Loading in …5
×

Nagoya Matsuri 2013 ぐだぐだAgda

1,489 views

Published on

Slide used in Nagoya (Chi-)Matsuri

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

No Downloads
Views
Total views
1,489
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
9
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Nagoya Matsuri 2013 ぐだぐだAgda

  1. 1. ぐだぐだAgda なごやちまつり @chiguri 御清聴誠に感謝しております!
  2. 2. または 御清聴誠に感謝しております!
  3. 3. 経験したのが7年前なだけの Coqユーザーが Agdaを仕事で 半年使っただけ 御清聴誠に感謝しております!
  4. 4. タイトル • タイトルはcamlspotter様のブ ログ記事「経験15年の OCaml ユーザーが Haskell を仕事で半年使ってみた」の もじり –あんなにすごい内容じゃないです 御清聴誠に感謝しております!
  5. 5. お前誰だよ • 3月に無事博士号を 取得した元学生 • パンダ –鶏付き • 通称chiguri • 今神奈川大学 御清聴誠に感謝しております!
  6. 6. 昨日のProofSummitで • Abellaをべらべらしゃべった –これこそぐだぐだだった気もする 御清聴誠に感謝しております!
  7. 7. 発表までの流れ • 4月末に@tmiya_さん、@bleis さん、@kyon_mmさんと東京 でお食事した • 5月に@kyon_mmさんのつぶや きによりまつりの存在を知った • 登録して数日後、発表者になっ ていた 御清聴誠に感謝しております!
  8. 8. なごやといえば? • こわい • なごやか • まさかり • きょん×ぶれ • 関数型 • 証明 御清聴誠に感謝しております! つまり Agda Coq Epigram などなど 爆発しろー 異論は 認める
  9. 9. さる事情から • 仕事でAgdaを使うことに • 今までCoqだったのに • とりあえずAgdaの話をしよう 御清聴誠に感謝しております!
  10. 10. Agdaなグループ • 今いる場所は、実にAgdaな グループ –Agda Implementors’ Meetingに 行っている • 開発に近い人が・・・ –ウカツなこと言えない! –コワイ! 御清聴誠に感謝しております!
  11. 11. Wikipediaより 御清聴誠に感謝しております! 職場で 隣に います
  12. 12. おまけ:Agdaを Google先生に聞くと • Agodaホテルの宣伝がでる –何度か試したせいで手元で出ない 御清聴誠に感謝しております!
  13. 13. 脱線した 御清聴誠に感謝しております!
  14. 14. チュートリアル • Agdaにももちろんある –しかも開発者謹製! • ちょっと不親切な部分もある –構文に関する説明があまりないので –よくあるエラーでも書いてくれると非常 に助かるのだけど・・・ 御清聴誠に感謝しております!
  15. 15. AgdaとCoqの違い • 文法・開発言語 (OCaml vs. Haskell) • 型体系(pCIC vs. Martin-Löf) • 構造的帰納法(有無) • 証明(tactic vs. term) 御清聴誠に感謝しております!
  16. 16. コード紹介 • データ型の宣言とかHaskellほ とんどそのまま • 関数の定義もほとんどそのま ま 御清聴誠に感謝しております!
  17. 17. パターンマッチ • 関数の定義部で行う –依存型の処理もここで行う • case文どこ行った!! 御清聴誠に感謝しております!
  18. 18. 仕様と証明 • Curry-Howard対応を厳密に 使うAgdaは、 –仕様は型として –証明は項として 記述する 御清聴誠に感謝しております!
  19. 19. Coqでいうrewrite相当 • 「あとこれを等式で書き換え るだけ」 • 等価性のパターンマッチ –パターンマッチを書く場所と同じ レベルでrewriteという記述がある が、まだよくわかっていない 御清聴誠に感謝しております!
  20. 20. パターンマッチの列 • 3つのbool値をそれぞれパター ンマッチすると –2×2×2=8回分岐 • しかもその分岐の後が同じ(ように 見える式)だとなんかこうもやもや • 短く書きたいなあ・・・ 御清聴誠に感謝しております!
  21. 21. パラメータの関係 • 引数に.(式)と書くとその引数を他の 引数を使って表現できる – 例)同じ値しか引数に来ない、リストの 長さが渡される、などなど • チュートリアルに例がいくつかある が、どうやって関係性を解決してい るのかよく分からない – 便利なのは間違いないのだが 御清聴誠に感謝しております!
  22. 22. でも実は • 仕事では全く困ってない • せいぜいときどき依存型が 出てくるだけだから –その意味ではプログラミングしや すいので問題ない 御清聴誠に感謝しております!
  23. 23. 仕事でAgda • 証明?→No • 依存型プログラミング?→ 多分No(若干Yes?) • じゃあなによ? 御清聴誠に感謝しております!
  24. 24. D-Caseというものを少々 御清聴誠に感謝しております!
  25. 25. D-Case in Agda • Agda wikiからたどれる –Windowsのみインストーラで提供 • しかもJava7をインストールしていると 止められる(Java6以前を要求) • D-Caseとは –議論の流れを表したもの –多くは図 • 特にここでは木構造の図 御清聴誠に感謝しております!
  26. 26. AgdaからD-Caseを作る • Agdaの型システムによって – 分岐の網羅性 – パラメータの依存関係 などが検査・表現できる • 通常、議論は – 厳密でない – 形式的に書きづらい ため、postulate(仮定)を多用する – 結果として証明はあまり書けない 御清聴誠に感謝しております!
  27. 27. だから • まだ私は生きています • まさかりはやめて! 御清聴誠に感謝しております!
  28. 28. 以上です 御清聴誠に感謝しております!

×