We present a new approach to proving non-termination of non-deterministic integer programs. Our technique is rather simple but efficient. It relies on a purely syntactic reversal of the program's transition system followed by a constraint-based invariant synthesis with constraints coming from both the original and the reversed transition system. The latter task is performed by a simple call to an off-the-shelf SMT-solver, which allows us to leverage the latest advances in SMT-solving. Moreover, our method offers a combination of features not present (as a whole) in previous approaches: it handles programs with non-determinism, provides relative completeness guarantees and supports programs with polynomial arithmetic. The experiments performed with our prototype tool RevTerm show that our approach, despite its simplicity and stronger theoretical guarantees, is at least on par with the state-of-the-art tools, often achieving a non-trivial improvement under a proper configuration of its parameters.
翻译:我们提出了一个新的方法来证明非确定性整数程序没有终结。 我们的技术相当简单,但效率很高。 它依赖于对方案的过渡系统进行纯粹的同步逆转,然后对原转型和反向转型系统的限制进行基于约束的异变综合,然后对原转型和反向转型系统的限制进行约束性的合成。 后一项任务通过简单呼吁使用现成的SMT溶液系统来完成,这使我们能够利用SMT解决方案的最新进展。 此外,我们的方法提供了以前方法中不存在的(整体)特征的组合:它处理非确定性程序,提供相对完整的保证,并以多数值支持程序。 用我们的原型工具Revterm进行的实验表明,我们的方法,尽管是简单和较强的理论保证,但至少与最先进的工具相当,常常在适当的参数配置下实现非三重的改进。