Pulselib.PulsePathContext
type t = {
conditions : Pulselib.PulseBasicInterface.ValueHistory.t list;
Each history represents a conditional that is affecting the path currently, with the most recent conditional first. The idea is to add these histories to the histories of all variables and memory locations modified while under the influence of these conditionals.
*)timestamp : Pulselib.PulseBasicInterface.Timestamp.t;
step number in an intra-procedural analysis
*)}
include Ppx_compare_lib.Comparable.S with type t := t
val compare : t Base__Ppx_compare_lib.compare
include Ppx_compare_lib.Equal.S with type t := t
val equal : t Base__Ppx_compare_lib.equal
include Absint.AbstractDomain.Disjunct with type t := t
include Absint.AbstractDomain.Comparable with type t := t
include IStdlib.PrettyPrintable.PrintableType with type t := t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
equal_fast x y
must imply x <=> y
; it's a good idea for this function to be "fast", e.g. not depend on the size of its input
val is_normal : t -> bool
test if the abstract state represents exactly concrete states
val is_exceptional : t -> bool
test if the abstract state represents exactly exceptional concrete states
val is_executable : t -> bool
test if the abstract state represents executable states, e.g. ContinueProgram
or ExceptionRaised
.
val initial : t