1. ​smt​​ 应用基于 SAT 的 SMT 求解器(最通用的默认策略)。
  2. ​sat​​ 使用 SAT 求解器尝试解决问题(处理纯布尔逻辑问题的基础)。
  3. ​lia​​ 内置策略:求解线性整数算术(LIA)问题。
  4. ​lra​​ 内置策略:求解线性实数算术(LRA)问题。
  5. ​qfbv​​ 内置策略:求解量词自由的位向量(QF_BV)问题。
  6. ​simplify​​ 应用简化规则(基础预处理步骤)。
  7. ​solve-eqs​​ 解方程并消除变量(通过代数方法简化问题)。
  8. ​propagate-values​​ 传播常量值(通过常量折叠简化表达式)。
  9. ​nnf​​ 将目标转换为否定范式(标准化逻辑结构)。
  10. ​tseitin-cnf​​ 通过 Tseitin 编码将目标转换为 CNF(便于 SAT 求解)。
  11. ​qe​​ 应用量词消除(处理存在量词问题)。
  12. ​qffp​​ 尝试解决量词自由的浮点(QF_FP)问题。
  13. ​nra​​ 内置策略:解决非线性实数算术(NRA)问题。
  14. ​fpa2bv​​ 将浮点数转换为位向量(处理浮点问题的常用方法)。
  15. ​propagate-bv-bounds​​ 传播位向量边界(通过简化隐含或矛盾的边界)。
  16. ​bit-blast​​ 将位向量表达式规约为 SAT 问题(位向量求解的核心步骤)。
  17. ​ctx-solver-simplify​​ 基于求解器的上下文相关简化(动态优化断言集)。
  18. ​qe-light​​ 轻量级量词消除(快速处理简单量词)。
  19. ​horn​​ 应用 Horn 子句求解策略(用于约束逻辑编程)。
  20. ​nlsat​​ 使用非线性算术求解器尝试解决问题(针对非线性片段)。
  21. ​default​​ 未指定逻辑时的默认策略(综合使用多种战术)。
  22. ​skip​​ 空操作战术(占位或调试用)。
  23. ​fail​​ 始终失败的战术(用于控制流程)。

基础求解器

方法名描述
smt应用基于 SAT 的 SMT 求解器(默认综合策略,支持多逻辑片段)
sat使用 SAT 求解器解决纯布尔逻辑问题
default未指定逻辑时的默认策略(组合多种战术)
psmt并行 SMT 策略(提升大规模问题求解速度)
fail始终失败的战术(用于策略组合控制)
skip空操作战术(占位或调试用)

算术与线性求解

方法名描述
lia求解线性整数算术(LIA)问题
lra求解线性实数算术(LRA)问题
nra求解非线性实数算术(NRA)问题
lira求解混合线性整数/实数算术(LIRA)问题
qflia求解量词自由的线性整数算术(QF_LIA)问题
qflra求解量词自由的线性实数算术(QF_LRA)问题
qfnia求解量词自由的非线性整数算术(QF_NIA)问题
nlsat使用非线性算术求解器(处理多项式约束)
diff-neq专用求解器:处理仅含差值不等式(如 x - y ≠ k)的整数算术问题

位向量(BV)处理

方法名描述
qfbv求解量词自由的位向量(QF_BV)问题
bit-blast将位向量表达式转换为 SAT 问题(核心位向量求解步骤)
bv1-blast将位向量降维为 1-bit 位向量(仅支持等值、提取和连接操作)
propagate-bv-bounds传播位向量边界(通过简化隐含或矛盾的约束)
max-bv-sharing最大化位向量表达式共享(优化加法器/乘法器等电路结构)
reduce-bv-size通过不等式减少位向量宽度
ackermannize_bv对位向量实例执行阿克曼化(消除函数应用依赖)
qfufbv求解含未解释函数的量词自由位向量(QF_UFBV)问题

浮点数(FP)处理

方法名描述
fpa2bv将浮点数转换为位向量(FP 问题的经典编码方法)
qffp求解量词自由的浮点(QF_FP)问题
qffplra求解量词自由的浮点 + 线性实数算术(QF_FPLRA)问题
qffpbv求解量词自由的浮点 + 位向量(QF_FPBV)问题

量词处理

方法名描述
qe完全量词消除(处理存在量词)
qe-light轻量级量词消除(快速处理简单量词)
qe2基于 QSAT 的量词消除
qe_rec递归应用 QSAT 量词消除
qsat应用 QSAT 求解器(支持含量词的非线性问题)

预处理与简化

方法名描述
simplify通用表达式简化(如常量折叠、代数规则应用)
solve-eqs解方程并消除变量(通过代数方法简化问题)
propagate-values传播常量值(替换已知变量值)
nnf将目标转换为否定范式(标准化逻辑结构)
tseitin-cnf通过 Tseitin 编码转换为 CNF(支持量词忽略的 CNF 生成)
ctx-solver-simplify动态上下文相关简化(基于当前断言集优化表达式)
elim-and将逻辑与(AND)转换为或(OR)和非(NOT)的组合
purify-arith消除冗余算术运算符(如 -, ^, mod

特殊问题策略

方法名描述
horn处理 Horn 子句(用于递归约束或程序验证)
subpaving子空间划分模块测试(用于非线性实数约束)
card2bv将伪布尔约束转换为位向量
lia2pb将受限整数变量转换为 0-1 变量序列
recover-01从布尔变量中恢复 0-1 整数变量
qfaufbv求解含数组和未解释函数的位向量(QF_AUFBV)问题

高级逻辑处理

方法名描述
dt2bv将有限域数据类型替换为位向量
elim-term-ite通过引入辅助变量消除条件表达式(if-then-else
macro-finder识别和应用宏(等价替换)
quasi-macros识别和应用拟宏(部分等价替换)
special-relations检测并替换特殊关系(如偏序、传递闭包)

并行与本地搜索

方法名描述
psat并行 SAT 求解器(加速布尔问题求解)
qfbv-sls随机本地搜索策略(用于 QF_BV 问题的启发式求解)
sls-smt本地搜索策略(尝试解决通用 SMT 问题)

调试与统计

方法名描述
collect-statistics收集统计信息(如变量数、约束数)
solver-subsumption移除被蕴含的断言(简化问题集)
sat-preprocessSAT 预处理(子句消解、常量传播、2-SAT 化简)