Quote:

Kostka = me) writes:

> Does anyone provide meta interpreters for CLP to toy around with?

[...]

I have been asked to post a summary of the responses. This is what I

got:

========================================================================

gave me the tip to try contacting Prof. Dr. Geske of the "Institut fuer

Kuenstliche Intelligenz" in (East) Berlin. They have a CLP interpreter

based on Turbo Prolog.

it may be difficult to reach him as they are very new to email in East

Berlin. (I sent him email but got no response.)

========================================================================

Volker Kuechenhoff of the European Computer Industry Research Centre

recommended to look at some papers of the PDK workshop (PDK'91 - Int.

Workhop on Processing Declarative Knowledge, Kaiserslautern, Germany,

July 1991, Ed. M.M.Richter und H. Boley, to appear in the Springer

Lecture Notes on AI).

In particular, he mentioned:

PCPL - Prolog Constraint Processing Library by Stefan Fricke, Manfred

Hein.

FIDO: Exploring Finite Domain Consistency Techniques in Logic Programming

(In case this would not help, he recommends to write a meta interpreter

oneself in order to become able to really understand it.)

========================================================================

One individual told me that his company did a meta interpreter with

finite domains and integer arithmetics on top of Sicstus Prolog. He did

not want this information to be posted to the net without prior

permission of his boss (for which I didn't ask).

========================================================================

offered a constraint solver (linear arithmetic constraints, non-linear

constraints are delayed) embedded in Prolog. It is supposed to emulate

CLP(R). He thinks that currently his program is not presentable enough

to make it public domain.

========================================================================

Last, but certainly not least:

"... it all depends on whether you want access to a CLP system to apply

it to some particular problem; or whether you are interested in

constructing a CLP system for educational/research purposes.

There are now several commercial or public-domain CLP systems, each

dealing with specific computation domains (rationals, reals, Booleans,

integers, ...). If you request so, I could hint at some, but this

could only be a partial point of view. These systems are typically

written in imperative languages, and therefore do not qualify as

"metainterpreters" !

If, on the other hand, you would like to construct your own CLP

interpreter on top of a Prolog system, then there is a small literature

on the topic. Mostly, CLP interpreters written in Prolog deal with the

implementation of finite-domain extensions (as other computation

domains such as rationals require algebraic manipulations for which

Prolog, er, might not be the best tool).

Finally, note that some publically available Prolog systems provide the

basic functionalities (coroutining, attributed variables, ...) that are

required to implement a decent finite-domain system on top of Prolog.

SEPIA-Prolog is, I think, a good candidate for this (you can get in

obtain this system). I for one have been using SEPIA-Prolog as an

implementation basis for a new CLP-like computation model."

Thierry recommended the following literature (list by no means

exhaustive):

Heintze, N. and Michaylov, S. and Stuckey, P. and Yap, R.

On Meta-Programming in CLP(R),

Proceedings of the North-American Conference on Logic Programming

(NACLP'89), pp 52-68, 1989

De Schreye, D. and Pollet, D. and Ronsyn, J. and Bruynooghe, M.

Implementing Finite-domain Constraint Logic Programming on Top of a

PROLOG-System with Delay-mechanism,

ESOP Proceedings, pp 106-117, Copenhagen, Denmark, May, 1990

Thierry:

"On the topic of SEPIA (Standard ECRC Prolog Integrating Applications),

which as I said can be used (and is indeed being intensively used at

ECRC !) to construct efficient variations on the "finite-domain

propagation" theme, I think it would be fair to include the following

comments from its main designer, Micha Meier. Sepia is available from

---

SEPIA is a Prolog system, based on a WAM compiler, that offers all

basic functionalities that are necessary or useful to implement e.g.

local consistency techniques. The functionalities are

- Attributed variables, called metaterms. They allow to store

additional information with a variable, which can e.g.

represent a list of allowed values for that variable.

- Declarative coroutining, which allows to specify rather

complex conditions for a goal to be suspended; it is e.g.

possible to suspend a goal and wake it as soon as any

variable that occurs in it or its attribute is updated.

It is fairly straightforward to represent constraints as suspended

goals and variable domains as metaterms to achieve constraints

propagation over finite domains. Unlike some other systems, a

constraint can be woken not only by instantiating a variable (which is

necessary for \= [disequality]) but also when its domain is modified

(needed e.g. for arithmetic equalities and inequalities). It is also

more efficient than a metainterpreter, and easily modifiable (once you

write it, of course)."

========================================================================

Thanks to all of the above.

Bernd

---------------------------------------------------

Dolivostrasse 15 Voice : ++49-6151-869-862

D-6100 Darmstadt, Germany Fax : ++49-6151-869-818