mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
Fix subsumption for unilinear case
This commit is contained in:
parent
1df749ad33
commit
74d8497ed9
1 changed files with 9 additions and 3 deletions
|
@ -67,11 +67,17 @@ namespace polysat {
|
|||
* \param[out] v Body
|
||||
*/
|
||||
pdd simplify_clause::abstract(pdd const& p, pdd& v) {
|
||||
if (p.is_val())
|
||||
if (p.is_val()) {
|
||||
SASSERT(v.is_zero());
|
||||
return p;
|
||||
}
|
||||
if (p.is_unilinear()) {
|
||||
v = p.manager().mk_var(p.var());
|
||||
return p;
|
||||
// we need an interval with coeff == 1 to be able to compare intervals easily
|
||||
auto const& coeff = p.hi().val();
|
||||
if (coeff.is_one() || coeff == p.manager().max_value()) {
|
||||
v = p.manager().mk_var(p.var());
|
||||
return p;
|
||||
}
|
||||
}
|
||||
unsigned max_var = p.var();
|
||||
auto& m = p.manager();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue