new_type_definition : string * thm -> thm
new_type_definition (tyop, |- ?x. t x)results in tyop being declared as a new n-ary type operator in the current theory and returned by the call to new_type_definition. This new type operator is characterized by a definitional axiom of the form:
|- ?rep:('a,...,'n)op->tyop. TYPE_DEFINITION t repwhich is stored as a definition in the current theory segment under the automatically-generated name op_TY_DEF. The constant TYPE_DEFINITION in this axiomatic characterization of tyop is defined by:
|- TYPE_DEFINITION (P:'a->bool) (rep:'b->'a) = (!x' x''. (rep x' = rep x'') ==> (x' = x'')) /\ (!x. P x = (?x'. x = rep x'))Thus |- ?rep. TYPE_DEFINITION P rep asserts that there is a bijection between the newly defined type ('a,...,'n)tyop and the set of values of type ty that satisfy P.