3
0
Fork 0
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:
Jakob Rath 2022-09-27 17:53:45 +02:00
parent 1df749ad33
commit 74d8497ed9

View file

@ -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();