## Section: New Results

### Handling Polynomials for Program Analysis and Transformation

Participant : Paul Feautrier.

As is well known in natural language processing, the first step in translating
a text from one language to another is to understand it. The situation is
the same for formal languages. A language processor has to “understand”
a program before translating or optimizing or verifying it. Such understanding
takes the form of a *model*, usually a mathematical representation
whose natural operations mimic the behavior of its program. The polyhedral
model is such a representation. However, the set of programs it can represent
is too restricted, and the hunt for more powerful models has been under way
since the millennium.

An obvious ideas is to replace affine formulas by polynomials, and
hence polyhedra by semi-algebraic sets. Polynomials are ubiquitous in
HPC and embedded system programming. 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 (see
Section 7.2), or are imposed by
complexity consideration. Lastly, polynomials may be native to the
underlying algorithm, as when distances are computed by the usual
Euclidean formula. 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 (IMPACT'15) [14]. A tool to manipulate polynomials, polynomial constraints and objective functions, needed for the derivation of polynomial schedules, complements this work (see Section 6.2). It implements Farkas lemma and its generalization with Handelman & Schweighofer formulations, and is in constant development, including improvements on the objective functions, in particular to make schedule selection more stable, independently on the degree of the polynomial schedule.