Continuation Passing as an Abstract Syntax for Deductive Verification - Archive ouverte HAL Access content directly
Preprints, Working Papers, ... Year :

Continuation Passing as an Abstract Syntax for Deductive Verification

(1)
1

Abstract

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)

Identifiers

  • HAL Id : hal-03115120 , version 2

Cite

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

Share

Gmail Facebook Twitter LinkedIn More