Module Pulselib.PulseBaseDomain
type t={heap : PulseBaseMemory.t;stack : PulseBaseStack.t;attrs : PulseBaseAddressAttributes.t;}
type cell= PulseBaseMemory.Edges.t * PulseBasicInterface.Attributes.t
val empty : tval reachable_addresses : t -> Pulselib.PulseBasicInterface.AbstractValue.Set.tcompute the set of abstract addresses that are "used" in the abstract state, i.e. reachable from the stack variables
val reachable_addresses_from : PulseBasicInterface.AbstractValue.t list -> t -> Pulselib.PulseBasicInterface.AbstractValue.Set.tcompute the set of abstract addresses that are reachable from given abstract addresses
val empty_mapping : mapping
type isograph_relation=|NotIsomorphicno mapping was found that can make LHS the same as the RHS
|IsomorphicUpTo of mappingmapping(lhs)is isomorphic torhs
val isograph_map : lhs:t -> rhs:t -> mapping -> isograph_relationval is_isograph : lhs:t -> rhs:t -> mapping -> boolval find_cell_opt : PulseBasicInterface.AbstractValue.t -> t -> cell optionval pp : F.formatter -> t -> unitval subst_var : (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.AbstractValue.t) -> t -> t PulseBasicInterface.SatUnsat.t