val equal : t -> t -> boolval compare : t -> t -> intval name : unit -> stringval arbitrary : unit -> t QCheck.arbitraryval string_of : t -> stringval string_of_key : k -> stringval string_of_record : r -> stringval map : (r -> r) -> t -> tval filter : (r -> bool) -> t -> tval set_key : k -> t -> tval set_state : s -> t -> tval remove_state : s -> t -> tval length : t -> int * intval must : (r -> bool) -> t -> boolval may : (r -> bool) -> t -> boolval in_state : s -> r -> boolval get_record : t -> r option