Results 1  10
of
51
Constraint Logic Programming: A Survey
"... Constraint Logic Programming (CLP) is a merger of two declarative paradigms: constraint solving and logic programming. Although a relatively new field, CLP has progressed in several quite different directions. In particular, the early fundamental concepts have been adapted to better serve in differe ..."
Abstract

Cited by 771 (23 self)
 Add to MetaCart
Constraint Logic Programming (CLP) is a merger of two declarative paradigms: constraint solving and logic programming. Although a relatively new field, CLP has progressed in several quite different directions. In particular, the early fundamental concepts have been adapted to better serve in different areas of applications. In this survey of CLP, a primary goal is to give a systematic description of the major trends in terms of common fundamental concepts. The three main parts cover the theory, implementation issues, and programming for applications.
DESIGN, IMPLEMENTATION, AND EVALUATION OF THE CONSTRAINT LANGUAGE cc(FD)
 J. LOGIC PROGRAMMING 1994:19, 20:1679
, 1994
"... This paper describes the design, implementation, and applications of the constraint logic language cc(FD). cc(FD) is a declarative nondeterministic constraint logic language over finite domains based on the cc framework [33], an extension of the CLP scheme [21]. Its constraint solver includes (nonl ..."
Abstract

Cited by 166 (9 self)
 Add to MetaCart
This paper describes the design, implementation, and applications of the constraint logic language cc(FD). cc(FD) is a declarative nondeterministic constraint logic language over finite domains based on the cc framework [33], an extension of the CLP scheme [21]. Its constraint solver includes (nonlinear) arithmetic constraints over natural numbers which are approximated using domain and interval consistency. The main novelty of cc(FD) is the inclusion of a number of generalpurpose combinators, in particular cardinality, constructive disjunction, and blocking implication, in conjunction with new constraint operations such as constraint entailment and generalization. These combinators signi cantly improve the operational expressiveness, extensibility, and flexibility of CLP languages and allow issues such as the definition of nonprimitive constraints and disjunctions to be tackled at the language level. The implementation of cc(FD) (about 40,000 lines of C) includes a WAMbased engine [44], optimal arcconsistency algorithms based on AC5 [40], and incremental implementation of the combinators. Results on numerous problems, including scheduling, resource allocation, sequencing, packing, and hamiltonian paths are reported and indicate that cc(FD) comes close to procedural languages on a number of combinatorial problems. In addition, a small cc(FD) program was able to nd the optimal solution and prove optimality to a famous 10/10 disjunctive scheduling problem [29], which was left open for more than 20 years and nally solved in 1986.
An OpenEnded Finite Domain Constraint Solver
, 1997
"... We describe the design and implementation of a finite domain constraint solver embedded in a Prolog system using an extended unification mechanism via attributed variables as a generic constraint interface. The solver is essentially a scheduler for indexicals, i.e. reactive functional rules encodin ..."
Abstract

Cited by 155 (6 self)
 Add to MetaCart
We describe the design and implementation of a finite domain constraint solver embedded in a Prolog system using an extended unification mechanism via attributed variables as a generic constraint interface. The solver is essentially a scheduler for indexicals, i.e. reactive functional rules encoding local consistency methods performing incremental constraint solving or entailment checking, and global constraints, i.e. general propagators which may use specialized algorithms to achieve a higher degree of consistency or better time and space complexity. The solver has an openended design: the user can introduce new constraints, either in terms of indexicals by writing rules in a functional notation, or as global constraints via a Prolog programming interface. Constraints defined in terms of indexicals can be linked to 0/1variables modeling entailment; thus indexicals are used for constraint solving as well as for entailment testing. Constraints can be arbitrarily combined using the ...
Oz Explorer: A Visual Constraint Programming Tool
, 1997
"... This paper describes the Oz Explorer and its implementation. The Explorer is a visual constraint programming tool intended to support the development of constraint programs. It uses the search tree of a constraint problem as its central metaphor. Exploration and visualization of the search tree ar ..."
Abstract

Cited by 53 (1 self)
 Add to MetaCart
This paper describes the Oz Explorer and its implementation. The Explorer is a visual constraint programming tool intended to support the development of constraint programs. It uses the search tree of a constraint problem as its central metaphor. Exploration and visualization of the search tree are userdriven and interactive. The constraints of any node in the tree are available firstclass: predefined or userdefined procedures can be used to display or analyze them. The Explorer is a fast and memory efficient tool intended for the development of realworld constraint programs. The Explorer is implemented in Oz using firstclass computation spaces. There is no fixed search strategy in Oz. Instead, firstclass computation spaces allow to program search engines. The Explorer is one particular example of a userguided search engine. The use of recomputation to trade space for time makes it possible to solve large realworld problems, which would use too much memory otherwise.
19831993: The Wonder Years of Sequential Prolog Implementation
, 1993
"... This report surveys the major developments in sequential Prolog implementation during the period 19831993. In this decade, implementation technology has matured to such a degree that Prolog has left the university and become useful in industry. The survey is divided into four parts. The first part ..."
Abstract

Cited by 49 (4 self)
 Add to MetaCart
This report surveys the major developments in sequential Prolog implementation during the period 19831993. In this decade, implementation technology has matured to such a degree that Prolog has left the university and become useful in industry. The survey is divided into four parts. The first part gives an overview of the important technical developments starting with the Warren Abstract Machine (WAM). The second part presents the history and the contributions of the major software and hardware systems. The third part charts the evolution of Prolog performance since Warren's DEC10 compiler. The fourth part extrapolates current trends regarding the evolution of sequential logic languages, their implementation, and their role in the marketplace.
Beyond the Glass Box: Constraints as Objects
, 1995
"... Constraint Logic Programming (CLP) is a very active research area. One reason being that finite domain CLP systems have been successfully applied to various combinatorial optimization problems such as time tabling, scheduling, frequency allocation, manpower planning, production planning. State of th ..."
Abstract

Cited by 49 (1 self)
 Add to MetaCart
Constraint Logic Programming (CLP) is a very active research area. One reason being that finite domain CLP systems have been successfully applied to various combinatorial optimization problems such as time tabling, scheduling, frequency allocation, manpower planning, production planning. State of the art finite domain CLP languages offer programming constructs that gives access to the state of the constraint solver. With these constructs, new constraints can be defined in the CLP language directly, hence the name "glassbox". However, current glass box approaches do not give access to the constraints themselves. This prevents the use of sophisticated constraint solving techniques borrowed from Operations Research. In order to overcome this limitation, we propose to give acces to the constraints as first class citizen of the CLP language. We implemented this approach into an object oriented language, where constraints are explicitly represented by objects. We provide both theoretical and experimental evidence of the interest of our approach. In particular, we show that some of our extensions provide speedups of more than one order of magnitude over current glass box constraint solvers.
An Overview of HAL
, 1999
"... Experience using constraint programming to solve reallife problems has shown that finding an efficient solution to the problem often requires experimentation with different constraint solvers or even building a problemspecific constraint solver. HAL is a new constraint logic programming language e ..."
Abstract

Cited by 44 (24 self)
 Add to MetaCart
Experience using constraint programming to solve reallife problems has shown that finding an efficient solution to the problem often requires experimentation with different constraint solvers or even building a problemspecific constraint solver. HAL is a new constraint logic programming language expressly designed to facilitate this process. It provides a welldefined solver interface, mutable global variables for implementing a constraint store, and dynamic scheduling which support combining, extending and writing new constraint solvers. Equally importantly, HAL supports semioptional type, mode and determinacy declarations. These allow natural constraint specification by means of type overloading, better compiletime error checking and generation of more efficient runtime code.
wamcc: Compiling Prolog to C
 IN 12TH INTERNATIONAL CONFERENCE ON LOGIC PROGRAMMING
, 1995
"... We present the wamcc system, a Prolog compiler that translates Prolog to C via the WAM. This approach has some interesting consequences: simplicity, efficiency, portability, extensibility and modularity. Indeed the system does not incorporate complex optimizations but is as efficient as Quintus Prol ..."
Abstract

Cited by 36 (6 self)
 Add to MetaCart
We present the wamcc system, a Prolog compiler that translates Prolog to C via the WAM. This approach has some interesting consequences: simplicity, efficiency, portability, extensibility and modularity. Indeed the system does not incorporate complex optimizations but is as efficient as Quintus Prolog 2.5 (based on an emulator written in assembly language) and only 30 % slower than Sicstus Prolog (compiling to native code). It is instantly portable to any machine with a C compiler and easily expandable with various extensions, such as constraints, as shown by the clp(FD) system which is based on wamcc. It also incorporates a simple but efficient handling of modularity thanks to the use of C modularity.
Improving Linear Constraint Propagation By Changing Constraint Representation
, 2002
"... Propagation based nite domain solvers provide a general mechanism for solving combinatorial problems. Dierent propagation methods can be used in conjunction by communicating through the domains of shared variables. The exibility that this entails has been an important factor in the success of propa ..."
Abstract

Cited by 26 (4 self)
 Add to MetaCart
Propagation based nite domain solvers provide a general mechanism for solving combinatorial problems. Dierent propagation methods can be used in conjunction by communicating through the domains of shared variables. The exibility that this entails has been an important factor in the success of propagation based solving for solving hard combinatorial problems. In this paper we investigate how linear integer constraints should be represented in order that propagation can determine strong domain information. We identify two kinds of substitution which can improve propagation solvers, and can never weaken the domain information. This leads us to an alternate approach to propagation based solving where the form of constraints is modi ed by substitution as computation progresses. We compare and contrast a solver using substitution against an indexical based solver, the current method of choice for implementing propagation based constraint solvers, identifying the relative advantages and disadvantages of the two approaches. In doing so we investigate a number of choices in propagation solvers and their eects on a suite of benchmarks.