Module Register.M1


module M1: Calculus.Moblig(M1_simple)

val model_name : string
type t_env = W.t_env 
val new_env : unit -> W.t_env
type t_prop = (string * W.t_prop) list * (WpAnnot.prop_kind * W.t_prop) list 
list_oblig + (goal_name, predicate) list
val pretty : Format.formatter -> 'a * (WpAnnot.prop_kind * W.t_prop) list -> unit
val empty_goals : 'a list
val ptrue : 'a list * 'b list
val map_named_prop : ('a -> 'b) -> ('c * 'a) list -> ('c * 'b) list
val sort_named_prop : String.t * 'a -> String.t * 'b -> int
val sort_id_prop : WpAnnot.prop_kind * 'a -> WpAnnot.prop_kind * 'b -> int
val merge : ('a -> 'a -> int) -> 'a list -> 'a list -> 'a list
val merge_named_prop : (String.t * W.t_prop) list ->
(String.t * W.t_prop) list -> (String.t * W.t_prop) list
val add_named_prop : String.t * W.t_prop ->
(String.t * W.t_prop) list -> (String.t * W.t_prop) list
val merge_id_prop : (WpAnnot.prop_kind * '_a) list ->
(WpAnnot.prop_kind * '_a) list -> (WpAnnot.prop_kind * '_a) list
val add_id_prop : WpAnnot.prop_kind * '_a ->
(WpAnnot.prop_kind * '_a) list -> (WpAnnot.prop_kind * '_a) list
val add_hyp : Db_types.kernel_function ->
W.t_env ->
WpAnnot.prop_kind ->
Cil_types.predicate Cil_types.named ->
'a * ('b * W.t_prop) list -> 'a * ('b * W.t_prop) list
val add_goal : Db_types.kernel_function ->
W.t_env ->
WpAnnot.prop_kind ->
Cil_types.predicate Cil_types.named ->
'a * (WpAnnot.prop_kind * W.t_prop) list ->
'a * (WpAnnot.prop_kind * W.t_prop) list
val quantify_at_vars : 'a -> 'b -> 'c -> 'd
val process_at_vars : W.t_env ->
Cil_types.logic_label ->
('a * W.t_prop) list * ('b * W.t_prop) list ->
('a * W.t_prop) list * ('b * W.t_prop) list
val wp_loop : string ->
Cil_types.identified_term Cil_types.assigns list ->
(String.t * W.t_prop) list * (WpAnnot.prop_kind * W.t_prop) list ->
(String.t * W.t_prop) list * (WpAnnot.prop_kind * W.t_prop) list
val assign : Cil_types.lval ->
Cil_types.exp -> 'a * ('b * W.t_prop) list -> 'a * ('b * W.t_prop) list
val return : Db_types.kernel_function ->
Cil_types.exp option ->
'a * ('b * W.t_prop) list -> 'a * ('b * W.t_prop) list
val test : Cil_types.exp ->
(String.t * W.t_prop) list * (WpAnnot.prop_kind * W.t_prop) list ->
(String.t * W.t_prop) list * (WpAnnot.prop_kind * W.t_prop) list ->
(String.t * W.t_prop) list * (WpAnnot.prop_kind * W.t_prop) list
val call : (Db_types.kernel_function ->
Cil_types.predicate Cil_types.named list *
Cil_types.predicate Cil_types.named list *
Cil_types.identified_term Cil_types.assigns list) ->
Cil_types.lval option ->
Cil_types.exp ->
Cil_types.exp list -> 'a * ('b * W.t_prop) list -> 'a * ('b * W.t_prop) list
val quantif_locals : Db_types.kernel_function ->
('a * W.t_prop) list * ('b * W.t_prop) list ->
('a * W.t_prop) list * ('b * W.t_prop) list
val close : Db_types.kernel_function ->
W.t_env ->
('a * W.t_prop) list * ('b * W.t_prop) list ->
('a * W.t_prop) list * ('b * W.t_prop) list
val add_goals : string ->
Fol.decl list ->
(string * W.t_prop) list * (WpAnnot.prop_kind * W.t_prop) list ->
Fol.decl list
val add_glob_decls : Fol.decl list -> Fol.decl list