Continuation Passing as an Abstract Syntax for Deductive Verification - Inria - Institut national de recherche en sciences et technologies du numérique Access content directly
Preprints, Working Papers, ... Year : 2022

Continuation Passing as an Abstract Syntax for Deductive Verification


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
Origin : Files produced by the author(s)

Dates and versions

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


  • HAL Id : hal-03115120 , version 2


Andrei Paskevich. Continuation Passing as an Abstract Syntax for Deductive Verification. 2022. ⟨hal-03115120v2⟩
166 View
249 Download


Gmail Facebook X LinkedIn More