z3 - SMT-LIB中的QF_NRA逻辑是否可判定?

标签 z3 smt theorem-proving cvc4

SMT-LIB中的QF_NRA逻辑是否可判定?

我知道塔斯基证明了非线性算术是可判定的,即实数多项式系统是可判定的。然而,QF_NRA 属于这个范畴并不明显,因为 QF_NRA 包含除法。因此,第一个问题是 QF_NRA 中的除法是否包括除以分母可能为零的变量。 I posted that as a separate question ,因为事实证明,仅仅回答这个问题就已经足够困难了。

如果除以零不是 QF_NRA 的一部分,那么 QF_NRA 中的除法可以转换为乘法,并且问题将是可判定的,如 Tarski 所证明的。如果除法实际上包含在 QF_NRA 中,那么我不太确定。我的感觉是,问题仍然可以按情况分解,为发生除零的情况引入新变量。在这种情况下,QF_NRA 仍然是可判定的。

最佳答案

它是可判定的。

您可以通过将除法视为未解释的函数来编码 SMT-LIB 除法,您可以在需要时将其公理化,即对于问题中出现的每个 (/t1 t2),您可以添加

t2 != 0 => t1 = (/ t1 t2)*t2  .

这实际上将 QF_NRA 的 SMT-LIB 理论简化为两种理论的组合:实数(无除法)和未解释的函数。现在,由于实数函数和未解释函数在无量词片段中都是可判定的理论,因此您可以依靠 Nelson 和 Oppen 的经典论证来证明组合理论是可判定的。

Yices2例如,可以决定实数和未解释函数的这种组合(基于 MCSAT)。据我所知,Z3 不能将实数和未解释的函数结合起来,而 CVC4 还没有实数的决策过程。

关于z3 - SMT-LIB中的QF_NRA逻辑是否可判定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40182537/

相关文章:

arrays - 用Z3记录

z3 - SMT 求解器支持 SMT-LIB 2.6 声明数据类型语句

verification - 用于位向量算术的 SMT 求解器

proof - 重写简单定理证明

python - Z3:证明两个公式等价时结果错误。 Z3错误?

z3 - 如何编写带有存在量词的长 smt-lib 表达式?

z3 - QF_AUFBV 支持多维数组吗?

z3 - Z3 的引用资料 - 它是如何工作的[内部理论]?

integer - 在 z3 中定义有界整数

logic - 组合逻辑公理