Module LogicPretty


module LogicPretty: sig .. end
Pretty Printing Library for Logic

val dkey : string
type u_printer = Format.formatter -> unit 
Suitable for %t formatter
type 'a printer = Format.formatter -> 'a -> unit 
Suitable for %a formatter
type ('a, 'b) printer2 = Format.formatter -> 'a -> 'b -> unit 
Non-formatter usage
type 'a fun_printer = Format.formatter -> 'a -> LogicRaw.TERM.t list -> unit 
val pp_coma : string ->
(Format.formatter -> 'a -> unit) -> Format.formatter -> 'a list -> unit
pp_coma "," produces "x1, x2, ... xn"
val pp_assoc : string ->
string ->
(Format.formatter -> 'a -> unit) -> Format.formatter -> 'a list -> unit
pp_assoc "0" "+" produces "x1 + x2 + ... + xn" and "0" for empty list
val pp_fold_op : string ->
string ->
(Format.formatter -> 'a -> unit) -> Format.formatter -> 'a list -> unit
pp_fold_op "0" "+" prints "x+(...(y+z))" or "0".
val pp_fold_call : string ->
string ->
(Format.formatter -> 'a -> unit) -> Format.formatter -> 'a list -> unit
pp_fold_call "e" "f" prints "f(x,f(...,f(y,z)))" or "e".
val pp_fold_apply : string ->
string ->
(Format.formatter -> 'a -> unit) -> Format.formatter -> 'a list -> unit
pp_fold_apply "e" "f" prints "(f x (f...(f y z)))" or "e".
val pp_tuple : (Format.formatter -> 'a -> unit) -> Format.formatter -> 'a list -> unit
pp_tuple produces "(x1, x2, ... )" and "()" for empty list
val pp_string : string -> Format.formatter -> unit
The %t printer that print the string
val pp_tuple_call : (Format.formatter -> 'a -> unit) ->
Format.formatter -> string -> 'a list -> unit
Prints "f(x1,...,xn)" and "f()" for empty list.
val pp_apply_call : (Format.formatter -> 'a -> unit) ->
Format.formatter -> string -> 'a list -> unit
Printts "(f x1 ... xn)" of "f" for empty list.
val apply_labels : LogicRaw.PRED.t -> LogicId.id list -> LogicRaw.PRED.t
val fold_and : LogicRaw.PRED.t list ->
LogicId.id list -> LogicRaw.PRED.t -> LogicRaw.PRED.t list
val fold_hyp : LogicRaw.PRED.t list ->
LogicId.id list -> LogicRaw.PRED.t -> LogicRaw.PRED.t list
val fold_or : LogicRaw.PRED.t list ->
LogicId.id list -> LogicRaw.PRED.t -> LogicRaw.PRED.t list
val fold_implies : LogicRaw.PRED.t list ->
LogicId.id list -> LogicRaw.PRED.t -> LogicRaw.PRED.t list * LogicRaw.PRED.t
val collect_and : LogicRaw.PRED.t -> LogicRaw.PRED.t list
val collect_or : LogicRaw.PRED.t -> LogicRaw.PRED.t list
val collect_implies : LogicRaw.PRED.t -> LogicRaw.PRED.t list * LogicRaw.PRED.t
val fold_assoc : LogicRaw.TERM.primitive ->
LogicRaw.TERM.t list -> LogicRaw.TERM.t -> LogicRaw.TERM.t list
val associative : LogicRaw.TERM.primitive -> LogicRaw.TERM.t list -> LogicRaw.TERM.t list
val collect_labels : LogicId.id list -> LogicRaw.PRED.t -> LogicId.id list * LogicRaw.PRED.t
val collect_forall : LogicRaw.VAR.t list ->
LogicRaw.PRED.t -> LogicRaw.VAR.t list * LogicRaw.PRED.t
val collect_exists : LogicRaw.VAR.t list ->
LogicRaw.PRED.t -> LogicRaw.VAR.t list * LogicRaw.PRED.t

type call_style =
| FunCall (*the pp_tuple_call style*)
| VFunCall (*the pp_tuple_call style with "f" for empty lists*)
| ApplyCall (*the pp_apply_call style*)
val pp_call_style : call_style ->
(Format.formatter -> 'a -> unit) ->
(Format.formatter -> 'a -> unit) ->
Format.formatter -> string -> 'a list -> unit

type operator =
| Infix of string (*"x (op) y"*)
| Prefix of string (*"x (op)"*)
| Postfix of string (*"(op) x"*)
| Assoc of string * string (*Assoc(nil,op) prints nil for empty lists and associatively flatten infix op*)
| Extern of string (*call s with current call-style*)
| Call of LogicId.id (*call id with current space and call-style*)
val operator_atomic : operator -> bool
type binder = LogicRaw.VAR.t * LogicId.id 
class engine : LogicId.space -> object .. end