Frama-C API - F
 Types and Variables
type var = QED.vartype tau = QED.tautype pool = QED.poolmodule Tau = QED.Taumodule Var = QED.Varmodule Vars : Qed.Idxset.S with type elt = varmodule Vmap : Qed.Idxmap.S with type key = varExpressions
type term = QED.termval hash : term -> intConstant time
module Tset : Qed.Idxset.S with type elt = termmodule Tmap : Qed.Idxmap.S with type key = termval e_zero : termval e_one : termval e_minus_one : termval e_minus_one_real : termval e_one_real : termval e_zero_real : termval e_int64 : int64 -> termval e_bigint : Frama_c_kernel.Z.t -> termval e_float : float -> termval is_zero : term -> boolval e_true : termval e_false : termval e_bool : bool -> termval e_int : int -> termval e_zint : Frama_c_kernel.Z.t -> termval e_real : Q.t -> termval e_times : Frama_c_kernel.Z.t -> term -> termval e_bind : Qed.Logic.binder -> var -> term -> termval e_open : pool:pool -> ?forall:bool -> ?exists:bool -> ?lambda:bool -> term -> (Qed.Logic.binder * var) list * termOpen all the specified binders (flags default to `true`, so all consecutive top most binders are opened by default). The pool must contain all free variables of the term.
val e_close : (Qed.Logic.binder * var) list -> term -> termCloses all specified binders
Predicates
module Pmap : Qed.Idxmap.S with type key = predmodule Pset : Qed.Idxset.S with type elt = predval p_true : predval p_false : predval is_ptrue : pred -> Qed.Logic.maybeval is_pfalse : pred -> Qed.Logic.maybeval is_equal : term -> term -> Qed.Logic.maybeval p_bind : Qed.Logic.binder -> var -> pred -> predmodule Subst : sig ... endval pp_tau : Stdlib.Format.formatter -> tau -> unitval pp_var : Stdlib.Format.formatter -> var -> unitval pp_vars : Stdlib.Format.formatter -> Vars.t -> unitval pp_term : Stdlib.Format.formatter -> term -> unitval pp_pred : Stdlib.Format.formatter -> pred -> unitval debugp : Stdlib.Format.formatter -> pred -> unitval context_pp : env Context.valueContext used by pp_term, pp_pred, pp_var, ppvars for printing the term. Allows to keep the same disambiguation.
type marks = QED.marksReturns a list of terms to be shared among all shared or marked subterms. The order of terms is consistent with definition order: head terms might be used in tail ones.
val p_expr : pred -> pred QED.expressionval e_expr : pred -> term QED.expressionBinders
val lc_closed : term -> boolUtilities
val decide : term -> boolReturn true if and only the term is e_true. Constant time.
val basename : term -> stringval is_true : term -> Qed.Logic.maybeConstant time.
val is_false : term -> Qed.Logic.maybeConstant time.
val is_prop : term -> boolBoolean or Property
val is_int : term -> boolInteger sort
val is_real : term -> boolReal sort
val is_arith : term -> boolInteger or Real sort
val is_closed : term -> boolNo bound variables
val is_simple : term -> boolConstants, variables, functions of arity 0
val is_atomic : term -> boolConstants and variables
val is_primitive : term -> boolConstants only
val are_equal : term -> term -> Qed.Logic.maybeComputes equality
val sort : term -> Qed.Logic.sortConstant time
val typeof : ?field:(Field.t -> tau) -> ?record:(Field.t -> tau) -> ?call:(Fun.t -> tau option list -> tau) -> term -> tauTry to extract a type of term. Parameterized by optional extractors for field and functions. Extractors may raise Not_found ; however, they are only used when the provided kinds for fields and functions are not precise enough.
Builtins
The functions below register simplifiers for function f. The computation code may raise Not_found, in which case the symbol is not interpreted.
If f is an operator with algebraic rules (see type operator), the children are normalized before builtin call.
Highest priority is 0. Recursive calls must be performed on strictly smaller terms.
