sig
type obs
type t
val create : unit -> t
val compare : t -> t -> int
val total_ord : t -> t -> int
val add_alias : t -> t -> unit
val do_normalize : t -> unit
val add_observer : obs -> t -> unit
val remove_observer : obs -> t -> unit
val string_of : t -> string
val reset : unit -> unit
val get_all_ts : unit -> t list
type img
module I : sig type key type img end
val domain : t -> I.key list
val find' : I.key -> t -> I.img option
val find_or_add : create:(unit -> I.img) -> key:I.key -> map:t -> I.img
val iter : (I.key -> I.img -> unit) -> t -> unit
val fold : (I.key -> I.img -> 'a -> 'a) -> t -> 'a -> 'a
val make_write_equal :
(I.key -> I.key -> int) ->
(I.img -> I.img -> unit) -> t -> t -> I.key -> unit
val string_of_map : t -> string
val string_of_with_img : t -> string
type domain_var
val get_domain_var : t -> MapVar.S.domain_var
end