POLIMON: Checking Temporal Properties over Out-of-order Streams at Runtime
Felix Klaedtke
TL;DR
POLÍMON tackles runtime verification for distributed systems where events may arrive out of order, checking specifications written in $MTL$ and $MTL$^\downarrow$ (MTL with the freeze quantifier) against streaming observations. It introduces a three-valued, knowledge-gap–aware semantics over observations and a graph-based, pipelined monitor that updates verdicts as soon as information becomes available, using wall-clock time rather than a fully ordered timestamp. The key contributions include a scalable, multi-core Go implementation with state export/import capabilities and explicit gap-closing mechanisms, a rigorous soundness/completeness framework, and an extensive experimental evaluation showing favorable performance relative to prior work and clarifying the trade-offs when data values are involved. The approach enables real-time verification in unreliable, distributed environments (e.g., SDN or microservice architectures) and highlights practical limits and directions for improving throughput for data-rich specifications.
Abstract
This paper presents the monitoring tool POLIMON for checking system behavior at runtime against specifications expressed as formulas in the real-time logic MTL or its extension with the freeze quantifier. The tool's distinguishing feature is that POLIMON can receive messages describing the system events out of order. Furthermore, since POLIMON processes received messages immediately, it outputs verdicts promptly when a message's described system event leads to a violation of the specification. This makes the tool well suited, e.g., for verifying the behavior of distributed systems with unreliable channels at runtime.
