A Framework for Modelling, Verification and Transformation of Concurrent Imperative Programs
Maksym Bortin
TL;DR
The paper presents a framework for modelling, verification, and transformation of concurrent imperative programs by embedding a jump-based concurrent language into simply typed higher-order logic. It develops stepwise program correspondences, a Hoare-style rely/guarantee program logic with a program-correspondence rule, and a relational extension using state relations to strengthen specifications. Through case studies on Peterson's mutual exclusion algorithm, it demonstrates how auxiliary variables and relational postconditions enable robust termination and liveness proofs, including refinement and abstraction of code fragments. The work provides a foundation for sound, mechanisable reasoning about interleaved computations and supports formal verification using proof assistants. Overall, it offers a cohesive suite of techniques for exact reasoning about correctness, termination, and liveness in concurrent imperative programs with interleaving and awaits.
Abstract
The paper gives a detailed presentation of a framework, embedded into the simply typed higher-order logic and aimed at the support of sound and structured reasoning about various properties of models of imperative programs with interleaved computations. As a case study, a model of the Peterson's mutual exclusion algorithm will be scrutinised in the course of the paper illustrating applicability of the framework.
