class engine : LogicId.space ->
object
.. end
method id : LogicId.id -> string
method pp_id : Format.formatter -> LogicId.id -> unit
method pp_tau_int : Format.formatter -> unit
method pp_tau_real : Format.formatter -> unit
method pp_tau_bool : Format.formatter -> unit
method pp_tau_pointer : Format.formatter -> unit
method pp_tau_set : Format.formatter -> LogicTau.tau -> unit
method pp_tau_array : Format.formatter -> LogicTau.tau -> LogicTau.tau -> unit
method pp_tau_record : Format.formatter -> LogicId.id -> unit
method pp_tau_adt : Format.formatter -> LogicId.id -> LogicTau.tau list -> unit
method pp_tau_alpha : Format.formatter -> int -> unit
method pp_tau : Format.formatter -> LogicTau.tau -> unit
val mutable sigma : LogicId.id LogicRaw.VMAP.t
val mutable alpha : bool
method bind : LogicRaw.VMAP.key list -> (unit -> unit) -> unit
bind x pp
runs pp
with variable x
bound to a new
identifier. The identifier is released after bind
unless
the engine is in global alpha-conversion mode (see alpha
).
Exceptions are correctly tracked.
method binder : LogicRaw.VAR.t -> (binder -> unit) -> unit
Allocates an identifier for binder, not-yet linked to the variable.
The bind is release after job.
method pp_binder : Format.formatter -> binder -> unit
Prints the identifier of the associated variable.
method with_binder : 'a. binder -> 'a printer -> 'a printer
Run the printer with the variable locally bound to its identifier.
Exception are correctly tracked.
method alpha : 'b. 'b printer -> 'b printer
Runs the printer in an environment with global
alpha-conversion. The global alpha-conversion mode is
reverted after alpha
. Successive calls to alpha
keep the
global mode until the first call to alpha
returns.
Exceptions are correctly tracked.
method var_id : LogicRaw.VMAP.key -> LogicId.id
Current identifier associated to a variable.
Raises Not_found
if unbound.
method pp_var : Format.formatter -> LogicRaw.VMAP.key -> unit
Pretty print the variable with its associated identifier.
Prints a debugging name with format "?<base>#<vid>"
if unbound.
method pp_vartype : Format.formatter -> LogicRaw.VMAP.key -> unit
Prints the type of the variable.
method term_call : call_style
method term_atomic : LogicRaw.TERM.t -> bool
Uses term_operator
method term_operator : LogicRaw.TERM.primitive -> operator
method pp_term_int : Format.formatter -> string -> unit
method pp_term_real : Format.formatter -> string -> unit
method pp_term_true : Format.formatter -> unit
method pp_term_false : Format.formatter -> unit
method pp_term_call : Format.formatter -> LogicId.id -> LogicRaw.TERM.t list -> unit
Uses term_call
style
method pp_term_extern : Format.formatter -> string -> LogicRaw.TERM.t list -> unit
Uses term_call
style
method pp_term_operator : Format.formatter -> operator -> LogicRaw.TERM.t list -> unit
method pp_term_primitive : Format.formatter -> LogicRaw.TERM.primitive -> LogicRaw.TERM.t list -> unit
Uses term_operator
and pp_term_operator
with flattening for associative cases.
method pp_term_getfield : Format.formatter -> LogicRaw.TERM.t -> LogicTau.field -> unit
method pp_term_setfield : Format.formatter ->
LogicRaw.TERM.t -> LogicTau.field -> LogicRaw.TERM.t -> unit
method pp_term_access : Format.formatter -> LogicRaw.TERM.t -> LogicRaw.TERM.t -> unit
method pp_term_update : Format.formatter ->
LogicRaw.TERM.t -> LogicRaw.TERM.t -> LogicRaw.TERM.t -> unit
method pp_term_let : Format.formatter ->
LogicRaw.VAR.t -> LogicRaw.TERM.t -> LogicRaw.TERM.t -> unit
method pp_term_cond : Format.formatter ->
LogicRaw.TERM.t -> LogicRaw.TERM.t -> LogicRaw.TERM.t -> unit
method pp_term_atom : Format.formatter -> LogicRaw.TERM.t -> unit
Prints with pp_term
with parentheses for only non-atomic terms,
with respect to term_atomic
method.
method pp_term : LogicRaw.TERM.t printer
Might result in non lexically-atomic print.
Use pp_term_atom
for safe boxing.
method pred_atomic : LogicRaw.PRED.t -> bool
method pred_relation : LogicRaw.PRED.relation -> operator
method pp_pred_true : Format.formatter -> unit
method pp_pred_false : Format.formatter -> unit
method pp_pred_relation : Format.formatter -> LogicRaw.PRED.relation -> LogicRaw.TERM.t list -> unit
Uses pred_operator
and pp_term_operator
method pp_pred_call : Format.formatter -> LogicId.id -> LogicRaw.TERM.t list -> unit
Uses pp_term_call
method pp_pred_and : Format.formatter -> LogicRaw.PRED.t list -> unit
method pp_pred_or : Format.formatter -> LogicRaw.PRED.t list -> unit
method pp_pred_not : Format.formatter -> LogicRaw.PRED.t -> unit
method pp_pred_iff : Format.formatter -> LogicRaw.PRED.t -> LogicRaw.PRED.t -> unit
method pp_pred_cond : Format.formatter ->
LogicRaw.TERM.t -> LogicRaw.PRED.t -> LogicRaw.PRED.t -> unit
method pp_pred_let : Format.formatter ->
LogicRaw.VAR.t -> LogicRaw.TERM.t -> LogicRaw.PRED.t -> unit
method pp_pred_named : Format.formatter -> LogicId.id list -> LogicRaw.PRED.t -> unit
method pp_pred_implies : Format.formatter -> LogicRaw.PRED.t list -> LogicRaw.PRED.t -> unit
method pp_pred_forall : Format.formatter -> LogicRaw.VMAP.key list -> LogicRaw.PRED.t -> unit
method pp_pred_exists : Format.formatter -> LogicRaw.VMAP.key list -> LogicRaw.PRED.t -> unit
method pp_pred : LogicRaw.PRED.t printer
Might result in non lexically-atomic print.
USe pp_pred_atom
for safe boxing.
method pp_pred_atom : Format.formatter -> LogicRaw.PRED.t -> unit
Prints with pp_term
with parentheses for only non-atomic terms,
with respect to pred_atomic
method.