Catálogo de publicaciones - libros
Título de Acceso Abierto
Programming Languages and Systems: Programming Languages and Systems
Parte de: Theoretical Computer Science and General Issues Series
En conferencia: 27º European Symposium on Programming (ESOP) . Thessaloniki, Greece . April 16, 2018 - April 19, 2018
Resumen/Descripción – provisto por la editorial
No disponible.
Palabras clave – provistas por la editorial
artificial intelligence; computer architecture; computer software selection and evaluation; distributed computer systems; formal logic; formal model; java; model checking; processors; program compilers; program verification; programming language; semantics; separation logic; software engineering specifications; theorem proving; type; systems verification
Disponibilidad
Institución detectada | Año de publicación | Navegá | Descargá | Solicitá |
---|---|---|---|---|
No requiere | 2018 | Directory of Open access Books | ||
No requiere | 2018 | SpringerLink |
Información
Tipo de recurso:
libros
ISBN impreso
978-3-319-89883-4
ISBN electrónico
978-3-319-89884-1
Editor responsable
Springer Nature
País de edición
Reino Unido
Fecha de publicación
2018
Tabla de contenidos
Correctness of a Concurrent Object Collector for Actor Languages
Juliana Franco; Sylvan Clebsch; Sophia Drossopoulou; Jan Vitek; Tobias Wrigstad
ORCA is a garbage collection protocol for actor-based programs. Multiple actors may mutate the heap while the collector is running without any dedicated synchronisation. ORCA is applicable to any actor language whose type system prevents data races and which supports causal message delivery. We present a model of ORCA which is parametric to the host language and its type system. We describe the interplay between the host language and the collector. We give invariants preserved by ORCA, and prove its soundness and completeness.
- Concurrency and Distribution | Pp. 885-911
Paxos Consensus, Deconstructed and Abstracted
Álvaro García-Pérez; Alexey Gotsman; Yuri Meshman; Ilya Sergey
Lamport’s Paxos algorithm is a classic consensus protocol for state machine replication in environments that admit crash failures. Many versions of Paxos exploit the protocol’s intrinsic properties for the sake of gaining better run-time performance, thus widening the gap between the original description of the algorithm, which was proven correct, and its real-world implementations. In this work, we address the challenge of specifying and verifying complex Paxos-based systems by (a) devising composable specifications for implementations of Paxos’s single-decree version, and (b) engineering disciplines to reason about protocol-aware, semantics-preserving optimisations to single-decree Paxos. In a nutshell, our approach elaborates on the deconstruction of single-decree Paxos by Boichat et al. We provide novel non-deterministic specifications for each module in the deconstruction and prove that the implementations refine the corresponding specifications, such that the proofs of the modules that remain unchanged can be reused across different implementations. We further reuse this result and show how to obtain a verified implementation of Multi-Paxos from a verified implementation of single-decree Paxos, by a series of novel protocol-aware transformations of the network semantics, which we prove to be behaviour-preserving.
- Concurrency and Distribution | Pp. 912-939
On Parallel Snapshot Isolation and Release/Acquire Consistency
Azalea Raad; Ori Lahav; Viktor Vafeiadis
Parallel snapshot isolation (PSI) is a standard transactional consistency model used in databases and distributed systems. We argue that PSI is also a useful formal model for software transactional memory (STM) as it has certain advantages over other consistency models. However, the formal PSI definition is given declaratively by acyclicity axioms, which most programmers find hard to understand and reason about.
To address this, we develop a simple lock-based reference implementation for PSI built on top of the release-acquire memory model, a well-behaved subset of the C/C++11 memory model. We prove that our implementation is sound and complete against its higher-level declarative specification.
We further consider an extension of PSI allowing transactional and non-transactional code to interact, and provide a sound and complete reference implementation for the more general setting. Supporting this interaction is necessary for adopting a transactional model in programming languages.
- Concurrency and Distribution | Pp. 940-967
Eventual Consistency for CRDTs
Radha Jagadeesan; James Riely
We address the problem of in eventually consistent (EC) systems: In what sense does an EC data structure satisfy the sequential specification of that data structure? Because EC is a very weak criterion, our definition does not describe every EC system; however it is expressive enough to describe any Convergent or Commutative Replicated Data Type (CRDT).
- Concurrency and Distribution | Pp. 968-995
A Verified Compiler from Isabelle/HOL to CakeML
Lars Hupel; Tobias Nipkow
Many theorem provers can generate functional programs from definitions or proofs. However, this code generation needs to be trusted. Except for the HOL4 system, which has a proof producing code generator for a subset of ML. We go one step further and provide a verified compiler from Isabelle/HOL to CakeML. More precisely we combine a simple proof producing translation of recursion equations in Isabelle/HOL into a deeply embedded term language with a fully verified compilation chain to the target language CakeML.
- Compiler Verification | Pp. 999-1026
Compositional Verification of Compiler Optimisations on Relaxed Memory
Mike Dodds; Mark Batty; Alexey Gotsman
A valid compiler optimisation transforms a block in a program without introducing new observable behaviours to the program as a whole. Deciding which optimisations are valid can be difficult, and depends closely on the semantic model of the programming language. Axiomatic relaxed models, such as C++11, present particular challenges for determining validity, because such models allow subtle effects of a block transformation to be observed by the rest of the program. In this paper we present a denotational theory that captures optimisation validity on an axiomatic model corresponding to a fragment of C++11. Our theory allows verifying an optimisation compositionally, by considering only the block it transforms instead of the whole program. Using this property, we realise the theory in the first push-button tool that can verify real-world optimisations under an axiomatic memory model.
- Compiler Verification | Pp. 1027-1055