doc-src/Sledgehammer/sledgehammer.tex
changeset 42589 9f7c48463645
parent 42582 6321d0dc3d72
child 42591 f139d0ac2d44
--- a/doc-src/Sledgehammer/sledgehammer.tex	Sun May 01 18:37:25 2011 +0200
+++ b/doc-src/Sledgehammer/sledgehammer.tex	Sun May 01 18:37:25 2011 +0200
@@ -578,57 +578,71 @@
 Monomorphization can simplify reasoning but also leads to larger fact bases,
 which can slow down the ATPs.
 
-\item[$\bullet$] \textbf{\textit{mangled}:} Types are mangled in constant names,
-and predicates restrict the range of bound variables. The problem is
-monomorphized. This corresponds to the traditional encoding of types in an
-untyped logic without overloading (e.g., such as performed by the ToFoF-E
-wrapper).
+\item[$\bullet$] \textbf{\textit{preds}:} Types are encoded using a binary predicate
+$\mathit{has\_type\/}(\tau, t)$ that restricts the range of bound variables.
+Constants are annotated with their types, supplied as extra arguments, to
+resolve overloading.
 
-\item[$\bullet$] \textbf{\textit{args}:} Constants are annotated with their
-types, which are supplied as extra arguments.
+\item[$\bullet$] \textbf{\textit{mono\_preds}:} Similar to \textit{preds}, but
+the problem is additionally monomorphized. This corresponds to the traditional
+encoding of types in an untyped logic without overloading (e.g., such as
+performed by the ToFoF-E wrapper).
 
-\item[$\bullet$] \textbf{\textit{mono\_args}:} Similar to \textit{args}, but
-the problem is additionally monomorphized.
+\item[$\bullet$] \textbf{\textit{mangled\_preds}:} Similar to
+\textit{mono\_preds}, but types are mangled in constant names instead of being
+supplied as ground term arguments. The binary predicate
+$\mathit{has\_type\/}(\tau, t)$ becomes a unary predicate
+$\mathit{has\_type\_}\tau(t)$.
 
-\item[$\bullet$] \textbf{\textit{tags}:} Each term (and subterm) is tagged with
-its type using a special uninterpreted function symbol.
+\item[$\bullet$] \textbf{\textit{tags}:} Each term and subterm is tagged with
+its type using a function $\mathit{type\_info\/}(\tau, t)$.
 
 \item[$\bullet$] \textbf{\textit{mono\_tags}:} Similar to \textit{tags}, but
 the problem is additionally monomorphized.
 
-\item[$\bullet$] \textbf{\textit{none}:} No type information is supplied to the
-ATP.
+\item[$\bullet$] \textbf{\textit{mangled\_tags}:} Similar to
+\textit{mono\_tags}, but types are mangled in constant names instead of being
+supplied as ground term arguments. The binary function
+$\mathit{type\_info\/}(\tau, t)$ becomes a unary function
+$\mathit{type\_info\_}\tau(t)$.
+
+\item[$\bullet$]
+\textbf{%
+\textit{preds}!,
+\textit{mono\_preds}!,
+\textit{mangled\_preds}!, \\
+\textit{tags}!,
+\textit{mono\_tags}!,
+\textit{mangled\_tags}!:} \\
+The type systems \textit{preds}, \textit{mono\_preds}, \textit{mangled\_preds},
+\textit{tags}, \textit{mono\_tags}, and \textit{mangled\_tags} are fully typed
+and virtually sound. For each of these, Sledgehammer also provides a mildly
+unsound variant identified by an exclamation mark (!)\ that types only finite
+(and hence especially dangerous) types.
 
 \item[$\bullet$]
 \textbf{%
-\textit{many\_typed}!,
-\textit{mangled}!,
-\textit{args}!,
-\textit{mono\_args}!,
-\textit{tags}!, \\ %% TYPESETTING
-\textit{mono\_tags}!:}
-The type systems \textit{many\_typed}, \textit{mangled},
-(\textit{mono\_})\allowbreak\textit{args}, and
-(\textit{mono\_})\allowbreak\textit{tags} are fully typed and (virtually) sound.
-For each of these, Sledgehammer also provides a mildly unsound variant
-identified by one exclamation mark suffix (!).
+\textit{preds}?,
+\textit{mono\_preds}?,
+\textit{mangled\_preds}?, \\
+\textit{tags}?,
+\textit{mono\_tags}?,
+\textit{mangled\_tags}?:} \\
+If the exclamation mark (!) is replaced by an question mark (?), the type
+systems type only nonmonotonic (and hence especially dangerous) types. Not
+implemented yet.
 
-\item[$\bullet$]
-\textbf{%
-\textit{many\_typed}!!,
-\textit{mangled}!!,
-\textit{args}!!,
-\textit{mono\_args}!!,
-\textit{tags}!!, \\ %% TYPESETTING
-\textit{mono\_tags}!!:}
-More strongly unsound variants of \textit{many\_typed}, \textit{mangled},
-(\textit{mono\_})\allowbreak\textit{args}, and
-(\textit{mono\_})\allowbreak\textit{tags}, identified by two exclamation marks
-(!!).
+\item[$\bullet$] \textbf{\textit{const\_args}:}
+Constants are annotated with their types, supplied as extra arguments, to
+resolve overloading. Variables are unbounded.
+
+\item[$\bullet$] \textbf{\textit{erased}:} No type information is supplied to
+the ATP. Types are simply erased.
 
 \item[$\bullet$] \textbf{\textit{smart}:} If \textit{full\_types} is enabled,
-uses a fully typed encoding; otherwise, uses a partially typed encoding. The
-actual encoding used depends on the ATP.
+uses a fully typed, virtually sound encoding; otherwise, uses any encoding. The
+actual encoding used depends on the ATP and should be the most efficient for
+that ATP.
 \end{enum}
 
 For SMT solvers and ToFoF-E, the type system is always \textit{many\_typed}.