Pulselib.PulseExecutionDomainmodule AbductiveDomain = PulseAbductiveDomainmodule DecompilerExpr = PulseDecompilerExprmodule Diagnostic = PulseDiagnosticmodule LatentIssue = PulseLatentIssuetype stopped_execution = | ExitProgram of AbductiveDomain.Summary.t| AbortProgram of {astate : AbductiveDomain.Summary.t;diagnostic : Diagnostic.t;trace_to_issue : Pulselib.PulseBasicInterface.Trace.t;}| LatentAbortProgram of {astate : AbductiveDomain.Summary.t;latent_issue : LatentIssue.t;}| LatentInvalidAccess of {astate : AbductiveDomain.Summary.t;address : DecompilerExpr.t;must_be_valid : Pulselib.PulseBasicInterface.Trace.t
* Pulselib.PulseBasicInterface.Invalidation.must_be_valid_reason
option;calling_context : (Pulselib.PulseBasicInterface.CallEvent.t * IBase.Location.t)
list;}| LatentSpecializedTypeIssue of {astate : AbductiveDomain.Summary.t;specialized_type : IR.Typ.Name.t;trace : Pulselib.PulseBasicInterface.Trace.t;}type 'abductive_domain_t base_t = | ContinueProgram of 'abductive_domain_t| ExceptionRaised of 'abductive_domain_t| Stopped of stopped_executiontype t = AbductiveDomain.t base_tinclude Absint.AbstractDomain.Disjunct with type t := tinclude Absint.AbstractDomain.Comparable with type t := tinclude IStdlib.PrettyPrintable.PrintableType with type t := tequal_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 -> booltest if the abstract state represents exactly concrete states
val is_exceptional : t -> booltest if the abstract state represents exactly exceptional concrete states
val is_executable : t -> booltest if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.
convert all exceptional states into normal states (used when reaching a handler)
val is_active_loop : t -> IR.Procdesc.Node.id optiontest if the abstract state is a loop invariant under inference and return the corresponding loop header id
val pp_with_kind :
IStdlib.Pp.print_kind ->
PulsePathContext.t option ->
F.formatter ->
t ->
unitval pp : F.formatter -> t -> unitval continue : AbductiveDomain.t -> tval summary_of_stopped_execution :
stopped_execution ->
AbductiveDomain.Summary.ttype summary = AbductiveDomain.Summary.t base_tval yojson_of_summary : summary -> Ppx_yojson_conv_lib.Yojson.Safe.tval pp_summary : IStdlib.Pp.print_kind -> F.formatter -> summary -> unitval to_name : 'a base_t -> string