[comp.ai.shells] Constraints in languages & shells

spiro@a.gp.cs.cmu.edu (Spiro Michaylov) (12/03/89)

The following (rather old) post was recently brought to my attention, since I
don't normally read this newsgroup:

 >From: brady@udel.edu (Joseph Brady)
 >Newsgroups: comp.ai.shells
 >Subject: Re: constraints in ES Shells
 >Keywords: constraints, trilogy
 >Message-ID: <7248@uklirb.UUCP>
 >Date: 3 Nov 89 22:24:53 GMT
 >Article-I.D.: uklirb.7248
 >
 >The product 'trilogy' is a logic programming language that uses
 >constraints. I can find no other language that includes
 >constraints. 'trilogy' is not an expert system shell, however.
 >
 >
 >The product is marketed by Complete Logic Systems Inc,
 >741 Blueridge Ave, North Vancouver BC Canada, V7R 2J5,
 >telephone  604 986 3234.

After looking at the original post that raised this issue, I'm not sure how
relevant the above is to the original question, but I would like to at least
correct one aspect of Mr Brady's message.

Trilogy is one of a number of rule-based constraint languages languages that
have been designed, studied, implemented and even used over the last three or
four years. These are now commonly refered to as Constraint Logic Programming
(CLP) languages. What these languages have in common is that the unification
operation in traditional logic programming languages is replaced by the
solving of more general constraints over a more general domain. They differ in
the way in which they approximate the CLP scheme, which is their semantic
model, and the domain and kinds of constraints they solve. All of them are
quite Prolog-like. Some of them may take the definition of "constraints" much
further than the AI community usually does. None of them are ES shells.

Presently existing languages & systems (in alphabetical order to avoid a
flamefest) include:

CHIP: Constraints on small sets of integers. Also rational arithmetic and
more. Particularly well suited to combinatorial problems, like those that
arrise in telecommunications. Originates from the European Computer Research
Center in Munich. Commercial version being developed by Bull (French computer
company).

CLP(R): Domain is uninterpreted functors over real arithmetic terms. Floating
point approximation to reals is used. Particularly suited to problems needing
both symbolic reasoning and arithmetic. Originates at Monash University,
Australia, and has more recently floated to the USA. Available from Monash
(cheap) and soon IBM (free) to research users, and by private negotiation with
one or the other for commercial use.

Prolog-III: Uninterpreted functors over booleans, rational arithmetic, and
words. Rational arithmetic is done exactly. The resulting numerical soundness
and the boolean constraints are the major strengths. Originates at the
University of Marseille, France. (Now available for big bucks -- can't
remember from where).

Trilogy: Don't know much about it apart from what is in Mr Brady's post.
I vaguely remember that you *don't* have to sell family members into slavery to
be able to afford it, though.

Other less well-known CLP languages include CAL, CLP*, CLP(sigma*), HCLP,
Lambda Prolog, LOGIN, Prolog-II, and others that I hope I won't get flamed for
forgetting.

BTW, I should declare a vested interest: I'm closely involved with the CLP(R)
effort. 

So, I don't know if all this is of any interest to this group, but if enough
interest is expressed I can post more information about any aspect of this
that people want to know about.

Spiro Michaylov
School of Computer Science
Carnegie Mellon University
(spiro@cs.cmu.edu)