Lang.Ftype 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 = vartype 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.Integer.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 : Z.t -> termval e_real : Q.t -> 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
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.expressionval lc_closed : term -> boolval 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.
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.