Frama-C API - engine
Linking
method virtual link : 'logic -> linkGlobal and Local Environment
method lookup : 'term -> scopeTerm scope in the current environment.
Calls the continuation in the provided environment. Previous environment is restored after return.
Calls the continuation in a local copy of the environment. Previous environment is restored after return, but allocators are left unchanged to enforce on-the-fly alpha-conversion.
Calls the continuation in a fresh local environment. Previous environment is restored after return.
Types
method pp_array : 'tau Qed.Plib.printerFor Z->a arrays
method pp_farray : 'tau Qed.Plib.printer2For k->a arrays
method pp_tvar : int Qed.Plib.printerType variables.
method pp_datatype : 'adt -> 'tau list Qed.Plib.printermethod pp_tau : 'tau Qed.Plib.printerWithout parentheses.
method pp_subtau : 'tau Qed.Plib.printerWith parentheses if non-atomic.
Current Mode
The mode represents the expected type for a term to printed. A requirement for all term printers in the engine is that current mode must be correctly set before call. Each term printer is then responsible for setting appropriate modes for its sub-terms.
method mode : modeCalls the continuation with given mode for sub-terms. The englobing mode is passed to continuation and then restored.
method op_scope : amode -> string optionOptional scoping post-fix operator when entering arithmetic mode.
Primitives
method e_true : cmode -> string"true"
method e_false : cmode -> string"false"
method pp_int : amode -> 'z Qed.Plib.printermethod pp_real : Q.t Qed.Plib.printerVariables
method pp_var : string Qed.Plib.printerCalls
These printers only applies to connective, operators and functions that are morphisms w.r.t current mode.
method callstyle : callstylemethod pp_fun : cmode -> 'logic -> 'term list Qed.Plib.printermethod pp_apply : cmode -> 'term -> 'term list Qed.Plib.printerArithmetics Operators
method op_real_of_int : opDefaults to self#op_minus or self#op_mul
Comparison Operators
method pp_equal : 'term Qed.Plib.printer2method pp_noteq : 'term Qed.Plib.printer2Arrays
Records
method pp_def_fields : ('field * 'term) list Qed.Plib.printerRecord construction.
Logical Connectives
Conditionals
method pp_not : 'term Qed.Plib.printerBinders
method pp_forall : 'tau -> string list Qed.Plib.printermethod pp_exists : 'tau -> string list Qed.Plib.printermethod pp_lambda : (string * 'tau) list Qed.Plib.printerBindings
method pp_let : Stdlib.Format.formatter -> pmode -> string -> 'term -> unitTerms
Sub-terms that require parentheses. Shared sub-terms are detected on behalf of this method.
method pp_flow : 'term Qed.Plib.printerPrinter with shared sub-terms printed with their name and without parentheses.
method pp_atom : 'term Qed.Plib.printerPrinter with shared sub-terms printed with their name and within parentheses for non-atomic expressions. Additional scope terminates the expression when required (typically for Coq).
method pp_repr : 'term Qed.Plib.printerRaw representation of a term, as it is. This is where you should hook a printer to keep sharing, parentheses, and such.
Top Level
method pp_term : 'term Qed.Plib.printerPrints in term mode. Default uses self#pp_shared with mode Mterm inside an <hov> box.
method pp_prop : 'term Qed.Plib.printerPrints in prop mode. Default uses self#pp_shared with mode Mprop inside an <hv> box.
method pp_expr : 'tau -> 'term Qed.Plib.printerPrints in term, arithmetic or prop mode with respect to provided type.
method pp_sort : 'term Qed.Plib.printerPrints in term, arithmetic or prop mode with respect to the sort of term. Boolean expression that also have a property form are printed in Mprop mode.
