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