Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!munnari!harald From: harald@munnari.oz (Harald Sondergaard) Newsgroups: comp.lang.prolog Subject: Re: Prolog terminology Message-ID: <1764@munnari.oz> Date: Fri, 31-Jul-87 03:23:04 EDT Article-I.D.: munnari.1764 Posted: Fri Jul 31 03:23:04 1987 Date-Received: Sun, 2-Aug-87 01:27:17 EDT References: <505@ivax.doc.ic.ac.uk> Organization: Comp Sci, Melbourne Uni, Australia Lines: 69 Summary: This discussion seems premature. Anyway, here are some comments Terminology is certainly an important issue and it is true that we could need some clarification. The attempt by Chris Moss to start a discussion is thus praiseworthy. In fact it is guaranteed to succeed since the draft posted is sufficiently vague to create a heated debate. It seems that the attempt is premature. If a group is working on this under the auspices of BSI, one would expect that it would like to put off a presentation of its work to a wider audience until the draft was found reasonably well-balanced, coherent and finished. A rationale and a statement of purpose would seem to be minimal requirements for debaters. Who are the addressees of this standard? Prolog novices? Researchers in programming languages? I would like to be more constructive, but without a rationale it is a bit difficult. Following are some more or less specific comments to the draft: General ------- Basically, much more precision is needed. As it stands, "Definitions" is a grossly misleading heading. Also, well established term from logic programming should be adopted. Lloyd's book by now serves more or less as a standard, and it would be nice if there were to be no conflicts between this book and the BSI draft [Lloyd 1984]. In particular, "atom" should be given the meaning of "atomic formula". (Note that a second edition of Lloyd's book is due to appear this year, and there are some changes in terminology as compared to the first edition). Substitutions ------------- The idea of substitutions being mappings is fine, but note that this is not in agreement with [Lloyd 1984]. In any case, the fact that substitutions (apparently) are not assumed to be idempotent causes all kinds of problems. For instance, is the continual "repeated application" of a substitution supposed to terminate? Or does {x/f(x)} unify {x,f(x)} ("to unify")? On a conceptual level, all substitutions generated by unification are idempotent so why not use the fact to simplify definitions? (Admittedly the set of idempotent substitutions is not closed under composition, but this never causes problems for Prolog semantics). It is not stated what is meant by a minimal substitution ("most general unifier"), and the reader may wonder what a minimal mapping is. Indeed, if one allows for the lack of idem- potence, there is no "unique minimal substitution" (under the ordering we normally assume for substitutions). And in the general case, uniqueness only holds modulo consistent renaming of variables. The authors of course know this well, but they should keep in mind that readers probably do not. Issues of reference ------------------- It is suggested that matters of syntax and of semantics are more carefully distinguished. It is unclear what it means for a literal (a syntactic entity) to be "known to be true" ("fact"). Or what it means to "define a predicate" which is in turn explained as an atom and a natural number ("procedure"). Indeed, the notion of "truth" is never clarified. A good device for emphasizing the difference between phrases in the language and what they denote is the term "expression". For instance it would be more natural to say that nil is a list expression that can denote any empty list, rather than define lists to be purely syntactic objects. Miscellaneous ------------- In the definition of a ground term, "uninstantiated" should be dropped. It is not clear what "top level" means. Is a "variable substitution" anything but a substitution ("query")? To "consult" does not sound natural for reading and storing. [Lloyd 1984] Lloyd, John W., Foundations of Logic Programming, Springer-Verlag 1984 Harald Sondergaard University of Copenhagen