functor (Item : Item) ->
functor (Desc : Desc) ->
sig
type item = Item.t
type descriptor = Desc.descriptor
type accumulator = Desc.accumulator
type state
val initial : state
val representative : item -> state -> item
val equivalent : item -> item -> state -> bool
val descriptor : item -> state -> descriptor
val set : item -> descriptor -> state -> state
val union : item -> item -> state -> accumulator -> state * accumulator
val domain : state -> item list
end