Frama-C API - VC
WP Proof Obligation Generator and Management
Proof Obligations
val get_id : t -> stringval get_model : t -> WpContext.modelval get_scope : t -> WpContext.scopeval get_context : t -> WpContext.contextval get_description : t -> stringval get_property : t -> Frama_c_kernel.Property.tval get_result : t -> Prover.t -> VCS.resultval get_results : t -> (Prover.t * VCS.result) listval get_sequent : t -> Conditions.sequentval get_formula : t -> Lang.F.predval is_trivial : t -> boolval is_valid : t -> boolOne prover at least returns a valid verdict.
val has_unknown : t -> boolAt least one non-valid verdict.
val is_passed : t -> boolSame as is_valid for non-smoke tests. For smoke-tests, same as is_unknown.
Database
Notice that a property or a function have no proof obligation until you explicitly generate them via the generate_xxx functions below.
val proof : Frama_c_kernel.Property.t -> t listList of proof obligations computed for a given property. Might be empty if you don't have used one of the generators below.
val remove : Frama_c_kernel.Property.t -> unitval iter_ip : (t -> unit) -> Frama_c_kernel.Property.t -> unitval iter_kf : (t -> unit) -> ?bhv:string list -> Frama_c_kernel.Kernel_function.t -> unitGenerators
The generated VCs are also added to the database, so they can be accessed later. The default value for model is what has been given on the command line (-wp-model option)
val generate_ip : ?model:string -> Frama_c_kernel.Property.t -> t Frama_c_kernel.Bag.tval generate_kf : ?model:string -> ?bhv:string list -> ?prop:string list -> Frama_c_kernel.Kernel_function.t -> t Frama_c_kernel.Bag.tval generate_call : ?model:string -> Frama_c_kernel.Cil_types.stmt -> t Frama_c_kernel.Bag.tval generate_all : ?model:string -> ?bhv:string list -> ?prop:string list -> unit -> t Frama_c_kernel.Bag.tProver Interface
val prove : t -> ?config:VCS.config -> ?mode:Prover.InteractiveMode.t -> ?start:(t -> unit) -> ?progress:(t -> string -> unit) -> ?result:(t -> Prover.t -> VCS.result -> unit) -> Prover.t -> bool Frama_c_kernel.Task.taskReturns a ready-to-schedule task.
val spawn : t -> ?config:VCS.config -> ?start:(t -> unit) -> ?progress:(t -> string -> unit) -> ?result:(t -> Prover.t -> VCS.result -> unit) -> ?success:(t -> Prover.t option -> unit) -> (Prover.InteractiveMode.t * Prover.t) list -> unitSame as prove but schedule the tasks into the global server returned by server function below.
The first succeeding prover cancels the other ones.
val server : ?procs:int -> unit -> Frama_c_kernel.Task.serverDefault number of parallel tasks is given by -wp-par command-line option. The returned server is global to Frama-C, but the number of parallel task allowed will be updated to fit the ~procs or command-line options.
val command : ?provers:Why3.Whyconf.prover list -> ?interactive_mode:Prover.InteractiveMode.t -> ?scripts:bool -> ?strategies:bool -> t Frama_c_kernel.Bag.t -> unitRun proofs on the provided bag of WPOs. The defaults for the different optional variables are obtained from the current configuration status. That is, the command line when in CLI mode, or what has been configured so far by the user in the GUI mode.
