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}).} |