RT Journal Article T1 A core Erlang semantics for declarative debugging A1 Caballero Roldán, Rafael A1 Martin-Martin, Enrique A1 Riesco Rodríguez, Adrián A1 Tamarit, Salvador AB One of the main advantages of declarative languages is their clearly established formal semantics, that allows programmers to reason about the properties of programs and to establish the correctness of tools. In particular, declarative debugging is a technique that analyses the proof trees of computations to locate bugs in programs. However, in the case of commercial declarative languages such as the functional language Erlang, sometimes the semantics is only informally defined, and this precludes these possibilities. Moreover, defining semantics for these languages is far from trivial because they include complex features needed in real applications, such as concurrency. In this paper we define a semantics for Core Erlang, the intermediate language underlying Erlang programs. We focus on the problem of concurrency and show how a medium-sized-step calculus, that avoids the details of small-step semantics but still captures the most common program errors, can be used to define an algorithmic debugger that is sound and complete. PB Elsevier SN 2352-2208 YR 2019 FD 2019 LK https://hdl.handle.net/20.500.14352/91466 UL https://hdl.handle.net/20.500.14352/91466 LA eng NO Caballero, Rafael, et al. «A Core Erlang Semantics for Declarative Debugging». Journal of Logical and Algebraic Methods in Programming, vol. 107, octubre de 2019, pp. 1-37. https://doi.org/10.1016/j.jlamp.2019.05.002. DS Docta Complutense RD 10 abr 2025