mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 17:45:32 +00:00
Rotate first entry for refinement
This commit is contained in:
parent
86a36a524a
commit
e5b142b265
1 changed files with 8 additions and 0 deletions
|
@ -308,6 +308,10 @@ namespace polysat {
|
|||
rational const& max_value = s.var2pdd(v).max_value();
|
||||
rational mod_value = max_value + 1;
|
||||
|
||||
// Rotate the 'first' entry, to prevent getting stuck in a refinement loop
|
||||
// with an early entry when a later entry could give a better interval.
|
||||
m_equal_lin[v] = m_equal_lin[v]->next();
|
||||
|
||||
auto delta_l = [&](rational const& coeff_val) {
|
||||
return floor((coeff_val - e->interval.lo_val()) / e->coeff);
|
||||
};
|
||||
|
@ -418,6 +422,10 @@ namespace polysat {
|
|||
rational const& max_value = s.var2pdd(v).max_value();
|
||||
rational const mod_value = max_value + 1;
|
||||
|
||||
// Rotate the 'first' entry, to prevent getting stuck in a refinement loop
|
||||
// with an early entry when a later entry could give a better interval.
|
||||
m_diseq_lin[v] = m_diseq_lin[v]->next();
|
||||
|
||||
do {
|
||||
LOG("refine-disequal-lin for src: " << e->src);
|
||||
// We compute an interval if the concrete value 'val' violates the constraint:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue