Validating Traces of Distributed Programs Against TLA+ Specifications

Fuente: arXiv
Salvato in:
Dettagli Bibliografici
Autori principali: Cirstea, Horatiu, Kuppe, Markus A., Loillier, Benjamin, Merz, Stephan
Natura: Preprint
Pubblicazione: 2024
Soggetti:
Accesso online:
Tags: Aggiungi Tag
Nessun Tag, puoi essere il primo ad aggiungerne!!
_version_ 1866916397489061888
author Cirstea, Horatiu
Kuppe, Markus A.
Loillier, Benjamin
Merz, Stephan
author_facet Cirstea, Horatiu
Kuppe, Markus A.
Loillier, Benjamin
Merz, Stephan
contents TLA+ is a formal language for specifying systems, including distributed algorithms, that is supported by powerful verification tools. In this work we present a framework for relating traces of distributed programs to high-level specifications written in TLA+. The problem is reduced to a constrained model checking problem, realized using the TLC model checker. Our framework consists of an API for instrumenting Java programs in order to record traces of executions, of a collection of TLA+ operators that are used for relating those traces to specifications, and of scripts for running the model checker. Crucially, traces only contain updates to specification variables rather than full values, and developers may choose to trace only certain variables. We have applied our approach to several distributed programs, detecting discrepancies between the specifications and the implementations in all cases. We discuss reasons for these discrepancies, best practices for instrumenting programs, and how to interpret the verdict produced by TLC.
format Preprint
id arxiv_https___arxiv_org_abs_2404_16075
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Validating Traces of Distributed Programs Against TLA+ Specifications
Cirstea, Horatiu
Kuppe, Markus A.
Loillier, Benjamin
Merz, Stephan
Programming Languages
Software Engineering
TLA+ is a formal language for specifying systems, including distributed algorithms, that is supported by powerful verification tools. In this work we present a framework for relating traces of distributed programs to high-level specifications written in TLA+. The problem is reduced to a constrained model checking problem, realized using the TLC model checker. Our framework consists of an API for instrumenting Java programs in order to record traces of executions, of a collection of TLA+ operators that are used for relating those traces to specifications, and of scripts for running the model checker. Crucially, traces only contain updates to specification variables rather than full values, and developers may choose to trace only certain variables. We have applied our approach to several distributed programs, detecting discrepancies between the specifications and the implementations in all cases. We discuss reasons for these discrepancies, best practices for instrumenting programs, and how to interpret the verdict produced by TLC.
title Validating Traces of Distributed Programs Against TLA+ Specifications
topic Programming Languages
Software Engineering
url https://arxiv.org/abs/2404.16075