Algorithmic Verification of Asynchronous Programs
Pierre Ganty, Rupak Majumdar

TL;DR
This paper models asynchronous programs formally, proving that safety verification is EXPSPACE-complete and liveness verification is decidable and polynomial-time equivalent to Petri Net reachability, enabling verification via Petri Nets.
Contribution
It introduces a polynomial-time reduction from asynchronous programs to Petri Nets, facilitating the use of Petri Net algorithms for verification tasks.
Findings
Safety verification is EXPSPACE-complete.
Liveness verification is decidable and equivalent to Petri Net reachability.
Extensions to the model affect decidability and verification complexity.
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
