Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Rémy Haemmerlé is active.

Publication


Featured researches published by Rémy Haemmerlé.


Theory and Practice of Logic Programming | 2011

Observational equivalences for linear logic concurrent constraint languages

Rémy Haemmerlé

Linear logic Concurrent Constraint programming (LCC) is an extension of concurrent constraint programming (CC) where the constraint system is based on Girards linear logic instead of the classical logic. In this paper we address the problem of program equivalence for this programming framework. For this purpose, we present a structural operational semantics for LCC based on a label transition system and investigate different notions of observational equivalences inspired by the state of art of process algebras. Then, we demonstrate that the asynchronous \pi-calculus can be viewed as simple syntactical restrictions of LCC. Finally we show LCC observational equivalences can be transposed straightforwardly to classical Concurrent Constraint languages and Constraint Handling Rules, and investigate the resulting equivalences.


principles and practice of declarative programming | 2011

CLP projection for constraint handling rules

Rémy Haemmerlé; Pedro López-García; Manuel V. Hermenegildo

This paper introduces and studies the notion of CLP projection for Constraint Handling Rules (CHR). The CLP projection consists of a naive translation of CHR programs into Constraint Logic Programs (CLP). We show that the CLP projection provides a safe operational and declarative approximation for CHR programs. We demonstrate moreover that a confluent CHR program has a least model, which is precisely equal to the least model of its CLP projection (closing hence a ten year-old conjecture by Abdennadher et al.). Finally, we illustrate how the notion of CLP projection can be used in practice to apply CLP analyzers to CHR. In particular, we show results from applying AProVE to prove termination, and CiaoPP to infer both complexity upper bounds and types for CHR programs.


Theory and Practice of Logic Programming | 2012

Diagrammatic confluence for constraint handling rules

Rémy Haemmerlé

Confluence is a fundamental property of Constraint Handling Rules (CHR) since, as in other rewriting formalisms, it guarantees that the computations are not dependent on rule application order, and also because it implies the logical consistency of the program declarative view. In this paper we are concerned with proving the confluence of non-terminating CHR programs. For this purpose, we derive from van Oostroms decreasing diagrams method a novel criterion on CHR critical pairs that generalizes all preexisting criteria. We subsequently improve on a result on the modularity of CHR confluence, which permits modular combinations of possibly non-terminating confluent programs, without loss of confluence.


logic based program synthesis and transformation | 2011

Modular extensions for modular (logic) languages

José F. Morales; Manuel V. Hermenegildo; Rémy Haemmerlé

We address the problem of developing mechanisms for easily implementing modular extensions to modular (logic) languages. By (language) extensions we refer to different groups of syntactic definitions and translation rules that extend a language. Our use of the concept of modularity in this context is twofold. We would like these extensions to be modular, in the sense above, i.e., we should be able to develop different extensions mostly separately. At the same time, the sources and targets for the extensions are modular languages, i.e., such extensions may take as input separate pieces of code and also produce separate pieces of code. Dealing with this double requirement involves interesting challenges to ensure that modularity is not broken: first, combinations of extensions (as if they were a single extension) must be given a precise meaning. Also, the separate translation of multiple sources (as if they were a single source) must be feasible. We present a detailed description of a code expansion-based framework that proposes novel solutions for these problems. We argue that the approach, while implemented for Ciao, can be adapted for other Prolog-based systems and languages.


Theory and Practice of Logic Programming | 2011

(Co-)Inductive semantics for Constraint Handling Rules

Rémy Haemmerlé

In this paper, we address the problem of defining a fixpoint semantics for Constraint Handling Rules (CHR) that captures the behavior of both simplification and propagation rules in a sound and complete way with respect to their declarative semantics. Firstly, we show that the logical reading of states with respect to a set of simplification rules can be characterized by a least fixpoint over the transition system generated by the abstract operational semantics of CHR. Similarly, we demonstrate that the logical reading of states with respect to a set of propagation rules can be characterized by a greatest fixpoint. Then, in order to take advantage of both types of rules without losing fixpoint characterization, we present an operational semantics with persistent. We finally establish that this semantics can be characterized by two nested fixpoints, and we show the resulting language is an elegant framework to program using coinductive reasoning.


principles and practice of declarative programming | 2014

On Combining Backward and Forward Chaining in Constraint Logic Programming

Rémy Haemmerlé

We address the problem of designing constraint logic languages that usefully combine backward and forward chaining in a sound and complete way. Following the approach of Constraint Logic Programming, we define a class of programming languages that generalize both Constraint Logic and Concurrent Constraint Programming. Syntactically, this class corresponds to Constraint Handling Rules with disjunctions, but differ operationally by featuring set-based semantics instead of multiset-based ones; i.e., conjunction and disjunction are idempotent. The assumption of program confluence is the crux on which both the committed choice strategy and the logical completeness of the languages rely.


Theory and Practice of Logic Programming | 2012

Lightweight compilation of (c)lp to javascript

José F. Morales; Rémy Haemmerlé; Manuel Carro; Manuel V. Hermenegildo

We present and evaluate a compiler from Prolog (and extensions) to JavaScript which makes it possible to use (constraint) logic programming to develop the client side of web applications while being compliant with current industry standards. Targeting JavaScript makes (C)LP programs executable in virtually every modern computing device with no additional software requirements from the point of view of the user. In turn, the use of a very high-level language facilitates the development of high-quality, complex software. The compiler is a back end of the Ciao system and supports most of its features, including its module system and its rich language extension mechanism based on packages. We present an overview of the compilation process and a detailed description of the run-time system, including the support for modular compilation into separate JavaScript code. We demonstrate the maturity of the compiler by testing it with complex code such as a CLP(FD) library written in Prolog with attributed variables. Finally, we validate our proposal by measuring the performance of some LP and CLP(FD) benchmarks running on top of major JavaScript engines.


Theory and Practice of Logic Programming | 2014

On Termination, Confluence and Consistent CHR-based Type Inference

Gregory J. Duck; Rémy Haemmerlé; Martin Sulzmann

We consider the application of Constraint Handling Rules (CHR) for the specification of type inference systems, such as that used by Haskell. Confluence of CHR guarantees that the answer provided by type inference is correct and consistent. The standard method for establishing confluence relies on an assumption that the CHR program is terminating. However, many examples in practice give rise to non-terminating CHR programs, rendering this method inapplicable. Despite no guarantee of termination or confluence, the Glasgow Haskell Compiler (GHC) supports options that allow the user to proceed with type inference anyway, e.g. via the use of the UndecidableInstances flag. In this paper we formally identify and verify a set of relaxed criteria, namely range-restrictedness , local confluence , and ground termination , that ensure the consistency of CHR-based type inference that maps to potentially non-terminating CHR programs.


rules and rule markup languages for the semantic web | 2011

An overview of the Ciao system

Manuel V. Hermenegildo; Francisco Bueno; Manuel Carro; Pedro López-García; Rémy Haemmerlé; E. Mera; José F. Morales; Germán Puebla

Ciao is a logic-based, multi-paradigm programming system. One of its most distinguishing features is that it supports a large number of semantic and syntactic language features which can be selectively activated or deactivated for each program module. As a result, a module can be written in, for example, ISO-Prolog plus constraints and higher order, while another can be a pure logic module with a different control rule such as iterative deepening and/or tabling, and perhaps using constructive negation. A powerful and modular extension mechanism allows user-level design and implementation of such features and sub-languages. Another distinguishing feature of Ciao is its powerful assertion language, which allows expressing many kinds of program properties (ranging from, e.g., moded types to resource consumption), as well as tests and documentation. The compiler is capable of statically finding violations of these properties or verifying that programs comply with them, and issuing certificates of this compliance. The compiler also performs many types of optimizations, including automatic parallelization. It offers very competitive performance, while retaining the flexibility and interactive development of a dynamic language. We will present a hands-on overview of the system, through small examples which emphasize the novel aspects and the motivations which lie behind Ciaos design and implementation.


arXiv: Programming Languages | 2015

Towards Energy Consumption Verification via Static Analysis

Pedro López-García; Rémy Haemmerlé; Maximiliano Klemen; Umer Liqat; Manuel V. Hermenegildo

Collaboration


Dive into the Rémy Haemmerlé's collaboration.

Top Co-Authors

Avatar

José F. Morales

Complutense University of Madrid

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

E. Mera

Complutense University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Francisco Bueno

Technical University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Germán Puebla

Technical University of Madrid

View shared research outputs
Researchain Logo
Decentralizing Knowledge