Goblint_lib.AnalysesAnalysis specification signatures.
module M = MessagesAnalysis starts from lists of functions: start functions, exit functions, and * other functions.
module Var : sig ... endmodule VarF (LD : Printable.S) : sig ... endmodule type SpecSysVar = sig ... endmodule GVarF (V : SpecSysVar) : sig ... endmodule GVarFC (V : SpecSysVar) (C : Printable.S) : sig ... endmodule GVarG (G : Lattice.S) (C : Printable.S) : sig ... endtype ('d, 'g, 'c, 'v) man = {ask : 'a. 'a Queries.t -> 'a Queries.result;emit : Events.t -> unit;node : MyCFG.node;prev_node : MyCFG.node;control_context : unit -> ControlSpecC.t;top-level Control Spec context, raises Man_failure if missing
context : unit -> 'c;current Spec context, raises Man_failure if missing
edge : MyCFG.edge;local : 'd;global : 'v -> 'g;spawn : ?multiple:bool ->
GoblintCil.lval option ->
GoblintCil.varinfo ->
GoblintCil.exp list ->
unit;split : 'd -> Events.t list -> unit;sideg : 'v -> 'g -> unit;}Man(ager) is passed to transfer functions and offers access to various facilities, e.g., to access the local state, the context, read values from globals, side-effect values to globals and trigger events.
val ask_of_man : ('a, 'b, 'c, 'd) man -> Queries.askConvert man to Queries.ask.
module type Spec = sig ... endmodule type MCPA = sig ... endmodule type MCPSpec = sig ... endtype increment_data = {server : bool;solver_data : Stdlib.Obj.t;changes : CompareCIL.change_info;restarting : Goblint_constraint.VarQuery.t list;}module StdV : sig ... endmodule UnitV : sig ... endmodule VarinfoV : sig ... endmodule EmptyV : sig ... endmodule UnitA : sig ... endmodule EmptyP : sig ... endmodule UnitP : sig ... endmodule DefaultSpec : sig ... endRelatively safe default implementations of some boring Spec functions.
module IdentitySpec : sig ... endmodule IdentityUnitContextsSpec : sig ... endmodule ValueContexts (D : Lattice.S) : sig ... endmodule type SpecSys = sig ... endmodule type SpecSysSol = sig ... end