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
  }
}