Checking Consistency of Event-driven Traces
Parosh Aziz Abdulla, Mohamed Faouzi Atig, R. Govind, Samuel Grahn, Ramanathan S. Thinniyam

TL;DR
This paper introduces an axiomatic approach to verify the consistency of event-driven program traces, analyzes its computational complexity, and provides a practical tool for efficient checking in specific cases.
Contribution
It formalizes an axiomatic semantics for event-driven programs, proves the NP-completeness of trace consistency checking, and identifies a polynomial-time fragment with a prototype implementation.
Findings
Consistency checking is NP-complete in general.
Without nested posting, checking is polynomial-time.
Prototype tool performs well on various benchmarks.
Abstract
Event-driven programming is a popular paradigm where the flow of execution is controlled by two features: (1) shared memory and (2) sending and receiving of messages between multiple handler threads (just called handler). Each handler has a mailbox (modelled as a queue) for receiving messages, with the constraint that the handler processes its messages sequentially. Executions of messages by different handlers may be interleaved. A central problem in this setting is checking whether a candidate execution is consistent with the semantics of event-driven programs. In this paper, we propose an axiomatic semantics for eventdriven programs based on the standard notion of traces (also known as execution graphs). We prove the equivalence of axiomatic and operational semantics. This allows us to rephrase the consistency problem axiomatically, resulting in the event-driven consistency problem:…
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.
Taxonomy
TopicsLogic, programming, and type systems · Distributed systems and fault tolerance · Formal Methods in Verification
