Module TOPLlib.Topl

val automaton : unit -> ToplAutomaton.t

Return the automaton representing all Topl properties.

val is_shallow_active : unit -> bool

Return whether the Topl based on Sil instrumentation is active.

val is_deep_active : unit -> bool

Return whether PulseTopl is active.

val get_proc_attr : IR.Procname.t -> IR.ProcAttributes.t option

get_proc_attr proc_name returns the attributes of get_proc_desc proc_name

val get_proc_desc : IR.Procname.t -> IR.Procdesc.t option

Return a synthesized Procdesc.t, when it corresponds to instrumentation for a TOPL property.

val sourcefile : unit -> IBase.SourceFile.t

The (fake) sourcefile in which synthesized code resides. This function has a side-effect, because that's how SourceFile works, so do NOT call when Topl is inactive.

val cfg : unit -> IR.Cfg.t

The CFG of the synthesized code. This function has a side-effect, because that's how Cfg works, so do NOT call when Topl is inactive.

type 'summary analysis = 'summary Absint.InterproceduralAnalysis.t -> 'summary option
type 'summary postprocess = 'summary Absint.InterproceduralAnalysis.t -> 'summary -> unit
type 'summary analysis_transformer = 'summary analysis -> 'summary analysis
val analyze_with : 'summary postprocess -> 'summary analysis_transformer

analyze_with analyze postprocess analysis_data calls analyze and then postprocess on analysis_data

val analyze_with_biabduction : Biabduction.BiabductionSummary.t analysis_transformer

Run biabduction with Topl instrumentation if active. Inserts calls to the TOPL automaton. Mutates the arguments: it is the caller's responsibility to instrument procedures at most once.