Module PulseAbductiveDomain.Memory
memory operations like BaseMemory
but that also take care of propagating facts to the precondition
module Access = BaseMemory.Access
module Edges = BaseMemory.Edges
val add_edge : (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t) -> Access.t -> (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t) -> IBase.Location.t -> t -> t
val eval_edge : (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t) -> Access.t -> t -> t * (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t)
eval_edge (addr,hist) access astate
follows the edgeaddr --access--> .
in memory and returns what it points to or creates a fresh value if that edge didn't exist.
val find_opt : PulseBasicInterface.AbstractValue.t -> t -> BaseMemory.Edges.t option
val find_edge_opt : PulseBasicInterface.AbstractValue.t -> Access.t -> t -> (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t) option