Continuation Passing as an Abstract Syntax for Deductive Verification - Laboratoire Méthodes Formelles
Pré-Publication, Document De Travail Année : 2022

Continuation Passing as an Abstract Syntax for Deductive Verification

Résumé

Continuation-passing style allows us to devise an extremely economical abstract syntax for a generic algorithmic language. This syntax is flexible enough to naturally express conditionals, loops, (higher-order) function calls, and exception handling. It is type-agnostic and state-agnostic, which means that we can combine it with a wide range of type and effect systems. We argue that this syntax is also well suited for the purposes of deductive verification. Indeed, we show how it can be augmented in a natural way with specification annotations, ghost code, and side-effect discipline. We define the rules of verification condition generation for this syntax, and we show that the resulting formulas are nearly identical to what traditional approaches, like the weakest precondition calculus, produce for the equivalent algorithmic constructions. To sum up, we propose a minimalistic yet versatile abstract syntax for annotated programs for which we can compute verification conditions without sacrificing their size, legibility, and amenability to automated proof, compared to more traditional methods. We believe that it makes it an excellent candidate for internal code representation in program verification tools.
Fichier principal
Vignette du fichier
leiden.pdf (327.88 Ko) Télécharger le fichier
Origine Fichiers produits par l'(les) auteur(s)

Dates et versions

hal-03115120 , version 1 (19-01-2021)
hal-03115120 , version 2 (02-06-2022)

Identifiants

  • HAL Id : hal-03115120 , version 2

Citer

Andrei Paskevich. Continuation Passing as an Abstract Syntax for Deductive Verification. 2022. ⟨hal-03115120v2⟩
215 Consultations
283 Téléchargements

Partager

More