狠狠撸

狠狠撸Share a Scribd company logo
书くネタが颁辞辩しかない

  upcamp 2012 にて
自己紹介
? http://qnighy.github.com/ を参照
? いちねんせい
? 2008プログラミング組
やりたいこと
? 数学の証明を自然言語で書かなければい
  けないのは理不尽!
? →Principia Mathematica




     1+1の証明 (Wikipediaより)
     ここまで80ページ強の議論が必要
やりたいこと
? 今だったらこれをコンピューターでやれ
  るよね
? ↑正しさの検証も自動でできる!
? ↑あわよくば、証明の一部は自動化
目次
?   Coqとは何か
?   Coqの根底にある理論
?   Coqで何ができるのか
?   Coqをはじめる
Coqとは何か
? 純粋関数型プログラミング言語&定理証
  明言語
? 静的型付け
? OCamlの影響を受ける
? OCamlで実装されている
? OCamlの製造元 INRIA が開発している
? 名前は計算機科学者 Thierry Coqandに由来
  すると思われる
Coqの特徴
? 停止する保証のあるプログラムしか書け
  ない
  (再帰の記述に関する制限)
? 証明モード
  (対話的にプログラムを組み立てるモード)
コード例
? Karatsuba 乗算のコード




? このあと停止性証明が続く
コード例
? マージソートと停止性証明
Coqの特徴
? 停止する保証のあるプログラムしか書け
  ない
? (再帰の記述に関する制限)
? →プログラムの正当性証明に用いられる
コード例
? プログラムの正当性証明
? (anarchy proof 30: Certified Compiler)
Coqの特徴
? 停止する保証のあるプログラムしか書け
  ない
? (再帰の記述に関する制限)
? →プログラムの正当性証明に用いられる
? →数学の定理の証明に用いられる
コード例
? Glivenkoの定理の証明
コード例
? √2は無理数であることの証明
? (anarchy proof 6: Sqrt 2)
Coqの根底にある理論
? Coqにおける「証明」とは?
? → Curry-Howard 対応

     証明 : 命
     題
プログラム : 型
Coqの根底にある理論
?   Curry-Howard対応の例
?   含意(AならばB): 関数 A -> B (Haskell)
?   連言(AかつB): ペア pair<A, B> (C++)
?   選言(AまたはB): Either A B (Haskell)
?   矛盾(⊥): 到達不能型 Nothing (Scala)
?   否定(Aでない): A -> ⊥
Coqの根底にある理論
?   では、こういうコードは?
?   Definition A : False := A.
?   Aが定義できたら、矛盾が導けてしまう。
?   ↑ 無限ループの禁止
Coqの根底にある理論
? Coqは停止するプログラムしか書けない
? これをどう保証するか?

     ? _人人 人人人人人人_
       > 型システムの出番 <
        ̄Y^Y^Y^Y^Y^Y^Y^Y ̄
Coqの根底にある理論
?   停止性を保証する型システム
?   Simply Typed Lambda Calculus
?   ↓ +polymorphism (型に依存した値)
?   ↓ +type operators (型に依存した型)
?   ↓ +dependent types (値に依存した型)
?   Calculus of Constructions
Coqの根底にある理論
? Calculus of Constructions (CoC)
? ↓ + 再帰等
? Calculus of Inductive Constructions (CIC)

? このCICをCoqでは用いている
? CICと集合論のZFCは互換
  ( CIC(i)→ZFC(i-2), ZFC(i)→CIC(i+1) )
Coqで何ができるの?
? 数学サイド
? 有名なのは
 – ゲーデルの不完全性定理の証明
   (公理系が多層化するので、形式的な言語で書
   いたほうが議論しやすいと思われる)
 – 四色問題の証明
   (四色問題は数学的証明部とコンピューターに
   よる探索部に別れる。Coqではこれを有機的
   に結合できるため、証明の信頼性が高まる)
Coqで何ができるの?
? プログラミングサイド
? プログラムを証明するという試みもいく
  つか行われている
 – Coq自体でプログラムを書く→他の言語へ出力
 – C言語プログラムの証明:Frama-Cプラグイン
 – Javaプログラムの証明: Krakatoa
 – 独自の言語Why3MLで書いたプログラムの証
   明
? Zとかに比べるとまだ発展途上かも
Coqで何ができるの?

?というより
Coqで何ができるの?

?証明ができると
Coqで何ができるの?

?幸せになります
(主に自己肯定感が得られる)
Coqをはじめる
?
Coqをはじめる
? 日本語資料が少ない
? コミュニティーが大きくない

? 最後に、いくつかの参考資料を紹介して
  終わります
Coqの資料
? http://coq.inria.fr/
  – Coq公式サイト
? プログラミング Coq
  – 女子大生によるCoqプログラミング入門
? anarchy proof
  – 証明ジャッジ 練習用に使える
? あとは面倒くさいのでここを見て
コミュニティー
? 名古屋にいろいろあるらしい
 – Coq Party, Proof Summit …
本
? 本(英語)
 – Coq’art
    ? Coqの本らしい
 – TAPL
    ? 型理論の本
おわり
?
Ad

Recommended

PDF
定理証明支援系颁辞辩について
Yoshihiro Mizoguchi
?
PPTX
「型の理論」と証明支援システム -- COQの世界
maruyama097
?
PDF
証明フ?ロク?ラミンク?入门2
Kyoko Kadowaki
?
PDF
奥别产础蝉蝉别尘产濒测の奥别产以外のことぜんぶ话す
Takaya Saeki
?
PDF
计算量
Ken Ogura
?
PDF
証明プログラミング超入门
Kyoko Kadowaki
?
PDF
奥辞谤诲2惫别肠の理论背景
Masato Nakai
?
PDF
私と翱厂厂の25年
MITSUNARI Shigeo
?
PDF
ソーシャルゲームのためのデータベース设计
Yoshinori Matsunobu
?
PDF
圏论のモナドと贬补蝉办别濒濒のモナド
Yoshihiro Mizoguchi
?
PPTX
[DL輪読会]Pay Attention to MLPs (gMLP)
Deep Learning JP
?
PPT
メタプログラミングって何だろう
Kota Mizushima
?
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
?
PDF
Icra2020 v2
robotpaperchallenge
?
PPT
顿狈厂移転失败体験谈
oheso tori
?
PDF
机械学习と深层学习の数理
Ryo Nakamura
?
PDF
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
?
PDF
コールバックと戦う话
torisoup
?
PDF
フ?ースティンク?入门
Retrieva inc.
?
PDF
搁耻蝉迟で始める竞技プログラミング
Naoya Okanami
?
PDF
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
?
PDF
各言語の k-means 比較
y-uti
?
PPTX
纯粋関数型アルゴリズム入门
Kimikazu Kato
?
PDF
数学プログラムを Haskell で書くべき 6 の理由
Hiromi Ishii
?
PDF
すごい constexpr たのしくレイトレ!
Genya Murakami
?
PDF
CRF を使った Web 本文抽出
Shuyo Nakatani
?
PDF
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
?
PDF
すごい颁辞辩入门
真一 北原
?
PPTX
Coq 20100208a
tmiya
?

More Related Content

What's hot (20)

PDF
ソーシャルゲームのためのデータベース设计
Yoshinori Matsunobu
?
PDF
圏论のモナドと贬补蝉办别濒濒のモナド
Yoshihiro Mizoguchi
?
PPTX
[DL輪読会]Pay Attention to MLPs (gMLP)
Deep Learning JP
?
PPT
メタプログラミングって何だろう
Kota Mizushima
?
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
?
PDF
Icra2020 v2
robotpaperchallenge
?
PPT
顿狈厂移転失败体験谈
oheso tori
?
PDF
机械学习と深层学习の数理
Ryo Nakamura
?
PDF
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
?
PDF
コールバックと戦う话
torisoup
?
PDF
フ?ースティンク?入门
Retrieva inc.
?
PDF
搁耻蝉迟で始める竞技プログラミング
Naoya Okanami
?
PDF
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
?
PDF
各言語の k-means 比較
y-uti
?
PPTX
纯粋関数型アルゴリズム入门
Kimikazu Kato
?
PDF
数学プログラムを Haskell で書くべき 6 の理由
Hiromi Ishii
?
PDF
すごい constexpr たのしくレイトレ!
Genya Murakami
?
PDF
CRF を使った Web 本文抽出
Shuyo Nakatani
?
PDF
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
?
ソーシャルゲームのためのデータベース设计
Yoshinori Matsunobu
?
圏论のモナドと贬补蝉办别濒濒のモナド
Yoshihiro Mizoguchi
?
[DL輪読会]Pay Attention to MLPs (gMLP)
Deep Learning JP
?
メタプログラミングって何だろう
Kota Mizushima
?
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
?
顿狈厂移転失败体験谈
oheso tori
?
机械学习と深层学习の数理
Ryo Nakamura
?
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
?
コールバックと戦う话
torisoup
?
フ?ースティンク?入门
Retrieva inc.
?
搁耻蝉迟で始める竞技プログラミング
Naoya Okanami
?
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
?
各言語の k-means 比較
y-uti
?
纯粋関数型アルゴリズム入门
Kimikazu Kato
?
数学プログラムを Haskell で書くべき 6 の理由
Hiromi Ishii
?
すごい constexpr たのしくレイトレ!
Genya Murakami
?
CRF を使った Web 本文抽出
Shuyo Nakatani
?
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
?

Similar to 书くネタが颁辞辩しかない (20)

PDF
すごい颁辞辩入门
真一 北原
?
PPTX
Coq 20100208a
tmiya
?
PDF
颁辞辩チュートリアル
Yoshihiro Mizoguchi
?
PDF
Coq Party 20101127
tmiya
?
PDF
有限オートマトンとスティッカー系に関する颁辞辩による形式証明について
Yoshihiro Mizoguchi
?
PDF
関数プログラミング入门
Hideyuki Tanaka
?
PDF
闯补惫补プログラミング入门
なおき きしだ
?
PDF
AtCoder Beginner Contest 007 解説
AtCoder Inc.
?
ODP
Haskell
todorokit
?
PDF
F#入門 ~関数プログラミングとは何か~
Nobuhisa Koizumi
?
PPTX
第3章 型とクラス
Yasuaki Takebe
?
PPTX
第3章 型とクラス
Yasuaki Takebe
?
PDF
AtCoder Beginner Contest 020 解説
AtCoder Inc.
?
PDF
ゆとりが数週间で颁++を始めるようです
Eric Sartre
?
PDF
Haskell Lecture 1
Yusuke Matsushita
?
PDF
AtCoder Beginner Contest 015 解説
AtCoder Inc.
?
PDF
たのしい関数型
Shinichi Kozake
?
PPTX
AtCoder Beginner Contest 034 解説
AtCoder Inc.
?
PDF
Introduction to Categorical Programming (Revised)
Masahiro Sakai
?
PPTX
Proof Summit 2012
Sosuke MORIGUCHI
?
すごい颁辞辩入门
真一 北原
?
Coq 20100208a
tmiya
?
颁辞辩チュートリアル
Yoshihiro Mizoguchi
?
Coq Party 20101127
tmiya
?
有限オートマトンとスティッカー系に関する颁辞辩による形式証明について
Yoshihiro Mizoguchi
?
関数プログラミング入门
Hideyuki Tanaka
?
闯补惫补プログラミング入门
なおき きしだ
?
AtCoder Beginner Contest 007 解説
AtCoder Inc.
?
Haskell
todorokit
?
F#入門 ~関数プログラミングとは何か~
Nobuhisa Koizumi
?
第3章 型とクラス
Yasuaki Takebe
?
第3章 型とクラス
Yasuaki Takebe
?
AtCoder Beginner Contest 020 解説
AtCoder Inc.
?
ゆとりが数週间で颁++を始めるようです
Eric Sartre
?
Haskell Lecture 1
Yusuke Matsushita
?
AtCoder Beginner Contest 015 解説
AtCoder Inc.
?
たのしい関数型
Shinichi Kozake
?
AtCoder Beginner Contest 034 解説
AtCoder Inc.
?
Introduction to Categorical Programming (Revised)
Masahiro Sakai
?
Proof Summit 2012
Sosuke MORIGUCHI
?
Ad

More from Masaki Hara (13)

PDF
You won't know it's now Rust
Masaki Hara
?
PDF
How I Contribute to Rust Compiler
Masaki Hara
?
PPTX
颁辞辩の公理
Masaki Hara
?
PPTX
ご静聴ありがとうございました
Masaki Hara
?
PDF
いろいろな问题の解説
Masaki Hara
?
PDF
“A ::= aAa / a” in PEG
Masaki Hara
?
PDF
Spaceships 解説
Masaki Hara
?
PDF
Proving Decidability of Intuitionistic Propositional Calculus on Coq
Masaki Hara
?
PDF
搁别永続データ构造が分からない人のためのスライド
Masaki Hara
?
PPTX
永続データ构造が分からない人のためのスライド
Masaki Hara
?
PPTX
颁辞辩で蝉辫谤颈苍迟蹿
Masaki Hara
?
PPTX
颁辞辩で蝉辫谤颈苍迟蹿
Masaki Hara
?
PPTX
joi2012-sp-day2-broadcasting
Masaki Hara
?
You won't know it's now Rust
Masaki Hara
?
How I Contribute to Rust Compiler
Masaki Hara
?
颁辞辩の公理
Masaki Hara
?
ご静聴ありがとうございました
Masaki Hara
?
いろいろな问题の解説
Masaki Hara
?
“A ::= aAa / a” in PEG
Masaki Hara
?
Spaceships 解説
Masaki Hara
?
Proving Decidability of Intuitionistic Propositional Calculus on Coq
Masaki Hara
?
搁别永続データ构造が分からない人のためのスライド
Masaki Hara
?
永続データ构造が分からない人のためのスライド
Masaki Hara
?
颁辞辩で蝉辫谤颈苍迟蹿
Masaki Hara
?
颁辞辩で蝉辫谤颈苍迟蹿
Masaki Hara
?
joi2012-sp-day2-broadcasting
Masaki Hara
?
Ad

书くネタが颁辞辩しかない