previous up next contents
Précédent : Analyse statique Remonter : Analyse statique Suivant : Preuve de propriétés

Preuve mécanique de propriétés de programmes définis sur des structures de données récursives

Participants : Daniel Le Métayer

Deux démarches principales prévalent en matière de preuve de propriétés liées à la correction des programmes. La première considère un langage de propriétés très riche (qui permet de décrire les spécifications complètes des programmes) et des outils de preuve qui requièrent une forte participation de l'utilisateur (assistants de preuve). La seconde traite des propriétés beaucoup plus simples, décrites par exemple en termes de types, et qui sont vérifiées automatiquement (inférence ou vérification de types). Nous pensons qu'il est possible de fournir des outils automatiques de preuve de propriétés de correction plus riches que les types standards et que ces outils pourraient rendre des services importants dans la phase de mise au point des programmes. Nous en avons fourni une illustration avec une méthode de preuve automatique de propriétés uniformes sur les structures de données récursives (listes, arbres, ...). Comme exemples simples de propriétés uniformes, citons ou . Nous avons proposé un langage de propriétés uniformes et un analyseur qui s'apparente à un algorithme d'inférence de types non standard [13]. L'analyseur traite un langage fonctionnel du premier ordre et exploite les prédicats contenus dans les tests, ce qui lui permet de montrer par exemple qu'un programme de tri produit une liste de valeurs ascendantes.


previous up next contents
Précédent : Analyse statique Remonter : Analyse statique Suivant : Preuve de propriétés