Abstract:
In this paper, we propose a new language construct, called AR (Action Rules), and describe how various propagators for finite-domain constraints can be implemented in it. An action rule specifies a pattern for agents, an action that the agents can carry out, and an event pattern for events that can activate the agents. AR combines the goal-oriented execution model of logic programming with the event-driven execution model. This hybrid execution model facilitates programming constraint propagators. A propagator for a constraint is an agent that maintains the consistency of the constraint and is activated by the updates of the domain variables in the constraint. AR has a much stronger descriptive power than indexicals, the language widely used in the current finite-domain constraint systems, and is flexible for implementing not only interval-consistency but also arc-consistency algorithms. As examples, we present the implementation of a weak arc-consistency algorithm for the all distinct constraint and a hybrid algorithm for n-ary linear equality constraints. B-Prolog has been extended to accommodate action rules. Benchmarking shows that the performance of B-Prolog as a CLP(FD) system compares favorably with the fastest systems available now. 1
Citations
|
655
|
Constraint Logic Programming: A Survey
– Jaffar, Maher
- 1994
|
|
629
|
Foundations of Constraint Satisfaction
– Tsang
- 1993
|
|
448
|
An abstract Prolog instruction set
– Warren
|
|
300
|
Algorithms for Constraint Satisfaction Problems: a Survey
– Kumar
- 1992
|
|
283
|
Programming with Constraints: An Introduction
– Marriott, Stuckey
- 1998
|
|
264
|
The family of concurrent logic programming languages
– Shapiro
- 1989
|
|
247
|
The Constraint Logic Programming Language CHIP
– Dincbas
|
|
238
|
Theory and practice of constraint handling rules
– Frühwirth
- 1998
|
|
208
|
A filtering algorithm for constraints of difference in CSPs
– Régin
- 1994
|
|
149
|
Compiling constraints in CLP(FD
– Codognet, Diaz
- 1996
|
|
116
|
An open-ended finite domain constraint solver
– Carlsson, Ottosson
- 1997
|
|
109
|
Equations and inequations on finite and infinite trees
– Colmerauer
- 1984
|
|
74
|
Constraint processing in cc(fd
– Hentenryck, Saraswat, et al.
- 1992
|
|
49
|
Solving large combinatorial problems in Logic Programming
– Dincbas, Simonis, et al.
- 1990
|
|
44
|
Beyond the glass box: constraints as objects
– Puget, Leconte
- 1995
|
|
42
|
A Fast Algorithm for the Bound Consistency of Alldiff Constraints
– Puget
- 1998
|
|
36
|
Overview of the CHIP Compiler System
– Aggoun, Beldiceanu
- 1993
|
|
34
|
Metastructures vs. attributed variables in the context of extensible unification
– Holzbaur
- 1992
|
|
34
|
Negation and Control in Prolog
– Naish
- 1986
|
|
22
|
Design and Implementation of the GNU-Prolog System
– Diaz, Codognet
|
|
17
|
Compiling constraint handling rules into Prolog with attributed variables
– Holzbaur, Frühwirth
- 1999
|
|
16
|
Parameter Passing and Control Stack Management in Prolog Implementation Revisited
– Zhou
- 1996
|
|
10
|
Programming Constraint Services: High-Level Programming of Standard and New Constraint Services
– Schulte
- 2002
|
|
9
|
Improving linear constraint propagation by changing constraint representation
– Harvey, Stuckey
- 2003
|
|
9
|
A novel implementation method of delay
– Zhou
- 1996
|
|
6
|
Garbage collection in B-Prolog
– Zhou
- 2000
|
|
5
|
A high-level intermediate language and the algorithms for compiling finite-domain constraints
– Zhou
- 1998
|
|
3
|
Better late than never
– Meier
- 1994
|
|
2
|
Nicolog: A simple yet powerful cc(fd) language
– Sidebottom, Havens
- 1996
|
|
2
|
Implementing constraint solvers in B-Prolog
– Zhou
- 2002
|
|
1
|
A high-performance abstract machine for Prolog and its extensions
– Zhou
- 2003
|