Wp.LangLow-Level Logic Terms and Predicates
Logic Language based on Qed
val comp_id : Frama_c_kernel.Cil_types.compinfo -> stringval comp_init_id : Frama_c_kernel.Cil_types.compinfo -> stringval field_id : Frama_c_kernel.Cil_types.fieldinfo -> stringval field_init_id : Frama_c_kernel.Cil_types.fieldinfo -> stringval type_id : Frama_c_kernel.Cil_types.logic_type_info -> stringval logic_id : Frama_c_kernel.Cil_types.logic_info -> stringval ctor_id : Frama_c_kernel.Cil_types.logic_ctor_info -> stringtype adt = private | Mtype of mdtExternal type
*)| Mrecord of mdt * fieldsExternal record-type
*)| Atype of Frama_c_kernel.Cil_types.logic_type_infoLogic Type
*)| Comp of Frama_c_kernel.Cil_types.compinfo * datakindC-code struct or union
*)| Wtype of string list * string * string listWhy3 imported type
*)A type is never registered in a Definition.t
and mdt = string externname to print to the provers
and 'a extern = {ext_id : int;ext_link : 'a;ext_library : library;a library which it depends on
*)ext_debug : string;just for printing during debugging
*)}and field = private | Mfield of mdt * fields * string * tau| Cfield of Frama_c_kernel.Cil_types.fieldinfo * datakindand tau = (field, adt) Qed.Logic.datatypetype lfun = private | ACSL of Frama_c_kernel.Cil_types.logic_infoRegistered in Definition.t, only
*)| CTOR of Frama_c_kernel.Cil_types.logic_ctor_infoNot registered in Definition.t directly converted/printed
*)| FUN of lsymbolExternal or Generated logic symbol
*)and lsymbol = {m_category : lfun Qed.Logic.category;m_params : Qed.Logic.sort list;m_result : Qed.Logic.sort;m_typeof : tau option list -> tau;m_source : source;m_coloring : bool;}and source = | Generated of WpContext.context option * string| Extern of Qed.Engine.link extern| Wsymbol of string list * string * string listWhy3 imported logic symbol
*)val is_builtin : Frama_c_kernel.Cil_types.logic_type_info -> boolval is_builtin_type : name:string -> tau -> boolval get_builtin_type : name:string -> adtval datatype : library:string -> string -> adtval comp : Frama_c_kernel.Cil_types.compinfo -> adtval comp_init : Frama_c_kernel.Cil_types.compinfo -> adtval cfield : ?kind:datakind -> Frama_c_kernel.Cil_types.fieldinfo -> fieldval atype : Frama_c_kernel.Cil_types.logic_type_info -> tau list -> tauval adt : Frama_c_kernel.Cil_types.logic_type_info -> adtMust not be a builtin
val on_lfun : (lfun -> unit) -> unitval on_field : (field -> unit) -> unitval acsl : Frama_c_kernel.Cil_types.logic_info -> lfunval ctor : Frama_c_kernel.Cil_types.logic_ctor_info -> lfunval extern_s :
library:library ->
?link:Qed.Engine.link ->
?category:lfun Qed.Logic.category ->
?params:Qed.Logic.sort list ->
?sort:Qed.Logic.sort ->
?result:tau ->
?coloring:bool ->
?typecheck:(tau option list -> tau) ->
string ->
lfunval extern_f :
library:library ->
?link:Qed.Engine.link ->
?balance:balance ->
?category:lfun Qed.Logic.category ->
?params:Qed.Logic.sort list ->
?sort:Qed.Logic.sort ->
?result:tau ->
?coloring:bool ->
?typecheck:(tau option list -> tau) ->
('a, Stdlib.Format.formatter, unit, lfun) Stdlib.format4 ->
'abalance just give a default when link is not specified
val extern_p :
library:library ->
?bool:string ->
?prop:string ->
?link:Qed.Engine.link ->
?params:Qed.Logic.sort list ->
?coloring:bool ->
unit ->
lfunval extern_fp :
library:library ->
?params:Qed.Logic.sort list ->
?link:string ->
?coloring:bool ->
string ->
lfunval generated_f :
?context:bool ->
?category:lfun Qed.Logic.category ->
?params:Qed.Logic.sort list ->
?sort:Qed.Logic.sort ->
?result:tau ->
?coloring:bool ->
('a, Stdlib.Format.formatter, unit, lfun) Stdlib.format4 ->
'aval generated_p : ?context:bool -> ?coloring:bool -> string -> lfunval imported_t :
package:string list ->
theory:string ->
name:string list ->
adtval imported_f :
package:string list ->
theory:string ->
name:string list ->
?params:Qed.Logic.sort list ->
?result:Qed.Logic.sort ->
?typecheck:(tau option list -> tau) ->
unit ->
lfunval tau_of_object : Ctypes.c_object -> tauval tau_of_ctype : Frama_c_kernel.Cil_types.typ -> tauval tau_of_ltype : Frama_c_kernel.Cil_types.logic_type -> tauval tau_of_return : Frama_c_kernel.Cil_types.logic_type option -> tauval init_of_object : Ctypes.c_object -> tauval init_of_ctype : Frama_c_kernel.Cil_types.typ -> tauval t_int : tauval t_real : tauval t_bool : tauval t_prop : tauval t_addr : unit -> tauval t_comp : Frama_c_kernel.Cil_types.compinfo -> tauval t_init : Frama_c_kernel.Cil_types.compinfo -> tauval t_float : Ctypes.c_float -> tauval pointer : tau Context.valuetype of pointers
val floats : (Ctypes.c_float -> tau) Context.valuetype of floats
val poly : string list Context.valuepolymorphism
val builtin_types : (string -> t_builtin) Context.valueval parameters : (lfun -> Qed.Logic.sort list) -> unitdefinitions
val name_of_lfun : lfun -> stringval name_of_field : field -> stringval context_of_lfun : lfun -> WpContext.context optionLFuns are unique by name and context
val is_coloring_lfun : lfun -> boolmodule ADT : Qed.Logic.Data with type t = adtmodule Field : Qed.Logic.Field with type t = fieldmodule Fun : Qed.Logic.Function with type t = lfunclass virtual idprinting : object ... endmodule F : sig ... endval assume : F.pred -> unitval get_pool : unit -> F.poolval get_gamma : unit -> gammaval get_hypotheses : unit -> F.pred listval sigma : unit -> F.sigmauses current pool
val alpha : unit -> F.sigmafreshen all variables
val is_literal : F.term -> booliter_consequence_literals assume_from_litteral hypothesis applies the function assume_from_litteral on literals that are a consequence of the hypothesis (i.e. in the hypothesis not (A && (B || C) ==> D), only A and not D are considered as consequence literals).
class type simplifier = object ... endmodule For_export : sig ... endFor why3_api but circular dependency