arXiv Science⌕ Search

arXiv · 1011.0551

Algorithmic Verification of Asynchronous Programs

Abstract

Asynchronous programming is a ubiquitous systems programming idiom to manage concurrent interactions with the environment. In this style, instead of waiting for time-consuming operations to complete, the programmer makes a non-blocking call to the operation and posts a callback task to a task buffer that is executed later when the time-consuming operation completes. A co-operative scheduler mediates the interaction by picking and executing callback tasks from the task buffer to completion (and these callbacks can post further callbacks to be executed later). Writing correct asynchronous programs is hard because the use of callbacks, while efficient, obscures program control flow. We provide a formal model underlying asynchronous programs and study verification problems for this model. We show that the safety verification problem for finite-data asynchronous programs is expspace-complete. We show that liveness verification for finite-data asynchronous programs is decidable and polynomial-time equivalent to Petri Net reachability. Decidability is not obvious, since even if the data is finite-state, asynchronous programs constitute infinite-state transition systems: both the program stack and the task buffer of pending asynchronous calls can be potentially unbounded. Our main technical construction is a polynomial-time semantics-preserving reduction from asynchronous programs to Petri Nets and conversely. The reduction allows the use of algorithmic techniques on Petri Nets to the verification of asynchronous programs. We also study several extensions to the basic models of asynchronous programs that are inspired by additional capabilities provided by implementations of asynchronous libraries, and classify the decidability and undecidability of verification questions on these extensions.

Explore related subjects

Keep this discovery

Explore connections, maps & timelines

BibTeXRIS

Pierre Ganty, Rupak Majumdar. 2011-11-14. Algorithmic Verification of Asynchronous Programs. https://doi.org/10.1145/2160910.2160915

Cite the original work for its findings. Save a collection to share your selection of sources.

KEEP EXPLORING

Related papers

Forall-Exists Relational Verification by Filtering to Forall-Forall

Relational verification encompasses reasoning about data abstraction, security and privacy, secure compilation, and functional specification of tensor programs, among others. Several relational logics and tools support compositional reasoning about $\forall\forall$ (2-safety) properties and, generally, $k$-safety properties. In contrast, few logics and tools exist for reasoning about $\forall\exists$ properties which are critical in the presence of nondeterminism. This paper's primary contribution is a technique for verifying a $\forall\exists$ judgment by way of a novel transformation. The filter-adequacy transformation adds assertions to a product program in such a way that the desired $\forall\exists$ property (of a pair of underlying unary programs) is implied by a $\forall\forall$ property of the transformed product. The paper develops bicoms, a form of product programs that facilitates expressing good alignments and caters for direct translation of $\forall\forall$ properties to unary correctness; proves that successful $\forall\forall$ verification of a transformed bicom implies the $\forall\exists$ spec for its underlying unary commands; and evaluates the technique using a prototype auto-active relational verifier. The technique enables users to work with ordinary assertions and assumptions, and a standard assertion language, so that existing $\forall\forall$ and unary verification tools can be used for $\forall\exists$.

cs.LO↗

Synthetic Differential Geometry in Lean

This article is about the formalization of synthetic differential geometry with the Lean proof assistant and the mathematical library mathlib. The main result we prove and formalize is a Taylor theorem for functions of several variables, where the series expansion is around an infinitesimal neighborhood. Most of our proofs are in fact new. Our investigations highlight the possibility of using mathlib to do constructive mathematics.

cs.LO↗

Reasoning about Continuous-Variable Quantum Systems

Continuous-variable quantum computing (CVQC) is a computing paradigm in which measurements yield values over a continuous domain. CVQC is both a convenient computational framework for modeling physical quantum systems, and a good abstraction for hardware platforms based on quantum optics. Yet, the semantic foundations of CVQC remain underdeveloped. To address this gap, we develop a formal semantics for a core CV quantum programming language, and sound verification methods for program correctness. A main contribution of this work is to isolate a well-behaved quantitative predicate domain that achieves sufficient expressiveness to accommodate unbounded values as they arise in the infinite-dimensional, continuous setting. Specifically, we choose closed positive quadratic forms as semantic predicates, representing finite expectations, domains of finiteness, and infinite penalties in one ordered object. We validate our choice by establishing that our semantic predicates satisfy desirable closure properties including the definition of weakest preconditions. We validate our design with two case studies, including an example based on the celebrated GKP error-correcting code, for which we establish a second moment bound.

cs.LO↗