Clause.ClauseTrieA trie of literals
type key = Term.t listType of keys in the trie
val empty : 'a tThe empty trie
val is_empty : 'a t -> boolReturn true if the trie is empty
Bind a value to the key in the trie
Overwrite if the value if the leaf already exists, fail if the sequence of keys is a prefix of a previous sequence, or if a previous sequence is a prefix of the given sequence.
Reduce trie to a value by applying the function to all values
Return true if the given predicate evaluates to true for all key value pairs in the trie
Return true if there is a key value pair in the trie for which the given predicate evaluates to true
Return a trie that only contains the key value pairs that satisfy the predicate
val cardinal : 'a t -> intReturn the number of bindings in the trie
Return an association list of key to bindings in the trie
The keys are returned in lexicographic order.
Return a new trie with the function applied to the values
The key is given as the first argument to the function.
Return true if there is a subtrie starting at the given key prefix
val values : 'a t -> 'a listReturn the values in the trie
The values are returned in lexicographic order.
Fold over two tries with identical keys
fold2 f t1 t2 a applies f to each pair of values in of t1 and t2 that have identical keys. The keys are presented in lexicographic order. Raise exception Invalid_argument "Trie.fold2" if the sets of keys the trie are not equal
Map over two tries with identical keys
map2 f t1 t2 applies f to each pair of values in of t1 and t2 that have identical keys and produces a new trie from the result. The keys are presented in lexicographic order. Raise exception Invalid_argument "Trie.map2" if the sets of keys the trie are not equal
Iterate over two tries with identical keys
iter2 f t1 t2 applies the unit valued function f to each pair of values in of t1 and t2 that have identical keys. The keys are presented in lexicographic order. Raise exception Invalid_argument "Trie.iter2" if the sets of keys the trie are not equal.
Check if all pairs of bindings in the trie satisfy the predicate
for_all2 p t1 t2 returns true if p evaluates to true for all pairs of bindings in t1 and t2 with identical keys. Raise exception Invalid_argument "Trie.for_all2" if the sets of keys the trie are not equal.
Check if there is a binding in the trie that satisfies the predicate
exists2 p t1 t2 returns true if p evaluates to true for at least one pair of bindings with identical keys in t1 andt2. Raise exception Invalid_argument "Trie.exists2" if the sets of keys the trie are not equal.
Return a new trie containing only entries with keys that are not subsets of the given key
subsume t k assumes that all keys in the trie t, and the key k are sorted and do not contain duplicates. It returns a new trie with all entries for keys that are subsets of k removed.
Return true if there is a key in the trie such that all elements of that key are in the given key.
is_subsumed t k assumes that all keys in the trie t, and the key k are sorted and do not contain duplicates.
val pp_print_trie :
(Stdlib.Format.formatter -> (key * 'a) -> unit) ->
(unit, Stdlib.Format.formatter, unit) Stdlib.format ->
Stdlib.Format.formatter ->
'a t ->
unitPretty-print bindings in the trie with a printer for key and value pairs
pp_print_trie f s p t prints to the formatter p all bindings of the trie in lexicographic order of the keys with the printer f for key and value pairs. Each binding is separated by the format string s.