mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 01:25:31 +00:00
Conflict from viable_fallback also depends on the current assignment
This commit is contained in:
parent
4e4b4fdd06
commit
49590e0e01
1 changed files with 11 additions and 2 deletions
|
@ -251,10 +251,19 @@ namespace polysat {
|
|||
if (by_viable_fallback) {
|
||||
logger().begin_conflict(header_with_var("unsat core from viable fallback for v", v));
|
||||
// Conflict detected by viable fallback:
|
||||
// initial conflict is the unsat core of the univariate solver
|
||||
// initial conflict is the unsat core of the univariate solver,
|
||||
// and the assignment (under which the constraints are univariate in v)
|
||||
// TODO:
|
||||
// - currently we add variables directly, which is sound:
|
||||
// e.g.: v^2 + w^2 == 0; w := 1
|
||||
// - but we could use side constraints on the coefficients instead (coefficients when viewed as polynomial over v):
|
||||
// e.g.: v^2 + w^2 == 0; w^2 == 1
|
||||
signed_constraints unsat_core = s.m_viable_fallback.unsat_core(v);
|
||||
for (auto c : unsat_core)
|
||||
for (auto c : unsat_core) {
|
||||
insert(c);
|
||||
insert_vars(c);
|
||||
}
|
||||
SASSERT(!m_vars.contains(v));
|
||||
// TODO: apply conflict resolution plugins here too?
|
||||
} else {
|
||||
logger().begin_conflict(header_with_var("forbidden interval lemma for v", v));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue