DTAI seminars
Jo Devriendt
(b) Corresponding cutting plane derivation
are
while(true){
if(theory contains ⊥){
return UNSAT
}else if(model found){
return SAT
}
branch
(reasoned) propagate
while(conflict){
resolve conflict clause to learned clause
backjump
add learned clause to theory
(reasoned) propagate
}
}
Does not avoid conflict...
Conflict over z!
(z is integer)
Proposed learned constraint:
Branching
choices
while(true){
if(theory contains 0≥1){
return UNSAT
}else if(model found){
return SAT
}
branch on variable bound
(reasoned) propagate
while(conflict){
add learned cutting plane to theory
resolve conflict clause to learned clause
backjump on learned clause
(reasoned) propagate
}
}
while(true){
if(theory contains 0≥1 or ⊥){
return UNSAT
}else if(model found){
return SAT
}
branch on atom / variable bound
(reasoned) propagate
while(conflict){
add learned cutting plane to theory
add learned clause to theory
backjump on strongest of learned clause
and learned cutting plane
(reasoned) propagate
}
}