Titre : Analyse de la complexité et transformation de programmes

Résumé :

Le thème de la thèse concerne l'analyse automatique de la complexité des programmes, en particulier en terme de complexité de la fonction calculée et non de l'algorithme implémenté.

D'une part, la notion d'ordres de terminaison des systèmes de réécriture est restreinte à l'aide de quasi-interprétations, ce qui permet de donner une borne sur la complexité de la fonction calculée. Cette borne n'est pas nécessairement atteinte par le système étudié et il peut être nécessaire de transformer le programme pour l'atteindre. Une caractérisation de Ptime et une de Pspace sont ainsi obtenues.

D'autre part, un mini langage d'assemblage est étudié au moyen de réseaux de Petri. Il devient ainsi possible de regrouper dans une seule analyse une preuve de terminaison proche du ``Size-Change Principle'', une preuve de calcul en place (sans allouer de mémoire supplémentaire) et une simplification du programme similaire à la déforestation. De plus, cette technique permet de prouver la terminaison d'une très grande classe de programmes. En particulier, la terminaison d'algorithmes comme celui d'Euclide ou comme les algorithmes ``Diviser pour régner'' est obtenue de manière totalement automatique.

Mots-clés : Terminaison, complexité, réécriture, réseaux de Petri, déforestation.