Dolmen_std.Exprtype 'a tag = 'a Tag.ttype builtin =
< ty : ty
; ty_var : ty_var
; ty_cst : ty_cst
; term : term
; term_var : term_var
; term_cst : term_cst >
Builtin.tExtensible variant type for builtin operations.
The type of identifiers. 'ty is the type for representing the type of the id.
Types, which wrap type description with a memoized hash and some tags.
and pattern = termpatterns are simply terms
Term, which wrap term descriptions.
and formula = termAlias for signature compatibility (with Dolmen_loop.Pipes.Make for instance).
One case of the type definition for an algebraic datatype.
type ty_def = | AbstractAbstract types
*)| Adt of {ty : ty_cst;record : bool;cases : ty_def_adt_case array;}Algebraic datatypes, including records (which are seen as a 1-case adt).
*)Type definitions.
exception Already_aliased of ty_cstexception Type_already_defined of ty_cstexception Record_type_expected of ty_cstexception Wildcard_already_set of ty_varMemoize the given function using a hashtable as cache. Useful to wrap functions such as Ty.Var.mk when some symbol is indexed over **simple** arguments (for instance in the case of bitvectors). By default, the size is the 16, which is the minmum size of a hashtbl.
WARNING: One must be careful about order of execution when using this function. In particular, eta-expansion can break the cache behaviour. For instance the following is a correct use of this function: (** correct version *) let add_one = with_cache ((+) 1) However, the following is incorrect and will instead create a new cache for each call to the function (** bad version *) let bad_add_one x = with_cache ((+) 1) x
module Tags : sig ... endmodule Print : sig ... endmodule Subst : sig ... endModule to handle substitutions
module Id : sig ... endmodule Ty : sig ... endmodule Term : sig ... endSignature required by terms for typing first-order polymorphic terms.