mirror of
https://github.com/Z3Prover/z3
synced 2026-02-28 10:51:28 +00:00
BDD vectors: add subtract and quot_rem, move finite domain abstraction out of bdd_manager (#5201)
* Coding style * Simplify bddv class * mk_eq: run loop from below * Add unit test for bddv unsigned comparison * Add test that shows contains_num/find_num fail after reordering * Add BDD vector subtraction * Call apply_rec in mk_ite_rec instead of apply * Question about mk_quant * Implement quot_rem over BDD vectors * Move shl/shr to bddv * Make unit test smaller * Add class dd::fdd to manage association between BDDs and numbers * Remove contains_num/find_num from bdd_manager
This commit is contained in:
parent
bc695a5a97
commit
77350d97da
10 changed files with 494 additions and 301 deletions
|
|
@ -45,7 +45,7 @@ namespace polysat {
|
|||
|
||||
reslimit& m_lim;
|
||||
scoped_ptr_vector<dd::pdd_manager> m_pdd;
|
||||
scoped_ptr_vector<unsigned_vector> m_bits;
|
||||
scoped_ptr_vector<dd::fdd> m_bits;
|
||||
dd::bdd_manager m_bdd;
|
||||
dep_value_manager m_value_manager;
|
||||
small_object_allocator m_alloc;
|
||||
|
|
@ -132,7 +132,7 @@ namespace polysat {
|
|||
/**
|
||||
* Find a next viable value for variable.
|
||||
*/
|
||||
dd::find_result find_viable(pvar v, rational & val);
|
||||
dd::find_t find_viable(pvar v, rational & val);
|
||||
|
||||
/** Log all viable values for the given variable.
|
||||
* (Inefficient, but useful for debugging small instances.)
|
||||
|
|
@ -147,7 +147,7 @@ namespace polysat {
|
|||
void del_var();
|
||||
|
||||
dd::pdd_manager& sz2pdd(unsigned sz);
|
||||
unsigned_vector const& sz2bits(unsigned sz);
|
||||
dd::fdd const& sz2bits(unsigned sz);
|
||||
|
||||
void push_level();
|
||||
void pop_levels(unsigned num_levels);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue