Module Bitwuzla.Incremental
Create a new Bitwuzla session in incremental mode.
Parameters
Signature
include module type of sig ... end
type (!'a, !'b) ar
=[
|
`Ar of 'a -> 'b
]
constraint 'a = [< `Bv | `Fp | `Rm ] constraint 'b = [< `Bv | `Fp | `Rm ]
The array kind with
'a
index and'b
element.Both index and element should be of bit-vector, rounding-mode or floating-point kind
type (!'a, !'b) fn
=[
|
`Fn of 'a -> 'b
]
constraint 'b = [< bv ]
The function kind taking
'a
argument and returning'b
element.Functions accept only bit-vector, rounding-mode or floating-point as argument and return only bit-vector.
type 'a value
= private 'a term
A value of
'a
kind.Values are subtype of terms and can be downcasted using
:>
operator.
module Sort : sig ... end
module Term : sig ... end
val assert' : ?name:string -> bv term -> unit
assert' ~name t
assert that the conditiont
istrue
.t
must be a boolean term (bv
term
of size 1).- parameter name
The name of the assertion, if any.
- parameter t
The formula term to assert.
val pp_result : Stdlib.Format.formatter -> result -> unit
pp formatter result
pretty print result.- parameter formatter
The output formatter.
- parameter result
The result to print.
val check_sat : ?interrupt:(('a -> int) * 'a) -> unit -> result
check_sat ~interrupt ()
check satisfiability of current input formula.- parameter interrupt
Stop the research and return
Unknown
if the callback function returns a positive value. Run into completion otherwise.
val timeout : float -> (?interrupt:((float -> int) * float) -> 'b) -> 'b
timeout t f
configure the interruptible functionf
with a timeout oft
seconds.timeout
can be used to limit the time spend oncheck_sat
orcheck_sat_assuming
. For instance, for a 1 second time credit, use:(timeout 1. check_sat) ()
(timeout 1. check_sat_assuming) assumptions
- parameter t
Timeout in second.
- parameter f
The function to configure.
- returns
An interruptible function configured to stop on timeout.
Formula
val push : int -> unit
push nlevels
push context levels.- parameter nlevels
The number of context levels to push.
val pop : int -> unit
pop nlevels
pop context levels.- parameter nlevels
The number of context levels to pop.
val check_sat_assuming : ?interrupt:(('a -> int) * 'a) -> ?names:string array -> bv term array -> result
check_sat_assuming ~interrupt ~names assumptions
check satisfiability of current input formula, with the search for a solution guided by the given assumptions.An input formula consists of assertions added via
assert'
combined with assumptions via Booleanand
. Unsatifiable assumptions can be queried viaget_unsat_assumptions
.- parameter interrupt
Stop the research and return
Unknown
if the callback function returns a positive value. Run into completion otherwise.
- parameter names
The assumption names, if any.
- parameter assumption
The set of assumptions guiding the research of solutions.
val get_unsat_assumptions : unit -> bv term array
get_unsat_assumptions ()
get the set of unsat assumptions.Unsat assumptions are assumptions that force an input formula to become unsatisfiable. Unsat assumptions handling in Bitwuzla is analogous to failed assumptions in MiniSAT.
Requires that the last
check_sat
query returnedUnsat
.- returns
An array with unsat assumptions.