Algorithm Z3(线性算术)中使用的DPLL(T)算法

Algorithm Z3(线性算术)中使用的DPLL(T)算法,algorithm,z3,smt,dpll,Algorithm,Z3,Smt,Dpll,Z3的算术解算器是基于DPLL(T)和单纯形(如中所述)开发的。我不明白Z3在生成冲突解释时如何执行回溯。我举一个例子: 线性算术公式为: (2x1+x2≤200或3x1+x2≤250)和(2x1+x2+x3≤200或4x1+2x2+x3≤400) 和x1≥50和x2≥50和x3≥60 断言2x1+x2后≤200,2x1+x2+x3≤200,x1≥50,x2≥50和x3≥60依次生成冲突解释集{2x1+x2+x3≤200,x1≥50,x2≥50,x3≥60} 我的问题是,当这个冲突集生成时,回

Z3的算术解算器是基于DPLL(T)和单纯形(如中所述)开发的。我不明白Z3在生成冲突解释时如何执行回溯。我举一个例子:

线性算术公式为:

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

断言
2x1+x2后≤200
2x1+x2+x3≤200
x1≥50
x2≥50和
x3≥60
依次生成冲突解释集
{2x1+x2+x3≤200,x1≥50,x2≥50,x3≥60}


我的问题是,当这个冲突集生成时,回溯是如何执行的?

理解算法需要阅读的主要论文是:

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