Wp.VCWP Proof Obligation Generator and Management
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.
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 ->
unitThe 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 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.