TY - CHAP
T1 - Herbrand constraints in HAL
AU - Demoen, Bart
AU - Garcia De La Banda, Maria Jose
AU - Harvey, Warwick
AU - Marriott, Kim George
AU - Overton, David Matthew
AU - Stuckey, Peter J
PY - 2004
Y1 - 2004
N2 - Mercury is a logic programming language that is considerably faster than traditional Prolog implementations, but lacks support for full unification. HAL is a new constraint logic programming language specifically designed to support the construction of and experimentation with constraint solvers, and which compiles to Mercury. In this paper we describe the HAL Herbrand constraint solver and show how by using PARMA bindings, rather than the standard WAM representation, we can implement a solver that is compatible with Mercury’s term representation. This allows HAL to make use of Mercury’s more efficient procedures for handling ground terms, and thus achieve Mercury-like efficiency while supporting full unification. An important feature of HAL is its support for user-extensible dynamic scheduling since this facilitates the creation of propagation-based constraint solvers. We have therefore designed the HAL Herbrand constraint solver to support dynamic scheduling. We provide experiments to illustrate the efficiency of the resulting system, and systematically compare the effect of different declarations such as type, mode and determinism on the resulting code.
AB - Mercury is a logic programming language that is considerably faster than traditional Prolog implementations, but lacks support for full unification. HAL is a new constraint logic programming language specifically designed to support the construction of and experimentation with constraint solvers, and which compiles to Mercury. In this paper we describe the HAL Herbrand constraint solver and show how by using PARMA bindings, rather than the standard WAM representation, we can implement a solver that is compatible with Mercury’s term representation. This allows HAL to make use of Mercury’s more efficient procedures for handling ground terms, and thus achieve Mercury-like efficiency while supporting full unification. An important feature of HAL is its support for user-extensible dynamic scheduling since this facilitates the creation of propagation-based constraint solvers. We have therefore designed the HAL Herbrand constraint solver to support dynamic scheduling. We provide experiments to illustrate the efficiency of the resulting system, and systematically compare the effect of different declarations such as type, mode and determinism on the resulting code.
U2 - 10.1007/978-3-540-25951-0_15
DO - 10.1007/978-3-540-25951-0_15
M3 - Chapter (Book)
SN - 3540221522
T3 - Lecture Notes in Computer Science
SP - 499
EP - 538
BT - Program Development in Computational Logic
A2 - Bruynooghe, Maurice
A2 - Lau, Kung-Kiu
PB - Springer
CY - Berlin Germany
ER -