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 -> VCS.prover -> VCS.resultval get_results : t -> (VCS.prover * 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.tProver Interface
val prove : t -> ?config:VCS.config -> ?mode:VCS.mode -> ?start:(t -> unit) -> ?progress:(t -> string -> unit) -> ?result:(t -> VCS.prover -> VCS.result -> unit) -> VCS.prover -> 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 -> VCS.prover -> VCS.result -> unit) -> ?success:(t -> VCS.prover option -> unit) -> ?pool:Frama_c_kernel.Task.pool -> (VCS.mode * VCS.prover) 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 -> ?tip:bool -> t Frama_c_kernel.Bag.t -> unitRun the provers with the command-line interface. If ~provers is set, it is used for computing the list of provers to spawn. If ~tip is set, it is used to compute the script execution mode.
