Module PulseAbductiveDomain.Stack

Safe version of PulseBaseStack

val add : IR.Var.t -> PulseBaseStack.value -> t -> t
val remove_vars : IR.Var.t list -> t -> t
val fold : ?pre_or_post:[ `Pre | `Post ] -> (IR.Var.t -> PulseBaseStack.value -> 'a -> 'a) -> t -> 'a -> 'a

pre_or_post defaults to `Post

val find_opt : ?pre_or_post:[ `Pre | `Post ] -> IR.Var.t -> t -> PulseBaseStack.value option

return the value of the variable in the stack or create a fresh one if needed

val mem : [ `Pre | `Post ] -> IR.Var.t -> t -> bool
val exists : (IR.Var.t -> PulseBaseStack.value -> bool) -> t -> bool
val keys : t -> IR.Var.t list
val fold_merge : [ `Pre | `Post ] -> t -> t -> init:'acc -> f: ('acc -> IR.Var.t -> PulseBaseStack.value option -> PulseBaseStack.value option -> 'acc * PulseBaseStack.value option) -> 'acc * PulseBaseStack.t