3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-17 21:10:26 +00:00

Some bugfixes and unit-tests for variable elimination

This commit is contained in:
Clemens Eisenhofer 2022-12-16 10:12:34 +01:00
parent dc95179ae5
commit 71211f3134
4 changed files with 266 additions and 32 deletions

View file

@ -21,7 +21,11 @@ namespace polysat {
class conflict;
class free_variable_elimination {
enum get_multiple_result {
is_multiple, can_multiple, cannot_multiple
};
solver& s;
unsigned_vector m_has_validation_of_range; // TODO: Find a better name
unsigned_vector m_pv_constants;
@ -42,7 +46,7 @@ namespace polysat {
void find_lemma(pvar v, signed_constraint c, conflict& core);
pdd eval(pdd const& p, conflict& core, substitution& out_sub);
bool inv(pdd const& p, pdd& out_p_inv);
bool is_multiple(const pdd& p1, const pdd& p2, pdd &out);
get_multiple_result get_multiple(const pdd& p1, const pdd& p2, pdd &out);
public:
free_variable_elimination(solver& s): s(s) {}
void find_lemma(conflict& core);