mirror of
https://github.com/Z3Prover/z3
synced 2025-07-31 00:13:16 +00:00
some simplifications in cheap eqs
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
parent
4de38d09e2
commit
dd30b5e3af
5 changed files with 40 additions and 22 deletions
|
@ -41,7 +41,7 @@ def_module_params(module_name='smt',
|
|||
('bv.reflect', BOOL, True, 'create enode for every bit-vector term'),
|
||||
('bv.enable_int2bv', BOOL, True, 'enable support for int2bv and bv2int operators'),
|
||||
('arith.random_initial_value', BOOL, False, 'use random initial values in the simplex-based procedure for linear arithmetic'),
|
||||
('arith.cheap_eqs', BOOL, True, 'true for extracting cheap equalities'),
|
||||
('arith.cheap_eqs', UINT, 0, '0 - do not run, 1 - use tree, 2 - use table'),
|
||||
('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'),
|
||||
('arith.nl.gb', BOOL, True, 'groebner Basis computation, this option is ignored when arith.nl=false, relevant only if smt.arith.solver=2'),
|
||||
|
|
|
@ -1592,6 +1592,19 @@ public:
|
|||
void reset_variable_values() {
|
||||
m_variable_values.clear();
|
||||
}
|
||||
|
||||
bool congruent_or_irrelevant(lpvar k, lpvar j) {
|
||||
theory_var kv = lp().local_to_external(k);
|
||||
if (kv == null_theory_var)
|
||||
return true;
|
||||
theory_var jv = lp().local_to_external(j);
|
||||
if (jv == null_theory_var)
|
||||
return true;
|
||||
|
||||
enode * n0 = get_enode(kv);
|
||||
enode * n1 = get_enode(jv);
|
||||
return n0->get_root() == n1->get_root();
|
||||
}
|
||||
|
||||
void random_update() {
|
||||
if (m_nla)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue