This module completes the logical core for HOL by defining the core theory. This involves giving declarations, definitions and axioms for all the HOL theory objects anticipated by the language and inference kernels.
Function or value | Description |
|
|
|
|
|
|
|
The existential quantifier is defined using just selection, as the function that returns whether any element selected as satisfying the function's predicate argument necessarily satisfies the predicate. Note that if there is no element satisfying the predicate, then not even the result of the selection operation can satisfy the predicate. |- $? = (\(P:'a->bool). P ($@ P))
|
|
|
|
|
|
|
|
|
This axiom states a crucial property about the selection operator, namely that any element satisfying a given predicate implies that the selected element for the predicate satisfies the predicate. Note that it says nothing about when there is no element that can satisfy the predicate. |- !(P:'a->bool) x. P x ==> P ($@ P)
|
|
|
|
|
|
|
This predicate is used in the theorem created by the primitive type constant definition command to assert that there is a bijection from the new type to its representation type. It is defined as the function that takes a characteristic function (a predicate for elements of the representation type) and a representation function (mapping elements of the new type to the representation type), and returns whether the representation function is one-to-one and maps onto precisely those elements in the representation type that satisfy the characteristic function. |- TYPE_DEFINITION = (\P (rep:'b->'a). ONE_ONE rep /\ (!x. P x <=> (?y. x = rep y)))
|