Algorithm Z3(线性算术)中使用的DPLL(T)算法
Z3的算术解算器是基于DPLL(T)和单纯形(如中所述)开发的。我不明白Z3在生成冲突解释时如何执行回溯。我举一个例子: 线性算术公式为: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} 我的问题是,当这个冲突集生成时,回
(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
下载: