doc-src/Sledgehammer/sledgehammer.tex
changeset 47036 fc958d7138be
parent 46643 a88bccd2b567
child 47056 6f8dfe6c1aea
equal deleted inserted replaced
47035:5248fae40f09 47036:fc958d7138be
   518 generated by Sledgehammer instead of \textit{metis} if the proof obviously
   518 generated by Sledgehammer instead of \textit{metis} if the proof obviously
   519 requires type information or if \textit{metis} failed when Sledgehammer
   519 requires type information or if \textit{metis} failed when Sledgehammer
   520 preplayed the proof. (By default, Sledgehammer tries to run \textit{metis} with
   520 preplayed the proof. (By default, Sledgehammer tries to run \textit{metis} with
   521 various options for up to 3 seconds each time to ensure that the generated
   521 various options for up to 3 seconds each time to ensure that the generated
   522 one-line proofs actually work and to display timing information. This can be
   522 one-line proofs actually work and to display timing information. This can be
   523 configured using the \textit{preplay\_timeout} option (\S\ref{timeouts}).)
   523 configured using the \textit{preplay\_timeout} and \textit{dont\_preplay}
       
   524 options (\S\ref{timeouts}).)
   524 %
   525 %
   525 At the other end of the soundness spectrum, \textit{metis} (\textit{no\_types})
   526 At the other end of the soundness spectrum, \textit{metis} (\textit{no\_types})
   526 uses no type information at all during the proof search, which is more efficient
   527 uses no type information at all during the proof search, which is more efficient
   527 but often fails. Calls to \textit{metis} (\textit{no\_types}) are occasionally
   528 but often fails. Calls to \textit{metis} (\textit{no\_types}) are occasionally
   528 generated by Sledgehammer.
   529 generated by Sledgehammer.
   719 
   720 
   720 \def\defl{\{}
   721 \def\defl{\{}
   721 \def\defr{\}}
   722 \def\defr{\}}
   722 
   723 
   723 \def\flushitem#1{\item[]\noindent\kern-\leftmargin \textbf{#1}}
   724 \def\flushitem#1{\item[]\noindent\kern-\leftmargin \textbf{#1}}
       
   725 \def\optrueonly#1{\flushitem{\textit{#1} $\bigl[$= \textit{true}$\bigr]$\enskip}\nopagebreak\\[\parskip]}
   724 \def\optrue#1#2{\flushitem{\textit{#1} $\bigl[$= \qtybf{bool}$\bigr]$\enskip \defl\textit{true}\defr\hfill (neg.: \textit{#2})}\nopagebreak\\[\parskip]}
   726 \def\optrue#1#2{\flushitem{\textit{#1} $\bigl[$= \qtybf{bool}$\bigr]$\enskip \defl\textit{true}\defr\hfill (neg.: \textit{#2})}\nopagebreak\\[\parskip]}
   725 \def\opfalse#1#2{\flushitem{\textit{#1} $\bigl[$= \qtybf{bool}$\bigr]$\enskip \defl\textit{false}\defr\hfill (neg.: \textit{#2})}\nopagebreak\\[\parskip]}
   727 \def\opfalse#1#2{\flushitem{\textit{#1} $\bigl[$= \qtybf{bool}$\bigr]$\enskip \defl\textit{false}\defr\hfill (neg.: \textit{#2})}\nopagebreak\\[\parskip]}
   726 \def\opsmart#1#2{\flushitem{\textit{#1} $\bigl[$= \qtybf{smart\_bool}$\bigr]$\enskip \defl\textit{smart}\defr\hfill (neg.: \textit{#2})}\nopagebreak\\[\parskip]}
   728 \def\opsmart#1#2{\flushitem{\textit{#1} $\bigl[$= \qtybf{smart\_bool}$\bigr]$\enskip \defl\textit{smart}\defr\hfill (neg.: \textit{#2})}\nopagebreak\\[\parskip]}
   727 \def\opsmartx#1#2{\flushitem{\textit{#1} $\bigl[$= \qtybf{smart\_bool}$\bigr]$\enskip \defl\textit{smart}\defr\\\hbox{}\hfill (neg.: \textit{#2})}\nopagebreak\\[\parskip]}
   729 \def\opsmartx#1#2{\flushitem{\textit{#1} $\bigl[$= \qtybf{smart\_bool}$\bigr]$\enskip \defl\textit{smart}\defr\\\hbox{}\hfill (neg.: \textit{#2})}\nopagebreak\\[\parskip]}
   728 \def\opnodefault#1#2{\flushitem{\textit{#1} = \qtybf{#2}} \nopagebreak\\[\parskip]}
   730 \def\opnodefault#1#2{\flushitem{\textit{#1} = \qtybf{#2}} \nopagebreak\\[\parskip]}
   916 several provers are set, the first one is used.
   918 several provers are set, the first one is used.
   917 
   919 
   918 \opnodefault{prover}{string}
   920 \opnodefault{prover}{string}
   919 Alias for \textit{provers}.
   921 Alias for \textit{provers}.
   920 
   922 
   921 %\opnodefault{atps}{string}
       
   922 %Legacy alias for \textit{provers}.
       
   923 
       
   924 %\opnodefault{atp}{string}
       
   925 %Legacy alias for \textit{provers}.
       
   926 
       
   927 \opfalse{blocking}{non\_blocking}
   923 \opfalse{blocking}{non\_blocking}
   928 Specifies whether the \textbf{sledgehammer} command should operate
   924 Specifies whether the \textbf{sledgehammer} command should operate
   929 synchronously. The asynchronous (non-blocking) mode lets the user start proving
   925 synchronously. The asynchronous (non-blocking) mode lets the user start proving
   930 the putative theorem manually while Sledgehammer looks for a proof, but it can
   926 the putative theorem manually while Sledgehammer looks for a proof, but it can
   931 also be more confusing. Irrespective of the value of this option, Sledgehammer
   927 also be more confusing. Irrespective of the value of this option, Sledgehammer
   953 it can be done in a reasonable amount of time (as determined by
   949 it can be done in a reasonable amount of time (as determined by
   954 the number of facts in the original proof and the time it took to find or
   950 the number of facts in the original proof and the time it took to find or
   955 preplay it) or the proof involves an unreasonably large number of facts.
   951 preplay it) or the proof involves an unreasonably large number of facts.
   956 
   952 
   957 \nopagebreak
   953 \nopagebreak
   958 {\small See also \textit{preplay\_timeout} (\S\ref{timeouts}).}
   954 {\small See also \textit{preplay\_timeout} (\S\ref{timeouts})
       
   955 and \textit{dont\_preplay} (\S\ref{timeouts}).}
   959 
   956 
   960 \opfalse{overlord}{no\_overlord}
   957 \opfalse{overlord}{no\_overlord}
   961 Specifies whether Sledgehammer should put its temporary files in
   958 Specifies whether Sledgehammer should put its temporary files in
   962 \texttt{\$ISA\-BELLE\_\allowbreak HOME\_\allowbreak USER}, which is useful for
   959 \texttt{\$ISA\-BELLE\_\allowbreak HOME\_\allowbreak USER}, which is useful for
   963 debugging Sledgehammer but also unsafe if several instances of the tool are run
   960 debugging Sledgehammer but also unsafe if several instances of the tool are run
  1084 \textit{poly\_guards}?, \textit{poly\_tags}?, \textit{raw\_mono\_guards}?, \\
  1081 \textit{poly\_guards}?, \textit{poly\_tags}?, \textit{raw\_mono\_guards}?, \\
  1085 \textit{raw\_mono\_tags}?, \textit{mono\_guards}?, \textit{mono\_tags}?, \\
  1082 \textit{raw\_mono\_tags}?, \textit{mono\_guards}?, \textit{mono\_tags}?, \\
  1086 \textit{mono\_native}? (sound*):} \\
  1083 \textit{mono\_native}? (sound*):} \\
  1087 The type encodings \textit{poly\_guards}, \textit{poly\_tags},
  1084 The type encodings \textit{poly\_guards}, \textit{poly\_tags},
  1088 \textit{raw\_mono\_guards}, \textit{raw\_mono\_tags}, \textit{mono\_guards},
  1085 \textit{raw\_mono\_guards}, \textit{raw\_mono\_tags}, \textit{mono\_guards},
  1089 \textit{mono\_tags}, and \textit{mono\_native} are fully
  1086 \textit{mono\_tags}, and \textit{mono\_native} are fully typed and sound. For
  1090 typed and sound. For each of these, Sledgehammer also provides a lighter,
  1087 each of these, Sledgehammer also provides a lighter variant identified by a
  1091 virtually sound variant identified by a question mark (`\hbox{?}')\ that detects
  1088 question mark (`\hbox{?}')\ that detects and erases monotonic types, notably
  1092 and erases monotonic types, notably infinite types. (For \textit{mono\_native},
  1089 infinite types. (For \textit{mono\_native}, the types are not actually erased
  1093 the types are not actually erased but rather replaced by a shared uniform type
  1090 but rather replaced by a shared uniform type of individuals.) As argument to the
  1094 of individuals.) As argument to the \textit{metis} proof method, the question
  1091 \textit{metis} proof method, the question mark is replaced by a
  1095 mark is replaced by a \hbox{``\textit{\_query\/}''} suffix.
  1092 \hbox{``\textit{\_query\/}''} suffix.
  1096 
  1093 
  1097 \item[\labelitemi]
  1094 \item[\labelitemi]
  1098 \textbf{%
  1095 \textbf{%
  1099 \textit{poly\_guards}??, \textit{poly\_tags}??, \textit{raw\_mono\_guards}??, \\
  1096 \textit{poly\_guards}??, \textit{poly\_tags}??, \textit{raw\_mono\_guards}??, \\
  1100 \textit{raw\_mono\_tags}??, \textit{mono\_guards}??, \textit{mono\_tags}?? \\
  1097 \textit{raw\_mono\_tags}??, \textit{mono\_guards}??, \textit{mono\_tags}?? \\
  1141 Alternative versions of the `\hbox{!!}' encodings. As argument to the
  1138 Alternative versions of the `\hbox{!!}' encodings. As argument to the
  1142 \textit{metis} proof method, the `\hbox{@!}' suffix is replaced by
  1139 \textit{metis} proof method, the `\hbox{@!}' suffix is replaced by
  1143 \hbox{``\textit{\_at\_bang\/}''}.
  1140 \hbox{``\textit{\_at\_bang\/}''}.
  1144 
  1141 
  1145 \item[\labelitemi] \textbf{\textit{smart}:} The actual encoding used depends on
  1142 \item[\labelitemi] \textbf{\textit{smart}:} The actual encoding used depends on
  1146 the ATP and should be the most efficient virtually sound encoding for that ATP.
  1143 the ATP and should be the most efficient sound encoding for that ATP.
  1147 \end{enum}
  1144 \end{enum}
  1148 
  1145 
  1149 For SMT solvers, the type encoding is always \textit{mono\_native}, irrespective
  1146 For SMT solvers, the type encoding is always \textit{mono\_native}, irrespective
  1150 of the value of this option.
  1147 of the value of this option.
  1151 
  1148 
  1269 no preplaying takes place, and no timing information is displayed next to the
  1266 no preplaying takes place, and no timing information is displayed next to the
  1270 suggested \textit{metis} calls.
  1267 suggested \textit{metis} calls.
  1271 
  1268 
  1272 \nopagebreak
  1269 \nopagebreak
  1273 {\small See also \textit{minimize} (\S\ref{mode-of-operation}).}
  1270 {\small See also \textit{minimize} (\S\ref{mode-of-operation}).}
       
  1271 
       
  1272 \optrueonly{dont\_preplay}
       
  1273 Alias for ``\textit{preplay\_timeout} = 0''.
       
  1274 
  1274 \end{enum}
  1275 \end{enum}
  1275 
  1276 
  1276 \let\em=\sl
  1277 \let\em=\sl
  1277 \bibliography{../manual}{}
  1278 \bibliography{../manual}{}
  1278 \bibliographystyle{abbrv}
  1279 \bibliographystyle{abbrv}