Embedding Untrusted Imperative ML Oracles into Coq Verified Code - Archive ouverte HAL Accéder directement au contenu
Pré-Publication, Document De Travail Année : 2019

Embedding Untrusted Imperative ML Oracles into Coq Verified Code

Sylvain Boulmé
Thomas Vandendorpe
  • Fonction : Auteur

Résumé

This paper investigates a lightweight approach-combining Coq and OCaml typecheckers-in order to formally verify higher-order imperative programs in partial correctness. In this approach, the user does never formally reason about effects of imperative functions, but only about their results. Formal guarantees are obtained by combining parametric reasoning over polymorphic functions (i.e. "theorems for free" a la Wadler) with verified defensive programming. This paper illustrates the approach on several examples. Among them: first, the certification of a polymorphic memoized fixpoint operator using untrusted hash-tables; second, a certified Boolean SAT-solver, invoking internally any untrusted but state-of-the-art SAT-solver (itself generally programmed in C/C++).
Fichier principal
Vignette du fichier
main_preprint.pdf (1.06 Mo) Télécharger le fichier
Origine : Fichiers produits par l'(les) auteur(s)
Loading...

Dates et versions

hal-02062288 , version 1 (08-03-2019)
hal-02062288 , version 2 (16-07-2019)

Identifiants

  • HAL Id : hal-02062288 , version 2

Citer

Sylvain Boulmé, Thomas Vandendorpe. Embedding Untrusted Imperative ML Oracles into Coq Verified Code. 2019. ⟨hal-02062288v2⟩

Relations

197 Consultations
252 Téléchargements

Partager

Gmail Facebook X LinkedIn More