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
type elm = Location.LSet.t
val set_lower : elm -> t -> unit
val set_upper : elm -> t -> unit
val set_eq : elm -> t -> unit
val subset : t -> t -> unit
val get_lower : t -> elm option
val get_upper : t -> elm option
val string_of_img : t -> string
val get_exact : t -> elm option
val string_of_with_img : t -> string
val set_neg : elm -> t -> unit
val disjoint : t -> t -> unit
val get_neg : t -> elm option
val lower_one_element :
?nothing:(unit -> unit) ->
?exact:(Location.Loc.t -> unit) -> ?tomuch:(unit -> unit) -> t -> unit
val lower_iter : (Location.Loc.t -> unit) -> t -> unit
val upper_iter : (Location.Loc.t -> unit) -> t -> unit
val is_one_possible : t -> bool
val equal_possible : t -> t -> bool
val equal_possible_lset : t -> Location.LSet.t -> bool
val subset_possible : t -> t -> bool
val subset_possible_lset : t -> Location.LSet.t -> bool
val choose_lower : t -> Location.Loc.t option
val set_upper_for_all : Location.LSet.t -> unit
end