- update
error-chain
dependency version requirement to^0.12
- update
clap
dev-dependency version requirement to^3.2
- fix
solver.rs
interpolant test forz3
v4.11.2
- fixed a bug in low-level SMT-LIB-loading/parsing (see issue #33)
- fixed
success
handling, and added documentation success
-relatedSmtConf
functions have been renamed,print_success
andparse_success
are nowcheck_success
eof
token has been renamed toeoi
- fixed a bug in SMT-level error parsing
- minor internal revamping (
try_load_sexpr
)
- properly
wait
for child solver process, #29
Solver::get_interpolant
now mature enough for actual use (examples in doc)()
now implements all parser traits butProofParser
(generates&str
orString
)- overall improvements documentation-wise, including more examples
- added named assert function on
Solver
sSolver::named_assert_act_with
: named + actlit + print infoSolver::named_assert_with
: named + print infoSolver::named_assert
: named
- simplified most
Solver
function signatures-
take ownership over expressions, symbols and sorts (previously took references)
still accepts refs since
T: Sym2Smt<Info>
⇒&T: Sym2Smt<Info>
, same forExpr2Smt
andSort2Smt
. -
Solver
functions taking collections (iterators) now abstract over what they expect the items to be. Previously, they had to be (constrained) pairs or triplets. They now expect some type implementing the relevant trait for the information they expect (SymAndSort
for instance). These traits are implemented for the pairs/triplets from previous versions: this new workflow should not break existing code. -
[breaking] revamp of
declare_datatypes
, see documentation.Relevant traits are
AdtDecl
,AdtVariant
andAdtVariantField
.
-
- Use of
declare_datatypes
has changed significantly, will most likely break everything. Refer to the documentation for details, sorry.
- named expression
- added
NamedExpr<Sym, Expr>
which wraps an expression and a symbol and encodes a named expression - added
into_named
andas_named
methods onExpr2Smt
trait for easy expression naming - added
into_name_for
andas_name_for
methods onSym2Smt
- added
- unsat cores now working (best used with
NamedExpr
to name expressions)- relies on the
ParseSym
trait to parse symbols from the core
- relies on the
- interpolants (
get-interpolant
) now supported- only Z3 supports this
SmtConf
produces an error if interpolant production is activated on a non-Z3 solver- uses
Sym2Smt
- best used with
NamedExpr
to name expressions
assert
-like functions onSolver
no longer require the expression to be a reference- goes with
Expr2Smt<Info>
being auto-impl-ed for allT: Expr2Smt<Info>
- goes with
Actlit
now impliesSym2Smt
- added
actlit::CondExpr
, which wraps anActlit
and a user expression; allows to useActlit
s in normalcheck-sat
commands SmtConf
now hasset_...
functions for model/unsat core/... production
- adapted parser for Z3's new
get-model
output, which does not use themodel
keyword
- a lot of documentation fixes/improvements
- asynchronous check-sat-s, see
asynch
module andSolver::async_check_sat_or_unk
- the commands to run each solver can now be passed through environment variables, see
- the
conf
module, and - the
<solver>_or_env
functions onSmtConf
.
- the
SmtConf
andSolver
creation now take a mandatory command argument to run the solver- using default command for the solvers is not recommended as it is end-user-dependent and not flexible
- if you still wish to use default commands, use the
default_<solver>
functions provided forSmtConf
andSolver
, e.g.Solver::default_z3()
- added example
examples/custom_cmd.rs
demonstrating how to pass a custom command to a solver configuration Solver
now implementsstd::io::Read
in addition tostd::io::Write
- useful for performing custom queries and quick testing
- added a
prelude
module containing common imports for convenience
Solver::set_custom_logic
- more documentation improvements
- fixed some problems in code/doc formatting (internal)
- slightly improved CVC4 support
- added support for Yices 2
- some (slight) documentation improvements
- fixed some problems in code/doc formatting (internal)
- switched to edition 2018
- removed a lot of the
Copy
requirements for parsers and input collections fordeclare_fun
etc... - various minor code embellishments
- (probably) fixed backend solvers being (sometimes) zombified when unwinding
- improved
check_sat_assuming
over iterators - rustfmt!
- support
timeout
s Solver
now implementsWrite
; this allows users to write custom commands directly- separated
ValueParser
andModelParser
; this fixes model parsing which wasn't making sense when parsing function definitions
- improved
SmtConf
to supportString
options and commands with options Solver::path_tee
tees the solver to file given by path- fixed/improved solver-level error handling
define_const
anddefine_const_with
- simplified the workflow significantly
- all solver commands that take info, like
assert
, now take no info; use..._with
, likeassert_with
, to pass down information - added
declare-datatypes
- fixed problem in
get_values
result parsing
- the info used by
*2Smt
is not explicitely a reference anymore - all solver commands that take an info now have a
<fn_name>_u
version that omits the info when it's unit()
- added an API for activation literals
- simplified parse traits type parameters a bit
- long overdue update of the
errors
- macros
smtry_io
andsmt_cast_io
are gone becausestd::io
errors are lifted torsmt2
errors now Solver
commands are now much more generic ; all type parameters are separated and all collections are supported through iterators- streamlined the interface, all the commands are in the
Solver
trait now - support solvers returning
unknown
to check-sat queries
- trait
Expr2Smt
does not use dispatch anymore