Module Cubetrie (.ml)

module Cubetrie: sig .. end

Trie structure for cubes sets

type 'a t 

Trie, mapping sets of atoms (i.e. cubes) to values of type 'a

val empty : 'a t

The empty trie.

val is_empty : 'a t -> bool

Test emptyness of a trie

val add : Types.Atom.t list -> 'a -> 'a t -> 'a t

Add a mapping cube->v to trie

val add_force : Types.Atom.t list -> 'a -> 'a t -> 'a t

Add a mapping cube->v to trie without checking for subsomption

val add_array : Types.ArrayAtom.t -> 'a -> 'a t -> 'a t

Add a mapping cube->v to trie

val add_array_force : Types.ArrayAtom.t -> 'a -> 'a t -> 'a t

Add a mapping cube->v to trie without checking for subsomption

val mem : Types.Atom.t list -> Node.t t -> int list option

Is cube subsumed by some cube in the trie?

val mem_array : Types.ArrayAtom.t -> Node.t t -> int list option

Is cube subsumed by some cube in the trie?

val mem_array_poly : Types.ArrayAtom.t -> 'a t -> bool

Is cube subsumed by some cube in the trie?

val iter : ('a -> unit) -> 'a t -> unit

Apply f to all values mapped to in the trie.

val fold : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b

fold f to all values mapped to in the trie.

val delete : ('a -> bool) -> 'a t -> 'a t

Delete all values which satisfy the predicate p

val iter_subsumed : ('a -> unit) -> Types.Atom.t list -> 'a t -> unit

Apply f to all values whose keys (cubes) are subsumed by the given cube.

val all_vals : 'a t -> 'a list

List of all values mapped by the trie

val consistent : Types.Atom.t list -> 'a t -> 'a list

All values whose keys (cubes) are not inconsistent with the given cube.

val add_and_resolve : Node.t -> Node.t t -> Node.t t
val delete_subsumed : ?cpt:int Pervasives.ref -> Node.t -> Node.t t -> Node.t t

Delete from the trie nodes that are subsumed by the first arguments

val add_node : Node.t -> Node.t t -> Node.t t

Add a node in the trie