La sémantique d'un grand sous-ensemble d'OCaml, appelé OCamllight , a été formalisée dans HOL par Owens il y a plusieurs années. Plus récemment, une sémantique théorique de type d'un plus petit sous-ensemble d'OCaml a été implémentée dans Nuprl par Kreitz, Hayden et Hickey .
Y a-t-il un développement similaire à Coq?
coq
program-verification
ocaml
Andrea Asperti
la source
la source
Réponses:
Avez-vous vu la thèse d'Arthur Charguéraud, Formules caractéristiques pour la vérification de programme mécanisée ?
Plutôt que de construire le système de types et la sémantique à petits pas comme des relations inductives, il donne une technique pour convertir les programmes Caml en formules caractéristiques. Il s'agit essentiellement d'une généralisation de la sémantique des transformateurs de prédicats pour prendre en charge un très grand sous-ensemble d'Ocaml - notamment, y compris les transtypages non sécurisés comme
Obj.magic
. Pour citer sa thèse:C'est une approche très attrayante si vous voulez prouver qu'un programme Caml particulier est correct (moins si vous êtes intéressé par sa métathéorie, cependant).
la source
Vous pourriez être intéressé par Une implémentation certifiée de ML avec type de polymorphisme structurel et types récursifs de Jacques Garrigue , qui établit la solidité de la sémantique statique et dynamique et les propriétés d'inférence de type pour un langage ML avec ( polymorphisme récursif et) structurel, formalisant ainsi l'un des coins plus avancés d'OCaml (variantes polymorphes et types d'objets).
Cela dit, ce travail vise plus à vérifier la solidité de parties plus avancées du système de type qu'à couvrir l'ensemble des fonctionnalités des programmes OCaml existants. Je pense qu'en termes d'essayer de prouver l'exactitude d'un programme OCaml existant, CFML serait un meilleur choix.
la source