Sémantiques des langages impératifs d'ordre superieur et interprétation abstraite
Auteur / Autrice : | François Jérôme Bourdoncle |
Direction : | Patrick Cousot |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance en 1992 |
Etablissement(s) : | Palaiseau, Ecole polytechnique |
Jury : | Président / Présidente : Jean Vuillemin |
Examinateurs / Examinatrices : Jean-Jacques Lévy, Reinhard Wilhelm | |
Rapporteur / Rapporteuse : Gérard Berry, Alan Mycroft |
Mots clés
Mots clés contrôlés
Résumé
L'interprétation abstraite ou analyse sémantique d'un langage de programmation est une méthode formelle permettant d'obtenir, de manière statique (i. E. A la compilation) et automatique, une description approchée du comportement dynamique (i. E. A l'exécution) des programmes. Cette méthode a ete appliquée jusqu'ici a des langages relativement simples (langages impératifs, fonctionnels, logiques ou parallèles du premier ordre). Or les langages de programmation modernes comme le langage modula-3 ou même des langages plus anciens comme pascal comportent des mécanismes de programmation puissants (passage des paramètres formels par référence, passage en paramètre des procédures locales, branchements a des étiquettes non locales, exceptions) qui augmentent de manière considérable leur puissance d'expression et leur complexité sémantique. Cette thèse aborde le problème de l'interprétation abstraite des langages impératifs d'ordre supérieur. Dans une première partie, nous montrons que des interprétations abstraites trop naïves de tels langages sont a la fois extrêmement couteuses et imprécises. Pour remédier a ces problèmes, nous introduisons une nouvelle sémantique des langages impératifs d'ordre supérieur dont l'interprétation abstraite est précise et peu couteuse et nous établissons la correction de cette sémantique pour une nouvelle classe non décidable de programmes comprenant en particulier la classe décidable des programmes pascal. Puis, dans la seconde partie, nous abordons la technique du debugging abstrait permettant d'effectuer une mise au point formelle des programmes et nous présentons le système syntox permettant d'effectuer le debugging abstrait du langage pascal par la détermination de l'intervalle de variation des variables scalaires des programmes