coma, an Intermediate Verification Language with Explicit Abstraction Barriers

Andrei Paskevich, Paul Patault, Jean Christophe Filliâtre

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

Abstract

We introduce coma, a formally defined intermediate verification language. Specification annotations in coma take the form of assertions mixed with the executable program code. A special programming construct representing the abstraction barrier is used to separate, inside a subroutine, the “interface” part of the code, which is verified at every call site, from the “implementation” part, which is verified only once, at the definition site. In comparison with traditional contract-based specification, this offers us an additional degree of freedom, as we can provide separate specification (or none at all) for different execution paths. We define a verification condition generator for coma and prove its correctness. For programs where specification is given in a traditional way, with abstraction barriers at the function entries and exits, our verification conditions are similar to the ones produced by a classical weakest-precondition calculus. For programs where abstraction barriers are placed in the middle of a function definition, the user-written specification is seamlessly completed with the verification conditions generated for the exposed part of the code. In addition, our procedure can factorize selected subgoals on the fly, which leads to more compact verification conditions. We illustrate the use of coma on two non-trivial examples, which have been formalized and verified using our implementation: a second-order regular expression engine and a sorting algorithm written in unstructured assembly code.

Original languageEnglish
Title of host publicationProgramming Languages and Systems - 34th European Symposium on Programming, ESOP 2025, Held as Part of the International Joint Conferences on Theory and Practice of Software, ETAPS 2025, Proceedings
EditorsViktor Vafeiadis
PublisherSpringer Science and Business Media Deutschland GmbH
Pages175-201
Number of pages27
ISBN (Print)9783031911200
DOIs
Publication statusPublished - 1 Jan 2025
Externally publishedYes
Event34th European Symposium on Programming, ESOP 2025, which was held as part of the International Joint Conferences on Theory and Practice of Software, ETAPS 2025 - Hamilton, Canada
Duration: 3 May 20258 May 2025

Publication series

NameLecture Notes in Computer Science
Volume15695 LNCS
ISSN (Print)0302-9743
ISSN (Electronic)1611-3349

Conference

Conference34th European Symposium on Programming, ESOP 2025, which was held as part of the International Joint Conferences on Theory and Practice of Software, ETAPS 2025
Country/TerritoryCanada
CityHamilton
Period3/05/258/05/25

Fingerprint

Dive into the research topics of 'coma, an Intermediate Verification Language with Explicit Abstraction Barriers'. Together they form a unique fingerprint.

Cite this