SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
⾃動定理証明の紹介

〜Proof Summit〜 2011-09-25
                 酒井 政裕
⾃⼰紹介

    酒井 政裕
• Blog: ヒビルテ
• Twitter: @masahiro_sakai

•   Haskeller
•   Agda: Agda1のころ遊んでた
•   Coq: 最近⼊⾨
•   最近、Alloyの本を翻訳
Alloy本
『抽象によるソフトウェア設計
 Alloyではじめる形式⼿法』


• オーム社より
  好評発売中!
このLTの趣旨

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

• ⾃動定理証明
 –Automated Theorem Proving
• モデル発⾒
• ⾊々な Decision procedure
• SAT/SMT
CoqやAgdaへのイチャモン

• ⾃分が考えた証明を形式化し、
  正しさを確認したり、
  リファクタリングしたりには便利

• だけど、何かを証明したいときに、
  本当に⽀援になるのか?
CoqやAgdaへのイチャモン

     そもそも
 機械に分からせるために、
 細部まで証明を書くなど

  機械の奴隷
      では?
対話的定理証明
        vs ⾃動定理証明
        対話的定理証明        ⾃動定理証明

ツール     Coq, Agda, …   E, SPASS,
                       Otter, …
⾃動化     ⼈間が証明を書        ツールが証明を
        き、それをツー        探索。⼈間はそ
        ルが検査。          れをガイド
古典論理?   直観主義論理         古典論理
⾼階/⼀階   ⾼階             ⼀階
多分この辺り




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_formulae(axioms).
list_of_descriptions. ヘッダ                formula(Human(sokrates)).
name({*Sokrates*}).                      formula(forall([x],implies(Human(x),M
author({*Christoph Weidenbach*}).            ortal(x)))).
status(unsatisfiable).                   end_of_list.
description({* Sokrates is mortal and
    since all humans are mortal, he is                  証明したいゴール
    mortal too. *}).                     list_of_formulae(conjectures).
end_of_list.                             formula(Mortal(sokrates)).
                                         end_of_list.
list_of_symbols.
  functions[(sokrates,0)].               end_problem.
  predicates[(Human,1),(Mortal,1)].
end_of_list.
        関数・述語とアリティの宣⾔
簡単な例: ソクラテスは死ぬ
         (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. 〜 として、
  単⼀の公理で公理化できる
例: ⾃然数の加算の結合性
             (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
  – http://www.cs.miami.edu/~tptp/
• ATP向けの諸々を提供
  – 問題セット
  – ⼊⼒ファイルフォーマット
  – 各種ユーティリティ
    • 証明を⾒やすく表⽰したり、他のツール⽤に変換したり
      といったツールもあった気がするが、忘れた
• SATLIB, SMTLIB, MIPLIB等のATP版
応⽤: プログラム検証Jahob
チャレンジ
       Seven Trees 問題
• 関数記号: +, ×, T
• 公理: 半環の公理 + {T = 1 + T2}
• ゴール: T = T7

• あなたの使っている定理証明系は、
  こういうのを解くのを⽀援してくれる?
⾃動定理証明器に
                 解かせてみた (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
     – 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

Weitere ähnliche Inhalte

Was ist angesagt?

プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
 

Was ist angesagt? (20)

明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム
 
Chokudai search
Chokudai searchChokudai search
Chokudai search
 
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろ
 
Rolling hash
Rolling hashRolling hash
Rolling hash
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
 
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題
 
双対性
双対性双対性
双対性
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 
証明プログラミング超入門
証明プログラミング超入門証明プログラミング超入門
証明プログラミング超入門
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 

Andere mochten auch

Andere mochten auch (9)

プログラマ目線で見た “The DAO事件” とは
プログラマ目線で見た “The DAO事件” とはプログラマ目線で見た “The DAO事件” とは
プログラマ目線で見た “The DAO事件” とは
 
RClassify: Classifying Race Conditions in Web Applications via Deterministic ...
RClassify: Classifying Race Conditions in Web Applications via Deterministic ...RClassify: Classifying Race Conditions in Web Applications via Deterministic ...
RClassify: Classifying Race Conditions in Web Applications via Deterministic ...
 
Run-time Code Generation and Modal-ML の紹介@PLDIr#2
Run-time Code Generation and Modal-ML の紹介@PLDIr#2Run-time Code Generation and Modal-ML の紹介@PLDIr#2
Run-time Code Generation and Modal-ML の紹介@PLDIr#2
 
自然言語をラムダ式で解釈する体系PTQのHaskell実装
自然言語をラムダ式で解釈する体系PTQのHaskell実装自然言語をラムダ式で解釈する体系PTQのHaskell実装
自然言語をラムダ式で解釈する体系PTQのHaskell実装
 
ゼロピッチ: MOOC
ゼロピッチ: MOOCゼロピッチ: MOOC
ゼロピッチ: MOOC
 
SAT/SMT solving in Haskell
SAT/SMT solving in HaskellSAT/SMT solving in Haskell
SAT/SMT solving in Haskell
 
Writing a SAT solver as a hobby project
Writing a SAT solver as a hobby projectWriting a SAT solver as a hobby project
Writing a SAT solver as a hobby project
 
ディープラーニングの産業応用とそれを支える技術
ディープラーニングの産業応用とそれを支える技術ディープラーニングの産業応用とそれを支える技術
ディープラーニングの産業応用とそれを支える技術
 
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
 

Ähnlich wie 自動定理証明の紹介

introductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisintroductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysis
Tatsuki SHIMIZU
 
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法
Shuhei Sowa
 

Ähnlich wie 自動定理証明の紹介 (20)

NLPforml5
NLPforml5NLPforml5
NLPforml5
 
JOIss2020 発表資料
JOIss2020 発表資料JOIss2020 発表資料
JOIss2020 発表資料
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
 
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
 
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
 
Introduction to Categorical Programming
Introduction to Categorical ProgrammingIntroduction to Categorical Programming
Introduction to Categorical Programming
 
第5章 拡張モデル(前半)
第5章 拡張モデル(前半)第5章 拡張モデル(前半)
第5章 拡張モデル(前半)
 
Proof summit2014mizar
Proof summit2014mizarProof summit2014mizar
Proof summit2014mizar
 
JSIAM_2019_9_4
JSIAM_2019_9_4JSIAM_2019_9_4
JSIAM_2019_9_4
 
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
 
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)
 
公開鍵暗号2: NP困難性
公開鍵暗号2: NP困難性公開鍵暗号2: NP困難性
公開鍵暗号2: NP困難性
 
topology of musical data
topology of musical datatopology of musical data
topology of musical data
 
第4回MachineLearningのための数学塾資料(浅川)
第4回MachineLearningのための数学塾資料(浅川)第4回MachineLearningのための数学塾資料(浅川)
第4回MachineLearningのための数学塾資料(浅川)
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
 
PRML 第14章
PRML 第14章PRML 第14章
PRML 第14章
 
introductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisintroductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysis
 
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法
 
何もないところから数を作る
何もないところから数を作る何もないところから数を作る
何もないところから数を作る
 

Mehr von Masahiro Sakai

融合変換による最適化の理論的基盤と正当性 (2006-06-27)
融合変換による最適化の理論的基盤と正当性 (2006-06-27)融合変換による最適化の理論的基盤と正当性 (2006-06-27)
融合変換による最適化の理論的基盤と正当性 (2006-06-27)
Masahiro Sakai
 
融合変換による最適化の理論的基盤と正当性 (2006-06-20)
融合変換による最適化の理論的基盤と正当性 (2006-06-20)融合変換による最適化の理論的基盤と正当性 (2006-06-20)
融合変換による最適化の理論的基盤と正当性 (2006-06-20)
Masahiro Sakai
 
LLW2004 その場でどう書く - Haskell
LLW2004 その場でどう書く - HaskellLLW2004 その場でどう書く - Haskell
LLW2004 その場でどう書く - Haskell
Masahiro Sakai
 
非正格関数に対して適用可能な融合変換
非正格関数に対して適用可能な融合変換非正格関数に対して適用可能な融合変換
非正格関数に対して適用可能な融合変換
Masahiro Sakai
 

Mehr von Masahiro Sakai (20)

DeepXplore: Automated Whitebox Testing of Deep Learning
DeepXplore: Automated Whitebox Testing of Deep LearningDeepXplore: Automated Whitebox Testing of Deep Learning
DeepXplore: Automated Whitebox Testing of Deep Learning
 
Towards formal verification of neural networks
Towards formal verification of neural networksTowards formal verification of neural networks
Towards formal verification of neural networks
 
関数プログラマから見たPythonと機械学習
関数プログラマから見たPythonと機械学習関数プログラマから見たPythonと機械学習
関数プログラマから見たPythonと機械学習
 
Introduction to Max-SAT and Max-SAT Evaluation
Introduction to Max-SAT and Max-SAT EvaluationIntroduction to Max-SAT and Max-SAT Evaluation
Introduction to Max-SAT and Max-SAT Evaluation
 
Aluminum: Principled Scenario Exploration through Minimality
Aluminum: Principled Scenario Exploration through MinimalityAluminum: Principled Scenario Exploration through Minimality
Aluminum: Principled Scenario Exploration through Minimality
 
代数的実数とCADの実装紹介
代数的実数とCADの実装紹介代数的実数とCADの実装紹介
代数的実数とCADの実装紹介
 
How a CDCL SAT solver works
How a CDCL SAT solver worksHow a CDCL SAT solver works
How a CDCL SAT solver works
 
Omega test and beyond
Omega test and beyondOmega test and beyond
Omega test and beyond
 
萩野服部研究室 スキー合宿 2012 自己紹介(酒井)
萩野服部研究室 スキー合宿 2012 自己紹介(酒井)萩野服部研究室 スキー合宿 2012 自己紹介(酒井)
萩野服部研究室 スキー合宿 2012 自己紹介(酒井)
 
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
 
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
“Design and Implementation of Generics for the .NET Common Language Runtime”他...“Design and Implementation of Generics for the .NET Common Language Runtime”他...
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
 
Relaxed Dependency Analysis
Relaxed Dependency AnalysisRelaxed Dependency Analysis
Relaxed Dependency Analysis
 
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
 
Whole Program Paths 等の紹介@PLDIr#3
Whole Program Paths 等の紹介@PLDIr#3Whole Program Paths 等の紹介@PLDIr#3
Whole Program Paths 等の紹介@PLDIr#3
 
融合変換による最適化の理論的基盤と正当性 (2006-06-27)
融合変換による最適化の理論的基盤と正当性 (2006-06-27)融合変換による最適化の理論的基盤と正当性 (2006-06-27)
融合変換による最適化の理論的基盤と正当性 (2006-06-27)
 
融合変換による最適化の理論的基盤と正当性 (2006-06-20)
融合変換による最適化の理論的基盤と正当性 (2006-06-20)融合変換による最適化の理論的基盤と正当性 (2006-06-20)
融合変換による最適化の理論的基盤と正当性 (2006-06-20)
 
Ruby-GNOME2におけるGC問題
Ruby-GNOME2におけるGC問題Ruby-GNOME2におけるGC問題
Ruby-GNOME2におけるGC問題
 
LLW2004 その場でどう書く - Haskell
LLW2004 その場でどう書く - HaskellLLW2004 その場でどう書く - Haskell
LLW2004 その場でどう書く - Haskell
 
非正格関数に対して適用可能な融合変換
非正格関数に対して適用可能な融合変換非正格関数に対して適用可能な融合変換
非正格関数に対して適用可能な融合変換
 
Haskell - LLRing2006 Language Update
Haskell  - LLRing2006 Language UpdateHaskell  - LLRing2006 Language Update
Haskell - LLRing2006 Language Update
 

Kürzlich hochgeladen

Kürzlich hochgeladen (6)

生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
 
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
 
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
 

自動定理証明の紹介

  • 2. ⾃⼰紹介 酒井 政裕 • Blog: ヒビルテ • Twitter: @masahiro_sakai • Haskeller • Agda: Agda1のころ遊んでた • Coq: 最近⼊⾨ • 最近、Alloyの本を翻訳
  • 5. 話したかったこと • ⾃動定理証明 –Automated Theorem Proving • モデル発⾒ • ⾊々な Decision procedure • SAT/SMT
  • 6. CoqやAgdaへのイチャモン • ⾃分が考えた証明を形式化し、 正しさを確認したり、 リファクタリングしたりには便利 • だけど、何かを証明したいときに、 本当に⽀援になるのか?
  • 7. CoqやAgdaへのイチャモン そもそも 機械に分からせるために、 細部まで証明を書くなど 機械の奴隷 では?
  • 8. 対話的定理証明 vs ⾃動定理証明 対話的定理証明 ⾃動定理証明 ツール Coq, Agda, … E, SPASS, Otter, … ⾃動化 ⼈間が証明を書 ツールが証明を き、それをツー 探索。⼈間はそ ルが検査。 れをガイド 古典論理? 直観主義論理 古典論理 ⾼階/⼀階 ⾼階 ⼀階
  • 11. ⾃動定理証明器 • Otter – ⾃動定理証明器が有名になるきっかけになった 証明器 • SPASS – 様相論理などもサポート • E – The E Equational Theorem Prover (eprover) • 他にも沢⼭ – Prover9, Vampire, Waldmeister, …
  • 12. 簡単な例: ソクラテスは死ぬ (SPASS) begin_problem(Sokrates1). 公理 list_of_formulae(axioms). list_of_descriptions. ヘッダ formula(Human(sokrates)). name({*Sokrates*}). formula(forall([x],implies(Human(x),M author({*Christoph Weidenbach*}). ortal(x)))). status(unsatisfiable). end_of_list. description({* Sokrates is mortal and since all humans are mortal, he is 証明したいゴール mortal too. *}). list_of_formulae(conjectures). end_of_list. formula(Mortal(sokrates)). end_of_list. list_of_symbols. functions[(sokrates,0)]. end_problem. predicates[(Human,1),(Mortal,1)]. end_of_list. 関数・述語とアリティの宣⾔
  • 13. 簡単な例: ソクラテスは死ぬ (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
  • 14. 簡単な例: ソクラテスは死ぬ (SPASS) Human(U) || -> Mortal(U)*. || Mortal(sokrates)* -> 公理2 ゴールの否定 Res Human(sokrates) || -> || -> Human(sokrates)* 公理1 MRR || -> ⽭盾
  • 15. 表現⼒の弱さ • 有限個の公理のみ & ⼀階 • たとえば、数学的帰納法は公理化不能: P(n) ∧ (∀n. P(n)→P(s(n))) → ∀n. P(n) • 各述語Pに対して公理がひとつ必要 • ⾼階なら ∀P : N→Prop. 〜 として、 単⼀の公理で公理化できる
  • 16. 例: ⾃然数の加算の結合性 (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
  • 17. TPTP • Thousands of Problems for Theorem Provers – http://www.cs.miami.edu/~tptp/ • ATP向けの諸々を提供 – 問題セット – ⼊⼒ファイルフォーマット – 各種ユーティリティ • 証明を⾒やすく表⽰したり、他のツール⽤に変換したり といったツールもあった気がするが、忘れた • SATLIB, SMTLIB, MIPLIB等のATP版
  • 19. チャレンジ Seven Trees 問題 • 関数記号: +, ×, T • 公理: 半環の公理 + {T = 1 + T2} • ゴール: T = T7 • あなたの使っている定理証明系は、 こういうのを解くのを⽀援してくれる?
  • 20. ⾃動定理証明器に 解かせてみた (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)))))) ).
  • 21. ⾃動定理証明器に 解かせてみた (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 ).
  • 22. チャレンジ: Otterが有名になった例 • Two inverter problem – 3⼊⼒3出⼒の組み合わせ回路で、各出⼒が対応す る⼊⼒の否定になっているものを作れ – ただし、andとorは何個使ってもよいが、notは2 個しか使えない • OtterはPrologのメタ述語のような機能を 持っていて、それを利⽤して解いた – (今の⼀般的な定理証明系では使えない) • あなたの使っている定理証明系は、 こういうのを解くのを⽀援してくれる?
  • 23. CASC • The CADE ATP System Competition – 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