Pulselib.PulseBaseStack
module type S = sig ... end
include S
with type value =
Pulselib.PulseBasicInterface.AbstractValue.t
* Pulselib.PulseBasicInterface.ValueHistory.t
include IStdlib.PrettyPrintable.PPMonoMap
with type key = IR.Var.t
with type value =
Pulselib.PulseBasicInterface.AbstractValue.t
* Pulselib.PulseBasicInterface.ValueHistory.t
include IStdlib.PrettyPrintable.MonoMap
with type key = IR.Var.t
with type value =
Pulselib.PulseBasicInterface.AbstractValue.t
* Pulselib.PulseBasicInterface.ValueHistory.t
type key = IR.Var.t
val empty : t
val is_empty : t -> bool
val cardinal : t -> int
val is_singleton_or_more :
t ->
(key * value) IStdlib.IContainer.singleton_or_more
include IStdlib.PrettyPrintable.PrintableType with type t := t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
val yojson_of_t : t -> Yojson.Safe.t
val canonicalize :
get_var_repr:
(Pulselib.PulseBasicInterface.AbstractValue.t ->
Pulselib.PulseBasicInterface.AbstractValue.t) ->
t ->
t Pulselib.PulseBasicInterface.SatUnsat.t
replace each address in the stack by its canonical representative according to the current equality relation, represented by get_var_repr