[comp.lang.prolog] PROLOG DIGEST V6 #43

restivo@POLYA.STANFORD.EDU (Chuck Restivo) (07/10/88)

Date: Sunday, 10 July 1988 02:53-PST
From: Chuck Restivo (The Moderator) <PROLOG-REQUEST@POLYA.STANFORD.EDU>
Reply-to: PROLOG@POLYA.STANFORD.EDU>
US-Mail: P.O. Box 4584, Stanford CA  94305
Subject: PROLOG Digest   V6 #43
To: PROLOG@POLYA.STANFORD.EDU


PROLOG Digest           Sunday, 10 July 1988      Volume 6 : Issue 43

Today's Topics:
                  Query - Unification & Arrays,
          Announcement - Association For Logic Programming,
			Implementation - Trilogy
-------------------------------------------------------------------------------------------------------------------------------

Date: 15 Jun 88 15:43:25 GMT
From: bungia!com50!ems!srcsip!kan@UMN-CS.ARPA  (Ling Kan)
Subject: Unification Algorithm

In  "An Efficient Unification Algorithm" by  Alberto Martelli and Ugo Montanari
ACM TOPLS Vol. 4, No. 2  1982, the  authors described an  unification algorithm
that has occur check built-in and also has a better performance than Huet's and
Paterson and Wegman's method.

Does  anyone know that if  this algorithm is used  in any  Prolog system? Is in
reality this  algorithm  is as  good as the authors  claimed? And how about the
implementation cost  of this method?  Is there any other unification  algorithm
has a better performance?

Thank you.

-- Ling Kan   

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

Date: 27 Jun 88 17:18:57 GMT
From: mnetor!utzoo!utgpu!utcsri!qucis!feret@uunet.uu.net  (Michel Feret)
Subject: Arrays In Logic Programming

I'm currently working on an implementation of a Resolution theorem 
prover written in Nial (Nested Interactive Array Language) . Nial uses
nested  multi-dimensional collections of basic objects (integers, truth
values, complex numbers, ...) called nested arrays. We are using these 
arrays as logical terms in the logic programming component of Nial . 
	
I'm looking for theorem provers using more complex data structures 
than lists, and being able to perform unification over these data structures.
	
Any references, pointers, addresses will be welcomed. 

-- Michel Feret. 

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

Date: 22 Jun 88 16:36:34 GMT
From: necntc!drilex!axiom!linus!pc@ames.arc.nasa.gov  (Melissa P. Chase)
Subject: Association for Logic Programming

I'm sorry that it has taken so long to post the information about the
Association for Logic Programming, but here it is:

From: Andy Cheese <abc%computer-science.nottingham.ac.uk@NSS.Cs.Ucl.AC.UK>

 The Association For Logic Programming
 Membership Fees are 25 dollars for a full member and 15 dollars for a
 full time student.
 1988 subscription fees for the Journal of Logic Programming are 38
 dollars for USA and Canada and 54 dollars for the rest of the world.
 contact address is :

 Miss Cheryl Anderson
 The Association for Logic Programming
 Department of Computing
 Imperial College
 180 Queen's Gate
 London
 SW7 2BZ England

After I received this reply, I received the mailing for LP '88
which includes an ALP membership form that you can send in with
the conference registration form.  According to this form, benefits of
ALP membership include:

- Affiliation with the principal international association in
  the field of logic programming
- Reduced registration fees for ALP-sponsored conferences
- Subscription to the Logic Programming Newsletter
- Early announcements of ALP-sponsored activities.
- A reduced subscription rate for individuals to Jour. Logic. Prog.

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

Date: 1 Jul 88 15:56:48 GMT
From: ubc-cs!faculty.cs.ubc.ca!voda@beaver.cs.washington.edu  (Paul Voda)
Subject: How Prolog logic programmers see Trilogy

  The reason I am writing this note is that the programming language Trilogy
I have designed and implemented as an answer to the extra-logical features
of supposedly declarative Prolog as well as to it's appalling inefficiency
in the deterministic (procedural) situtations (see the Ross Overbeek's theorem
prover benchmark) is being misrepresented by some very influential protagonists
of logic programming.
 
For almost a year now I have been presenting Trilogy as a logic programming
language with built-in costraints (Presburger arithmetic, array constraints,
etc.). I was always stressing that Trilogy is a language based on logic, i.e.
on the first order theory of pairs. The variables in Trilogy's programs range
over pairs (i.e. over S-expressions of Lisp). Trilogy does
not use Horn clauses, its predicates have the form of iff conditions (similar
to the completed form of Prolog predicates).
 
Moreover, the computation of Trilogy programs does not have to be explained
by the unification. This is because Trilogy constraints include the equality
over the domain of pairs. Instead of unifying the term a with b it is enough
to issue a constraint a = b and rely on the decision procedure
for the equality built into Trilogy.
 
I was also stressing that thanks to the Trilogy's modes and types
the non-backtracking (deterministic) programs can be compiled with the
efficiency of Pascal. The typing of Trilogy is quite unique in that the
type inclusion is supported and the values can be converted from one type
into another (by typing all variable to be of the universal type U of
all pairs one achieves the effect of typeless programming).
 
I was stating the above on various occasions and with many repetitions hoping
that people will get interested. Well many people were. On the other hand,
I was very disappointed when I have heard (and I was also told by somebody
who have heard himself) some pretty careless comments on Trilogy.
 
One comment came from one of the top people connected with CLP. He has publicly
dismissed Trilogy as a combination of Prolog and Ada (the emphasis was on
the lack of logic of Ada I pressume), the other public comment came from a real
authority on logic programming: Trilogy is a cross between Prolog and
Pascal (with the same implication). Such comments are very damaging
because Trilogy is quite different from Prolog, yet it is a logic
programming language. As it is I have enough difficulties presenting Trilogy
on account of the different foundations and syntax.
 
Needless to say the comments are absolutely unjustified and what really hurts is
that they were stated by such big authorities. As far as I know neither of the
authorities have seen Trilogy in operation and very
likely did not feel sufficiently motivated to read
thouroghly the papers I wrote on the semantic of Trilogy as well as my older
papers where I was explaining my approach to logic programming.
 
It is quite ironic to have Trilogy presented as the operational Pascal or Ada.
What about the extra-logical features of Prolog?
Prolog's  cuts, vars, asserts, i/o, etc. are all outside of logic in the
domain of operational behavior. Actually the extra-logical features of Prolog
are much more damaging to the cause of declarative programming than the
honest non-declarativeness of Pascal. Witness how are the extra-logical "bugs"
of Prolog discussed as "meta-theoretic features" in almost all Prolog texts.
 
If the theoreticians can do that, the computer hobbyists are only too happy
to indulge in the "meta-programming" without seeing anything wrong about it.
One of the most horrible examples of this was in the August 1987 issue of the
Byte magazine. One enthusiast have programmed a Prolog simulation of
a microprocessor. He of course knew that the execution of a processor
instruction changes the state of the processor. Instead of parameterizing
each instruction with the old and new state he has retracted the old
state before executing an instruction and asserted it afterwards. I could
almost see him to be so proud of himself; after all he knew from the Prolog's
texts that he was doing a real meta-programming.
 
Trilogy was designed as a language without extralogical features. It was
implemented without any. For instance we have added to Trilogy a form of a cut
(a one solution operator) only when we have explained it logically. Even
the input/output operations and file updates are handled in Trilogy completely
within logic. Since I have supervised the implementation of Trilogy I did not
permit into the implementation a single quick implementation hack which,
although speeding up the execution, could destroy the logic.
 
As it happens Trilogy is the only programming language
commercially available which has both the declarative logic and sufficient
efficiency in deterministic situations.
 
-- Paul Voda

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

End of PROLOG Digest