Enviar búsqueda
Cargar
書くネタがCoqしかない
•
Descargar como PPTX, PDF
•
2 recomendaciones
•
4,862 vistas
Masaki Hara
Seguir
upcamp(私立・プログラミングキャンプ) 2012 東京大会 http://atnd.org/events/30833
Leer menos
Leer más
Denunciar
Compartir
Denunciar
Compartir
1 de 31
Descargar ahora
Recomendados
定理証明支援系Coqについて
定理証明支援系Coqについて
Yoshihiro Mizoguchi
「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界
maruyama097
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
京大 マイコンクラブ
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
よくわかるCoqプログラミング
よくわかるCoqプログラミング
Real_analysis
証明プログラミング超入門
証明プログラミング超入門
Kyoko Kadowaki
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
Recomendados
定理証明支援系Coqについて
定理証明支援系Coqについて
Yoshihiro Mizoguchi
「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界
maruyama097
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
京大 マイコンクラブ
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
よくわかるCoqプログラミング
よくわかるCoqプログラミング
Real_analysis
証明プログラミング超入門
証明プログラミング超入門
Kyoko Kadowaki
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
MITSUNARI Shigeo
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
楕円曲線入門トーラスと楕円曲線のつながり
楕円曲線入門トーラスと楕円曲線のつながり
MITSUNARI Shigeo
Quine・難解プログラミングについて
Quine・難解プログラミングについて
mametter
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
ホモトピー型理論入門
ホモトピー型理論入門
k h
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
Rust、何もわからない...#7 VecDeque再訪
Rust、何もわからない...#7 VecDeque再訪
Yusuke Mori
最適輸送入門
最適輸送入門
joisino
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
自動定理証明の紹介
自動定理証明の紹介
Masahiro Sakai
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml
Haruka Oikawa
Coq Tutorial
Coq Tutorial
tmiya
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
圏論は、随伴が全て
圏論は、随伴が全て
ohmori
Constexprとtemplateでコンパイル時にfizz buzz
Constexprとtemplateでコンパイル時にfizz buzz
京大 マイコンクラブ
C++ Now 2012 report
C++ Now 2012 report
Akira Takahashi
すごいCoq入門
すごいCoq入門
真一 北原
Más contenido relacionado
La actualidad más candente
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
MITSUNARI Shigeo
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
楕円曲線入門トーラスと楕円曲線のつながり
楕円曲線入門トーラスと楕円曲線のつながり
MITSUNARI Shigeo
Quine・難解プログラミングについて
Quine・難解プログラミングについて
mametter
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
ホモトピー型理論入門
ホモトピー型理論入門
k h
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
Rust、何もわからない...#7 VecDeque再訪
Rust、何もわからない...#7 VecDeque再訪
Yusuke Mori
最適輸送入門
最適輸送入門
joisino
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
自動定理証明の紹介
自動定理証明の紹介
Masahiro Sakai
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml
Haruka Oikawa
Coq Tutorial
Coq Tutorial
tmiya
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
圏論は、随伴が全て
圏論は、随伴が全て
ohmori
Constexprとtemplateでコンパイル時にfizz buzz
Constexprとtemplateでコンパイル時にfizz buzz
京大 マイコンクラブ
La actualidad más candente
(20)
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
C++ マルチスレッド 入門
C++ マルチスレッド 入門
楕円曲線入門トーラスと楕円曲線のつながり
楕円曲線入門トーラスと楕円曲線のつながり
Quine・難解プログラミングについて
Quine・難解プログラミングについて
できる!並列・並行プログラミング
できる!並列・並行プログラミング
暗号技術の実装と数学
暗号技術の実装と数学
ホモトピー型理論入門
ホモトピー型理論入門
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Rust、何もわからない...#7 VecDeque再訪
Rust、何もわからない...#7 VecDeque再訪
最適輸送入門
最適輸送入門
メタプログラミングって何だろう
メタプログラミングって何だろう
自動定理証明の紹介
自動定理証明の紹介
プログラムを高速化する話
プログラムを高速化する話
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml
Coq Tutorial
Coq Tutorial
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
圏論は、随伴が全て
圏論は、随伴が全て
Constexprとtemplateでコンパイル時にfizz buzz
Constexprとtemplateでコンパイル時にfizz buzz
Similar a 書くネタがCoqしかない
C++ Now 2012 report
C++ Now 2012 report
Akira Takahashi
すごいCoq入門
すごいCoq入門
真一 北原
Proof summit 2017 for slideshare
Proof summit 2017 for slideshare
Keisuke Yahata
error handling using expected
error handling using expected
Akira Takahashi
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Yoshifumi Kawai
20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)
Yoshifumi Yamaguchi
111015 tokyo scipy2_ディスカッション
111015 tokyo scipy2_ディスカッション
Shohei Hido
「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態
npsg
CI/CDパイプラインを定着させる闘い @九州インフラ交流勉強会(Kixs) Vol.006
CI/CDパイプラインを定着させる闘い @九州インフラ交流勉強会(Kixs) Vol.006
Kazuhiro Uchimura
Cプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧め
MITSUNARI Shigeo
CodeBuildを身近にするためのはじめの一歩
CodeBuildを身近にするためのはじめの一歩
淳 千葉
Mk network programmability-03
Mk network programmability-03
Miya Kohno
cbt (Cranberries Build Tool)
cbt (Cranberries Build Tool)
Wada Yuki
Draft: Observability, Service Mesh and Microservices
Draft: Observability, Service Mesh and Microservices
Taiki
Observability, Service Mesh and Microservices
Observability, Service Mesh and Microservices
Taiki
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
Masaya Aoyama
Similar a 書くネタがCoqしかない
(16)
C++ Now 2012 report
C++ Now 2012 report
すごいCoq入門
すごいCoq入門
Proof summit 2017 for slideshare
Proof summit 2017 for slideshare
error handling using expected
error handling using expected
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)
111015 tokyo scipy2_ディスカッション
111015 tokyo scipy2_ディスカッション
「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態
CI/CDパイプラインを定着させる闘い @九州インフラ交流勉強会(Kixs) Vol.006
CI/CDパイプラインを定着させる闘い @九州インフラ交流勉強会(Kixs) Vol.006
Cプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧め
CodeBuildを身近にするためのはじめの一歩
CodeBuildを身近にするためのはじめの一歩
Mk network programmability-03
Mk network programmability-03
cbt (Cranberries Build Tool)
cbt (Cranberries Build Tool)
Draft: Observability, Service Mesh and Microservices
Draft: Observability, Service Mesh and Microservices
Observability, Service Mesh and Microservices
Observability, Service Mesh and Microservices
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
Más de Masaki Hara
You won't know it's now Rust
You won't know it's now Rust
Masaki Hara
How I Contribute to Rust Compiler
How I Contribute to Rust Compiler
Masaki Hara
Coqの公理
Coqの公理
Masaki Hara
ご静聴ありがとうございました
ご静聴ありがとうございました
Masaki Hara
いろいろな問題の解説
いろいろな問題の解説
Masaki Hara
“A ::= aAa / a” in PEG
“A ::= aAa / a” in PEG
Masaki Hara
Spaceships 解説
Spaceships 解説
Masaki Hara
Proving Decidability of Intuitionistic Propositional Calculus on Coq
Proving Decidability of Intuitionistic Propositional Calculus on Coq
Masaki Hara
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
Masaki Hara
永続データ構造が分からない人のためのスライド
永続データ構造が分からない人のためのスライド
Masaki Hara
Coqでsprintf
Coqでsprintf
Masaki Hara
Coqでsprintf
Coqでsprintf
Masaki Hara
joi2012-sp-day2-broadcasting
joi2012-sp-day2-broadcasting
Masaki Hara
Más de Masaki Hara
(13)
You won't know it's now Rust
You won't know it's now Rust
How I Contribute to Rust Compiler
How I Contribute to Rust Compiler
Coqの公理
Coqの公理
ご静聴ありがとうございました
ご静聴ありがとうございました
いろいろな問題の解説
いろいろな問題の解説
“A ::= aAa / a” in PEG
“A ::= aAa / a” in PEG
Spaceships 解説
Spaceships 解説
Proving Decidability of Intuitionistic Propositional Calculus on Coq
Proving Decidability of Intuitionistic Propositional Calculus on Coq
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
永続データ構造が分からない人のためのスライド
永続データ構造が分からない人のためのスライド
Coqでsprintf
Coqでsprintf
Coqでsprintf
Coqでsprintf
joi2012-sp-day2-broadcasting
joi2012-sp-day2-broadcasting
書くネタがCoqしかない
1.
書くネタがCoqしかない upcamp
2012 にて
2.
自己紹介 • http://qnighy.github.com/ を参照 •
いちねんせい • 2008プログラミング組
3.
やりたいこと • 数学の証明を自然言語で書かなければい
けないのは理不尽! • →Principia Mathematica 1+1の証明 (Wikipediaより) ここまで80ページ強の議論が必要
4.
やりたいこと • 今だったらこれをコンピューターでやれ
るよね • ↑正しさの検証も自動でできる! • ↑あわよくば、証明の一部は自動化
5.
目次 •
Coqとは何か • Coqの根底にある理論 • Coqで何ができるのか • Coqをはじめる
6.
Coqとは何か • 純粋関数型プログラミング言語&定理証
明言語 • 静的型付け • OCamlの影響を受ける • OCamlで実装されている • OCamlの製造元 INRIA が開発している • 名前は計算機科学者 Thierry Coqandに由来 すると思われる
7.
Coqの特徴 • 停止する保証のあるプログラムしか書け
ない (再帰の記述に関する制限) • 証明モード (対話的にプログラムを組み立てるモード)
8.
コード例 • Karatsuba 乗算のコード •
このあと停止性証明が続く
9.
コード例 • マージソートと停止性証明
10.
Coqの特徴 • 停止する保証のあるプログラムしか書け
ない • (再帰の記述に関する制限) • →プログラムの正当性証明に用いられる
11.
コード例 • プログラムの正当性証明 • (anarchy
proof 30: Certified Compiler)
12.
Coqの特徴 • 停止する保証のあるプログラムしか書け
ない • (再帰の記述に関する制限) • →プログラムの正当性証明に用いられる • →数学の定理の証明に用いられる
13.
コード例 • Glivenkoの定理の証明
14.
コード例 • √2は無理数であることの証明 • (anarchy
proof 6: Sqrt 2)
15.
Coqの根底にある理論 • Coqにおける「証明」とは? • →
Curry-Howard 対応 証明 : 命 題 プログラム : 型
16.
Coqの根底にある理論 •
Curry-Howard対応の例 • 含意(AならばB): 関数 A -> B (Haskell) • 連言(AかつB): ペア pair<A, B> (C++) • 選言(AまたはB): Either A B (Haskell) • 矛盾(⊥): 到達不能型 Nothing (Scala) • 否定(Aでない): A -> ⊥
17.
Coqの根底にある理論 •
では、こういうコードは? • Definition A : False := A. • Aが定義できたら、矛盾が導けてしまう。 • ↑ 無限ループの禁止
18.
Coqの根底にある理論 • Coqは停止するプログラムしか書けない • これをどう保証するか?
• _人人 人人人人人人_ > 型システムの出番 <  ̄Y^Y^Y^Y^Y^Y^Y^Y ̄
19.
Coqの根底にある理論 •
停止性を保証する型システム • Simply Typed Lambda Calculus • ↓ +polymorphism (型に依存した値) • ↓ +type operators (型に依存した型) • ↓ +dependent types (値に依存した型) • Calculus of Constructions
20.
Coqの根底にある理論 • Calculus of
Constructions (CoC) • ↓ + 再帰等 • Calculus of Inductive Constructions (CIC) • このCICをCoqでは用いている • CICと集合論のZFCは互換 ( CIC(i)→ZFC(i-2), ZFC(i)→CIC(i+1) )
21.
Coqで何ができるの? • 数学サイド • 有名なのは
– ゲーデルの不完全性定理の証明 (公理系が多層化するので、形式的な言語で書 いたほうが議論しやすいと思われる) – 四色問題の証明 (四色問題は数学的証明部とコンピューターに よる探索部に別れる。Coqではこれを有機的 に結合できるため、証明の信頼性が高まる)
22.
Coqで何ができるの? • プログラミングサイド • プログラムを証明するという試みもいく
つか行われている – Coq自体でプログラムを書く→他の言語へ出力 – C言語プログラムの証明:Frama-Cプラグイン – Javaプログラムの証明: Krakatoa – 独自の言語Why3MLで書いたプログラムの証 明 • Zとかに比べるとまだ発展途上かも
23.
Coqで何ができるの? •というより
24.
Coqで何ができるの? •証明ができると
25.
Coqで何ができるの? •幸せになります (主に自己肯定感が得られる)
26.
Coqをはじめる •
27.
Coqをはじめる • 日本語資料が少ない • コミュニティーが大きくない •
最後に、いくつかの参考資料を紹介して 終わります
28.
Coqの資料 • http://coq.inria.fr/
– Coq公式サイト • プログラミング Coq – 女子大生によるCoqプログラミング入門 • anarchy proof – 証明ジャッジ 練習用に使える • あとは面倒くさいのでここを見て
29.
コミュニティー • 名古屋にいろいろあるらしい –
Coq Party, Proof Summit …
30.
本 • 本(英語) –
Coq’art • Coqの本らしい – TAPL • 型理論の本
31.
おわり •
Descargar ahora