Thèse soutenue

An automata-theoretic modelization of instancewise program analysis : transducers as mappings from instances to memory locations

EN
Auteur / Autrice : Pierre Amiranoff
Direction : Véronique Donzeau-Gouge Viguié
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance en 2004
Etablissement(s) : Paris, CNAM

Mots clés

FR

Mots clés contrôlés

Résumé

FR  |  
EN

Nous présentons un cadre général d’analyse statique pour raisonner sur les propriétés des programmes en un nombre infini de points d’exécution, appelés les instances. Sous réserve de prendre conservativement en compte les deux branches des instructions conditionnelles, ces ensembles infinis d’instances sont représentés sous la forme de langages rationnels. Dans le cadre de ce modèle, nous généralisons le concept de variable d’induction aux boucles de récursion des programmes récursifs. Pour la classe large de structures de données équipées d’une structure de monoïde, qui comprend les tableaux et les arbres, les variables d’induction capturent les emplacements-mémoires alloués aux données à chaque étape de l’exécution. Cette caractérisation de données, déterminée à la compilation, est calculée en un temps polynomial comme fonction rationnelle des instances vers les ensembles d’adresses abstraites des structures de données. La construction et les analyses portant sur les ensembles et les fonctions rationnels sont réalisées sous la forme d’automates et de transducteurs. Ce modèle est applicable à toute analyse portant sur les références de données en mémoire, en particulier celles relatives aux dépendances de données, avec pour précision le grain des instances. Nous présentons ainsi un test de dépendances pour des programmes récursifs opérant sur des tableaux. Ce test est modélisé comme un problème de flot sur un graphe orienté dont les arcs sont étiquetés par des entiers. Nous exposons un algorithme réaliste qui s’appuie sur la programmation linéaire en nombres entiers pour résoudre ce problème NP-complet. La prise en compte des gardes conditionnelles est également gérée grâce à l’insertion de contraintes linéaires supplémentaires dans le problème.