val pretty : Stdlib.Format.formatter -> tag -> unit
val singleton : 'a -> 'a t
val apply : tag -> ('a list -> 'a) -> 'a t -> 'a t
val union : ('a -> 'a -> 'a) -> 'a t -> 'a t -> 'a t
val merge :
left:('a -> 'c) ->
both:('a -> 'b -> 'c) ->
right:('b -> 'c) ->
'a t ->
'b t ->
'c t
val merge_all : ('a list -> 'a) -> 'a t list -> 'a t
val unmark : ('a list -> 'a) -> 'a t -> 'a t
val map : ('a -> 'b) -> 'a t -> 'b t
val iter : (tag list -> 'a -> unit) -> 'a t -> unit
val fold : (tag list -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val exists : ('a -> bool) -> 'a t -> bool
val for_all : ('a -> bool) -> 'a t -> bool
val filter : ('a -> bool) -> 'a t -> 'a t