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