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 |