Mechanized Reasoning about Concurrent Functional Programs
نویسنده
چکیده
Various mechanisms have been used for adapting functional languages to parallel machines, ranging from semantics{preserving annotations to concurrent language extensions. Concurrent extensions are applicable to both lazy and strict languages, and give the programmer full control over parallel evaluation; however, they complicate the proofs of program correct-ness. This paper pursues the concurrent extension approach to parallel functional programming, and addresses the question of proving parallel programs correct with respect to sequential speciications. The paper presents an extension of a lazy functional language with concurrency primitives, allowing the dynamic creation of processes and point{to{point interprocess communication. The primitives are given an operational semantics, and an observational equivalence between processes is deened. The equivalence has been implemented in a theorem prover for concurrent functional programs. As an illustration , the derivation of a parallel program from a functional speciication is given, and is proved correct with the theorem prover.
منابع مشابه
Design and implementation of static analyses for higher-order languages
interpretation-based static analyzers. This insight provided a way of extracting the common patterns in the design and implementation of static analyzers and led to the idea of considering abstract interpretation as a particular case of computational effects, which can be abstracted over using a concept of monads from functional programming. This idea was presented in my work on monadic abstrac...
متن کاملConcurrent Data Structures Linked in Time (Artifact)
This artifact provides the full mechanization in FCSL of the developments in the companion paper, “Concurrent Data Structures Linked in Time”. In the latter, we propose a new method, based on a separation-style logic, for reasoning about concurrent objects with such linearization points. We embrace the dynamic nature of linearization points, and encode it as part of the data structure’s auxilia...
متن کاملA Separation Logic for Concurrent Randomized Programs
We present a concurrent separation logic with support for probabilistic reasoning. As part of our logic, we extend the idea of coupling, which underlies recent work on probabilistic relational logics, to the setting of programs with both probabilistic and non-deterministic choice. To demonstrate our logic, we verify a variant of a recent randomized concurrent counter algorithm. All of our resul...
متن کاملAutomatic Verification for Fine-grained Concurrency
Recent program logics based on separation logic emphasise a modular approach to proving functional correctness for fine-grained concurrent programs. However, these logics have no automation support. In this paper, we present Caper, a prototype tool for automated reasoning in such a logic. Caper is based on symbolic execution, integrating reasoning about interference on shared data and about gho...
متن کاملLogical frameworks for specifying and reasoning about stateful and concurrent languages∗
Substructural logics, such as linear logic and ordered logic, have an inherent notion of state and state change. This makes them a natural choice for developing logical frameworks that specify evolving stateful systems. Our previous work has shown that the so-called forward reasoning fragment of ordered linear logic can be used to give clear, concise, and modular specifications of stateful and ...
متن کامل