7 research outputs found
Coordination and Concurrency in Multi-Engine Prolog
Abstract. We discuss the impact of the separation of logic engines (independent logic processing units) and multi-threading on the design of coordination mechanisms for a Prolog based agent infrastructure. We advocate a combination of coroutining constructs with focus on expressiveness and a simplified, multi-threading API that ensures optimal use available parallelism. In this context, native multi-threading is made available to the application programmer as a set of high-level primitives with a declarative flavor while cooperative constructs provide efficient and predictable coordination mechanisms. As illustrations of our techniques, a parallel fold operation as well as cooperative implementations of Linda blackboards and publish/subscribe are described
A Formal, Resource Consumption-Preserving Translation of Actors to Haskell
We present a formal translation of an actor-based language with cooperative
scheduling to the functional language Haskell. The translation is proven
correct with respect to a formal semantics of the source language and a
high-level operational semantics of the target, i.e. a subset of Haskell. The
main correctness theorem is expressed in terms of a simulation relation between
the operational semantics of actor programs and their translation. This allows
us to then prove that the resource consumption is preserved over this
translation, as we establish an equivalence of the cost of the original and
Haskell-translated execution traces.Comment: Pre-proceedings paper presented at the 26th International Symposium
on Logic-Based Program Synthesis and Transformation (LOPSTR 2016), Edinburgh,
Scotland UK, 6-8 September 2016 (arXiv:1608.02534
A Formal, Resource Consumption-Preserving Translation of Actors to Haskell
We present a formal translation of an actor-based language with cooperative
scheduling to the functional language Haskell. The translation is proven
correct with respect to a formal semantics of the source language and a
high-level operational semantics of the target, i.e. a subset of Haskell. The
main correctness theorem is expressed in terms of a simulation relation between
the operational semantics of actor programs and their translation. This allows
us to then prove that the resource consumption is preserved over this
translation, as we establish an equivalence of the cost of the original and
Haskell-translated execution traces
Twenty years of coordination technologies: State-of-the-art and perspectives
Since complexity of inter- and intra-systems interactions is steadily increasing in modern application scenarios (e.g., the IoT), coordination technologies are required to take a crucial step towards maturity. In this paper we look back at the history of the COORDINATION conference in order to shed light on the current status of the coordination technologies there proposed throughout the years, in an attempt to understand success stories, limitations, and possibly reveal the gap between actual technologies, theoretical models, and novel application needs
A formal, resource consumption-preserving translation from actors with cooperative scheduling to Haskell
We present a formal translation of a resource-Aware extension of the Abstract Behavioral Specification (ABS) language to the functional language Haskell. ABS is an actor-based language tailored to the modeling of distributed systems. It combines asynchronous method calls with a suspend and resume mode of execution of the method invocations. To cater for the resulting cooperative scheduling of the method invocations of an actor, the translation exploits for the compilation of ABS methods Haskell functions with continuations. The main result of this article is a correctness proof of the translation by means of a simulation relation between a formal semantics of the source language and a high-level operational semantics of the target language, i.e., a subset of Haskell. We further prove that the resource consumption of an ABS program extended with a cost model is preserved over this translation, as we establish an equivalence of the cost of executing the ABS program and its corresponding Haskell-Translation. Concretely, the resources consumed by the original ABS program and those consumed by the Haskell program are the same, considering a cost model. Consequently, the resource bounds automatically inferred for ABS programs extended with a cost model, using resource analysis tools, are sound resource bounds also for the translated Haskell programs. Our experimental evaluation confirms the resource preservation over a set of benchmarks featuring different asymptotic costs
An abstract model for parallel execution of prolog
Logic programming has been used in a broad range of fields, from artifficial intelligence
applications to general purpose applications, with great success. Through its
declarative semantics, by making use of logical conjunctions and disjunctions, logic
programming languages present two types of implicit parallelism: and-parallelism and
or-parallelism.
This thesis focuses mainly in Prolog as a logic programming language, bringing out
an abstract model for parallel execution of Prolog programs, leveraging the Extended
Andorra Model (EAM) proposed by David H.D. Warren, which exploits the implicit
parallelism in the programming language. A meta-compiler implementation for an
intermediate language for the proposed model is also presented.
This work also presents a survey on the state of the art relating to implemented Prolog
compilers, either sequential or parallel, along with a walk-through of the current parallel
programming frameworks. The main used model for Prolog compiler implementation,
the Warren Abstract Machine (WAM) is also analyzed, as well as the WAM’s successor
for supporting parallelism, the EAM; Sumário:
Um Modelo Abstracto para
Execução Paralela de Prolog
A programação em lógica tem sido utilizada em diversas áreas, desde aplicações de
inteligência artificial até aplicações de uso genérico, com grande sucesso. Pela sua
semântica declarativa, fazendo uso de conjunções e disjunções lógicas, as linguagens de
programação em lógica possuem dois tipos de paralelismo implícito: ou-paralelismo e
e-paralelismo.
Esta tese foca-se em particular no Prolog como linguagem de programação em lógica,
apresentando um modelo abstracto para a execução paralela de programas em Prolog,
partindo do Extended Andorra Model (EAM) proposto por David H.D. Warren, que
tira partido do paralelismo implícito na linguagem. É apresentada uma implementação
de um meta-compilador para uma linguagem intermédia para o modelo proposto.
É feita uma revisão sobre o estado da arte em termos de implementações sequenciais
e paralelas de compiladores de Prolog, em conjunto com uma visita pelas linguagens
para implementação de sistemas paralelos. É feita uma análise ao modelo principal
para implementação de compiladores de Prolog, a Warren Abstract Machine (WAM) e
da sua evolução para suportar paralelismo, a EAM
Coordination and Concurrency in Multi-engine Prolog
International audienceWe discuss the impact of the separation of logic engines (independent logic processing units) and multi-threading on the design of coordination mechanisms for a Prolog based agent infrastructure.We advocate a combination of coroutining constructs with focus on expressiveness and a simplified, multi-threading API that ensures optimal use available parallelism.In this context, native multi-threading is made available to the application programmer as a set of high-level primitives with a declarative flavor while cooperative constructs provide efficient and predictable coordination mechanisms. As illustrations of our techniques, a parallel fold operation as well as cooperative implementations of Linda blackboards and publish/subscribe are described