sig
type solver
val make_solver : string -> Smtlib.solver
type identifier = Id of string
type sort =
Sort of Smtlib.identifier
| SortApp of Smtlib.identifier * Smtlib.sort list
| BitVecSort of int
type term =
String of string
| Int of int
| BitVec of int * int
| Const of Smtlib.identifier
| App of Smtlib.identifier * Smtlib.term list
| Let of string * Smtlib.term * Smtlib.term
type check_sat_result = Sat | Unsat | Unknown
val declare_const :
Smtlib.solver -> Smtlib.identifier -> Smtlib.sort -> unit
val assert_ : Smtlib.solver -> Smtlib.term -> unit
val check_sat : Smtlib.solver -> Smtlib.check_sat_result
val get_model : Smtlib.solver -> (Smtlib.identifier * Smtlib.term) list
val push : Smtlib.solver -> unit
val pop : Smtlib.solver -> unit
val int_sort : Smtlib.sort
val bool_sort : Smtlib.sort
val array_sort : Smtlib.sort -> Smtlib.sort -> Smtlib.sort
val int_to_term : int -> Smtlib.term
val bool_to_term : bool -> Smtlib.term
val const : string -> Smtlib.term
val equals : Smtlib.term -> Smtlib.term -> Smtlib.term
val and_ : Smtlib.term -> Smtlib.term -> Smtlib.term
val or_ : Smtlib.term -> Smtlib.term -> Smtlib.term
val not_ : Smtlib.term -> Smtlib.term
val ite : Smtlib.term -> Smtlib.term -> Smtlib.term -> Smtlib.term
val implies : Smtlib.term -> Smtlib.term -> Smtlib.term
val add : Smtlib.term -> Smtlib.term -> Smtlib.term
val sub : Smtlib.term -> Smtlib.term -> Smtlib.term
val mul : Smtlib.term -> Smtlib.term -> Smtlib.term
val lt : Smtlib.term -> Smtlib.term -> Smtlib.term
val gt : Smtlib.term -> Smtlib.term -> Smtlib.term
val lte : Smtlib.term -> Smtlib.term -> Smtlib.term
val gte : Smtlib.term -> Smtlib.term -> Smtlib.term
val bv_sort : int -> Smtlib.sort
val bv : int -> int -> Smtlib.term
val bvadd : Smtlib.term -> Smtlib.term -> Smtlib.term
val bvsub : Smtlib.term -> Smtlib.term -> Smtlib.term
val bvmul : Smtlib.term -> Smtlib.term -> Smtlib.term
val bvurem : Smtlib.term -> Smtlib.term -> Smtlib.term
val bvsrem : Smtlib.term -> Smtlib.term -> Smtlib.term
val bvsmod : Smtlib.term -> Smtlib.term -> Smtlib.term
val bvshl : Smtlib.term -> Smtlib.term -> Smtlib.term
val bvlshr : Smtlib.term -> Smtlib.term -> Smtlib.term
val bvashr : Smtlib.term -> Smtlib.term -> Smtlib.term
val bvor : Smtlib.term -> Smtlib.term -> Smtlib.term
val bvand : Smtlib.term -> Smtlib.term -> Smtlib.term
val bvnand : Smtlib.term -> Smtlib.term -> Smtlib.term
val bvnor : Smtlib.term -> Smtlib.term -> Smtlib.term
val bvxnor : Smtlib.term -> Smtlib.term -> Smtlib.term
val bvneg : Smtlib.term -> Smtlib.term
val bvnot : Smtlib.term -> Smtlib.term
type sexp =
Smtlib_syntax.sexp =
SList of Smtlib.sexp list
| SSymbol of string
| SString of string
| SKeyword of string
| SInt of int
| SBitVec of int * int
val command : Smtlib.solver -> Smtlib.sexp -> Smtlib.sexp
val sexp_to_string : Smtlib.sexp -> string
end