Module Checkers.ImpurityDomain

type trace =
| WrittenTo of Pulselib.PulseTrace.t
| Invalid of Pulselib.PulseInvalidation.t * Pulselib.PulseTrace.t
module ModifiedAccess : sig ... end
module ModifiedVarMap : sig ... end
module Exited = Absint.AbstractDomain.BooleanOr
type t = {
modified_params : ModifiedVarMap.t;
modified_globals : ModifiedVarMap.t;
skipped_calls : Pulselib.PulseSkippedCalls.t;
exited : Exited.t;
}
val pure : t
val is_pure : t -> bool
type param_source =
| Formal
| Global
val add_to_errlog : nesting:int -> param_source -> IR.Pvar.t -> ModifiedAccess.t -> Absint.Errlog.loc_trace_elem list -> Absint.Errlog.loc_trace_elem list
val join : t -> t -> t
val get_modified_immutables_opt : IR.Tenv.t -> t -> (ModifiedVarMap.t * ModifiedVarMap.t) option