## Section: New Results

### Handling Polynomials for Program Analysis and Transformation

Participant : Paul Feautrier.

As shown in Section 7.10 , many problems in parallel programs analysis and verification can be reduced to proving or disproving properties of polynomials in the variables of the program. For instance, the so-called “linearizations” (replacing a multi-dimensional object by a one-dimensional one) generate polynomial access functions. These polynomials then reappear in dependence testing, scheduling, and invariant construction. It may also happen that polynomials are absent from the source program, but are created either by an enabling analysis, as for OpenStream, or are imposed by complexity consideration. The usual solution is to construct a multi-dimensional function (e.g., a schedule for parallelization or a ranking function for termination [15] ), which can then be converted into polynomials by counting. However, a direct approach is preferable, especially when the resulting schedule is to be used for further analysis, e.g., in real-time situations or WCET evaluation.

What is needed here is a replacement for the familiar emptiness tests and for
Farkas lemma (deciding whether an affine form is positive inside a polyhedron).
Recent mathematical results by Handelman and Schweighofer on the
*Positivstellensatz* allow one to devise algorithms that are able to solve
these problems. The difference is that one gets only sufficient conditions, and
that complexity is much higher than in the affine cases. A paper presenting
applications of these ideas to three use cases – dependence testing,
scheduling, and transitive closure approximation – was presented at the 5th
International Workshop on Polyhedral Compilation Techniques
(IMPACT'15) [6] in Amsterdam in January 2015. A tool
implementing polyhedral schedules complements this work, see
Section
6.6 .