doc-src/Sledgehammer/sledgehammer.tex
changeset 44098 45078c8f5c1e
parent 44091 d40e5c72b346
child 44401 c47f118fe008
equal deleted inserted replaced
44097:3cae91385086 44098:45078c8f5c1e
   138 Sledgehammer is part of Isabelle, so you don't need to install it. However, it
   138 Sledgehammer is part of Isabelle, so you don't need to install it. However, it
   139 relies on third-party automatic theorem provers (ATPs) and SMT solvers.
   139 relies on third-party automatic theorem provers (ATPs) and SMT solvers.
   140 
   140 
   141 \subsection{Installing ATPs}
   141 \subsection{Installing ATPs}
   142 
   142 
   143 Currently, E, SPASS, and Vampire can be run locally; in addition, E, E-SInE,
   143 Currently, E, LEO-II, Satallax, SPASS, and Vampire can be run locally; in
   144 E-ToFoF, LEO-II, Satallax, SNARK, Waldmeister, and Vampire are available
   144 addition, E, E-SInE, E-ToFoF, LEO-II, Satallax, SNARK, Waldmeister, and Vampire
   145 remotely via System\-On\-TPTP \cite{sutcliffe-2000}. If you want better
   145 are available remotely via System\-On\-TPTP \cite{sutcliffe-2000}. If you want
   146 performance, you should at least install E and SPASS locally.
   146 better performance, you should at least install E and SPASS locally.
   147 
   147 
   148 There are three main ways to install ATPs on your machine:
   148 There are three main ways to install ATPs on your machine:
   149 
   149 
   150 \begin{enum}
   150 \begin{enum}
   151 \item[$\bullet$] If you installed an official Isabelle package with everything
   151 \item[$\bullet$] If you installed an official Isabelle package with everything
   522 performed implicitly if it can be done in a reasonable amount of time (something
   522 performed implicitly if it can be done in a reasonable amount of time (something
   523 that can be guessed from the number of facts in the original proof and the time
   523 that can be guessed from the number of facts in the original proof and the time
   524 it took to find it or replay it).
   524 it took to find it or replay it).
   525 
   525 
   526 In addition, some provers (notably CVC3, Satallax, and Yices) do not provide
   526 In addition, some provers (notably CVC3, Satallax, and Yices) do not provide
   527 proofs or sometimes provide incomplete proofs. The minimizer is then invoked to
   527 proofs or sometimes produce incomplete proofs. The minimizer is then invoked to
   528 find out which facts are actually needed from the (large) set of facts that was
   528 find out which facts are actually needed from the (large) set of facts that was
   529 initinally given to the prover. Finally, if a prover returns a proof with lots
   529 initinally given to the prover. Finally, if a prover returns a proof with lots
   530 of facts, the minimizer is invoked automatically since Metis would be unlikely
   530 of facts, the minimizer is invoked automatically since Metis would be unlikely
   531 to re-find the proof.
   531 to re-find the proof.
   532 
   532 
   720 developed by Stephan Schulz \cite{schulz-2002}. To use E, set the environment
   720 developed by Stephan Schulz \cite{schulz-2002}. To use E, set the environment
   721 variable \texttt{E\_HOME} to the directory that contains the \texttt{eproof}
   721 variable \texttt{E\_HOME} to the directory that contains the \texttt{eproof}
   722 executable, or install the prebuilt E package from Isabelle's download page. See
   722 executable, or install the prebuilt E package from Isabelle's download page. See
   723 \S\ref{installation} for details.
   723 \S\ref{installation} for details.
   724 
   724 
       
   725 \item[$\bullet$] \textbf{\textit{leo2}:} LEO-II is an automatic
       
   726 higher-order prover developed by Christoph Benzm\"uller et al.\ \cite{leo2},
       
   727 with support for the TPTP higher-order syntax (THF).
       
   728 
       
   729 \item[$\bullet$] \textbf{\textit{metis}:} Although it is much less powerful than
       
   730 the external provers, Metis itself can be used for proof search.
       
   731 
       
   732 \item[$\bullet$] \textbf{\textit{metis\_full\_types}:} Fully typed version of
       
   733 Metis, corresponding to \textit{metis} (\textit{full\_types}).
       
   734 
       
   735 \item[$\bullet$] \textbf{\textit{metis\_no\_types}:} Untyped version of Metis,
       
   736 corresponding to \textit{metis} (\textit{no\_types}).
       
   737 
       
   738 \item[$\bullet$] \textbf{\textit{satallax}:} Satallax is an automatic
       
   739 higher-order prover developed by Chad Brown et al.\ \cite{satallax}, with
       
   740 support for the TPTP higher-order syntax (THF).
       
   741 
   725 \item[$\bullet$] \textbf{\textit{spass}:} SPASS is a first-order resolution
   742 \item[$\bullet$] \textbf{\textit{spass}:} SPASS is a first-order resolution
   726 prover developed by Christoph Weidenbach et al.\ \cite{weidenbach-et-al-2009}.
   743 prover developed by Christoph Weidenbach et al.\ \cite{weidenbach-et-al-2009}.
   727 To use SPASS, set the environment variable \texttt{SPASS\_HOME} to the directory
   744 To use SPASS, set the environment variable \texttt{SPASS\_HOME} to the directory
   728 that contains the \texttt{SPASS} executable, or install the prebuilt SPASS
   745 that contains the \texttt{SPASS} executable, or install the prebuilt SPASS
   729 package from Isabelle's download page. Sledgehammer requires version 3.5 or
   746 package from Isabelle's download page. Sledgehammer requires version 3.5 or
   730 above. See \S\ref{installation} for details.
   747 above. See \S\ref{installation} for details.
   731 
   748 
   732 \item[$\bullet$] \textbf{\textit{yices}:} Yices is an SMT solver developed at
       
   733 SRI \cite{yices}. To use Yices, set the environment variable
       
   734 \texttt{YICES\_SOLVER} to the complete path of the executable, including the
       
   735 file name. Sledgehammer has been tested with version 1.0.
       
   736 
       
   737 \item[$\bullet$] \textbf{\textit{vampire}:} Vampire is a first-order resolution
   749 \item[$\bullet$] \textbf{\textit{vampire}:} Vampire is a first-order resolution
   738 prover developed by Andrei Voronkov and his colleagues
   750 prover developed by Andrei Voronkov and his colleagues
   739 \cite{riazanov-voronkov-2002}. To use Vampire, set the environment variable
   751 \cite{riazanov-voronkov-2002}. To use Vampire, set the environment variable
   740 \texttt{VAMPIRE\_HOME} to the directory that contains the \texttt{vampire}
   752 \texttt{VAMPIRE\_HOME} to the directory that contains the \texttt{vampire}
   741 executable. Sledgehammer has been tested with versions 11, 0.6, and 1.0.
   753 executable. Sledgehammer has been tested with versions 11, 0.6, and 1.0.
   742 
   754 
       
   755 \item[$\bullet$] \textbf{\textit{yices}:} Yices is an SMT solver developed at
       
   756 SRI \cite{yices}. To use Yices, set the environment variable
       
   757 \texttt{YICES\_SOLVER} to the complete path of the executable, including the
       
   758 file name. Sledgehammer has been tested with version 1.0.
       
   759 
   743 \item[$\bullet$] \textbf{\textit{z3}:} Z3 is an SMT solver developed at
   760 \item[$\bullet$] \textbf{\textit{z3}:} Z3 is an SMT solver developed at
   744 Microsoft Research \cite{z3}. To use Z3, set the environment variable
   761 Microsoft Research \cite{z3}. To use Z3, set the environment variable
   745 \texttt{Z3\_SOLVER} to the complete path of the executable, including the file
   762 \texttt{Z3\_SOLVER} to the complete path of the executable, including the file
   746 name, and set \texttt{Z3\_NON\_COMMERCIAL=yes} to confirm that you are a
   763 name, and set \texttt{Z3\_NON\_COMMERCIAL=yes} to confirm that you are a
   747 noncommercial user. Sledgehammer has been tested with versions 2.7 to 2.18.
   764 noncommercial user. Sledgehammer has been tested with versions 2.7 to 2.18.
   748 
   765 
   749 \item[$\bullet$] \textbf{\textit{z3\_atp}:} This version of Z3 pretends to be an
   766 \item[$\bullet$] \textbf{\textit{z3\_atp}:} This version of Z3 pretends to be an
   750 ATP, exploiting Z3's undocumented support for the TPTP format. It is included
   767 ATP, exploiting Z3's undocumented support for the TPTP format. It is included
   751 for experimental purposes. It requires version 2.18 or above.
   768 for experimental purposes. It requires version 2.18 or above.
   752 
       
   753 \item[$\bullet$] \textbf{\textit{metis}:} Although it is much less powerful than
       
   754 the external provers, Metis itself can be used for proof search.
       
   755 
       
   756 \item[$\bullet$] \textbf{\textit{metis\_full\_types}:} Fully typed version of
       
   757 Metis, corresponding to \textit{metis} (\textit{full\_types}).
       
   758 
       
   759 \item[$\bullet$] \textbf{\textit{metis\_no\_types}:} Untyped version of Metis,
       
   760 corresponding to \textit{metis} (\textit{no\_types}).
       
   761 \end{enum}
   769 \end{enum}
   762 
   770 
   763 In addition, the following remote provers are supported:
   771 In addition, the following remote provers are supported:
   764 
   772 
   765 \begin{enum}
   773 \begin{enum}
   777 \item[$\bullet$] \textbf{\textit{remote\_e\_tofof}:} E-ToFoF is a metaprover
   785 \item[$\bullet$] \textbf{\textit{remote\_e\_tofof}:} E-ToFoF is a metaprover
   778 developed by Geoff Sutcliffe \cite{tofof} based on E running on his Miami
   786 developed by Geoff Sutcliffe \cite{tofof} based on E running on his Miami
   779 servers. This ATP supports the TPTP many-typed first-order format (TFF). The
   787 servers. This ATP supports the TPTP many-typed first-order format (TFF). The
   780 remote version of E-ToFoF runs on Geoff Sutcliffe's Miami servers.
   788 remote version of E-ToFoF runs on Geoff Sutcliffe's Miami servers.
   781 
   789 
   782 \item[$\bullet$] \textbf{\textit{remote\_leo2}:} LEO-II is an automatic
   790 \item[$\bullet$] \textbf{\textit{remote\_leo2}:} The remote version of LEO-II
   783 higher-order prover developed by Christoph Benzm\"uller et al.\ \cite{leo2},
   791 runs on Geoff Sutcliffe's Miami servers \cite{sutcliffe-2000}.
   784 with support for the TPTP higher-order syntax (THF). The remote version of
   792 
   785 LEO-II runs on Geoff Sutcliffe's Miami servers. In the current setup, the
   793 \item[$\bullet$] \textbf{\textit{remote\_satallax}:} The remote version of
   786 problems given to LEO-II are only mildly higher-order.
   794 Satallax runs on Geoff Sutcliffe's Miami servers \cite{sutcliffe-2000}.
   787 
       
   788 \item[$\bullet$] \textbf{\textit{remote\_satallax}:} Satallax is an automatic
       
   789 higher-order prover developed by Chad Brown et al.\ \cite{satallax}, with
       
   790 support for the TPTP higher-order syntax (THF). The remote version of Satallax
       
   791 runs on Geoff Sutcliffe's Miami servers. In the current setup, the problems
       
   792 given to Satallax are only mildly higher-order.
       
   793 
   795 
   794 \item[$\bullet$] \textbf{\textit{remote\_snark}:} SNARK is a first-order
   796 \item[$\bullet$] \textbf{\textit{remote\_snark}:} SNARK is a first-order
   795 resolution prover developed by Stickel et al.\ \cite{snark}. It supports the
   797 resolution prover developed by Stickel et al.\ \cite{snark}. It supports the
   796 TPTP many-typed first-order format (TFF). The remote version of SNARK runs on
   798 TPTP many-typed first-order format (TFF). The remote version of SNARK runs on
   797 Geoff Sutcliffe's Miami servers.
   799 Geoff Sutcliffe's Miami servers.