Module Pulselib.PulseTopl
- type value- = PulseAbstractValue.t
- type event- =- |- ArrayWrite of- {- aw_array : value;- aw_index : value;- }- |- Call of- {- return : value option;- arguments : value list;- procname : IR.Procname.t;- }
- type state
- val start : unit -> state
- Return the initial state of - Topl.automaton ().
- val small_step : IBase.Location.t -> PulsePathCondition.t -> event -> state -> state
- val large_step : call_location:IBase.Location.t -> callee_proc_name:IR.Procname.t -> substitution:(value * PulseValueHistory.t) Pulselib.PulseAbstractValue.Map.t -> condition:PulsePathCondition.t -> callee_prepost:state -> state -> state
- large_step ~substitution ~condition state ~callee_prepostupdates- stateaccording to- callee_prepost. The abstract values in- conditionand- stateare in one scope, and those in- callee_prepostin another scope: the- substitutionmaps from the callee scope to the condition&state scope.
- val filter_for_summary : PulsePathCondition.t -> state -> state
- Remove from state those parts that are inconsistent with the path condition. (We do a cheap check to not introduce inconsistent Topl states, but they mey become inconsistent because the program path condition is updated later.) 
- val simplify : keep:Pulselib.PulseAbstractValue.Set.t -> state -> state
- Keep only a subset of abstract values. This is used for extracting summaries. 
- val report_errors : IR.Procdesc.t -> Absint.Errlog.t -> state -> unit
- Calls - Reporting.log_issuewith error traces, if any.
- val pp_state : Stdlib.Format.formatter -> state -> unit