Catálogo de publicaciones - libros

Compartir en
redes sociales


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 acceso abierto
No requiere 2018 SpringerLink acceso abierto

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

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