Frama-C API - Symbol
Qed Symbols
val constructors : data -> Why3.Decl.constructor listReturns an empty list for pure ADT
type tau = (field, data) Logic.datatypeLogic Types
Returns a triple a,r,vs with a the number of polymorphic variables, r the type of result and vs the type of arguments.
val definition : lfun -> (Why3.Term.vsymbol list * Why3.Term.term) optionReturns an optional pair Some(xs,def) with xs the formal parameters and def the defining term. Returns None when the function is abstract.
Unifies the polymorphic types of the function with the provided type of arguments and of the result, when available. If you provide a result type, it will be unified with the expected result type of the logic symbol, so use ~result:Prop for predicates.
Symbol Lookup
val of_ts : Why3.Theory.theory -> Why3.Ty.tysymbol -> dataMemoized.
type sigma = tau Why3.Ty.Mtv.tConverts infix, prefix and mixfix names to user names. Typically: of_infix "infix +" = "(+)". Returns identity for usual identifiers
Memoized. None means Prop.
val of_ls : Why3.Theory.theory -> Why3.Term.lsymbol -> lfunMemoized.
val find_data : Why3.Env.env -> string -> dataMemoized in environment. Expect fully qualified identifiers, typically "int.Int.int".
val find_lfun : Why3.Env.env -> string -> lfunMemoized in environment. Expect fully qualified identifiers, typically "int.Int.(+)".
Symbol Factory
val cluster : ?path:string list -> ?loc:Why3.Loc.position -> string -> clusterval add : cluster -> Why3.Decl.decl -> unitval use : cluster -> Why3.Theory.theory -> unitval close : cluster -> Why3.Theory.theorySymbol Modules
module type Symbol = sig ... endmodule Tau : sig ... end