Section: New Results
Non linear analysis: fast inference of polynomial invariants
Participants : Thomas Jensen, David Cachera, Arnaud Jobin.
The problem of automatically inferring non-linear (polynomial) invariants of programs is still a challenge in program verification. A central observation in existing work on generating polynomial invariants is that n-ary relations between variables that can be described as the zeroes of a set of polynomials, correspond to a lattice of polynomials ideals. Such ideals are finitely generated , and all the approaches proposed so far in the literature rely on Gröbner base computations for computing ideal intersection or inclusion, or analysing the effects of polynomial assignments to variables. Computing Gröbner bases however slows down considerably the overall analysis.
We have proposed an abstract interpretation based method for
inferring polynomial invariants that entirely avoids computing
Gröbner bases. The method is precise and efficient, and is obtained
without restricting the expressiveness of the polynomial programming
language. Our analysis handles a general polynomial structured
programming language that includes if and while constructs where
branching conditions are both polynomial equalities and
disequalities. Our analysis uses a form
of weakest precondition calculus for showing that a polynomial
relation
Based on this anlysis, we have designed a constraint-based algorithm for inferring polynomial invariants. Such constraint-based techniques (rather than iteration) when dealing with loops means that it becomes feasible to analyse conditionals precisely, using parameterized polynomial division. A salient feature of this analysis, which distinguishes it from previous analyses, is that it does not require the use of Gröbner base computations. We have implemented this algorithm in Maple and our benchmarks show that our analyzer can successfully infer invariants on a sizeable set of examples, while performing two orders of magnitude faster than other existing implementations [19] .