Module Logtk.Signature
Signature
type t= Type.t Logtk.ID.Map.tA signature maps symbols to types
val empty : tEmpty signature
val is_empty : t -> boolval singleton : ID.t -> Type.t -> tval mem : t -> ID.t -> boolIs the symbol declared?
val declare : t -> ID.t -> Type.t -> tDeclare the symbol, or
- raises AlreadyDeclared
if the symbol is already defined
- raises Invalid_argument
if the type has free variables
val find_exn : t -> ID.t -> Type.tLookup the type of a symbol
- raises Not_found
if the symbol is not in the signature
val arity : t -> ID.t -> int * intArity of the given symbol, or failure. see
Type.arityfor more details about the returned value.- raises Not_found
if the symbol is not in the signature
val cardinal : t -> intNumber of symbols
val is_ground : t -> boolOnly ground types?
val merge : t -> t -> tMerge two signatures together.
- raises Type.Error
if they share some symbols with distinct types
val diff : t -> t -> tdiff s1 s2contains the symbols ofs1that do not appear ins2. Useful to remove base symbols.
val well_founded : t -> boolAre there some symbols of arity 0 in the signature?
- returns
true iff the Herbrand term universe of this signature is non empty
module Seq : sig ... endval to_set : t -> Logtk.ID.Set.tSet of symbols of the signature
val to_list : t -> (ID.t * Type.t) listval add_list : t -> (ID.t * Type.t) list -> tval of_list : (ID.t * Type.t) list -> tval iter : t -> (ID.t -> Type.t -> unit) -> unitval fold : t -> 'a -> ('a -> ID.t -> Type.t -> 'a) -> 'aval is_bool : t -> ID.t -> boolHas the symbol a boolean return sort?
- raises Not_found
if the symbol is not in the signature