Module Pulselib__PulseExecutionDomain
module AbductiveDomain = Pulselib.PulseAbductiveDomain
module LatentIssue = Pulselib.PulseLatentIssue
type 'abductive_domain_t base_t
=
|
ContinueProgram of 'abductive_domain_t
represents the state at the program point
|
ExitProgram of AbductiveDomain.summary
represents the state originating at exit/divergence.
|
AbortProgram of AbductiveDomain.summary
represents the state at the program point that caused an error
|
LatentAbortProgram of
{
astate : AbductiveDomain.summary;
latent_issue : LatentIssue.t;
}
this path leads to an error but we don't have conclusive enough data to report it yet
|
ISLLatentMemoryError of AbductiveDomain.summary
represents the state at the program point that might cause an error; used for
Config
.pulse_isltype t
= AbductiveDomain.t base_t
include Absint.AbstractDomain.NoJoin with type t := t
include IStdlib.PrettyPrintable.PrintableType
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val continue : AbductiveDomain.t -> t
val mk_initial : IR.Tenv.t -> IR.Procdesc.t -> t
val is_unsat_cheap : t -> bool
see
PulsePathCondition
.is_unsat_cheap
type summary
= AbductiveDomain.summary base_t
val summary_of_posts : IR.Tenv.t -> IR.Procdesc.t -> t list -> summary list
val force_exit_program : IR.Tenv.t -> IR.Procdesc.t -> t -> t option