ACSL (Ansi C Specification Language), est une spécification pour le code C, annotée de commentaires spéciaux, qui permet de vérifier formellement le code C.
Je ne l'ai pas étudié, mais j'imagine que les méthodes formelles utilisées dans ACSL vérificateurs seraient similaires à Hoare Logic. Pour les langages fonctionnels purs, comme Haskell, je ne peux pas imaginer quel type de formalisme serait utilisé pour la vérification formelle.
Quelqu'un at-il fait quelque chose de similaire à ACSL , mais pour un langage fonctionnel pur? Sinon, y a-t-il eu des recherches sur la vérification formelle de style annoté par spécifications pour les langages fonctionnels?
Je sais qu'il existe un typage dépendant, que de nombreuses langues (Agda, Idris, etc ...) prennent en charge, mais dans Haskell, le typage dépendant est difficile sans faire un type de sorcellerie (illisible?). Dans cet esprit, et comme Haskell a un support de bibliothèque bien meilleur qu'Agda et Idris, je pense qu'un tel système de vérification formelle fonctionnelle pourrait être utile, mais je ne sais pas si des recherches ont été faites à ce sujet ou non.
la source
Voir aussi le travail de thèse de Yann Régis-Gianas avec François Pottier: Une logique de Hoare pour les programmes fonctionnels d'appel par valeur (MPC'08) . Ce travail a été étendu pour couvrir les effets secondaires habituels du ML par Johannes Kanig et Jean-Cristophe Filliatre en 2009: Who: A Verifier for Effectful Higher-Order Programs .
la source
Il y a un article dans l' ICFP de cette année , les types de raffinement pour Haskell . Le document traite de la vérification de la terminaison plutôt que de la logique Hoare complète, mais j'espère que c'est un début dans cette direction.
La section de travail connexe de cet article contient des pointeurs, tels que Xu, Peyton-Jones et Claessen's statique contract checking for Haskell , et Sonnex, Drossopoulou et Eisenbach's Zeno and Vytiniotis, Peyton-Jones, Claessen et Rosen's Halo .
la source
Notre travail sur la vérification souple des contrats est lié, à OOPSLA 2012 et ICFP 2014 , vous permet d'écrire des contrats, qui ressemblent beaucoup aux spécifications ACSL, puis de les vérifier statiquement ou de les utiliser une vérification dynamique lors de l'exécution.
la source