3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-04 18:30:24 +00:00

add equality propagation based on partial length information to sequence theory. Fix issue #429

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2016-02-04 08:12:46 -08:00
parent 9b979b6e1e
commit 9c7e5c37d1
8 changed files with 200 additions and 44 deletions

View file

@ -450,6 +450,9 @@ namespace smt {
svector<theory_var> m_nl_propagated; // non linear monomials that became linear
v_dependency_manager m_dep_manager; // for tracking bounds during non-linear reasoning
vector<uint_set> m_row_vars; // variables in a given row. Used during internalization to detect repeated variables.
unsigned m_row_vars_top;
var_heap m_to_patch; // heap containing all variables v s.t. m_value[v] does not satisfy bounds of v.
nat_set m_left_basis; // temporary: set of variables that already left the basis in make_feasible
bool m_blands_rule;
@ -583,6 +586,9 @@ namespace smt {
void mk_enode_if_reflect(app * n);
template<bool invert>
void add_row_entry(unsigned r_id, numeral const & coeff, theory_var v);
uint_set& row_vars();
class scoped_row_vars;
void internalize_internal_monomial(app * m, unsigned r_id);
theory_var internalize_add(app * n);
theory_var internalize_mul_core(app * m);