EN FR
EN FR


Section: New Results

Certified polyhedral transformations into more and more concrete languages

Participants : Nicolas Magaud, Julien Narboux, Éric Violard.

We continued our work to complete the proof of polyhedral based transformations in the language Loops designed by Alexandre Pilkiewicz (see the proof scheme on Fig. 5 ). Our idea is to use once again a validator. The validation here consists in comparing two polyhedrons: the one (pprogopt) obtained from the non-optimized Loops program (prog), by translation to the polyhedral language (Plang) (pprog), and then optimization in Plang; and the one (interprogopt) obtained from the optimized Loops program (progopt) by translation into Plang. If these two polyhedrons are the same, then the validator returns true, otherwise it returns false. The proof that the non-optimized and optimized programs have the same behaviour lies on the deterministic property of the function that translates a program Loops into Plang. We obtained the proof in Coq that our scheme is correct. Now, we have to complete the implementation of our optimizing compiler for Loops by connecting our validator with the off the shell tools for polyhedral transformations. We will use the tool PLuTo(http://pluto-compiler.sourceforge.net/ ) to find efficient code transformations and CLooG(http://www.cloog.org/ ) to generate the loops from the polyhedral representation (we proposed an internship for this purpose).

Figure 5. Our proof scheme for a certified compiler of Loops
IMG/proof-scheme.png

We now have to connect the language Loops with more concrete languages (whose features and semantics have to be defined). We already showed how to deal with arithmetic overflows in a more concrete language where each loop variable is a machine integer [20] . Our approach is thus to incrementally add concrete features until joining an intermediate language of CompCert.

Since the members of our team have some skill in defining new languages and their semantics, we thought that it could be a good idea to exploit this and to define a formal semantics for the Multifor syntactic sugar proposed by Philippe Clauss. We aims at associating a rigorous mathematical meaning with this syntactic construct: first a denotational semantics and then an operational one. This work will serve as a base to prove correct the compilation process that translates this construct into intermediate code.