type

Keyword: type

One of the primitive judgments.

Introduces a new type.

Types may be interpreted or uninterpreted.

An uninterpreted type is treated as a set with at least one element, but no specific elements.

An interpreted type has specific elements, defined either through theory instantiation or by enumerating the elements of the type "in extension".

Examples:

Example: uninterpreted type

type t

This judgment can be read as "let t be a type". It is admissible provided t is a new symbol that has not been used up to this point in the development.

Example: interpreted type defined by enumeration

type color = {red,green,blue}

This declares a type with exactly three distinct values, and also declares individuals red, green and blue as its elements.

Example: interpreted type defined by theory instantiation

type foo
interpret foo -> int

This declares a type foo with an interpretation that is a separate copy of the theory of integers (including overloaded symbols for most integer operators such as + and <)