Você já viu a tese de doutorado de Arthur Charguéraud, fórmulas características para verificação mecanizada de programas ?
Em vez de construir o sistema de tipos e a semântica de pequenos passos como relações indutivas, ele fornece uma técnica para converter programas Caml em fórmulas características. Isso é basicamente uma generalização da semântica do transformador de predicado para suportar um subconjunto muito grande de Ocaml - principalmente, incluindo elencos inseguros como Obj.magic
. Para citar sua tese:
Eu me concentrei em um subconjunto da linguagem de programação OCaml, que é uma linguagem de programação seqüencial, de chamada por valor e de alto nível. A implementação atual do CFML suporta o λ-cálculo básico, incluindo funções de ordem superior, recursão, recursão mútua e recursão polimórfica. Ele suporta tuplas, construtores de dados, correspondência de padrões, células de referência, registros e matrizes. Eu forneço uma biblioteca Caml adicional que adiciona suporte a ponteiros nulos e atualizações fortes.
É uma abordagem muito atraente se você quiser provar que um determinado programa Caml está correto (menos ainda, se você estiver interessado em sua metateoria).