sig
type t = Shostak of Th.shostak | Can of Th.can | Uninterpreted
and shostak = LA | P | BV | COP | SET | APP
and can = NL | ARR
val la : Th.t
val p : Th.t
val bv : Th.t
val cop : Th.t
val nl : Th.t
val app : Th.t
val arr : Th.t
val u : Th.t
val set : Th.t
val to_string : Th.t -> string
val of_string : string -> Th.t
val fold : (Th.t -> 'a -> 'a) -> 'a -> 'a
val iter : (Th.t -> unit) -> unit
val for_all : (Th.t -> bool) -> bool
val exists : (Th.t -> bool) -> bool
val for_all_but : Th.t -> (Th.t -> bool) -> bool
val exists_but : Th.t -> (Th.t -> bool) -> bool
val is_shostak : Th.t -> bool
val is_can : Th.t -> bool
val is_uninterpreted : Th.t -> bool
val inj : Th.t -> Th.t option
val is_none : Th.t option -> bool
val out : Th.t option -> Th.t
val pp : Th.t option Pretty.printer
val mem : Th.t -> Th.t list -> bool
module Set :
sig
type elt = t
and t
val empty : t
val is_empty : t -> bool
val mem : elt -> t -> bool
val add : elt -> t -> t
val singleton : elt -> t
val remove : elt -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val iter : (elt -> unit) -> t -> unit
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val filter : (elt -> bool) -> t -> t
val partition : (elt -> bool) -> t -> t * t
val cardinal : t -> int
val elements : t -> elt list
val min_elt : t -> elt
val max_elt : t -> elt
val choose : t -> elt
end
end