3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-29 03:45:51 +00:00

linear solver

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2021-05-14 17:10:01 -07:00
parent 17fcf79c04
commit 683ce27c8f
8 changed files with 264 additions and 42 deletions

View file

@ -35,11 +35,34 @@ namespace polysat {
class solver;
class linear_solver {
enum trail_i {
inc_level_i,
add_var_i,
set_bound_i,
set_value_i,
add_row_i,
activate_constraint_i
};
solver& s;
ptr_vector<fixplex_base> m_fix;
scoped_ptr_vector<fixplex_base> m_fix;
svector<trail_i> m_trail;
svector<std::pair<var_t, unsigned>> m_rows;
unsigned_vector m_var2ext;
unsigned_vector m_ext2var;
svector<var_t> m_vars;
vector<rational> m_coeffs;
svector<var_t> m_bool_var2row;
fixplex_base& sz2fixplex(unsigned sz);
void linearize(pdd const& p);
var_t fresh_var(unsigned sz);
// bind monomial to variable.
var_t mono2var(unsigned sz, unsigned_vector const& m);
unsigned_vector var2mono(unsigned sz, var_t v) { throw default_exception("nyi"); }
//
// TBD trail object for
// removing variables