sig
module Store : Store_intf.STORE
type key
type +'a node
type +'a pomap
type 'a add_find_result =
Found of Store.Ix.t * 'a Pomap_intf.POMAP.node
| Added of Store.Ix.t * 'a Pomap_intf.POMAP.node *
'a Pomap_intf.POMAP.pomap
val empty : 'a Pomap_intf.POMAP.pomap
val singleton : Pomap_intf.POMAP.key -> 'a -> 'a Pomap_intf.POMAP.pomap
val is_empty : 'a Pomap_intf.POMAP.pomap -> bool
val cardinal : 'a Pomap_intf.POMAP.pomap -> int
val add :
Pomap_intf.POMAP.key ->
'a -> 'a Pomap_intf.POMAP.pomap -> 'a Pomap_intf.POMAP.pomap
val add_node :
'a Pomap_intf.POMAP.node ->
'a Pomap_intf.POMAP.pomap -> 'a Pomap_intf.POMAP.pomap
val remove :
Pomap_intf.POMAP.key ->
'a Pomap_intf.POMAP.pomap -> 'a Pomap_intf.POMAP.pomap
val remove_node :
'a Pomap_intf.POMAP.node ->
'a Pomap_intf.POMAP.pomap -> 'a Pomap_intf.POMAP.pomap
val remove_ix :
Store.Ix.t -> 'a Pomap_intf.POMAP.pomap -> 'a Pomap_intf.POMAP.pomap
val take :
Pomap_intf.POMAP.key ->
'a Pomap_intf.POMAP.pomap ->
Store.Ix.t * 'a Pomap_intf.POMAP.node * 'a Pomap_intf.POMAP.pomap
val take_ix :
Store.Ix.t ->
'a Pomap_intf.POMAP.pomap ->
'a Pomap_intf.POMAP.node * 'a Pomap_intf.POMAP.pomap
val add_find :
Pomap_intf.POMAP.key ->
'a -> 'a Pomap_intf.POMAP.pomap -> 'a Pomap_intf.POMAP.add_find_result
val add_fun :
Pomap_intf.POMAP.key ->
'a ->
('a -> 'a) -> 'a Pomap_intf.POMAP.pomap -> 'a Pomap_intf.POMAP.pomap
val mem : Pomap_intf.POMAP.key -> 'a Pomap_intf.POMAP.pomap -> bool
val mem_ix : Store.Ix.t -> 'a Pomap_intf.POMAP.pomap -> bool
val find :
Pomap_intf.POMAP.key ->
'a Pomap_intf.POMAP.pomap -> Store.Ix.t * 'a Pomap_intf.POMAP.node
val find_ix :
Store.Ix.t -> 'a Pomap_intf.POMAP.pomap -> 'a Pomap_intf.POMAP.node
val choose :
'a Pomap_intf.POMAP.pomap -> Store.Ix.t * 'a Pomap_intf.POMAP.node
val filter :
(Store.Ix.t -> 'a Pomap_intf.POMAP.node -> bool) ->
'a Pomap_intf.POMAP.pomap -> 'a Pomap_intf.POMAP.pomap
val partition :
(Store.Ix.t -> 'a Pomap_intf.POMAP.node -> bool) ->
'a Pomap_intf.POMAP.pomap ->
'a Pomap_intf.POMAP.pomap * 'a Pomap_intf.POMAP.pomap
val iter :
('a Pomap_intf.POMAP.node -> unit) -> 'a Pomap_intf.POMAP.pomap -> unit
val iteri :
(Store.Ix.t -> 'a Pomap_intf.POMAP.node -> unit) ->
'a Pomap_intf.POMAP.pomap -> unit
val map :
('a Pomap_intf.POMAP.node -> 'b) ->
'a Pomap_intf.POMAP.pomap -> 'b Pomap_intf.POMAP.pomap
val mapi :
(Store.Ix.t -> 'a Pomap_intf.POMAP.node -> 'b) ->
'a Pomap_intf.POMAP.pomap -> 'b Pomap_intf.POMAP.pomap
val fold :
('a Pomap_intf.POMAP.node -> 'b -> 'b) ->
'a Pomap_intf.POMAP.pomap -> 'b -> 'b
val foldi :
(Store.Ix.t -> 'a Pomap_intf.POMAP.node -> 'b -> 'b) ->
'a Pomap_intf.POMAP.pomap -> 'b -> 'b
val topo_fold :
('a Pomap_intf.POMAP.node -> 'b -> 'b) ->
'a Pomap_intf.POMAP.pomap -> 'b -> 'b
val topo_foldi :
(Store.Ix.t -> 'a Pomap_intf.POMAP.node -> 'b -> 'b) ->
'a Pomap_intf.POMAP.pomap -> 'b -> 'b
val topo_fold_ix :
(Store.Ix.t -> 'b -> 'b) -> 'a Pomap_intf.POMAP.pomap -> 'b -> 'b
val rev_topo_fold :
('a Pomap_intf.POMAP.node -> 'b -> 'b) ->
'a Pomap_intf.POMAP.pomap -> 'b -> 'b
val rev_topo_foldi :
(Store.Ix.t -> 'a Pomap_intf.POMAP.node -> 'b -> 'b) ->
'a Pomap_intf.POMAP.pomap -> 'b -> 'b
val rev_topo_fold_ix :
(Store.Ix.t -> 'b -> 'b) -> 'a Pomap_intf.POMAP.pomap -> 'b -> 'b
val chain_fold :
('a Pomap_intf.POMAP.node list -> 'b -> 'b) ->
'a Pomap_intf.POMAP.pomap -> 'b -> 'b
val chain_foldi :
((Store.Ix.t * 'a Pomap_intf.POMAP.node) list -> 'b -> 'b) ->
'a Pomap_intf.POMAP.pomap -> 'b -> 'b
val rev_chain_fold :
('a Pomap_intf.POMAP.node list -> 'b -> 'b) ->
'a Pomap_intf.POMAP.pomap -> 'b -> 'b
val rev_chain_foldi :
((Store.Ix.t * 'a Pomap_intf.POMAP.node) list -> 'b -> 'b) ->
'a Pomap_intf.POMAP.pomap -> 'b -> 'b
val union :
'a Pomap_intf.POMAP.pomap ->
'a Pomap_intf.POMAP.pomap -> 'a Pomap_intf.POMAP.pomap
val inter :
'a Pomap_intf.POMAP.pomap ->
'a Pomap_intf.POMAP.pomap -> 'a Pomap_intf.POMAP.pomap
val diff :
'a Pomap_intf.POMAP.pomap ->
'a Pomap_intf.POMAP.pomap -> 'a Pomap_intf.POMAP.pomap
val create_node :
Pomap_intf.POMAP.key ->
'a -> Store.Ix.Set.t -> Store.Ix.Set.t -> 'a Pomap_intf.POMAP.node
val get_key : 'a Pomap_intf.POMAP.node -> Pomap_intf.POMAP.key
val get_el : 'a Pomap_intf.POMAP.node -> 'a
val get_sucs : 'a Pomap_intf.POMAP.node -> Store.Ix.Set.t
val get_prds : 'a Pomap_intf.POMAP.node -> Store.Ix.Set.t
val set_key :
'a Pomap_intf.POMAP.node ->
Pomap_intf.POMAP.key -> 'a Pomap_intf.POMAP.node
val set_el : 'a Pomap_intf.POMAP.node -> 'a -> 'a Pomap_intf.POMAP.node
val set_sucs :
'a Pomap_intf.POMAP.node -> Store.Ix.Set.t -> 'a Pomap_intf.POMAP.node
val set_prds :
'a Pomap_intf.POMAP.node -> Store.Ix.Set.t -> 'a Pomap_intf.POMAP.node
val get_nodes :
'a Pomap_intf.POMAP.pomap -> 'a Pomap_intf.POMAP.node Store.t
val get_top : 'a Pomap_intf.POMAP.pomap -> Store.Ix.Set.t
val get_bot : 'a Pomap_intf.POMAP.pomap -> Store.Ix.Set.t
val remove_eq_prds :
('a -> 'a -> bool) ->
'a Pomap_intf.POMAP.pomap -> 'a Pomap_intf.POMAP.pomap
val fold_eq_classes :
('a -> 'a -> bool) ->
('a -> 'a Pomap_intf.POMAP.pomap -> 'b -> 'b) ->
'a Pomap_intf.POMAP.pomap -> 'b -> 'b
val fold_split_eq_classes :
('a -> 'a -> bool) ->
('a -> 'a Pomap_intf.POMAP.pomap -> 'b -> 'b) ->
'a Pomap_intf.POMAP.pomap -> 'b -> 'b
val preorder_eq_classes :
('a -> 'a -> bool) ->
'a Pomap_intf.POMAP.pomap -> 'a Pomap_intf.POMAP.pomap list
val topo_fold_reduced :
('a -> 'a -> bool) ->
('a Pomap_intf.POMAP.node -> 'b -> 'b) ->
'a Pomap_intf.POMAP.pomap -> 'b -> 'b
val unsafe_update :
'a Pomap_intf.POMAP.pomap ->
Store.Ix.t -> 'a Pomap_intf.POMAP.node -> 'a Pomap_intf.POMAP.pomap
val unsafe_set_nodes :
'a Pomap_intf.POMAP.pomap ->
'a Pomap_intf.POMAP.node Store.t -> 'a Pomap_intf.POMAP.pomap
val unsafe_set_top :
'a Pomap_intf.POMAP.pomap -> Store.Ix.Set.t -> 'a Pomap_intf.POMAP.pomap
val unsafe_set_bot :
'a Pomap_intf.POMAP.pomap -> Store.Ix.Set.t -> 'a Pomap_intf.POMAP.pomap
end