Module AbstractDomain.FiniteMultiMap

Parameters

Signature

include WithBottom
include S
include Comparable
include IStdlib.PrettyPrintable.PrintableType
type t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val leq : lhs:t -> rhs:t -> bool

the implication relation: lhs <= rhs means lhs |- rhs

val join : t -> t -> t
val widen : prev:t -> next:t -> num_iters:int -> t
val bottom : t

The bottom value of the domain.

val is_bottom : t -> bool

Return true if this is the bottom value

val singleton : Key.t -> Value.t -> t
val add : Key.t -> Value.t -> t -> t
val set_to_single_value : Key.t -> Value.t -> t -> t

set_to_single_value k v m is equivalent (but faster) to add k v (remove_all k m).

val mem : Key.t -> t -> bool
val remove : Key.t -> Value.t -> t -> t
val remove_all : Key.t -> t -> t
val find_all : Key.t -> t -> Value.t list
val find_fold : (Value.t -> 'a -> 'a) -> Key.t -> t -> 'a -> 'a

Fold over the values associated to one key

val get_all_keys : t -> Key.t list
val exists : (Key.t -> Value.t -> bool) -> t -> bool
val fold : (Key.t -> Value.t -> 'a -> 'a) -> t -> 'a -> 'a
val filter : (Key.t -> Value.t -> bool) -> t -> t