type ('a, 'b) init_t = unittype (!'a, !'b) t = ('a * 'b) listval mk : ('a, 'b) init_t -> ('a, 'b) tval map : ('a, 'b) t -> 'a -> 'bval dom : ('a, 'b) t -> 'a listval rng : ('a, 'b) t -> 'b listval in_dom : ('a, 'b) t -> 'a -> boolval in_rng : ('a, 'b) t -> 'b -> boolval inv : ('a, 'b) t -> 'b -> 'a listval add : ('a, 'b) t -> ('a * 'b) -> ('a, 'b) tval rmv : ('a, 'b) t -> 'a -> ('a, 'b) tval remap : ('a, 'b) t -> 'a -> 'b -> ('a, 'b) tval app : ('a -> 'c -> unit) -> ('a, 'c) t -> unitval fold : ('a -> ('b * 'c) -> 'a) -> 'a -> ('b, 'c) t -> 'aval try_find : (('a * 'b) -> 'c) -> ('a, 'b) t -> 'cval filter : (('a * 'b) -> bool) -> ('a, 'b) t -> ('a, 'b) tval toList : ('a, 'b) t -> ('a * 'b) listval ofList : ('a, 'b) init_t -> ('a * 'b) list -> ('a, 'b) tval for_all : ('a -> 'b -> bool) -> ('a, 'b) t -> boolval exists : ('a -> 'b -> bool) -> ('a, 'b) t -> boolval size : ('a, 'b) t -> intval empty : ('a, 'b) t -> boolval clear : ('a, 'b) t -> ('a, 'b) t