This paper presents a theory of non-linear integer/real arithmetic and algorithms for reasoning about this theory. The theory can be conceived as an extension of linear integer/real arithmetic with a weakly-axiomatized multiplication symbol, which retains many of the desirable algorithmic properties of linear arithmetic. In particular, we show that the conjunctive fragment of the theory can be effectively manipulated (analogously to the usual operations on convex polyhedra, the conjunctive fragment of linear arithmetic). As a result, we can solve the following consequence-finding problem: given a ground formula F, find the strongest conjunctive formula that is entailed by F. As an application of consequence-finding, we give a loop invariant generation algorithm that is monotone with respect to the theory and (in a sense) complete. Experiments show that the invariants generated from the consequences are effective for proving safety properties of programs that require non-linear reasoning.
翻译:本文介绍了非线性整数/真实算术理论,以及用于推理这一理论的算法。 理论可以被视为线性整数/实际算术的延伸, 其倍增效应符号微弱, 保留了线性算术的许多理想算法特性。 特别是, 我们显示, 理论的共和性碎片可以被有效操纵( 与线性算术的共通性碎片, 共通性极的通常操作类似 ) 。 因此, 我们可以解决以下结果调查问题: 给地公式F, 找到F 产生的最强的共和公式。 作为结果调查的应用, 我们给出了一个对理论和( 某种意义上) 完整的一元化的循环。 实验表明, 后果产生的变数对于证明需要非线性推理的程序的安全特性是有效的。