Finding appropriate inductive loop invariants for a program is a key challenge in verifying its functional properties. Although the problem is undecidable in general, several heuristics have been proposed to handle practical programs that tend to have simple control-flow structures. However, these heuristics only work well when the space of invariants is small. On the other hand, machine-learned techniques that use continuous optimization have a high sample complexity, i.e., the number of invariant guesses and the associated counterexamples, since the invariant is required to exactly satisfy a specification. We propose a novel technique that is able to solve complex verification problems involving programs with larger number of variables and non-linear specifications. We formulate an invariant as a piecewise low-degree polynomial, and reduce the problem of synthesizing it to a set of integer linear programming (ILP) problems. This enables the use of state-of-the-art ILP techniques that combine enumerative search with continuous optimization; thus ensuring fast convergence for a large class of verification tasks while still ensuring low sample complexity. We instantiate our technique as the open-source oasis tool using an off-the-shelf ILP solver, and evaluate it on more than 300 benchmark tasks collected from the annual SyGuS competition and recent prior work. Our experiments show that oasis outperforms the state-of-the-art tools, including the winner of last year's SyGuS competition, and is able to solve 9 challenging tasks that existing tools fail on.
翻译:找到适合程序功能特性的诱导性回路是验证其功能特性的关键挑战。 虽然问题无法从总体上看, 我们提议了几种超自然技术, 以便处理往往具有简单控制流结构的实用程序。 但是, 这些超自然技术只有在变量空间小时才有效。 另一方面, 使用连续优化的机器学习技术具有很高的试样复杂性, 也就是说, 静自然猜想和相关的反比标数的数量, 因为变量需要完全符合一个规格。 我们提议了一种新颖的技术, 能够解决复杂的核查问题, 涉及数量较多的变量和非线性规格的软件。 但是, 只有当变量空间小时, 这些超自然学才有效。 使用连续优化的混合线性编程( ILP) 问题。 这使得能够使用最先进的 ILP 技术, 将数字搜索与持续优化结合起来; 从而确保大量核查任务的快速趋同, 同时仍然确保较低的变量复杂程度。 我们开发的不易变异性( Sylas), 我们用最新的Syal- Plial- sillal- train- produstrual 等技术, 显示我们最近收集的Syal- salial- sal- salial- sliversal- pal- sal- sal- sal- tral- sal- holvial- pal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- saltravial- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- ligal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal-