¿Has visto la tesis doctoral de Arthur Charguéraud, Fórmulas características para la verificación mecanizada de programas ?
En lugar de construir el sistema de tipos y la semántica de pequeños pasos como relaciones inductivas, ofrece una técnica para convertir los programas de Caml en fórmulas características. Esto es básicamente una generalización de la semántica de transformador de predicados para admitir un subconjunto muy grande de Ocaml, en particular, incluyendo lanzamientos inseguros como Obj.magic
. Para citar de su tesis:
Me he centrado en un subconjunto del lenguaje de programación OCaml, que es un lenguaje de programación secuencial, llamado por valor y de alto nivel. La implementación actual de CFML es compatible con el cálculo del núcleo λ, que incluye funciones de orden superior, recursión, recursión mutua y recursividad polimórfica. Admite tuplas, constructores de datos, coincidencia de patrones, celdas de referencia, registros y matrices. Proporciono una biblioteca Caml adicional que agrega soporte para punteros nulos y actualizaciones fuertes.
Es un enfoque muy atractivo si desea probar que un programa de Caml en particular es correcto (menos aún si está interesado en su metateoría).