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?

SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みMasahiro Sakai
 
図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』Proktmr
 
パターン認識と機械学習入門
パターン認識と機械学習入門パターン認識と機械学習入門
パターン認識と機械学習入門Momoko Hayamizu
 
ホモトピー型理論入門
ホモトピー型理論入門ホモトピー型理論入門
ホモトピー型理論入門k h
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解くshindannin
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~Takuya Akiba
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造Takuya Akiba
 
Rolling Hashを殺す話
Rolling Hashを殺す話Rolling Hashを殺す話
Rolling Hashを殺す話Nagisa Eto
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界Preferred Networks
 
遺伝的アルゴリズム (Genetic Algorithm)を始めよう!
遺伝的アルゴリズム(Genetic Algorithm)を始めよう!遺伝的アルゴリズム(Genetic Algorithm)を始めよう!
遺伝的アルゴリズム (Genetic Algorithm)を始めよう!Kazuhide Okamura
 
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)Shota Imai
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方joisino
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろHiroshi Yamashita
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」Ken'ichi Matsui
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとはTakuya Akiba
 
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)AtCoder Inc.
 
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)Deep Learning JP
 

Was ist angesagt? (20)

SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』
 
パターン認識と機械学習入門
パターン認識と機械学習入門パターン認識と機械学習入門
パターン認識と機械学習入門
 
ホモトピー型理論入門
ホモトピー型理論入門ホモトピー型理論入門
ホモトピー型理論入門
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
 
Rolling Hashを殺す話
Rolling Hashを殺す話Rolling Hashを殺す話
Rolling Hashを殺す話
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
遺伝的アルゴリズム (Genetic Algorithm)を始めよう!
遺伝的アルゴリズム(Genetic Algorithm)を始めよう!遺伝的アルゴリズム(Genetic Algorithm)を始めよう!
遺伝的アルゴリズム (Genetic Algorithm)を始めよう!
 
直交領域探索
直交領域探索直交領域探索
直交領域探索
 
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろ
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)
 
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
 

Andere mochten auch

プログラマ目線で見た “The DAO事件” とは
プログラマ目線で見た “The DAO事件” とはプログラマ目線で見た “The DAO事件” とは
プログラマ目線で見た “The DAO事件” とはYuto Takei
 
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 ...Masahiro Sakai
 
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#2Masahiro Sakai
 
自然言語をラムダ式で解釈する体系PTQのHaskell実装
自然言語をラムダ式で解釈する体系PTQのHaskell実装自然言語をラムダ式で解釈する体系PTQのHaskell実装
自然言語をラムダ式で解釈する体系PTQのHaskell実装Masahiro Sakai
 
SAT/SMT solving in Haskell
SAT/SMT solving in HaskellSAT/SMT solving in Haskell
SAT/SMT solving in HaskellMasahiro Sakai
 
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 projectMasahiro Sakai
 
ディープラーニングの産業応用とそれを支える技術
ディープラーニングの産業応用とそれを支える技術ディープラーニングの産業応用とそれを支える技術
ディープラーニングの産業応用とそれを支える技術Shohei Hido
 
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFAShohei Hido
 

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 自動定理証明の紹介

JOIss2020 発表資料
JOIss2020 発表資料JOIss2020 発表資料
JOIss2020 発表資料mdkcpp 1015
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門Kimikazu Kato
 
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナドYoshihiro Mizoguchi
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ京大 マイコンクラブ
 
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールNobuhisa Koizumi
 
Introduction to Categorical Programming
Introduction to Categorical ProgrammingIntroduction to Categorical Programming
Introduction to Categorical ProgrammingMasahiro Sakai
 
第5章 拡張モデル(前半)
第5章 拡張モデル(前半)第5章 拡張モデル(前半)
第5章 拡張モデル(前半)Akito Nakano
 
Proof summit2014mizar
Proof summit2014mizarProof summit2014mizar
Proof summit2014mizarAlcor80UMa
 
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜Takeshi Arabiki
 
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Masahiro Sakai
 
公開鍵暗号2: NP困難性
公開鍵暗号2: NP困難性公開鍵暗号2: NP困難性
公開鍵暗号2: NP困難性Joe Suzuki
 
topology of musical data
topology of musical datatopology of musical data
topology of musical dataTatsuki SHIMIZU
 
第4回MachineLearningのための数学塾資料(浅川)
第4回MachineLearningのための数学塾資料(浅川)第4回MachineLearningのための数学塾資料(浅川)
第4回MachineLearningのための数学塾資料(浅川)Shin Asakawa
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜Hiromi Ishii
 
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 analysisTatsuki SHIMIZU
 
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法Shuhei Sowa
 
何もないところから数を作る
何もないところから数を作る何もないところから数を作る
何もないところから数を作るTaketo Sano
 

Ä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

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 LearningMasahiro Sakai
 
Towards formal verification of neural networks
Towards formal verification of neural networksTowards formal verification of neural networks
Towards formal verification of neural networksMasahiro Sakai
 
関数プログラマから見たPythonと機械学習
関数プログラマから見たPythonと機械学習関数プログラマから見たPythonと機械学習
関数プログラマから見たPythonと機械学習Masahiro Sakai
 
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 EvaluationMasahiro Sakai
 
Aluminum: Principled Scenario Exploration through Minimality
Aluminum: Principled Scenario Exploration through MinimalityAluminum: Principled Scenario Exploration through Minimality
Aluminum: Principled Scenario Exploration through MinimalityMasahiro Sakai
 
代数的実数とCADの実装紹介
代数的実数とCADの実装紹介代数的実数とCADの実装紹介
代数的実数とCADの実装紹介Masahiro Sakai
 
How a CDCL SAT solver works
How a CDCL SAT solver worksHow a CDCL SAT solver works
How a CDCL SAT solver worksMasahiro Sakai
 
萩野服部研究室 スキー合宿 2012 自己紹介(酒井)
萩野服部研究室 スキー合宿 2012 自己紹介(酒井)萩野服部研究室 スキー合宿 2012 自己紹介(酒井)
萩野服部研究室 スキー合宿 2012 自己紹介(酒井)Masahiro Sakai
 
“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...Masahiro Sakai
 
“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”他...Masahiro Sakai
 
Relaxed Dependency Analysis
Relaxed Dependency AnalysisRelaxed Dependency Analysis
Relaxed Dependency AnalysisMasahiro Sakai
 
“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...Masahiro Sakai
 
Whole Program Paths 等の紹介@PLDIr#3
Whole Program Paths 等の紹介@PLDIr#3Whole Program Paths 等の紹介@PLDIr#3
Whole Program Paths 等の紹介@PLDIr#3Masahiro 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
 
Ruby-GNOME2におけるGC問題
Ruby-GNOME2におけるGC問題Ruby-GNOME2におけるGC問題
Ruby-GNOME2におけるGC問題Masahiro Sakai
 
LLW2004 その場でどう書く - Haskell
LLW2004 その場でどう書く - HaskellLLW2004 その場でどう書く - Haskell
LLW2004 その場でどう書く - HaskellMasahiro Sakai
 
非正格関数に対して適用可能な融合変換
非正格関数に対して適用可能な融合変換非正格関数に対して適用可能な融合変換
非正格関数に対して適用可能な融合変換Masahiro Sakai
 
Haskell - LLRing2006 Language Update
Haskell  - LLRing2006 Language UpdateHaskell  - LLRing2006 Language Update
Haskell - LLRing2006 Language UpdateMasahiro 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

ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2Tokyo Institute of Technology
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料Takayuki Itoh
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024koheioishi1
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ssusere0a682
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptyuitoakatsukijp
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationYukiTerazawa
 

Kürzlich hochgeladen (7)

ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 

自動定理証明の紹介

  • 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