doc-src/Sledgehammer/sledgehammer.tex
changeset 46435 e9c90516bc0d
parent 46411 cafa325419f6
child 46640 622691cec7c3
equal deleted inserted replaced
46434:6d2af424d0f8 46435:e9c90516bc0d
  1057 $\const{g}(\tau, t)$ becomes a unary predicate
  1057 $\const{g}(\tau, t)$ becomes a unary predicate
  1058 $\const{g\_}\tau(t)$, and the binary function
  1058 $\const{g\_}\tau(t)$, and the binary function
  1059 $\const{t}(\tau, t)$ becomes a unary function
  1059 $\const{t}(\tau, t)$ becomes a unary function
  1060 $\const{t\_}\tau(t)$.
  1060 $\const{t\_}\tau(t)$.
  1061 
  1061 
  1062 \item[\labelitemi] \textbf{\textit{mono\_simple} (sound):} Exploits simple
  1062 \item[\labelitemi] \textbf{\textit{mono\_native} (sound):} Exploits native
  1063 first-order types if the prover supports the TFF0 or THF0 syntax; otherwise,
  1063 first-order types if the prover supports the TFF0 or THF0 syntax; otherwise,
  1064 falls back on \textit{mono\_guards}. The problem is monomorphized.
  1064 falls back on \textit{mono\_guards}. The problem is monomorphized.
  1065 
  1065 
  1066 \item[\labelitemi] \textbf{\textit{mono\_simple\_higher} (sound):} Exploits simple
  1066 \item[\labelitemi] \textbf{\textit{mono\_native\_higher} (sound):} Exploits
  1067 higher-order types if the prover supports the THF0 syntax; otherwise, falls back
  1067 native higher-order types if the prover supports the THF0 syntax; otherwise,
  1068 on \textit{mono\_simple} or \textit{mono\_guards}. The problem is monomorphized.
  1068 falls back on \textit{mono\_native} or \textit{mono\_guards}. The problem is
       
  1069 monomorphized.
  1069 
  1070 
  1070 \item[\labelitemi]
  1071 \item[\labelitemi]
  1071 \textbf{%
  1072 \textbf{%
  1072 \textit{poly\_guards}?, \textit{poly\_tags}?, \textit{raw\_mono\_guards}?, \\
  1073 \textit{poly\_guards}?, \textit{poly\_tags}?, \textit{raw\_mono\_guards}?, \\
  1073 \textit{raw\_mono\_tags}?, \textit{mono\_guards}?, \textit{mono\_tags}?, \\
  1074 \textit{raw\_mono\_tags}?, \textit{mono\_guards}?, \textit{mono\_tags}?, \\
  1074 \textit{mono\_simple}? (sound*):} \\
  1075 \textit{mono\_native}? (sound*):} \\
  1075 The type encodings \textit{poly\_guards}, \textit{poly\_tags},
  1076 The type encodings \textit{poly\_guards}, \textit{poly\_tags},
  1076 \textit{raw\_mono\_guards}, \textit{raw\_mono\_tags}, \textit{mono\_guards},
  1077 \textit{raw\_mono\_guards}, \textit{raw\_mono\_tags}, \textit{mono\_guards},
  1077 \textit{mono\_tags}, and \textit{mono\_simple} are fully
  1078 \textit{mono\_tags}, and \textit{mono\_native} are fully
  1078 typed and sound. For each of these, Sledgehammer also provides a lighter,
  1079 typed and sound. For each of these, Sledgehammer also provides a lighter,
  1079 virtually sound variant identified by a question mark (`\hbox{?}')\ that detects
  1080 virtually sound variant identified by a question mark (`\hbox{?}')\ that detects
  1080 and erases monotonic types, notably infinite types. (For \textit{mono\_simple},
  1081 and erases monotonic types, notably infinite types. (For \textit{mono\_native},
  1081 the types are not actually erased but rather replaced by a shared uniform type
  1082 the types are not actually erased but rather replaced by a shared uniform type
  1082 of individuals.) As argument to the \textit{metis} proof method, the question
  1083 of individuals.) As argument to the \textit{metis} proof method, the question
  1083 mark is replaced by a \hbox{``\textit{\_query\/}''} suffix.
  1084 mark is replaced by a \hbox{``\textit{\_query\/}''} suffix.
  1084 
  1085 
  1085 \item[\labelitemi]
  1086 \item[\labelitemi]
  1100 
  1101 
  1101 \item[\labelitemi]
  1102 \item[\labelitemi]
  1102 \textbf{%
  1103 \textbf{%
  1103 \textit{poly\_guards}!, \textit{poly\_tags}!, \textit{raw\_mono\_guards}!, \\
  1104 \textit{poly\_guards}!, \textit{poly\_tags}!, \textit{raw\_mono\_guards}!, \\
  1104 \textit{raw\_mono\_tags}!, \textit{mono\_guards}!, \textit{mono\_tags}!, \\
  1105 \textit{raw\_mono\_tags}!, \textit{mono\_guards}!, \textit{mono\_tags}!, \\
  1105 \textit{mono\_simple}!, \textit{mono\_simple\_higher}! (mildly unsound):} \\
  1106 \textit{mono\_native}!, \textit{mono\_native\_higher}! (mildly unsound):} \\
  1106 The type encodings \textit{poly\_guards}, \textit{poly\_tags},
  1107 The type encodings \textit{poly\_guards}, \textit{poly\_tags},
  1107 \textit{raw\_mono\_guards}, \textit{raw\_mono\_tags}, \textit{mono\_guards},
  1108 \textit{raw\_mono\_guards}, \textit{raw\_mono\_tags}, \textit{mono\_guards},
  1108 \textit{mono\_tags}, \textit{mono\_simple}, and \textit{mono\_simple\_higher}
  1109 \textit{mono\_tags}, \textit{mono\_native}, and \textit{mono\_native\_higher}
  1109 also admit a mildly unsound (but very efficient) variant identified by an
  1110 also admit a mildly unsound (but very efficient) variant identified by an
  1110 exclamation mark (`\hbox{!}') that detects and erases erases all types except
  1111 exclamation mark (`\hbox{!}') that detects and erases erases all types except
  1111 those that are clearly finite (e.g., \textit{bool}). (For \textit{mono\_simple}
  1112 those that are clearly finite (e.g., \textit{bool}). (For \textit{mono\_native}
  1112 and \textit{mono\_simple\_higher}, the types are not actually erased but rather
  1113 and \textit{mono\_native\_higher}, the types are not actually erased but rather
  1113 replaced by a shared uniform type of individuals.) As argument to the
  1114 replaced by a shared uniform type of individuals.) As argument to the
  1114 \textit{metis} proof method, the exclamation mark is replaced by the suffix
  1115 \textit{metis} proof method, the exclamation mark is replaced by the suffix
  1115 \hbox{``\textit{\_bang\/}''}.
  1116 \hbox{``\textit{\_bang\/}''}.
  1116 
  1117 
  1117 \item[\labelitemi]
  1118 \item[\labelitemi]
  1132 
  1133 
  1133 \item[\labelitemi] \textbf{\textit{smart}:} The actual encoding used depends on
  1134 \item[\labelitemi] \textbf{\textit{smart}:} The actual encoding used depends on
  1134 the ATP and should be the most efficient virtually sound encoding for that ATP.
  1135 the ATP and should be the most efficient virtually sound encoding for that ATP.
  1135 \end{enum}
  1136 \end{enum}
  1136 
  1137 
  1137 For SMT solvers, the type encoding is always \textit{mono\_simple}, irrespective
  1138 For SMT solvers, the type encoding is always \textit{mono\_native}, irrespective
  1138 of the value of this option.
  1139 of the value of this option.
  1139 
  1140 
  1140 \nopagebreak
  1141 \nopagebreak
  1141 {\small See also \textit{max\_new\_mono\_instances} (\S\ref{relevance-filter})
  1142 {\small See also \textit{max\_new\_mono\_instances} (\S\ref{relevance-filter})
  1142 and \textit{max\_mono\_iters} (\S\ref{relevance-filter}).}
  1143 and \textit{max\_mono\_iters} (\S\ref{relevance-filter}).}