mirror of
https://github.com/Z3Prover/z3
synced 2025-08-15 23:35:26 +00:00
Add support for initializing variable values in solver and optimize contexts in Z3
This commit is contained in:
parent
342dccdc02
commit
0c48a50d59
12 changed files with 98 additions and 9 deletions
|
@ -18,7 +18,18 @@ Version 4.13.1
|
|||
The projection is described in paper by Haokun Li and Bican Xia, [Solving Satisfiability of Polynomial Formulas By Sample - Cell Projection](https://arxiv.org/abs/2003.00409). The code ported from https://github.com/hybridSMT/hybridSMT.git
|
||||
|
||||
- Add API for providing hints for the solver/optimize contexts for which initial values to attempt to use for variables.
|
||||
The new API function are Z3_solver_set_initial_value and Z3_optimize_set_initial_value, respectively. Supply these functions with a Boolean or numeric variable, and a value. The solver will then attempt to use these values in the initial phase of search. The feature is aimed at resolving nearly similar problems, or problems with a predicted model and the intent is that restarting the solver based on a near solution can avoid prune the space of constraints that are initially infeasible.
|
||||
The new API function are Z3_solver_set_initial_value and Z3_optimize_set_initial_value, respectively. Supply these functions with a Boolean or numeric variable, and a value. The solver will then attempt to use these values in the initial phase of search. The feature is aimed at resolving nearly similar problems, or problems with a predicted model and the intent is that restarting the solver based on a near solution can avoid prune the space of constraints that are initially infeasible.
|
||||
The SMTLIB front-end contains the new command (set-initial-value var value). For example,
|
||||
(declare-const x Int)
|
||||
(set-initial-value x 10)
|
||||
(push)
|
||||
(assert (> x 0))
|
||||
(check-sat)
|
||||
(get-model)
|
||||
produces a model where x = 10. We use (push) to ensure that z3 doesn't run a
|
||||
specialized pre-processor that eliminates x, which renders the initialization
|
||||
without effect.
|
||||
|
||||
|
||||
Version 4.13.0
|
||||
==============
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue