\DOC uptodate_type \TYPE {uptodate_type : hol_type -> bool} \SYNOPSIS

advertisement
\DOC uptodate_type
\TYPE {uptodate_type : hol_type -> bool}
\SYNOPSIS
Tells if a type is out of date.
\KEYWORDS
type.
\DESCRIBE
Operations in the current theory segment of HOL allow one to redefine
types and constants. This can cause theorems to become invalid. As a
result, HOL has a rudimentary consistency maintenance system built
around the notion of whether type operators and term constants are
"up-to-date".
An invocation {uptodate_type ty}, checks {ty} to see if it has been
built from any out of date components, returning {false} just in case it
has. The definition of {out-of-date} is mutually recursive among types,
terms, and theorems. A type variable never out-of-date. A compound
type is out-of-date if either (a) its type operator is out-of-date, or
(b) any of its argument types are out-of-date. A type operator is
out-of-date if it has been re-declared or if the witness theorem used to
justify the type in the call to {new_type_definition} is
out-of-date. Only a component of the current theory segment may be
out-of-date. All items from ancestor theories are fixed, and unable to
be overwritten, thus are always up-to-date.
\FAILURE
Never fails.
\EXAMPLE
{
- Hol_datatype `foo = A | B of 'a`;
<<HOL message: Defined type: "foo">>
> val it = () : unit
- val ty = Type `:'a foo list`;
> val ty = `:'a foo list` : hol_type
- uptodate_type ty;
> val it = true : bool
- delete_type "foo";
> val it = () : unit
- uptodate_type ty;
> val it = false : bool
}
\SEEALSO
Theory.uptodate_term, Theory.uptodate_thm.
\ENDDOC
Download