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