CW 273

HAL is a new logic language that makes it easy to implement constraint
solvers. HAL gets most of its efficiency from compiling to Mercury
code. The main mismatch between HAL and Mercury is that HAL supports
variables a la Prolog, while Mercury recognises basically only the
instantiations new and ground. We describe here the schema that
overcomes this mismatch: it relies on a Parma representation of
variables. Its main advantage is that once a datastructure is ground,
it has the same internal representation as a Mercury ground term.
Experiments show that our schema is very competitive with any other
logic implementation that supports unbound terms. We also discuss the
implementation of delay for the Herbrand solver.