Projects

Runtime verification

LoomRV

Multi-Property Temporal Logic Monitoring

A C++ monitoring framework for past-time LTL and MTL in discrete and dense time, combining a shared computation graph with a data-oriented execution engine.

LoomRV combines two mechanisms: repeated subformulas merge into a shared graph with separate property roots; a linear schedule and two contiguous arenas organize execution and temporal state.
Two complementary contributions: share work across properties, and make each update efficient through contiguous execution and state. Figure from the FMCAD presentation.
Year
2026
Role
First author · Research and implementation
Built with
C++20 · Temporal logic · CMake · Docker

Monitoring many properties, efficiently

A system may need to check dozens of requirements against the same execution trace: whether an event occurred within a timing window, or whether a condition has held throughout a period. Independent monitors repeat input processing and evaluation of common subformulas. Their execution and memory layout also matter, even when there is no work to share.

LoomRV addresses both costs. It extends compositional sequential-network monitoring to multiple past-time LTL and MTL properties, in both discrete and dense time. The framework combines a shared computation graph with a data-oriented C++ runtime.

Compile shared work once

The frontend builds one directed acyclic graph across the registered properties. A content-addressable node database checks structural signatures and reuses identical subformulas, so each shared result is computed once per update.

Make execution and state contiguous

Sharing is only half of the design. The compiler packs the graph into an immutable array of fixed-size node records in topological order. Integer child indices replace pointers between heap-allocated objects, and operands precede their users. The engine evaluates the schedule in one forward pass, without recursion.

Metric temporal operators maintain variable-size sets of time intervals. Instead of giving every node its own growing container, LoomRV stores this interval state in a preallocated, double-buffered arena:

  1. Read a node’s previous state and the current results of its already-evaluated children.
  2. Append its updated interval state to the current buffer at a write cursor.
  3. At the timestep boundary, swap the buffers and reset the cursor.

Buffer capacity is computed from the compiled formulas’ temporal bounds and allocated once at monitor creation. Metric interval state needs no dynamic allocation during evaluation. The layout favors spatial locality and separates previous state from the current update.

The shared DAG becomes a topological array of ten node records. Below, a previous-state buffer and a current-state buffer hold contiguous interval data; a write cursor advances through preallocated space, and buffer roles swap after each update.
A linear node schedule and a double-buffered arena organize both computation and temporal state. Figure from the FMCAD presentation; open it to inspect the layout.

My contribution

I am the first author of Multi-Property Temporal Logic Monitoring, published in the FMCAD 2026 proceedings by TU Wien Academic Press, with Doğan Ulus. I developed LoomRV, building on my senior project, DO-VERIFY. The work integrates shared monitor construction, the C++ execution engine, and arena-based temporal state with a reproducible experimental artifact. The repository includes the Docker environment, trace generation, experiment scripts, and result tables.

Arınç presenting Multi-Property Temporal Logic Monitoring, with the title slide naming Arınç Demir and Doğan Ulus at FMCAD 2026 in Graz.
Presenting the work at FMCAD 2026 in Graz.

Measure runtime efficiency and shared execution

The paper first evaluates each of 30 Timescales properties independently. None contains repeated subexpressions, so these comparisons demonstrate runtime improvements without subformula deduplication. It then evaluates all 30 properties together, comparing independent LoomRV monitors with the full shared monitor.

The results below distinguish these experiments. The multi-property timings include input processing and evaluation over one million steps; the full gain combines the execution engine, one-pass trace processing, and structural sharing. Controlled high- and low-sharing formula sets further explore sensitivity to structural overlap. Representative real-world property collections remain an important next step for measuring how much sharing occurs naturally.

From the paper

Faster execution, then shared work.

The evaluation measures the runtime on individual properties, then the complete framework on a shared trace. Each comparison uses the same feeder and time model for both tools.

Single-property throughput

Median speedup over Reelay across 30 individual Timescales properties in discrete time, and 90 configurations in dense time (30 properties at three temporal densities). These formulas contain no repeated subexpressions.

Discrete · JSON
2.00×
Discrete · Binary
1.81×
Dense · JSON
3.45×
Dense · Binary
4.53×

Single-property results: Section IV-B and Tables IV–VI.

Thirty properties on one trace

LoomRV Sequential already achieves 2.1–3.8× speedups with the new schedule and arena, without cross-property sharing. LoomRV Multi reaches 6.4–11.7× by combining that runtime with shared evaluation and a single pass through the trace. These are end-to-end comparisons with Reelay-Sequential.

Speedups over Reelay-Sequential. Discrete JSON: LoomRV Sequential 2.1 times, Multi 11.7 times. Discrete binary: 3.0 and 6.6. Dense JSON: 2.9 and 7.3. Dense binary: 3.8 and 6.4. Sequential has no cross-property sharing; Multi uses a shared DAG.
30 Timescales properties · 1,000,000 input steps. The lighter bars show independent LoomRV monitors; the darker bars show the shared monitor. Higher is better.
Execution time in seconds; speedups relative to Reelay-Sequential, from Tables VII and VIII.
WorkloadReelay SequentialLoomRV SequentialLoomRV Multi
Discrete · JSON9.344.422.1×0.8011.7×
Discrete · Binary4.661.583.0×0.716.6×
Dense · JSON27.499.632.9×3.777.3×
Dense · Binary22.285.803.8×3.456.4×

Source: Multi-Property Temporal Logic Monitoring, FMCAD 2026 ↗. Speedups are the reported values, calculated before rounding the displayed timings.