自動定理証明の紹介 ~Proof Summit~ 2011-09-25 酒井 政裕.

Slides:



Advertisements
Similar presentations
論理回路 第3回 今日の内容 前回の課題の解説 論理関数の基礎 – 論理関数とは? – 真理値表と論理式 – 基本的な論理関数.
Advertisements

一階述語論理 (first-order predicate logic) 一階述語論理入門 構文論(論理式の文 法) 意味論(論理式の解 釈) 認知システム論 知識と推論(4) 知識と論理でを組み合わせて問題を解決する.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
モデル検査の応用 徳田研究室 西村太一.
第3回 論理式と論理代数 本講義のホームページ:
Coq を使った証明 : まとめ 稲葉.
「Postの対応問題」 の決定不能性の証明
ソフトウェア基礎科学 授業資料: 論理関係(logical relations)のお話
チューリングマシン 2011/6/6.
プログラム理論特論 第2回 亀山幸義
プログラミングパラダイム さまざまな計算のモデルにもとづく、 プログラミングの方法論 手続き型 関数型 オブジェクト指向 代数 幾何.
第2回 真理値表,基本ゲート, 組合せ回路の設計
Verilog HDL 12月21日(月).
データ構造と アルゴリズム 理工学部 情報システム工学科 新田直也.
5.チューリングマシンと計算.
5.チューリングマシンと計算.
充足不能性と導出原理 充足不能性の証明 スコーレム標準形 エルブラン解釈 導出原理 基礎節に対する導出 導出原理の完全性と健全性.
論理式の表現を数学的に取り扱いやすくするために代数学の助けを借りる.
人工知能特論2011 資料No.6 東京工科大学大学院 担当教員 亀田弘之.
データ構造と アルゴリズム 第二回 知能情報学部 新田直也.
数理論理学 第1回 茨城大学工学部情報工学科 佐々木 稔.
データ構造と アルゴリズム 知能情報学部 新田直也.
第4回 カルノー図による組合せ回路の簡単化 瀬戸 目標 ・AND-OR二段回路の実現コスト(面積、遅延)が出せる
Nagoya University Global 30 program
表現系工学特論 項書換え系(4) 完備化 1.語問題と等式証明 2.合流性とチャーチ・ロッサ性 3.完備化手続き.
計算量理論輪講 岩間研究室 照山順一.
自動定理証明と応用 (automated theorem proving and its application)
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
人工知能特論2007 東京工科大学 亀田弘之.
寄せられた質問: 演習問題について この講義の範囲に含まれる適切な演習問題が載っている参考書がありますか? できれば解答や解説が付いているものがあると良いのですが… 第3回の授業の中で、演習問題に取り組む方法を説明します.
アルゴリズムとチューリングマシン 「もの」(商品)としてのコンピュータ 「こと」(思想)としてのコンピュータ アルゴリズム
不完全な知識 不完全な知識に基づく問題解決 フレーム問題 制約条件記述問題 非単調推論 極小限定 常識の定式化 並列極小限定.
ディジタル回路 3. 組み合わせ回路 五島 正裕 2018/11/28.
2. 論理ゲート と ブール代数 五島 正裕.
人工知能特論2009 東京工科大学 亀田弘之 KE304.
ディジタル回路 2. ブール代数 と 論理ゲート 五島 正裕.
プログラミング言語入門.
Prolog入門 ーIT中級者用ー.
逐次プログラムの正当性(2) 帰納的アサーション法(フロイド法)
情報システムの基礎概念 (1) 情報システムとは
Extractor D3 川原 純.
電気電子情報第一(前期)実験 G5. ディジタル回路
3. 論理ゲート の 実現 五島 正裕.
論理と推論 命題論理 推論 命題論理体系の健全性と完全性 構文と意味 → 同値関係と標準形(節形式) 決定問題と意味木 推論規則
書き換え型プログラムの生成・検証 研究課題:適切な実行戦略を効率よく探索する、 より自動化された手続きの実現 書き換え型プログラム
計算機科学概論(応用編) 数理論理学を用いた自動証明
知能情報システム特論 Introduction
情報工学通論 プログラミング言語について 2010年 6月 22日 情報工学科 篠埜 功.
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
形式言語とオートマトン 中間試験解答例 2016年11月15実施 中島毅.
  第3章 論理回路  コンピュータでは,データを2進数の0と1で表現している.この2つの値,すなわち,2値で扱われるデータを論理データという.論理データの計算・判断・記憶は論理回路により実現される.  コンピュータのハードウェアは,基本的に論理回路で作られている。              論理積回路.
B03 量子論理回路の 最適化に関する研究 西野哲朗,垂井淳,太田和夫,國廣昇 電気通信大学 情報通信工学科.
4 形式的設計検証技術 検証 verification 形式的検証 (4.1.2)
ラダーで遊ぶ (実技編) ラダーで遊ぶ (実技編) 2009年7月11日 dolan 2009年7月11日 dolan.
ラダーで遊ぶ (実技編) ラダーで遊ぶ (実技編) 2009年7月11日 dolan 2009年7月11日 dolan.
5.チューリングマシンと計算.
第7回  命題論理.
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
香川大学工学部 富永浩之 知識工学1 第1-1章 人工知能と知識工学 香川大学工学部 富永浩之
数理論理学 第9回 茨城大学工学部情報工学科 佐々木 稔.
執筆者:難波和明 授業者:寺尾 敦 atsushi [at] si.aoyama.ac.jp
述語論理式の構文と意味 一階述語論理式の構文 一階述語論理式の意味 述語,限量記号 自然言語文の述語論理式表現 解釈 妥当,充足不能
試行錯誤を重視した数学教育    群馬県立 吉井高等学校           大 塚 道 明.
第6回放送授業.
情報処理Ⅱ 2007年12月3日(月) その1.
知識ベースの試作計画 ●●●研究所 ●●●技術部 稲本□□ 1997年1月.
情報数理Ⅱ 第10章 オートマトン 平成28年12月21日.
1.2 言語処理の諸観点 (1)言語処理の利用分野
数理論理学 最終回 茨城大学工学部情報工学科 佐々木 稔.
Presentation transcript:

自動定理証明の紹介 ~Proof Summit~ 2011-09-25 酒井 政裕

酒井 政裕 自己紹介 Blog: ヒビルテ Twitter: @masahiro_sakai Haskeller Agda: Agda1のころ遊んでた Coq: 最近入門 最近、Alloyの本を翻訳

Alloy本 『抽象によるソフトウェア設計 Alloyではじめる形式手法』 オーム社より 好評発売中!

CoqとかAgda の話ばかりで ツマラン ので、息抜きにちょっとは違う話を このLTの趣旨 CoqとかAgda の話ばかりで ツマラン ので、息抜きにちょっとは違う話を

話したかったこと 自動定理証明 モデル発見 色々な Decision procedure SAT/SMT Automated Theorem Proving モデル発見 色々な Decision procedure SAT/SMT

CoqやAgdaへのイチャモン 自分が考えた証明を形式化し、 正しさを確認したり、 リファクタリングしたりには便利 だけど、何かを証明したいときに、 本当に支援になるのか?

そもそも 機械に分からせるために、 細部まで証明を書くなど 機械の奴隷 では? CoqやAgdaへのイチャモン そもそも 機械に分からせるために、 細部まで証明を書くなど 機械の奴隷 では?

対話的定理証明 vs 自動定理証明 対話的定理証明 自動定理証明 ツール Coq, Agda, … E, SPASS, Otter, … 自動化 人間が証明を書き、それをツールが検査。 ツールが証明を探索。人間はそれをガイド 古典論理? 直観主義論理 古典論理 高階/一階 高階 一階 Isabelleはどうしたと言われるかも知れないけど、それは適当にツッコミよろしく。

多分この辺り Comparing mathematical provers (by Freek Wiedijk, 2003) より

数学的な表現力は弱い が、その分自動化されている!

自動定理証明器 Otter SPASS E 他にも沢山 自動定理証明器が有名になるきっかけになった 証明器 様相論理などもサポート The E Equational Theorem Prover (eprover) 他にも沢山 Prover9, Vampire, Waldmeister, …

簡単な例: ソクラテスは死ぬ(SPASS) 公理 begin_problem(Sokrates1). list_of_descriptions. name({*Sokrates*}). author({*Christoph Weidenbach*}). status(unsatisfiable). description({* Sokrates is mortal and since all humans are mortal, he is mortal too. *}). end_of_list. list_of_symbols. functions[(sokrates,0)]. predicates[(Human,1),(Mortal,1)]. list_of_formulae(axioms). formula(Human(sokrates)). formula(forall([x],implies(Human(x),Mortal(x)))). end_of_list. list_of_formulae(conjectures). formula(Mortal(sokrates)). end_problem. ヘッダ 証明したいゴール 関数・述語とアリティの宣言

簡単な例: ソクラテスは死ぬ(SPASS) % SPASS -DocProof Socrate.dfg (中略) Here is a proof with depth 1, length 5 : 1[0:Inp] || -> Human(sokrates)*. 2[0:Inp] || Mortal(sokrates)* -> . 3[0:Inp] Human(U) || -> Mortal(U)*. 4[0:Res:3.1,2.0] Human(sokrates) || -> . 5[0:MRR:4.0,1.0] || -> . Formulae used in the proof : axiom0 conjecture0 axiom1

簡単な例: ソクラテスは死ぬ(SPASS) Human(U) || -> Mortal(U)*. || Mortal(sokrates)* -> ゴールの否定 公理2 Res Human(sokrates) || -> || -> Human(sokrates)* 公理1 MRR || -> 矛盾

P(n) ∧ (∀n. P(n)→P(s(n))) → ∀n. P(n) 表現力の弱さ 有限個の公理のみ & 一階 たとえば、数学的帰納法は公理化不能: 各述語Pに対して公理がひとつ必要 高階なら ∀P : N→Prop. ~ として、 単一の公理で公理化できる P(n) ∧ (∀n. P(n)→P(s(n))) → ∀n. P(n)

例: 自然数の加算の結合性 (E / TPTP) fof( plus_z, axiom, ![X] : plus(X,z)=X ). fof( plus_s, axiom, ![X,Y] : plus(X,s(Y))=s(plus(X,Y)) ). fof( plusAssocP_def, axiom, ![X,Y,Z] : ( plusAssocP(X,Y,Z) <=> (plus(plus(X,Y),Z)=plus(X,plus(Y,Z))) ) ). fof( plusAssocP_ind, axiom, ![X,Y] : ( (plusAssocP(X,Y,z) & (![Z] : plusAssocP(X,Y,Z) => plusAssocP(X,Y,s(Z)))) => ![Z] : plusAssocP(X,Y,Z) fof( plus_assoc, conjecture, ![X,Y,Z] : plus(plus(X,Y),Z) = plus(X,plus(Y,Z)) ). ! は ∀ 帰納法の インスタンスを 明示的に公理に eprover -l 2 --tptp3-format nat1.tptp

TPTP Thousands of Problems for Theorem Provers ATP向けの諸々を提供 http://www.cs.miami.edu/~tptp/ ATP向けの諸々を提供 問題セット 入力ファイルフォーマット 各種ユーティリティ 証明を見やすく表示したり、他のツール用に変換したりといったツールもあった気がするが、忘れた SATLIB, SMTLIB, MIPLIB等のATP版

応用: プログラム検証Jahob

チャレンジ Seven Trees 問題 関数記号: +, ×, T 公理: 半環の公理 + {T = 1 + T2} あなたの使っている定理証明系は、 こういうのを解くのを支援してくれる?

自動定理証明器に 解かせてみた (1) fof( coprod_comm, axiom, ![X,Y] : coprod(X,Y) = coprod(Y,X) ). fof( coprod_assoc, axiom, ![X,Y,Z] : coprod(X,coprod(Y,Z)) = coprod(coprod(X,Y),Z) ). fof( prod_comm, axiom, ![X,Y] : prod(X,Y) = prod(Y,X) ). fof( prod_assoc, axiom, ![X,Y,Z] : prod(X,prod(Y,Z)) = prod(prod(X,Y),Z) ). fof( dist, axiom, ![X,Y,Z] : prod(X,coprod(Y,Z)) = coprod(prod(X,Y),prod(X,Z)) ). fof( prod_unit, axiom, ![X] : prod(one, X) = X ). fof( t, axiom, t = coprod(one, prod(t, t)) ). fof( seven_trees, conjecture, t = prod(t,prod(t,prod(t,prod(t,prod(t,prod(t,t)))))) ). 爆発

自動定理証明器に 解かせてみた (2) fof( comm, axiom, ![X,Y] : coprod(X,Y) = coprod(Y,X) ). fof( assoc, axiom, ![X,Y,Z] : coprod(X,coprod(Y,Z)) = coprod(coprod(X,Y),Z) ). fof( t1, axiom, t1 = coprod(t0, t2) ). fof( t2, axiom, t2 = coprod(t1, t3) ). fof( t3, axiom, t3 = coprod(t2, t4) ). fof( t4, axiom, t4 = coprod(t3, t5) ). fof( t5, axiom, t5 = coprod(t4, t6) ). fof( t6, axiom, t6 = coprod(t5, t7) ). fof( t7, axiom, t7 = coprod(t6, t8) ). fof( t8, axiom, t8 = coprod(t7, t9) ). fof( seven_trees, conjecture, t1 = t7 ). 解けた

チャレンジ: Otterが有名になった例 Two inverter problem 3入力3出力の組み合わせ回路で、各出力が対応する入力の否定になっているものを作れ ただし、andとorは何個使ってもよいが、notは2個しか使えない OtterはPrologのメタ述語のような機能を持っていて、それを利用して解いた (今の一般的な定理証明系では使えない) あなたの使っている定理証明系は、 こういうのを解くのを支援してくれる?

CASC The CADE ATP System Competition CASC‑23 (2011) の勝者: http://www.cs.miami.edu/~tptp/CASC/ CADE(the Conference on Automated Deduction)で毎年やってるコンペ CASC‑23 (2011) の勝者: THF: Satallax 2.1 CNF: E 1.4pre TFA: SPASS+T 2.2.14 EPR: iProver 0.9 FOF: Vampire 0.6 UEQ: Waldmeister 710 FNT: Paradox 3.0 LTB: Vampire‑LTB 1.8