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.