Module Register


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

module W: Fol_why
module Q: Fol_coq
module E91: Fol_ergo.E91
module E92: Fol_ergo.E92
module F: Fol_formula
module D: Datalib.Create(F)
module A: Mint_natural.Create(D)
module R: Mfloat_natural.Create(D)
module Hoare: Hoare_mem.Create(D)(A)(R)
module Store: Store_mem.Create(D)(A)(R)
module Runtime: Runtime_mem.Create(D)(A)(R)
module WP_Hoare: CfgProof.Create(Hoare)(W)(Q)(E91)(E92)(Fol_split)(sig
val shared : string
val context : string
val updater : string
val name : string
end)
module WP_Caveat: CfgProof.Create(Caveat_mem.Safe.WP)(Caveat_mem.Safe.Why)(Caveat_mem.Safe.Coq)(Caveat_mem.Safe.Ergo91)(Caveat_mem.Safe.Ergo92)(Caveat_mem.Safe.Splitter)(sig
val shared : string
val context : string
val updater : string
val name : string
end)
module WP_UnsafeCaveat: CfgProof.Create(Caveat_mem.Unsafe.WP)(Caveat_mem.Unsafe.Why)(Caveat_mem.Unsafe.Coq)(Caveat_mem.Unsafe.Ergo91)(Caveat_mem.Unsafe.Ergo92)(Caveat_mem.Unsafe.Splitter)(sig
val shared : string
val context : string
val updater : string
val name : string
end)
module WP_Store: CfgProof.Create(Store)(W)(Q)(E91)(E92)(Fol_split)(sig
val shared : string
val context : string
val updater : string
val name : string
end)
module WP_Storefun: CfgProof.Create(Funvar_mem.Create(Store))(W)(Q)(E91)(E92)(Fol_split)(sig
val shared : string
val context : string
val updater : string
val name : string
end)
module WP_Runtime: CfgProof.Create(Runtime)(W)(Q)(E91)(E92)(Fol_split)(sig
val shared : string
val context : string
val updater : string
val name : string
end)
module WP_Runtimefun: CfgProof.Create(Funvar_mem.Create(Runtime))(W)(Q)(E91)(E92)(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 : (Kernel_function.t -> unit) -> Kernel_function.t -> unit
val on_all_functions : (Kernel_function.t -> unit) -> unit
val on_function_names : string list -> (Kernel_function.t -> unit) -> unit
val on_function : Kernel_function.t -> (Kernel_function.t -> unit) -> unit
val build_cfg : ?do_dot:Wp_parameters.Dot.t -> Kernel_function.t -> Cil2cfg.t * string option
val dot_lannots : Cil2cfg.t -> WpAnnot.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.assigns -> string list option -> prop 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 -> Wpo.prover -> Wpo.t -> unit
val do_wp_proofs : unit -> unit
val do_wp_proofs_for : Wpo.t Bag.t -> unit
val do_wp_check : Task.server -> Wpo.prover -> 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 option -> prop option -> Wpo.t Bag.t
val wp_compute : Kernel_datatype.Kernel_function.t option ->
string list option -> Property.t option -> unit
val wp_cfg_dot : Kernel_function.t -> string
val cmdline_run : unit -> unit
val wp_compute : Kernel_datatype.Kernel_function.t option ->
string list option -> Property.t option -> unit
val run : unit -> unit
Use options to know what to do
val main : 'a -> unit