[CP-SAT] fix wrong unsat with empty tables

This commit is contained in:
Laurent Perron
2024-11-28 15:49:59 +01:00
parent d50d16837b
commit dd5f9f12e5

View File

@@ -160,12 +160,14 @@ void CanonicalizeTable(PresolveContext* context, ConstraintProto* ct) {
}
if (new_tuples.empty()) {
// Add a trivially unsat table constraint so code downstream can handle
// any eventual enforcement literals.
// Add a trivially unsat (or trivially sat if negated) table constraint so
// code downstream can handle any eventual enforcement literals.
context->UpdateRuleStats("table: all tuples invalid");
ct->mutable_table()->clear_exprs();
ct->mutable_table()->clear_values();
ct->mutable_table()->add_exprs()->set_offset(0);
if (!ct->table().negated()) {
ct->mutable_table()->add_exprs()->set_offset(0);
}
ct->mutable_table()->set_negated(false);
return;
}