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

書くネタがCoqしかない

 書くネタがCoqしかない

upcamp 2012のLT大会にて

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 – 証明ジャッジ 練習用に使える • あとは面倒くさいのでここを見て