Semantiques des langages imperatifs d'ordre superieur et interpretation abstraite

L'interpretation abstraite ou analyse semantique d'un langage de programmation est une methode formelle permettant d'obtenir, de maniere statique (i. E. A la compilation) et automatique, une description approchee du comportement dynamique (i. E. A l'execution) des programmes. Cette methode a ete appliquee jusqu'ici a des langages relativement simples (langages imperatifs, fonctionnels, logiques ou paralleles du premier ordre). Or les langages de programmation modernes comme le langage modula-3 ou meme des langages plus anciens comme pascal comportent des mecanismes de programmation puissants (passage des parametres formels par reference, passage en parametre des procedures locales, branchements a des etiquettes non locales, exceptions) qui augmentent de maniere considerable leur puissance d'expression et leur complexite semantique. Cette these aborde le probleme de l'interpretation abstraite des langages imperatifs d'ordre superieur. Dans une premiere partie, nous montrons que des interpretations abstraites trop naives de tels langages sont a la fois extremement couteuses et imprecises. Pour remedier a ces problemes, nous introduisons une nouvelle semantique des langages imperatifs d'ordre superieur dont l'interpretation abstraite est precise et peu couteuse et nous etablissons la correction de cette semantique pour une nouvelle classe non decidable de programmes comprenant en particulier la classe decidable 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 presentons le systeme syntox permettant d'effectuer le debugging abstrait du langage pascal par la determination de l'intervalle de variation des variables scalaires des programmes