PROLOG-REQUEST@SUSHI.STANFORD.EDU (Chuck Restivo, The Moderator) (11/22/87)
PROLOG Digest Monday, 23 Nov 1987 Volume 5 : Issue 90 Today's Topics: Query - Segmentation & Bug & Syntax, Implementation - Badness, Announcement - Benchmarking Workshop ---------------------------------------------------------------------- Date: 18 Nov 87 14:44:41 GMT From: trwrb!aero!gillam@ucbvax.Berkeley.EDU (April Gillam) Subject: Segmenting a Prolog Data Base to Speed Up Search We are developing a quasi expert system to make a conceptual design of a spacecraft. This involves a lot of data and rules at the spacecraft mission level and at the subsystem(acs,power,comm,etc.) level. We will also be keeping track of 'historical' info on spacecraft that have already been launched. The system is being written in Quintus Prolog, which is relatively new to me. Is there some way to segment the data bases so that there are fewer facts for the 'matcher' to plough through till it finds the appropriate data? I have been considering separating the data into different files and only loading in what is needed to do the inferencing & calculations, & then deleting it -- if I can figure out when to do that & hope the overhead is less than the search time when all that info is in the database at once. I've implemented Sterling & Shapiro's symbolic equation solver with some enhancements, but it is fairly slow on the substitution part. (By the way, I recommend The Art of Prolog. It's been very useful.) I'm assuming that is because there's so much data associated with each spacecraft, and for simplicities sake I'm using the same format for most of the data. This allows many routines to be used in many different situations, but there is all that data! Thanks for any help on this. -- April Gillam ------------------------------ Date: 19 Nov 87 21:16:00 GMT From: finin@bigburd.prc.unisys.com (Tim Finin) Subject: bug or feature? Is it a bug or a feature for a logic programming language to allow one to assert multiple copies of a clause into the database? I'm studying various ways to extend Prolog's simple model of the database (e.g. a flat, global collections of clauses) to a richer hierarchical one with inheritance. I am trying to decide whether to allow multiple instances of a clause in a resulting database view. Most Prolog implementations, at least those descendant from DEC-10 Prolog, allow the database to contain two identical clauses. Most of the non-Prolog logic programming languages that I am familiar with do not. I am interested in discovering what use, if any, people have made of the ability to assert multiple copies of a clause into the database. I have never found a use for this in practice. In fact, it has only been a source of bugs. It is easy enough to accidentally get multiple copies of a clause in the database in some Prolog implementations. This can readily mess up your program in several ways unless you use a rather pure logic programming style. Has anyone out there found a good use for this Prolog "feature" of allowing multiple copies of the identical clause in the database? -- Tim ------------------------------ Date: 18 Nov 87 21:09:31 GMT From: ncc!ers!alberta!abdul@speedy.wisc.edu (Abdul Sattar) Subject: Question about Prolog-10 syntax Following clause appears on page number 208 of ALGORITHMIC PROGRAM DEBUGGING by Ehud Y. Shapiro: forall(X,P,Y) <- setof(Y,X^P,S), forall1(S). Note: the symbol ^ is an arrow pointing upwards. Will somone explain me the meaning of this symbol? -- Abdul ------------------------------ Date: Thu, 19 Nov 87 11:19:52 +1100 From: munnari!mulga.oz.au!lee@uunet.UU.NET Subject: Badness I discuss the "incorrectness" of append in "Specification = Program + Types", procceedings of FST&TCS, Dec 1987. I argue that in the *natural* specification for append, all arguments must be lists. The paper introduces the notion of "type correct" programs (which can include the normal version of append) and shows why these programs do not produce incorrect well typed answers. The Mycroft/O'Keefe type checker can also be used to catch programs which call append with non-lists. -- Lee Naish ------------------------------ Date: Fri, 20 Nov 87 15:20:20 cst From: stevens@anl-mcs.ARPA (Rick L. Stevens) Subject: Prolog Benchmarking Workshop During the last SLP there was some concern that the benchmark programs being quoted in the literature did not reflect real Prolog programming practices. Now is your chance to do something about it. A workshop on benchmarking Prolog programs will be held at The Aerospace Corporation in Los Angeles. The main function of this workshop is to collect and measure a large number of modern production (real application) Prolog programs. The workshop will last three days, and will be held sometime during the first two weeks of February. The exact date will be selected to enable the most people to attend. The workshop will be sponsored by The Aerospace Corporation and is being held under the auspices of the Association of Logic Programming. Since resources for running the benchmarks will be limited the meeting will be open only to those who contact the organizers. The first half of the workshop will be spent discussing the performance issues we wish to address, porting of code, and instrumenting of Prolog programs and implementations. The second half will be spent running the code and collecting and analyzing the data. We hope to publish the results either as a widely available Technical Report or as a special journal article in a journal such as the Journal of Logic Programming or New Generation Computing. Attendance at the workshop will be limited to those who either bring an implementation of Prolog or 1,000 or more lines of "original" Prolog source. Programs with more than 1,000 lines will certainly be accepted. The thing we wish to guard against is toy programs that don't reflect the serious use of the language. Of course, we would like code that has been written recently and that reflects the best of Prolog style. But any ``real'' Prolog application would be acceptable. ( No code with more that 3 cuts per clause. :-)). Hopefully those in attendance will represent a balance between University and Commercial applications. The code brought should be covered by a GNU type ``copyleft''. That is unlimited distribution of unmodified sources. The object is to get unmodified copys of programs and input data sets to as many people as possible. The Aerospace Corporation, a non-profit organization will distribute the benchmark suite. We would like to have the environment set up in advance so as much time as possible can be spent on performance analysis. To do this we will set up a mail address where code can be e-mailed in advance. Participants can also bring a UNIX tar tape. The computers available at Aerospace include a Sequent, VAXes, Suns, and various types of PCs. We will try to have as many different implementations of Prolog available as possible. A limited amount of financial support from the Aerospace Corporation will be available for University attendees. Please let us know by December 15, 1987 if you intend to attend. If you want to attend, please send us your name, e-mail address, country of citizenship, smail address, date, if you have a preference if you will need financial support date that would be best for you, and what you'll bring. Send responses to: prolog-workshop@anl-mcs.arpa If you can't get ahold of us through e-mail, you can use: Carl Kesselman Rick Stevens MS M1/102 Math and Computer Science Division The Aerospace Corporation Argonne National Laboratory P.O. Box 92957 Argonne IL 60439 Los Angeles, CA 90009-9295 (312) 972-3378 (213) 336-6691 If you have a problem with the distribution agreement, questions or suggestions, please contact us at the above address. Hope to see you there. Rick Stevens Carl Kesselman stevens@anl-mcs.arpa carl@aerospace.aero.org Argonne National Laboratory The Aerospace Corporation ------------------------------ End of PROLOG Digest ********************