Results 1 - 10
of
27
The K.U.Leuven CHR system: implementation and application
- First Workshop on Constraint Handling Rules: Selected Contributions
, 2004
"... We present the K.U.Leuven CHR system: what started out as a validation of a new attributed variables implementation, has become a part of three different Prolog systems with an increasing userbase. ..."
Abstract
-
Cited by 49 (35 self)
- Add to MetaCart
We present the K.U.Leuven CHR system: what started out as a validation of a new attributed variables implementation, has become a part of three different Prolog systems with an increasing userbase.
The Refined Operational Semantics of Constraint Handling Rules
- IN 20TH INTERNATIONAL CONFERENCE ON LOGIC PROGRAMMING (ICLP’04
, 2004
"... Constraint Handling Rules (CHRs) are a high-level rulebased programming language commonly used to write constraint solvers. The theoretical operational semantics for CHRs is highly non-deterministic and relies on writing confluent programs to have a meaningful behaviour. Implementations of CHRs use ..."
Abstract
-
Cited by 41 (3 self)
- Add to MetaCart
Constraint Handling Rules (CHRs) are a high-level rulebased programming language commonly used to write constraint solvers. The theoretical operational semantics for CHRs is highly non-deterministic and relies on writing confluent programs to have a meaningful behaviour. Implementations of CHRs use an operational semantics which is considerably finer than the theoretical operational semantics, but is still nondeterministic (from the user's perspective). This paper formally defines this refined operational semantics and proves it implements the theoretical operational semantics. It also shows how to create a (partial) confluence checker capable of detecting programs which are confluent under this semantics, but not under the theoretical operational semantics. This supports the use of new idioms in CHR programs.
On Proving Left Termination of Constraint Logic Programs
- ACM Transaction on Computational Logic
, 2001
"... The Constraint Logic Programming (CLP) Scheme merges logic programming with constraint solving over predefined domains. In this paper, we study proof methods for universal left termination of constraint logic programs. We provide a sound and complete characterization of left termination for ideal CL ..."
Abstract
-
Cited by 16 (7 self)
- Add to MetaCart
The Constraint Logic Programming (CLP) Scheme merges logic programming with constraint solving over predefined domains. In this paper, we study proof methods for universal left termination of constraint logic programs. We provide a sound and complete characterization of left termination for ideal CLP languages which generalizes acceptability of logic programs. The characterization is then refined to the notion of partial acceptability, which is well-suited for automatic modular inference. We describe a theoretical framework for automation of the approach, which is implemented. For non-ideal CLP languages and without any assumption on their incomplete constraint solvers, even the most basic sound termination criterion from logic programming does not lift. We focus on a specific system, namely CLP(R), by proposing some additional conditions that make (partial) acceptability sound
A Framework for Analysis of Typed Logic Programs
- IN PROCEEDINGS OF THE FIFTH INTERNATIONAL SYMPOSIUM ON FUNCTIONAL AND LOGIC PROGRAMMING, VOLUME 2024 OF LECTURE NOTES IN COMPUTER SCIENCE
, 2001
"... The paper presents a novel approach to the analysis of typed logic programs. We assume regular type descriptions of logic program variables provided by regular tree grammars. Types are used to identify components of terms which can be equated during the programs execution. This information is ..."
Abstract
-
Cited by 13 (5 self)
- Add to MetaCart
The paper presents a novel approach to the analysis of typed logic programs. We assume regular type descriptions of logic program variables provided by regular tree grammars. Types are used to identify components of terms which can be equated during the programs execution. This information is
Constraint Handling Rules and Tabled Execution
- In Proceedings of ICLP’04, International Conference on Logic Programming
, 2004
"... Both Constraint Handling Rules (CHR) and tabling - as implemented in XSB - are powerful enhancements of Prolog systems, based on fix point computation. Until now they have only been implemented in separate systems. This paper presents the work involved in porting a CHR system to XSB and in particula ..."
Abstract
-
Cited by 11 (4 self)
- Add to MetaCart
Both Constraint Handling Rules (CHR) and tabling - as implemented in XSB - are powerful enhancements of Prolog systems, based on fix point computation. Until now they have only been implemented in separate systems. This paper presents the work involved in porting a CHR system to XSB and in particular the technical issues related to the integration of CHR with tabled resolution. These issues include call abstraction, answer projection, entailment checking, answer combination and tabled constraint store representations. Di#erent optimizations related to tabling constraints are evaluated empirically. The integration requires no changes to the tabling engine. We also show that the performance of CHR programs without tabling is not a#ected. Now, with the combined power of CHR and tabling, it is possible to easily introduce constraint solvers in applications using tabling, or to use tabling in constraint solvers.
A module based analysis for memory reuse in Mercury
- Computational Logic - CL 2000, First International Conference
, 2000
"... Abstract. In previous work Bruynooghe, Janssens and K*agedal developed a live-structure analysis for Mercury which detects memory cells available for reuse. Separate compilation of modules is an essential ingredient of a language such as Mercury which supports programming in the large. Hence, to be ..."
Abstract
-
Cited by 9 (6 self)
- Add to MetaCart
Abstract. In previous work Bruynooghe, Janssens and K*agedal developed a live-structure analysis for Mercury which detects memory cells available for reuse. Separate compilation of modules is an essential ingredient of a language such as Mercury which supports programming in the large. Hence, to be practical, a live-structure analysis also has to be module based. This paper develops a modular live-structure analysis and extends it with a modular reuse analysis. It also describes preliminary results obtained with a first prototype of the module based analysis. 1 Introduction In declarative languages, the programmer is liberated from the low level details of memory management such as allocation of memory and destructive updates of data structures. The price to pay for this convenience is a loss of performance due to the run-time overhead of garbage collection, due to an increased number of cache misses (caused by the loss of locality of data structures) and due to the overhead of creating new data structures (creating a new version of a data structure is typically more expensive than updating an existing one).
Determinacy Analysis for Logic Programs Using Mode and Type Information
- In Proceedings of the 14th International Symposium on Logic-based Program Synthesis and Transformation (LOPSTR’04), number 3573 in LNCS
, 2004
"... Abstract. We propose an analysis for detecting procedures and goals that are deterministic (i.e. that produce at most one solution), or predicates whose clause tests are mutually exclusive (which implies that at most one of their clauses will succeed) even if they are not deterministic (because they ..."
Abstract
-
Cited by 9 (4 self)
- Add to MetaCart
Abstract. We propose an analysis for detecting procedures and goals that are deterministic (i.e. that produce at most one solution), or predicates whose clause tests are mutually exclusive (which implies that at most one of their clauses will succeed) even if they are not deterministic (because they call other predicates that can produce more than one solution). Applications of such determinacy information include detecting programming errors, performing certain high-level program transformations for improving search efficiency, optimizing low level code generation and parallel execution, and estimating tighter upper bounds on the computational costs of goals and data sizes, which can be used for program debugging, resource consumption and granularity control, etc. We have implemented the analysis and integrated it in the CiaoPP system, which also infers automatically the mode and type information that our analysis takes as input. Experiments performed on this implementation show that the analysis is fairly accurate and efficient.
Translating constraint handling rules into action rules
- In The Third Workshop on Constraint Handling Rules
, 2006
"... Abstract. CHR is a popular high-level language for implementing constraint solvers and other general purpose applications. It has a wellestablished operational semantics and quite a number of different implementations, prominently in Prolog. However, there is still much room for exploring the compil ..."
Abstract
-
Cited by 7 (5 self)
- Add to MetaCart
Abstract. CHR is a popular high-level language for implementing constraint solvers and other general purpose applications. It has a wellestablished operational semantics and quite a number of different implementations, prominently in Prolog. However, there is still much room for exploring the compilation of CHR to Prolog. Nearly all implementations rely on attributed variables. In this paper, we explore a different implementation target for CHR: B-Prolog’s Action Rules (ARs). As a rule-based language, it is a good match for particular aspects of CHR. However, the strict adherence to CHR’s refined operational semantics poses some difficulty. We report on our work in progress: a novel compilation schema, required changes to the AR language and the preliminary benchmarks and experiences. 1
The Design of the Zinc Modelling Language
, 2008
"... Zinc is a new modelling language developed as part of the G12 project. It has four important characteristics. First, Zinc allows specification of models using a natural mathematicallike notation. To do so it supports overloaded functions and predicates and automatic coercion and provides arithmetic ..."
Abstract
-
Cited by 7 (1 self)
- Add to MetaCart
Zinc is a new modelling language developed as part of the G12 project. It has four important characteristics. First, Zinc allows specification of models using a natural mathematicallike notation. To do so it supports overloaded functions and predicates and automatic coercion and provides arithmetic, finite domain and set constraints. Second, while Zinc is a relatively simple and small language, it can be readily extended to different application areas by means of powerful language constructs such as user-defined predicates and functions and constrained types. Third, Zinc provides sophisticated type and instantiation checking which allows early detection of errors in models. Finally, perhaps the main novelty in Zinc is that it is designed to support a modelling methodology in which the same conceptual model can be automatically mapped into different design models, thus allowing modellers to easily "plug and play" with different solving techniques and so choose the most appropriate for that problem. We describe in detail the various language features of Zinc and the many trade-offs we faced in its design.

