在进行理论一致性检查之前,z3的SAT求解器是否获得了完整的赋值?

时间:2014-01-21 00:31:27

标签: z3 smt

在进行理论一致性检查之前,z3的SAT求解器是否获得了对SMT问题的命题(部分)部分的完整赋值?特别是,我很想知道以下每种背景理论/组合默认做了什么(如果这是理论依赖的):线性实数算术(LRA),线性整数实数算术(LIRA),非线性整数真算术(NIRA)?另外,在实际代码中(codeplex stable z3 v4.3.1)是由SAT求解器决定的命题文字(启发式)吗?

1 个答案:

答案 0 :(得分:1)

不,Z3在进行理论一致性检查之前没有获得完整的作业。 但是,它推迟了“昂贵”的检查。 “昂贵”检查在称为final_check的步骤中执行,该步骤仅在产生(完整的)推荐分配时执行。这里“昂贵”这个词是相对的。由于大数算术计算,线性实数一致性检查可能非常昂贵,但在Z3中它们被认为是“便宜的”。

线性实际算术检查是急切的。非线性和线性整数算术检查在final_check步骤完成。

请注意,Z3包含多个解算器。上面的行为适用于目录smt中实现的行为。非线性实数算术求解器(nlsat目录)以完全不同的方式工作,并且它不使用上述final_check方法。