ACSL (Ansi C Specification Language) ist eine mit speziellen Kommentaren versehene Spezifikation für C-Code, mit der C-Code formal verifiziert werden kann.
Ich habe es nicht untersucht, aber ich stelle mir vor, dass die in ACSL- Verifizierern verwendeten formalen Methoden Hoare Logic ähneln würden. Für reine funktionale Sprachen wie Haskell kann ich mir allerdings nicht vorstellen, welche Art von Formalismus für die formale Verifikation verwendet wird.
Hat jemand etwas Ähnliches wie ACSL gemacht , aber für eine reine Funktionssprache? Wenn nein, wurden Untersuchungen zur formalen Verifizierung mit spezifikationsbezogenen Anmerkungen für funktionale Sprachen durchgeführt?
Ich weiß, dass es abhängiges Tippen gibt, das von vielen Sprachen (Agda, Idris usw.) unterstützt wird, aber in Haskell ist das abhängige Tippen schwierig, ohne einige (unlesbare?) Typenzauberer auszuführen. In diesem Sinne, und da Haskell so viel bessere Bibliotheksunterstützung als Agda und Idris hat, glaube ich, dass ein solches System zur funktionalen formalen Verifizierung nützlich sein könnte, aber ich weiß nicht, ob dies erforscht wurde oder nicht.
quelle
Siehe auch die Doktorarbeit von Yann Régis-Gianas mit François Pottier: Eine Hoare-Logik für Call-by-Value-Funktionsprogramme (MPC'08) . Diese Arbeit wurde 2009 um die üblichen ML-Nebenwirkungen von Johannes Kanig und Jean-Cristophe Filliatre erweitert: Who: A Verifier for Effectful Higher Order Programs .
quelle
Es ist ein Papier , in dem diesjährigen ICFP , Verfeinerung Typen für Haskell . Das Papier befasst sich eher mit der Terminierungsprüfung als mit der vollständigen Hoare-Logik, aber hoffentlich ist dies ein Anfang in dieser Richtung.
Der entsprechende Arbeitsabschnitt in diesem Artikel enthält einige Hinweise, wie Xu, Peyton-Jones und Claessens statische Vertragsprüfung für Haskell sowie Sonnex, Drossopoulou und Eisenbachs Zeno und Vytiniotis, Peyton-Jones, Claessen und Rosens Halo .
quelle
Unsere Arbeit an der weichen Überprüfung von Verträgen ist verwandt. Auf der OOPSLA 2012 und der ICFP 2014 können Sie Verträge schreiben, die den ACSL-Spezifikationen sehr ähnlich sind, und diese dann entweder statisch überprüfen oder zur Laufzeit dynamisch überprüfen.
quelle