mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 01:25:31 +00:00
add bv-size reduce #6137
- add option smt.bv.reduce_size. - it allows to apply incremental pre-processing of bit-vectors by identifying ranges that are known to be constant. This rewrite is beneficial, for instance, when bit-vectors are constrained to have many high-level bits set to 0.
This commit is contained in:
parent
45a4b810de
commit
48b13291d1
8 changed files with 78 additions and 0 deletions
|
@ -50,6 +50,7 @@ def_module_params(module_name='smt',
|
|||
('bv.watch_diseq', BOOL, False, 'use watch lists instead of eager axioms for bit-vectors'),
|
||||
('bv.delay', BOOL, True, 'delay internalize expensive bit-vector operations'),
|
||||
('bv.eq_axioms', BOOL, True, 'enable redundant equality axioms for bit-vectors'),
|
||||
('bv.size_reduce', BOOL, False, 'turn assertions that set the upper bits of a bit-vector to constants into a substitution that replaces the bit-vector with constant bits. Useful for minimizing circuits as many input bits to circuits are constant'),
|
||||
('arith.random_initial_value', BOOL, False, 'use random initial values in the simplex-based procedure for linear arithmetic'),
|
||||
('arith.solver', UINT, 6, 'arithmetic solver: 0 - no solver, 1 - bellman-ford based solver (diff. logic only), 2 - simplex based solver, 3 - floyd-warshall based solver (diff. logic only) and no theory combination 4 - utvpi, 5 - infinitary lra, 6 - lra solver'),
|
||||
('arith.nl', BOOL, True, '(incomplete) nonlinear arithmetic support based on Groebner basis and interval propagation, relevant only if smt.arith.solver=2'),
|
||||
|
|
|
@ -28,6 +28,7 @@ void theory_bv_params::updt_params(params_ref const & _p) {
|
|||
m_bv_enable_int2bv2int = p.bv_enable_int2bv();
|
||||
m_bv_delay = p.bv_delay();
|
||||
m_bv_eq_axioms = p.bv_eq_axioms();
|
||||
m_bv_size_reduce = p.bv_size_reduce();
|
||||
}
|
||||
|
||||
#define DISPLAY_PARAM(X) out << #X"=" << X << std::endl;
|
||||
|
@ -42,4 +43,5 @@ void theory_bv_params::display(std::ostream & out) const {
|
|||
DISPLAY_PARAM(m_bv_blast_max_size);
|
||||
DISPLAY_PARAM(m_bv_enable_int2bv2int);
|
||||
DISPLAY_PARAM(m_bv_delay);
|
||||
DISPLAY_PARAM(m_bv_size_reduce);
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ struct theory_bv_params {
|
|||
bool m_bv_enable_int2bv2int = true;
|
||||
bool m_bv_watch_diseq = false;
|
||||
bool m_bv_delay = true;
|
||||
bool m_bv_size_reduce = false;
|
||||
theory_bv_params(params_ref const & p = params_ref()) {
|
||||
updt_params(p);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue