Flag controlling printing of HOL types (in terms).
Normally HOL types in terms are not printed, since this makes terms
hard to read. Type printing is enabled by show_types := true, and
disabled by show_types := false. When printing of types is enabled, not
all variables and constants are annotated with a type. The intention
is to provide sufficient type information to remove any ambiguities
without swamping the term with type information.
> val it = |- !t. (t = T) \/ (t = F) : thm
- show_types := true;
> val it = () : unit
> val it = |- !(t :bool). (t = T) \/ (t = F) : thm
It is possible to construct an abstraction in which the bound variable
has the same name but a different type to a variable in the body. In
such a case the two variables are considered to be distinct. Without
type information such a term can be very misleading, so it might be a
good idea to provide type information for the free variable whether or
not printing of types is enabled.