doc-src/Sledgehammer/sledgehammer.tex
changeset 42884 75c94e3319ae
parent 42883 ec1ea24d49bc
child 42887 771be1dcfef6
equal deleted inserted replaced
42883:ec1ea24d49bc 42884:75c94e3319ae
   294 experimental and is only available for ATPs.
   294 experimental and is only available for ATPs.
   295 
   295 
   296 \section{Hints}
   296 \section{Hints}
   297 \label{hints}
   297 \label{hints}
   298 
   298 
       
   299 This section presents a few hints that should help you get the most out of
       
   300 Sledgehammer and Metis. Frequently (and infrequently) asked questions are
       
   301 answered in \S\ref{frequently-asked-questions}.
       
   302 
   299 \newcommand\point[1]{{\sl\bfseries#1}\par\nopagebreak}
   303 \newcommand\point[1]{{\sl\bfseries#1}\par\nopagebreak}
   300 
   304 
   301 \point{Presimplify the goal}
   305 \point{Presimplify the goal}
   302 
   306 
   303 For best results, first simplify your problem by calling \textit{auto} or at
   307 For best results, first simplify your problem by calling \textit{auto} or at
   319 Sledgehammer's options are fully documented in \S\ref{command-syntax}. Many of
   323 Sledgehammer's options are fully documented in \S\ref{command-syntax}. Many of
   320 the options are very specialized, but serious users of the tool should at least
   324 the options are very specialized, but serious users of the tool should at least
   321 familiarize themselves with the following options:
   325 familiarize themselves with the following options:
   322 
   326 
   323 \begin{enum}
   327 \begin{enum}
   324 \item[$\bullet$] \textbf{\textit{provers}} specifies the ATP and SMT solvers to
   328 \item[$\bullet$] \textbf{\textit{provers}} (\S\ref{mode-of-operation}) specifies
   325 use (e.g., ``\textit{provers} = \textit{e spass remote\_vampire}'').
   329 the automatic provers (ATPs and SMT solvers) that should be run whenever
   326 
   330 Sledgehammer is invoked (e.g., ``\textit{provers}~= \textit{e spass
   327 \item[$\bullet$] \textbf{\textit{timeout}} controls the provers' time limit. It
   331 remote\_vampire}'').
   328 is set to 30 seconds, but since Sledgehammer runs asynchronously you should not
   332 
   329 hesitate to raise this limit to 60 or 120 seconds if you are the kind of user
   333 \item[$\bullet$] \textbf{\textit{timeout}} (\S\ref{mode-of-operation}) controls
   330 who can think clearly while ATPs are active.
   334 the provers' time limit. It is set to 30 seconds, but since Sledgehammer runs
   331 
   335 asynchronously you should not hesitate to raise this limit to 60 or 120 seconds
   332 \item[$\bullet$] \textbf{\textit{full\_types}} specifies whether type-sound
   336 if you are the kind of user who can think clearly while ATPs are active.
   333 encodings should be used. By default, Sledgehammer employs a mixture of
   337 
   334 type-sound and type-unsound encodings, occasionally yielding unsound ATP proofs.
   338 \item[$\bullet$] \textbf{\textit{full\_types}} (\S\ref{problem-encoding})
   335 (SMT solver proofs should always be sound, although we occasionally find
   339 specifies whether type-sound encodings should be used. By default, Sledgehammer
   336 soundness bugs in the solvers.)
   340 employs a mixture of type-sound and type-unsound encodings, occasionally
   337 
   341 yielding unsound ATP proofs. (SMT solver proofs should always be sound, although
   338 \item[$\bullet$] \textbf{\textit{max\_relevant}} specifies the maximum number of
   342 we occasionally find soundness bugs in the solvers.)
   339 facts that should be passed to the provers. By default, the value is
   343 
   340 prover-dependent but varies between about 150 and 1000. If the provers time out,
   344 \item[$\bullet$] \textbf{\textit{max\_relevant}} (\S\ref{relevance-filter})
   341 you can try lowering this value to, say, 100 or 50 and see if that helps.
   345 specifies the maximum number of facts that should be passed to the provers. By
   342 
   346 default, the value is prover-dependent but varies between about 150 and 1000. If
   343 \item[$\bullet$] \textbf{\textit{isar\_proof}} specifies that Isar proofs should
   347 the provers time out, you can try lowering this value to, say, 100 or 50 and see
   344 be generated, instead of one-liner Metis proofs. The length of the Isar proofs
   348 if that helps.
   345 can be controlled by setting \textit{isar\_shrink\_factor}.
   349 
   346 \end{enum}
   350 \item[$\bullet$] \textbf{\textit{isar\_proof}} (\S\ref{output-format}) specifies
   347 
   351 that Isar proofs should be generated, instead of one-liner Metis proofs. The
   348 Options can be set globally using \textbf{sledgehammer\_params}. Fact selection
   352 length of the Isar proofs can be controlled by setting
   349 can be influenced by specifying ``$(\textit{add}{:}~\textit{some\_facts})$'' after
   353 \textit{isar\_shrink\_factor} (\S\ref{output-format}).
   350 the \textbf{sledgehammer} call to ensure that certain facts are included, or
   354 \end{enum}
   351 simply ``$(\textit{some\_facts})$'' to force Sledgehammer to run only with
   355 
   352 $\textit{some\_facts}$.
   356 Options can be set globally using \textbf{sledgehammer\_params}
       
   357 (\S\ref{command-syntax}). Fact selection can be influenced by specifying
       
   358 ``$(\textit{add}{:}~\textit{my\_facts})$'' after the \textbf{sledgehammer}
       
   359 call to ensure that certain facts are included, or simply
       
   360 ``$(\textit{my\_facts})$'' to force Sledgehammer to run only with
       
   361 $\textit{my\_facts}$.
   353 
   362 
   354 \section{Frequently Asked Questions}
   363 \section{Frequently Asked Questions}
   355 \label{frequently-asked-questions}
   364 \label{frequently-asked-questions}
   356 
   365 
   357 \point{Why does Metis fail to reconstruct the proof?}
   366 \point{Why does Metis fail to reconstruct the proof?}
   427 facts given using the \textit{verbose} option (\S\ref{output-format}) and the
   436 facts given using the \textit{verbose} option (\S\ref{output-format}) and the
   428 actual facts using \textit{debug} (\S\ref{output-format}).
   437 actual facts using \textit{debug} (\S\ref{output-format}).
   429 
   438 
   430 Sledgehammer is good at finding short proofs combining a handful of existing
   439 Sledgehammer is good at finding short proofs combining a handful of existing
   431 lemmas. If you are looking for longer proofs, you must typically restrict the
   440 lemmas. If you are looking for longer proofs, you must typically restrict the
   432 number of facts, by setting \textit{max\_relevant} to, say, 50 or 100.
   441 number of facts, by setting the \textit{max\_relevant} option
       
   442 (\S\ref{relevance-filter}) to, say, 50 or 100.
   433 
   443 
   434 \point{Why are the Isar proofs generated by Sledgehammer so ugly?}
   444 \point{Why are the Isar proofs generated by Sledgehammer so ugly?}
   435 
   445 
   436 The current implementation is experimental and explodes exponentially in the
   446 The current implementation is experimental and explodes exponentially in the
   437 worst case. Work on a new implementation has begun. There is a large body of
   447 worst case. Work on a new implementation has begun. There is a large body of
   723 for 120 seconds \cite{boehme-nipkow-2010}.
   733 for 120 seconds \cite{boehme-nipkow-2010}.
   724 
   734 
   725 \opnodefault{prover}{string}
   735 \opnodefault{prover}{string}
   726 Alias for \textit{provers}.
   736 Alias for \textit{provers}.
   727 
   737 
   728 \opnodefault{atps}{string}
   738 %\opnodefault{atps}{string}
   729 Legacy alias for \textit{provers}.
   739 %Legacy alias for \textit{provers}.
   730 
   740 
   731 \opnodefault{atp}{string}
   741 %\opnodefault{atp}{string}
   732 Legacy alias for \textit{provers}.
   742 %Legacy alias for \textit{provers}.
   733 
   743 
   734 \opdefault{timeout}{float\_or\_none}{\upshape 30}
   744 \opdefault{timeout}{float\_or\_none}{\upshape 30}
   735 Specifies the maximum number of seconds that the automatic provers should spend
   745 Specifies the maximum number of seconds that the automatic provers should spend
   736 searching for a proof. This excludes problem preparation and is a soft limit.
   746 searching for a proof. This excludes problem preparation and is a soft limit.
   737 For historical reasons, the default value of this option can be overridden using
   747 For historical reasons, the default value of this option can be overridden using
   873 variants are identified by a \textit{\_heavy} suffix (e.g.,
   883 variants are identified by a \textit{\_heavy} suffix (e.g.,
   874 \textit{mangled\_preds\_heavy}{?}).
   884 \textit{mangled\_preds\_heavy}{?}).
   875 
   885 
   876 For SMT solvers and ToFoF-E, the type system is always \textit{simple},
   886 For SMT solvers and ToFoF-E, the type system is always \textit{simple},
   877 irrespective of the value of this option.
   887 irrespective of the value of this option.
   878 
       
   879 \opdefault{max\_mono\_iters}{int}{\upshape 3}
       
   880 Specifies the maximum number of iterations for the monomorphization fixpoint
       
   881 construction. The higher this limit is, the more monomorphic instances are
       
   882 potentially generated. Whether monomorphization takes place depends on the
       
   883 type system used.
       
   884 
       
   885 \opdefault{max\_new\_mono\_instances}{int}{\upshape 400}
       
   886 Specifies the maximum number of monomorphic instances to generate beyond
       
   887 \textit{max\_relevant}. The higher this limit is, the more monomorphic instances
       
   888 are potentially generated. Whether monomorphization takes place depends on the
       
   889 type system used.
       
   890 \end{enum}
   888 \end{enum}
   891 
   889 
   892 \subsection{Relevance Filter}
   890 \subsection{Relevance Filter}
   893 \label{relevance-filter}
   891 \label{relevance-filter}
   894 
   892 
   905 Specifies the maximum number of facts that may be returned by the relevance
   903 Specifies the maximum number of facts that may be returned by the relevance
   906 filter. If the option is set to \textit{smart}, it is set to a value that was
   904 filter. If the option is set to \textit{smart}, it is set to a value that was
   907 empirically found to be appropriate for the prover. A typical value would be
   905 empirically found to be appropriate for the prover. A typical value would be
   908 300.
   906 300.
   909 
   907 
       
   908 \opdefault{max\_new\_mono\_instances}{int}{\upshape 400}
       
   909 Specifies the maximum number of monomorphic instances to generate beyond
       
   910 \textit{max\_relevant}. The higher this limit is, the more monomorphic instances
       
   911 are potentially generated. Whether monomorphization takes place depends on the
       
   912 type system used.
       
   913 
       
   914 \nopagebreak
       
   915 {\small See also \textit{type\_sys} (\S\ref{problem-encoding}).}
       
   916 
       
   917 \opdefault{max\_mono\_iters}{int}{\upshape 3}
       
   918 Specifies the maximum number of iterations for the monomorphization fixpoint
       
   919 construction. The higher this limit is, the more monomorphic instances are
       
   920 potentially generated. Whether monomorphization takes place depends on the
       
   921 type system used.
       
   922 
       
   923 \nopagebreak
       
   924 {\small See also \textit{type\_sys} (\S\ref{problem-encoding}).}
   910 \end{enum}
   925 \end{enum}
   911 
   926 
   912 \subsection{Output Format}
   927 \subsection{Output Format}
   913 \label{output-format}
   928 \label{output-format}
   914 
   929