Précédent : Développement de l'assistant Coq
Remonter : Résultats nouveaux Suivant :
Formalismes
et méta-théorie
J-C. Filliâtre étudie la preuve de programmes impératifs dans le cadre de la théorie des types. Ces programmes comprennent aussi bien des traits purement fonctionnels (fonctions comme objets de première classe) qu'impératifs (références, tableaux, exceptions). Pour cela, il a défini une traduction des programmes impératifs vers des programmes fonctionnels de même sémantique. Cette traduction s'inspire des travaux de Wadler et Moggi sur les monades, en raffinant quelques principes.
J.-C. Filliâtre a ensuite défini une annotation des programmes à la manière de la logique de Floyd-Hoare, c'est-à-dire par insertion de prédicats à l'intérieur des programmes (assertions logiques, invariants de boucle, variants). A partir d'un programme annoté, il a montré que l'on pouvait construire une preuve partielle de la spécification du programme, dont le contenu informatif est la traduction fonctionnelle précédemment décrite. Les morceaux manquants du terme de preuve sont les obligations de preuve qu'il faut prouver pour établir la correction et la terminaison du programme. Ce travail a fait l'objet d'une présentation à TYPES'98 et d'un article [[41]].
Cet outil est distribué dans Coq. Il a nécessité l'implantation d'une tactique générale qui prend en argument un terme de preuve partiel et l'applique à un but donné, en engendrant les obligations de preuves correspondantes. Cette méthode a été appliquée avec succès sur des exemples de programmes non triviaux. On a ainsi montré que l'on retrouvait, sur des programmes impératifs simples, les mêmes obligations de preuves que celles données sur le papier par des méthodes traditionnelles de logique de Floyd-Hoare.
Participants : Eva Rose, Pierre Lescanne.
Mots clés : Java, carte Java, systèmes intégrés, code mobile, applets, sécurité, réseaux, vérification de bytecode, machine virtuelle, Centaur .
Un algorithme, dit Lightweight Bytecode Verification (LBV), permet de vérifier la sûreté des codes mobiles JAVA, appelés aussi applets ; ceux-ci transitent, en général, sur des réseaux non sécurisés et sont exécutés sur une carte JAVA ou sur un processeur intégré ayant très peu de ressources. Cette technique qui repose sur la notion de certificat envoyé avec le code mobile permet d'éviter un mécanisme lourd fondé sur des signatures de codes et de la cryptographie. Une spécification formelle d'un générateur de certificats, sa preuve de complétude par rapport à la technique traditionnelle de vérification de bytecode et une implantation en Centaur, fondée sur la sémantique naturelle, d'un prototype de LBV sont en cours de réalisation.