Binsec_smtlib.FormulaSourceinclude module type of struct include Formula endval status_to_exit_code : status -> inttype bv_unop = | BvNot| BvNeg| BvRepeat of int| BvZeroExtend of intresult has size: `size_of(bv) + int` *
*)| BvSignExtend of int| BvRotateLeft of int| BvRotateRight of int| BvExtract of int Binsec_base.Interval.tand ax_term = private {ax_term_hash : int;ax_term_desc : ax_term_desc;idx_term_size : int;elt_term_size : int;}type entry_desc = | Declare of decl| Define of def| Assert of bl_term| Assume of bl_term| Comment of string| Custom of custom_descAn user defined entry.
Custom entry support is experimental and very limited. For now, it will work only for formula creation (no transformation) and printing (and by extension, call to external SMT solver).
type custom_handler = {hash : custom_desc -> int option;pp : Format.formatter -> custom_desc -> bool;}val register_custom : custom_handler -> unitregister_custom { hash; pp } registers a hash and a pretty printer functions for custom entries.
The hash function should return Some h for the custom entries the handler supports, None otherwise. The pretty printer should print the entry without the surrounding parenthesis and return true for the custom entries the handler supports, false otherwise.
Handlers will be scanned in the reverse order of the call to the register_custom function. Using a custom entry without any registered handler will raise Invalid_custom.
An exception raised by a function that can not handle a custom entry, either because no hander has been registered for this entry or because the function does not support entry extension.
val empty : formulaval length : formula -> intmodule Printing : sig ... endBasic printing of formulas
val bl_sort : sortval bv_sort : int -> sortval ax_sort : int -> int -> sortval bl_var : string -> bl_varval bv_var : string -> int -> bv_varval ax_var : string -> int -> int -> ax_varval bl_term : bl_term_desc -> bl_termval bv_term : bv_term_desc -> bv_termval ax_term : ax_term_desc -> ax_termval entry : entry_desc -> entryval mk_bl_true : bl_termval mk_bl_false : bl_termval mk_bv_cst : Binsec_base.Bitvector.t -> bv_termval mk_comment : string -> entryval mk_bv_extract : int Binsec_base.Interval.t -> bv_term -> bv_termval mk_bv_zero : bv_termval mk_bv_one : bv_termval mk_bv_zeros : int -> bv_termval mk_bv_ones : int -> bv_termval mk_bv_fill : int -> bv_termmodule VarSet : sig ... endmodule BlVarSet : sig ... endmodule BvVarSet : sig ... endmodule AxVarSet : sig ... endmodule BlVarHashtbl : sig ... endmodule BvVarHashtbl : sig ... endmodule AxVarHashtbl : sig ... endmodule BlTermHashtbl : sig ... endmodule BvTermHashtbl : sig ... endmodule AxTermHashtbl : sig ... endThis module aim at generating well formatted smtlib2 formulas, taking in account some solvers differences (e.g: boolector not supporting function have arrays in parameters). All the strings generated by this module are smtlib 2 compliant.
val pp_status : Format.formatter -> Formula.status -> unitpretty print the smt_result with a given color
val print_status : Formula.status -> stringval print_bv_unop : Formula.bv_unop -> stringval print_bv_bnop : Formula.bv_bnop -> stringval print_bv_comp : Formula.bv_comp -> stringval print_bv_term : Formula.bv_term -> stringval print_ax_term : Formula.ax_term -> stringsee print_bv_term
val print_bl_term : Formula.bl_term -> stringsee print_bv_term
val print_varset : Formula.VarSet.t -> stringval pp_varset : Format.formatter -> Formula.VarSet.t -> unitval pp_header : theory:string -> Format.formatter -> unit -> unitval pp_as_comment :
(Format.formatter -> 'a -> unit) ->
Format.formatter ->
'a ->
unitval pp_bl_term : Format.formatter -> Formula.bl_term -> unitval pp_bv_term : Format.formatter -> Formula.bv_term -> unitval pp_ax_term : Format.formatter -> Formula.ax_term -> unitval pp_term : Format.formatter -> Formula.term -> unitval pp_entry : Format.formatter -> Formula.entry -> unitval pp_formula : Format.formatter -> Formula.formula -> unitmodule To_smtlib : sig ... endTranslation functions from BINSEC inner representation to SMT-LIB terms
module Transformation : sig ... endmodule Model : sig ... endInternal model representation
module Solver : sig ... endInterface with SMT solvers
module Utils : sig ... endUtility functions for formula creation
module Logger : sig ... end