5

The arithmetic solver of Z3 is developed based on DPLL(T) and Simplex (described in this paper). And I do not understand how Z3 perform the backtrack when a conflict explanation is generated. I give an example:

The linear arithmetic formula is:

(2x1+x2≤200 OR 3x1+x2≤250) AND (2x1+x2+x3≤200 OR 4x1+2x2+x3≤400) AND x1≥50 AND x2≥50 AND x3≥60

after asserting 2x1+x2≤200, 2x1+x2+x3≤200, x1≥50, x2≥50 and x3≥60 successively, it yields a conflict explanation set {2x1+x2+x3≤200, x1≥50, x2≥50, x3≥60}.

My question is, how then the backtrack is performed when this conflict set is generated?

Guy Coder
  • 24,501
  • 8
  • 71
  • 136
ClePIR
  • 51
  • 1

1 Answers1

2

The main paper to read for understanding the algorithm is:

 A Fast Linear-Arithmetic Solver for DPLL(T)
 Bruno Dutertre,  Leonardo de Moura 

Download: .pdf

Axel Kemper
  • 10,544
  • 2
  • 31
  • 54
Nikolaj Bjorner
  • 8,229
  • 14
  • 15