Module type DisjointDomain.RepresentativeCongruence

Buckets defined by a coarse projection and a fine congruence. Congruent elements must have the same representative, but not vice versa (Representative would then suffice).

include Representative
include Printable.S
type t
val equal : t -> t -> bool
val hash : t -> int
val compare : t -> t -> int
val show : t -> string
val pretty : unit -> t -> Printable.Pretty.doc
val printXml : 'a BatInnerIO.output -> t -> unit
val name : unit -> string
val to_yojson : t -> Yojson.Safe.t
val tag : t -> int

Unique ID, given by HConsed, for context identification in witness

val arbitrary : unit -> t QCheck.arbitrary
val relift : t -> t
type elt

Type of elements, i.e. the domain of the projection function of_elt.

val of_elt : elt -> t

Projection function.

include Congruence with type elt := elt
val cong : elt -> elt -> bool

Congruence relation on elements.