Module Register


module Register: sig .. end
Use options to know what to do

module F: Fol_formula
module A: Mint_natural.Create(F)
module R: Mfloat_natural.Create(F)
module Hoare: Hoare_mem.Create(F)(A)(R)
module Store: Store_mem.Create(F)(A)(R)
module Runtime: Runtime_mem.Create(F)(A)(R)
module Th: sig .. end
module HW: Fol_why.EWhy(Th)
module HQ: Fol_coq.ECoq(Th)
module HE: Fol_ergo.Make(Th)
module Ts: sig .. end
module SW: Fol_why.EWhy(Ts)
module SQ: Fol_coq.ECoq(Ts)
module SE: Fol_ergo.Make(Ts)
module Tr: sig .. end
module RW: Fol_why.EWhy(Tr)
module RQ: Fol_coq.ECoq(Tr)
module RE: Fol_ergo.Make(Tr)
module MCriteria: sig .. end
module HCriteria: sig .. end
module WP_Hoare: CfgProof.Create(Funvar_mem.Create(HCriteria)(Hoare))(HW)(HQ)(HE)(Fol_split)(sig
val shared : string
val context : string
val updater : string
val name : string
end)
module WP_Store: CfgProof.Create(Store)(SW)(SQ)(SE)(Fol_split)(sig
val shared : string
val context : string
val updater : string
val name : string
end)
module WP_Storefun: CfgProof.Create(Funvar_mem.Create(MCriteria)(Store))(SW)(SQ)(SE)(Fol_split)(sig
val shared : string
val context : string
val updater : string
val name : string
end)
module WP_Runtime: CfgProof.Create(Runtime)(RW)(RQ)(RE)(Fol_split)(sig
val shared : string
val context : string
val updater : string
val name : string
end)
module WP_Runtimefun: CfgProof.Create(Funvar_mem.Create(MCriteria)(Runtime))(RW)(RQ)(RE)(Fol_split)(sig
val shared : string
val context : string
val updater : string
val name : string
end)

type feature =
| NA
| Yes
| No

type wp_model = {
   wp_name : string;
   wp_qed : feature;
   wp_logicvar : feature;
   wp_method : unit -> Mcfg.assigns_method;
   wp_computer : unit -> CfgProof.computer;
   wp_altmodel : (unit -> CfgProof.computer) option;
}
val wp_model : string -> wp_model
val option : (unit -> bool) -> feature -> bool

type 'a computing_methods =
| OneforBoth of 'a
| NonAssigns of 'a
| OneforEach of 'a * 'a
val dispatch : wp_model list -> CfgProof.computer computing_methods
val computer : Wp_parameters.model_kind ->
WP_Hoare.computer computing_methods
val on_definition : (Cil_types.kernel_function -> 'a) -> Cil_types.kernel_function -> 'a
val on_all_functions : (Cil_types.kernel_function -> unit) -> unit
val on_function_names : string list -> (Cil_types.kernel_function -> unit) -> unit
val on_function : Cil_types.kernel_function -> (Cil_types.kernel_function -> 'a) -> 'a
val dot_lannots : WpStrategy.strategy list -> unit

type prop =
| NamedProp of string
| IdProp of Property.t
val do_compute : Wpo.t Bag.t Pervasives.ref ->
CfgProof.computer ->
((Kernel_function.t -> unit) -> 'a) ->
WpAnnot.asked_assigns ->
string list -> prop option -> Cil_types.stmt option -> unit
val do_wp_print : unit -> unit
val do_wp_print_for : Wpo.t Bag.t -> unit
val do_wpo_feedback : Wpo.t -> Wpo.prover -> Wpo.result -> unit
val do_wp_proof : Task.server -> bool -> Wpo.prover -> Wpo.t -> unit
val do_wp_proofs : unit -> unit
val do_wp_proofs_for : Wpo.t Bag.t -> unit
val do_check_feedback : Wpo.t -> Wpo.language -> Wpo.result -> unit
val do_wp_check : Task.server -> Wpo.language -> Wpo.t -> unit
val do_wp_checks : unit -> unit
val do_wp_checks_for : Wpo.t Bag.t -> unit
val do_wp_passes : ((Kernel_function.t -> unit) -> 'a) ->
string list -> prop option -> Cil_types.stmt option -> Wpo.t Bag.t
val generic_compute : Kernel_function.t option ->
string list -> prop option -> Cil_types.stmt option -> unit
val wp_compute : Kernel_function.t option ->
Datatype.String.t list -> Property.t option -> unit
val wp_compute_call : kf_caller:Kernel_function.t -> kf_called:'a -> Cil_types.stmt -> unit
val cmdline_run : unit -> unit
val property_of_id : WpPropId.Prop_id_datatype.t -> Property.t
val wp_compute : Kernel_function.t option ->
Datatype.String.t list -> Property.t option -> unit
val run : unit -> unit
Use options to know what to do
val do_finally : (unit -> 'a) -> (unit -> 'b) -> unit -> unit
val tracelog : unit -> unit
val (&&&) : (unit -> 'a) -> (unit -> 'b) -> unit -> unit
val main : unit -> unit