Upgrade to Pro — share decks privately, control downloads, hide ads and more …

書くネタがCoqしかない

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 書くネタがCoqしかない

upcamp 2012のLT大会にて

Avatar for Masaki Hara

Masaki Hara

August 11, 2012
Tweet

More Decks by Masaki Hara

Other Decks in Programming

Transcript

  1. Coqとは何か • 純粋関数型プログラミング言語&定理証明 言語 • 静的型付け • OCamlの影響を受ける • OCamlで実装されている

    • OCamlの製造元 INRIA が開発している • 名前は計算機科学者 Thierry Coqandに由来 すると思われる
  2. Coqの根底にある理論 • Curry-Howard対応の例 • 含意(AならばB): 関数 A -> B (Haskell)

    • 連言(AかつB): ペア pair<A, B> (C++) • 選言(AまたはB): Either A B (Haskell) • 矛盾(⊥): 到達不能型 Nothing (Scala) • 否定(Aでない): A -> ⊥
  3. Coqの根底にある理論 • では、こういうコードは? • Definition A : False := A.

    • Aが定義できたら、矛盾が導けてしまう。 • ↑ 無限ループの禁止
  4. Coqの根底にある理論 • 停止性を保証する型システム • Simply Typed Lambda Calculus • ↓

    +polymorphism (型に依存した値) • ↓ +type operators (型に依存した型) • ↓ +dependent types (値に依存した型) • Calculus of Constructions
  5. Coqの根底にある理論 • Calculus of Constructions (CoC) • ↓ + 再帰等

    • Calculus of Inductive Constructions (CIC) • このCICをCoqでは用いている • CICと集合論のZFCは互換 ( CIC(i)→ZFC(i-2), ZFC(i)→CIC(i+1) )
  6. Coqで何ができるの? • 数学サイド • 有名なのは – ゲーデルの不完全性定理の証明 (公理系が多層化するので、形式的な言語で書い たほうが議論しやすいと思われる) –

    四色問題の証明 (四色問題は数学的証明部とコンピューターによ る探索部に別れる。Coqではこれを有機的に結合 できるため、証明の信頼性が高まる)
  7. Coqの資料 • http://coq.inria.fr/ – Coq公式サイト • プログラミング Coq – 女子大生によるCoqプログラミング入門

    • anarchy proof – 証明ジャッジ 練習用に使える • あとは面倒くさいのでここを見て