Tracking CSP computations

[EN] Tracing is one of the most important techniques for program understanding and debugging. A trace gives the user access to otherwise hidden information about a computation. In the context of concurrent languages, computations are particularly complex due to the non-deterministic execution order...

Full description

Bibliographic Details
Authors: Llorens Agost, María Luisa|||0000-0002-2790-0055, Oliver Villarroya, Javier|||0000-0002-1169-1260, Silva, Josep|||0000-0001-5096-0008, Tamarit Muñoz, Salvador
Format: article
Publication Date:2019
Country:España
Institution:Universitat Politècnica de València (UPV)
Repository:RiuNet. Repositorio Institucional de la Universitat Politécnica de Valéncia
Language:English
OAI Identifier:oai:riunet.upv.es:10251/145536
Online Access:https://riunet.upv.es/handle/10251/145536
Access Level:Open access
Keyword:Concurrency theory/modeling
CSP
Semantics
Tracking
LENGUAJES Y SISTEMAS INFORMATICOS
CIENCIAS DE LA COMPUTACION E INTELIGENCIA ARTIFICIAL
Description
Summary:[EN] Tracing is one of the most important techniques for program understanding and debugging. A trace gives the user access to otherwise hidden information about a computation. In the context of concurrent languages, computations are particularly complex due to the non-deterministic execution order of processes and to the restrictions imposed on this order by synchronizations; hence, a tracer is a powerful tool to explore, understand and debug concurrent computations. In CSP, traces are sequences of events that define a particular execution. This notion of trace is completely different to the one used in other paradigms where traces are formed by those source code expressions evaluated during a particular execution. We refer to this second notion of traces as tracks. In this work, we introduce the theoretical basis for tracking concurrent and explicitly synchronized computations in process algebras such as CSP. Tracking computations in this kind of systems is a difficult task due to the subtleties of the underlying operational semantics which combines concurrency, non-determinism and non-termination. We define an instrumented operational semantics that generates as a side-effect an appropriate data structure (a track) which can be used to track computations. The formal definition of a tracking semantics improves the understanding of the tracking process, but also, it allows us to formally prove the correctness of the computed tracks. (C) 2018 Elsevier Inc. All rights reserved.