Abstract Interpreters: A Monadic Approach to Modular Verification - Archive ouverte HAL
Article Dans Une Revue Proceedings of the ACM on Programming Languages Année : 2024

Abstract Interpreters: A Monadic Approach to Modular Verification

Une approche monadique pour la vérification modulaire des interpréteurs abstraits

Résumé

We argue that monadic interpreters built as layers of handlers stacked atop the free monad, as advocated notably by the ITree library, also constitute a promising way to implement and verify abstract interpreters in dependently-typed theories such as the one underlying the Coq proof assistant. The approach enables both code reuse across projects and modular proofs of soundness of the resulting interpreters. We provide generic abstract control flow combinators proven correct once and for all against their concrete counterpart. We demonstrate how to relate concrete handlers implementing effects to abstract variants of these handlers, essentially capturing the traditional soundness of transfer functions in the context of monadic interpreters. Finally, we provide generic results to lift soundness statements via the interpretation of stateful and failure effects. We formalize all the aforementioned combinators and theories into a Coq library, and demonstrate their benefits by implementing and proving correct two illustrative abstract interpreters respectively for a structured imperative language and a toy assembly.
Fichier principal
Vignette du fichier
monadic_ia.pdf (681.27 Ko) Télécharger le fichier
Origine Fichiers éditeurs autorisés sur une archive ouverte

Dates et versions

hal-04628727 , version 1 (28-06-2024)

Licence

Identifiants

Citer

Sébastien Michelland, Yannick Zakowski, Laure Gonnord. Abstract Interpreters: A Monadic Approach to Modular Verification. Proceedings of the ACM on Programming Languages, 2024, 8 (ICFP), ⟨10.1145/3674646⟩. ⟨hal-04628727⟩
416 Consultations
286 Téléchargements

Altmetric

Partager

More