A call new_binder(bnd,ty) declares a new binder bnd in the
current theory. The type must be of the form ('a -> 'b) -> 'c, because
being a binder, bnd will apply to an abstraction; for example
!x:bool. (x=T) \/ (x=F)
is actually a prettyprinting of
$! (\x. (x=T) \/ (x=F))
FAILURE
Fails if the type does not correspond to the above pattern.
EXAMPLE
- new_theory "anorak";
> val it = () : unit
- new_binder ("!!", (bool-->bool)-->bool);
> val it = () : unit
- Term `!!x. T`;
> val it = `!! x. T` : term