home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Information / Languages / Prolog / resource-guide⁄part1 < prev    next >
Encoding:
Internet Message Format  |  1994-12-03  |  78.6 KB  |  [TEXT/R*ch]

  1. Path: bloom-beacon.mit.edu!uhog.mit.edu!nntp.club.cc.cmu.edu!cantaloupe.srv.cs.cmu.edu!mkant
  2. From: mkant+@cs.cmu.edu (Mark Kantrowitz)
  3. Newsgroups: comp.lang.prolog,comp.object.logic,news.answers,comp.answers
  4. Subject: FAQ: Prolog Resource Guide 1/2 [Monthly posting]
  5. Supersedes: <PRG_1_782031621@CS.CMU.EDU>
  6. Followup-To: poster
  7. Date: 13 Nov 1994 08:03:23 GMT
  8. Organization: School of Computer Science, Carnegie Mellon University
  9. Lines: 1672
  10. Approved: news-answers-request@MIT.Edu
  11. Distribution: world
  12. Expires: 25 Dec 1994 08:00:25 GMT
  13. Message-ID: <PRG_1_784713625@CS.CMU.EDU>
  14. Reply-To: mkant+prg@cs.cmu.edu
  15. NNTP-Posting-Host: glinda.oz.cs.cmu.edu
  16. Xref: bloom-beacon.mit.edu comp.lang.prolog:5387 comp.object.logic:276 news.answers:29292 comp.answers:8324
  17.  
  18. Archive-name: prolog/resource-guide/part1
  19. Last-Modified: Thu Nov 10 22:53:52 1994 by Mark Kantrowitz
  20. Version: 1.24
  21. Maintainer: Mark Kantrowitz <mkant+prg@cs.cmu.edu>
  22. URL: http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/lang/prolog/prg/top.html
  23. Size: 80048 bytes, 1680 lines
  24.  
  25. ;;; ****************************************************************
  26. ;;; Prolog Resource Guide ******************************************
  27. ;;; ****************************************************************
  28. ;;; prg_1.faq
  29.  
  30. This post contains the Prolog Resource Guide.
  31.  
  32. Contributions, corrections, suggestions, and comments should be sent
  33. to Mark Kantrowitz <mkant+prg@cs.cmu.edu>. 
  34.  
  35. This guide lists a variety of resources for the Prolog community,
  36. including books, magazines, ftp archives, and products. It is posted
  37. on the 13th of every month to the newsgroups comp.lang.prolog and
  38. comp.object.logic. The PRG is also posted to the newsgroups
  39. news.answers and comp.answers where they should be available at any
  40. time (ask your local news manager).
  41.  
  42.  
  43. *** Copyright:
  44.  
  45. Copyright (c) 1992-94 by Mark Kantrowitz. All rights reserved.
  46.  
  47. This FAQ may be freely redistributed in its entirety without
  48. modification provided that this copyright notice is not removed.  It
  49. may not be sold for profit or incorporated in commercial documents
  50. (e.g., published for sale on CD-ROM, floppy disks, books, magazines,
  51. or other print form) without the prior written permission of the
  52. copyright holder.  Permission is expressly granted for this document
  53. to be made available for file transfer from installations offering
  54. unrestricted anonymous file transfer on the Internet.
  55.  
  56. If this FAQ is reproduced in offline media (e.g., CD-ROM, print form,
  57. etc.), a complimentary copy should be sent to Mark Kantrowitz, School
  58. of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue,
  59. Pittsburgh, PA 15213-3891 USA.
  60.  
  61. This article is provided AS IS without any express or implied warranty.
  62.  
  63. *** Topics Covered:
  64.  
  65. There are currently two parts to the PRG:
  66.  
  67.    1. Introductory Matter and General Questions
  68.    2. Prolog Implementations
  69.  
  70. Table of Contents (Part 1):
  71.  
  72.   [1-0]  Introduction
  73.   [1-1]  Sources of information about Prolog
  74.   [1-2]  Prolog-related Mailing Lists
  75.   [1-3]  Books and Magazine Articles
  76.   [1-4]  Prolog and Logic Programming Associations and Journals
  77.   [1-5]  FTP Archives and Other Resources
  78.   [1-6]  Free Object-Oriented Systems for Prolog
  79.   [1-7]  Commercial Object-Oriented Systems for Prolog
  80.   [1-8]  The Prolog 1000 Database
  81.   [1-9]  X-Windows Interfaces
  82.   [1-10] Is there a straight-forward way of compiling Prolog to C?
  83.   [1-11] WAM emulators and tracers
  84.   [1-12] What is the Basic Andorra Model and AKL?
  85.   [1-13] What is Constraint Logic Programming?
  86.   [1-14] How do you write portable programs in Prolog?
  87.   [1-15] World-Wide Web (WWW) Resources
  88.   [1-16] Prolog Job Postings
  89.   [1-17] Is Prolog really used in Windows NT?
  90.   [1-A]  Acknowledgements
  91.  
  92. Prolog Implementations (Part 2):
  93.  
  94.   [2-0]  General information about Prolog Implementations
  95.   [2-1]  Free Prolog Implementations
  96.   [2-2]  Commercial Prolog Implementations
  97.   [2-3]  Free Parallel Prolog Implementations
  98.   [2-4]  Commercial Parallel Prolog Implementations
  99.   [2-5]  Free Constraint Systems
  100.   [2-6]  Commercial Constraint Systems
  101.   [2-7]  Free Logic Programming Systems
  102.   [2-8]  Commercial Logic Programming Systems
  103.   [2-9]  Other Commercial Prolog Products
  104.   [2-10] Prolog extensions, meta-interpreters, and pre-processors
  105.  
  106. Search for [#] to get to topic number # quickly. In newsreaders which
  107. support digests (such as rn), [CTRL]-G will page through the answers.
  108.  
  109. *** Recent Changes:
  110.  
  111. ;;; 1.23:
  112. ;;; 14-SEP-94 mk    Updated Prolog by BIM entry in [2-2].
  113. ;;; 14-SEP-94 mk    Added ClauseDB in new section [2-9] Other Commercial Prolog
  114. ;;;                 Products.
  115. ;;; 22-SEP-94 mk    Added entry on Chris Moss's Prolog++ book to [1-3].
  116. ;;; 22-SEP-94 mk    Updated SICStus Prolog entry in [2-2].
  117. ;;; 23-SEP-94 mk    Removed entries for IBM SAA AD/Cycle Prolog and ICE from
  118. ;;;                 part 2, as they are no longer being actively marketed.
  119. ;;;  6-OCT-94 mk    Added [2-10] on prolog extensions, and added ProFIT to that
  120. ;;;                 section.
  121. ;;;  6-OCT-94 mk    ALE v2.0 now available by anon ftp [1-5].
  122. ;;;  7-OCT-94 mk    Updated ProTCL entry.
  123. ;;;  7-OCT-94 mk    Added Umrigar's flowchart partial evaluator to [1-5].
  124. ;;; 12-OCT-94 mk    Updated IF/Prolog entry.
  125. ;;; 12-OCT-94 mk    Added [1-17] Is Prolog really used in Windows NT?
  126. ;;;
  127. ;;; 1.24:
  128. ;;; 13-OCT-94 mk    Added Hdrug to [1-5].
  129. ;;; 13-OCT-94 mk    Added FW_Rules to [1-5].
  130. ;;; 14-OCT-94 mk    Added KLIC entry and removed PDSS entry in [2-3].
  131. ;;; 14-OCT-94 mk    Updated Quintus entry in [2-2].
  132. ;;; 20-OCT-94 mk    Updated prices for books by Dennis Merritt of Amzi! Inc.
  133. ;;; 20-OCT-94 mk    Added entry on GT-Prolog (prolog for Amiga) to [2-2].
  134. ;;; 28-OCT-94 mk    WWW archive of articles from the LP Newsletter.
  135. ;;; 28-OCT-94 mk    WWW page for ILOG.
  136. ;;; 10-NOV-94 mk    Updated ESL Prolog-2 entry.
  137.  
  138. ----------------------------------------------------------------
  139. Subject: [1-0] Introduction
  140.  
  141. Certain questions and topics come up frequently in the various network
  142. discussion groups devoted to and related to Prolog and logic programming.
  143. This file/article is an attempt to gather these questions and their
  144. answers into a convenient reference for Prolog programmers.  It (or a
  145. reference to it) is posted periodically.  The hope is that this will
  146. cut down on the user time and network bandwidth used to post, read and
  147. respond to the same questions over and over, as well as providing
  148. education by answering questions some readers may not even have
  149. thought to ask.
  150.  
  151. This guide lists Prolog and logic programming resources: archives,
  152. newsgroups, books, magazines, compilers, interpreters and anything
  153. else you can think of which has to do with the proliferation of Prolog
  154. and logic programming. Also included is a list of suppliers of
  155. products and a list of publishers. Topics can also include
  156. unification, backtracking search, and other aspects of logic
  157. programming. As Prolog has a strong historical tradition in Europe,
  158. we've tried to ensure that the information is relevant to all readers,
  159. including European and North American.
  160.  
  161. This is not a Prolog tutorial, nor is it an exhaustive list of all Prolog
  162. intricacies.  Prolog is a very powerful and expressive language, but with
  163. that power comes many complexities.  This list attempts to address the
  164. ones that average Prolog programmers are likely to encounter.  If you are
  165. new to Prolog, read one of the introductions listed in the answer to
  166. question [1-3].
  167.  
  168. Please do not post homework questions to the comp.lang.prolog
  169. newsgroup. You won't learn anything if somebody else does the problem
  170. for you, and won't get any credit for your answer if your instructor
  171. reads the newsgroup. 
  172.  
  173. Please also avoid starting the debate on which language is better;
  174. Prolog or Lisp, Prolog or C, and so on. Such discussions are rarely
  175. productive, and nobody will change their opinion as a result of the
  176. debate. The usual conclusion of such debates is that the languages are
  177. Turing equivalent, but some languages are better suited for particular
  178. tasks. For Prolog, the consensus is that it is a good choice for
  179. problems involving logic and problems whose solution can be
  180. represented or characterized succinctly in logical form. Some folks
  181. feel Prolog is the best language for natural language processing;
  182. others disagree.
  183.  
  184. This guide is posted regularly to comp.lang.prolog and comp.object.logic. 
  185. It may also be obtained by anonymous ftp from 
  186.    ftp.cs.cmu.edu:/user/ai/pubs/faqs/prolog/  [128.2.206.173]
  187. using username "anonymous" and password "name@host" (substitute your
  188. email address) or via AFS in the Andrew File System directory
  189.    /afs/cs.cmu.edu/project/ai-repository/ai/pubs/faqs/prolog/
  190. as the files prg_1.faq and prg_2.faq.
  191.  
  192. You can also obtain a copy of the FAQ by sending a message to
  193. ai+query@cs.cmu.edu with 
  194.    Send PRG
  195. in the message body.
  196.  
  197. The FAQ postings are also archived in the periodic posting archive on
  198.    rtfm.mit.edu:/pub/usenet/news.answers/prolog/ [18.181.0.24]
  199. If you do not have anonymous ftp access, you can access the archive by
  200. mail server as well.  Send an E-mail message to
  201. mail-server@rtfm.mit.edu with "help" and "index" in the body on
  202. separate lines for more information.
  203.  
  204. An automatically generated HTML version of the PRG is accessible by
  205. WWW as part of the AI-related FAQs Mosaic page. The URL for this
  206. resource is
  207.    http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/top.html
  208. The direct URL for the PRG is
  209.    http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/lang/prolog/prg/top.html
  210.  
  211. If you need to cite the FAQ for some reason, use the following format:
  212.    Mark Kantrowitz, "Prolog Resource Guide", comp.lang.prolog, <month>, <year>,
  213.    ftp.cs.cmu.edu:/user/ai/pubs/faqs/prolog/prg_?.faq, mkant+prg@cs.cmu.edu.
  214.  
  215. Disclaimer:
  216.  
  217.    We have taken great care in making the information in this document as
  218.    accurate as possible. However we are not responsible for any problems
  219.    which might occur from using information supplied in this guide.
  220.  
  221. ----------------------------------------------------------------
  222. Subject:  [1-1]  Sources of Information about Prolog
  223.  
  224. The newsgroups comp.lang.prolog, comp.object.logic, and (to a lesser
  225. extent) comp.ai are a source of information and discussion about Prolog. 
  226. See also sci.logic. The newsgroup comp.constraints is for information
  227. about constraint processing languages and related topics. 
  228.  
  229. A "Frequently Asked Questions" posting is posted to comp.lang.prolog
  230. twice a month by Jamie Andrews <jamie@cs.sfu.ca>. The Prolog FAQ and this
  231. Prolog Resource Guide are intended to complement one another.
  232.  
  233. The draft ISO standard for Prolog is available by anonymous ftp from
  234.    ai.uga.edu:/pub/prolog.standard/ [128.192.12.9]
  235. An unofficial summary of the draft ISO Prolog standard is available
  236. from the same location as isoprolog.tex or isoprolog.ps.Z.  Send mail
  237. to Michael Covington <mcovingt@ai.uga.edu> for more information about
  238. his summary of the standard. For more information about the ISO Prolog
  239. standard itself, write to Roger Scowen, ISO/IEC JTC1 SC22 WG17 (Prolog)
  240. convener, DITC/93, National Physical Laboratory, TEDDINGTON, Middlesex
  241. TW11 0LW, UNITED KINGDOM, call +44-81-943-6956, fax +44-81-977-7091,
  242. or send email to rss@seg.npl.co.uk.
  243.  
  244. Richard O'Keefe's 1984 Prolog standard draft is available by anonymous
  245. FTP from 
  246.    ftp.ecrc.de:/pub/eclipse/std/plstd.doc
  247.  
  248. ----------------------------------------------------------------
  249. Subject: [1-2]  Mailing Lists
  250.  
  251. Prolog and Logic Programming:
  252.    prolog@sushi.stanford.edu (general)
  253.    prolog-hackers@sushi.stanford.edu (nitty gritty)
  254.  
  255.    All requests to be added to or deleted from this list, problems,
  256.    questions, etc., should be sent to prolog-request@sushi.stanford.edu
  257.  
  258.    [The host sushi.stanford.edu no longer exists, as of 11/24/92.
  259.     Does anybody know the new location of the mailing lists?]
  260.  
  261. Lambda Prolog:
  262.    lprolog@cis.upenn.edu
  263.  
  264.    To subscribe, send mail to lprolog-request@cis.upenn.edu.
  265.  
  266. Electronic Journal of Functional and Logic Programming (EJFLP)
  267.  
  268.    EJFLP is a refereed journal that will be distributed for free via e-mail.
  269.    The aim of EJFLP is to create a new medium for research investigating the
  270.    integration of the functional, logic and constraint programming paradigms.
  271.  
  272.    For instructions on submitting a paper, send an empty mail message with 
  273.       Subject: Help
  274.    to: 
  275.       submissions@ls5.informatik.uni-dortmund.de. 
  276.    You will receive an acknowledgment of your submission within a few hours.
  277.  
  278.    To subscribe to the journal, send an empty mail message to the following
  279.    address:
  280.        subscriptions@ls5.informatik.uni-dortmund.de
  281.    You will receive an acknowledgment of your subscription within a few days. 
  282.  
  283.    If there are any problems with the mail-server, send mail to
  284.    ejflp.op@ls5.informatik.uni-dortmund.de. 
  285.  
  286.    The editorial board is: Rita Loogen (RWTH Aachen), Herbert Kuchen (RWTH
  287.    Aachen), Michael Hanus (MPI-Saarbruecken), Manuel MT Chakravarty (TU
  288.    Berlin), Martin Koehler (Imperial College London), Yike Guo (Imperial
  289.    College London), Mario Rodriguez-Artalejo (Univ. Madrid), Andy Krall
  290.    (TU Wien), Andy Mueck (LMU Muenchen), Tetsuo Ida (Univ. Tsukuba,
  291.    Japan), Hendrik C.R. Lock (IBM Heidelberg), Andreas Hallmann (Univ.
  292.    Dortmund), Peter Padawitz (Univ. Dortmund), Christoph Brzoska (Univ.
  293.    Karlsruhe).
  294.  
  295. PDC-L:
  296.    PDC-L@nic.surfnet.nl is a discussion list for PDC Prolog users.
  297.  
  298.    To subscribe, send mail to LISTSERV@nic.surfnet.nl with 
  299.        SUBSCRIBE PDC-L <your full name>
  300.    in the message body.
  301.  
  302. Theorem Provers:
  303.    theorem-provers@ai.mit.edu
  304.  
  305.    This (unmoderated) list is intended for announcements of interest to
  306.    people interested in automated theorem proving.
  307.  
  308.    To subscribe, send your email address to theorem-provers-request@ai.mit.edu.
  309.  
  310. Type Theory:
  311.    types@dcs.gla.ac.uk
  312.  
  313.    Moderated mailing list about type theory. Archived on 
  314.       theory.lcs.mit.edu:/pub/meyer/
  315.  
  316.    To subscribe, send mail to types-request@dcs.gla.ac.uk.
  317.  
  318. Logic:
  319.    logic@cs.cornell.edu
  320.  
  321.    Moderated mailing list about logic. Archived on 
  322.       theory.lcs.mit.edu:/pub/meyer/
  323.   
  324.    To subscribe, send mail to logic-request@cs.cornell.edu
  325.  
  326. ALP (French Chapter):
  327.    prog-logique@irisa.fr
  328.  
  329.    La liste de diffusion "prog-logique" est le support electronique de
  330.    communication de la section francaise de l'ALP (Association for Logic
  331.    Programming), groupe de travail AFCET. Elle complete la lettre du
  332.    groupe publiee trimestriellement.
  333.  
  334.    Pour vous abonner ou vous desabonner, il faut envoyer un "mail" au
  335.    serveur de listes, a l'adresse 
  336.       listserv@irisa.fr
  337.    sans sujet ni signature, et dont le corps du message contient 
  338.         SUB prog-logique Prenom Nom
  339.    Un acquittement est renvoye par messagerie. Pour desabonnement, ecrit
  340.         SIGNOFF prog-logique
  341.    Les requetes envoyees directement a la liste ne seront pas prises en
  342.    compte.
  343.  
  344. ----------------------------------------------------------------
  345. Subject: [1-3] Books and Magazine Articles
  346.  
  347. A BiBTeX bibliography of Logic Programming Conferences is available by
  348. anonymous ftp from duck.dfki.uni-sb.de. See [1-5] below.
  349.  
  350. A partially annotated bibliography of work on integrating
  351. object-oriented and logic programming is available by anonymous ftp
  352. from menaik.cs.ualberta.ca:/pub/oolog/ in PostScript and BibTeX
  353. formats. Written by Vladimir Alexiev <vladimir@cs.ualberta.ca>.
  354.  
  355. The following books are regarded as popular and widely used. Also
  356. included are some books about WAM. This is not intended to be a complete
  357. Prolog bibliography.
  358.  
  359. Prolog Programming:
  360.  
  361.    Covington, Michael A.; Nute, D.; and Vellino, A. "Prolog
  362.    Programming in Depth", Scott, Foresman & Co., 1987. ISBN 0-521-40984-5
  363.    (Out of print, but new edition coming soon. Copies of the 1987
  364.    edition are still available from the University of Georgia
  365.    Bookstore, at 706-542-7131.)
  366.  
  367.    Clocksin, W.F. and Mellish, C.S: "Programming in Prolog", 3rd Ed.
  368.    Springer Verlag, 1987. 281 pages, ISBN 0-387-17539-3 ($29). 
  369.    [Basic introduction to Prolog.]
  370.  
  371.    Coelho, H., and Cotta, J.C., "Prolog by Example", Springer Verlag,
  372.    1988. 381 pages, ISBN 0-387-18313-2 ($39.50).
  373.  
  374.    Cooke, Daniel E., "Logic: The Basis for Understanding Prolog", 
  375.    Ablex, Norwood, NJ, 1994. 224 pages, ISBN 1-56750-028-5 ($27.50).
  376.    [Intro to Prolog with a review of the basic ideas underlying the language.]
  377.  
  378.    Conlon, Tom: "Programming in Parlog". Addison-Wesley, 1989, 
  379.    ISBN 0-201-17450-2.
  380.  
  381.    Dawe, C.M. and M.S. Dawe, "Prolog for Computer Science", Springer
  382.    Verlag, 1994. 190 pages, ISBN 0-387-19811-3 paper ($35). [Intro to
  383.    computer science using Prolog.]
  384.  
  385.    Dodd, Anthony, "Prolog: A logical approach", Oxford University
  386.    Press, New York, 1990, 556 pages. ISBN 0-198-53822-7 (cloth), $52.50; 
  387.    ISBN 0-198-53821-9 (paperback), $26.00.
  388.  
  389.    Kluzniak and Szpakowicz: "Prolog for Programmers", Academic Press 1985
  390.  
  391.    G. L. Lazarev, "Why Prolog? Justifying Logic Programming for Practical
  392.    Applications", Prentice Hall, 1989. [Software engineering bent.
  393.    Emphasizes advantages of declarative programming.]
  394.  
  395.    Le, Tu Van,  "Techniques of Prolog programming, with implementation
  396.    of logical negation and quantified goals", John Wiley, New York, 1993.
  397.    ISBN: 0-471-57175-X (American edition), 0-471-59970-O (International
  398.    edition).  LnProlog, a Prolog interpreter that supports negative
  399.    finding queries and quantified queries is available together with
  400.    the book. 
  401.  
  402.    Saint-Dizier, P., "An Introduction to Programming in Prolog",
  403.    Springer Verlag, 1990. 184 pages, ISBN 0-387-97144-0 paper ($25).
  404.    [Tutorial introduction, with simple examples of AI programs and games.]
  405.  
  406.    Leon Sterling, editor, "The Practice of Prolog", MIT Press, 1990.
  407.    342 pages, ISBN 0-262-19301-9, $39.95.
  408.  
  409. Advanced Prolog Programming:
  410.  
  411.    O'Keefe, Richard A., "The Craft of PROLOG", MIT Press, 1990, 410 pages.
  412.    ISBN 0-262-15039-5, $42.50.
  413.  
  414.    Peter Ross, "Advanced Prolog: Techniques and Examples",
  415.    Addison-Wesley, 1989, ISBN 0-201-17527-4.
  416.  
  417.    Leon Sterling and Ehud Shapiro, "The Art of Prolog: Advanced
  418.    Programming Techniques", 2nd Edition, MIT Press, 1994. 688 pages,
  419.    ISBN 0-262-19338-8 ($49.95).
  420.    [Source code for the book is available in ftp.cwru.edu:/ArtOfProlog/.
  421.     There is a subdirectory for each chapter of the book containing the
  422.     text of the programs in that chapter.]
  423.  
  424. AI and Prolog:
  425.  
  426.    Yoav Shoham, "Artificial Intelligence Techniques in Prolog", Morgan
  427.    Kaufmann Publishers, 1993, 400 pages. ISBN 1-55860-167-8 (paper) $39.95. 
  428.    ISBN 1-55860-319-0 (cloth) $49.95. [Topics include search, backward
  429.    chaining, data-driven methods, truth maintenance, constraint
  430.    satisfaction, reasoning with uncertainty, planning, temporal
  431.    reasoning, machine learning, and natural language processing. Prolog
  432.    source for all the programs in the book is available by anonymous ftp
  433.    from unix.sri.com:/pub/shoham/]
  434.  
  435.    Bratko, Ivan, "Programming in Prolog for Artificial Intelligence", 
  436.    2nd Edition, Addison-Wesley, 1990. [Good introduction to Prolog and AI.
  437.    A bit large, though, for an Intro to Prolog course. Includes
  438.    discussion of the 8-queens problem.]
  439.  
  440.    Dennis Merritt, "Building Expert Systems in Prolog", Springer-Verlag, 1989.
  441.    358 pages, ISBN 0-387-97016-9 hardcover ($52).
  442.    Explains how to build various expert system shells in Prolog, including
  443.    forward/backward chaining, FOOPS, rete-network, frames, solving
  444.    Rubik's cube and more. Includes complete source code listings.
  445.    (Source code from the book is also sold on disk by Amzi! Inc.)
  446.  
  447.    Dennis Merritt: "Adventure in Prolog", Springer-Verlag, 1990. 
  448.    186 papers, ISBN 0-387-97315-X hardcover ($38).
  449.    Teaches Prolog by leading the reader through the construction of an
  450.    adventure game. The exercises lead the reader through three other
  451.    programs:  an intelligent database, an expert system and an order-entry
  452.    program.  While most texts teach Prolog with fragments of interesting code,
  453.    this book takes a more pragmatic (as opposed to theoretical approach) and
  454.    shows the reader how to assemble complete Prolog programs.
  455.  
  456.    Gazdar, G. and Mellish, C., "Natural Language Processing in Prolog:
  457.    An Introduction to Computational Linguistics", Addison-Wesley,
  458.    Reading, Massachusetts, 1989. (There are three different editions
  459.    of the book, one for Lisp, one for Prolog, and one for Pop-11.)
  460.  
  461.    Fernando C.N. Pereira and Stuart M. Shieber, "Prolog and
  462.    Natural-Language Analysis", CSLI Lecture Notes Number 10, Stanford,
  463.    CA, 1987. 286 pages, ISBN 0-937073-18-0.
  464.  
  465.    Michael A. Covington, "Natural Language Processing for Prolog
  466.    Programmers", Prentice-Hall, Englewood Cliffs, NJ, 1994. ISBN
  467.    0-13-629213-5.
  468.  
  469.    Harvey Abramson and Veronica Dahl, "Logic Grammars", Springer-Verlag,
  470.    New York, 1989, 234 pages, ISBN 0-387-96961-6.
  471.  
  472.    Peter Flach, "Simply Logical: Intelligent Reasoning by Example",
  473.    John Wiley & Sons, 1994, 256 pages. ISBN 0-471-94152-2 paper ($31.95).
  474.    [Covers theoretical and practical aspects of Prolog programming as well
  475.    as AI topics like knowledge representation, search, heuristics, 
  476.    abduction, default reasoning, and induction. Every technique is
  477.    accompanied by a Prolog program that implements it. More information
  478.    about the book is available from  
  479.       http://machtig.kub.nl:2080/Infolab/Peter/SimplyLogical.html
  480.    or by email from Peter.Flach@kub.nl.]
  481.  
  482. Prolog and Object-Oriented Programming:
  483.  
  484.    Chris Moss, "Prolog++ The Power of Object-Oriented and Logic
  485.    Programming", Addison-Wesley, 1994. 312 pages, ISBN 0-201-56507-2. UK
  486.    price is 21.95 pounds. [This paperback includes a special offer to
  487.    obtain a Prolog++ compiler from LPA for Windows 3.1 or Macintosh. UK
  488.    price is 29.95 pounds (plus 17.5 percent VAT) plus 5.00 pounds postage
  489.    and handling. Elsewhere the cost is $49.95 plus $8 p&h.]
  490.  
  491. Logic Programming:
  492.  
  493.    Hogger, Christopher J., "Introduction to Logic Programming",
  494.    Academic Press, 1984. 278 pages. ISBN 0-12-352090-8 (alk. paper)
  495.    ISBN 0-12-352092-4 (pbk.).
  496.  
  497.    Hogger, Christopher J., "Essentials of Logic Programming", 
  498.    Clarendon Press, Oxford, 1990. ISBN 0-19-853820-0. [Covers both
  499.    foundations and more practical material, relating it all to Prolog.
  500.    Takes a different approach than his first intro, dividing the book
  501.    into many short "themes" instead of chapters, and including many
  502.    excercises (with some answers).]
  503.  
  504.    Kowalski, R.A.: "Logic for Problem Solving", New York 1979, Elsevier Publ.
  505.  
  506.    LLoyd, John: "Foundations of Logic Programming", 2nd Edition,
  507.    Springer-Verlag, 1988. (Intro to logic programming theory.)
  508.  
  509.    David Maier and David S. Warren: "Computing with Logic: Logic
  510.    Programming with Prolog", Benjamin Cummings, Menlo Park, CA, 1989.
  511.  
  512.    Nilsson, Ulf and Maluszynski, Jan, "Logic, Programming and Prolog",
  513.    John Wiley & Sons, 1990, ISBN 0-471-92625-6.
  514.  
  515.    Subrata Kumar DAS, "Deductive Databases and Logic Programming",
  516.    Addison-Wesley Publishing Company, July 1992, 448 pages. 
  517.    ISBN 0-201-56897-7. 
  518.  
  519. Constraint Logic Programming and Constraint Satisfaction:
  520.  
  521.    Bennaceur, Hachemi and Gerard Plateau, "An exact algorithm for the
  522.    constraint satisfaction problem: Application to logical inference",
  523.    Information Processing Letters 48(3):151-158, November 19, 1993.
  524.  
  525.    Cohen, J., "Constraint Logic Programming Languages", Communciations
  526.    of the ACM 33(7):52-68, 1992. [Good introduction to CLP and
  527.    includes a historical overview.]
  528.  
  529.    Freeman-Benson, B.N., Maloney, J., and Borning, A., "An Incremental
  530.    Constraint Solver", Communications of the ACM 33(1):54-63, 1990.
  531.    [Includes a good reading list on the history and applications of
  532.    constraints.]
  533.  
  534.    Freuder, Eugene C., and Richard J. Wallace, "Partial constraint
  535.    satisfaction", Artificial Intelligence 58(1-3):21-70, December 1992.
  536.  
  537.    Van Hentenryck, Pascal, "Constraint Satisfaction in Logic Programming",
  538.    MIT Press, Cambridge, MA, 1989, ISBN 0-262-08181-4.
  539.  
  540.    Jaffar, Joxan and Jean-Louis Lassez, "Constraint Logic Programming", in
  541.    Proceedings of the 14th ACM Symposium on Principles of Programming
  542.    Languages (POPL), Munich, Germany, pages 111-119, 1987.  
  543.    [A longer version appears in Joxan Jaffar and Jean-Louis Lassez,
  544.    "Constraint Logic Programming", Technical Report 86-74, Monash
  545.    University, Victoria, Australia, June 1986.]
  546.  
  547.    Kumar, Vipin, "Algorithms for Constraint-Satisfaction Problems: A
  548.    Survey", AI Magazine 13(1):32-44, 1992.
  549.  
  550.    Mackworth, Alan K., "The logic of constraint satisfaction", Artificial
  551.    Intelligence 58:3-20, 1992.
  552.  
  553.    Meseguer, P., "Constraint Satisfaction Problems: An Overview", AICOM
  554.    2(1):3-17, 1989.
  555.  
  556.    Steele, Guy L., "The Definition and Implementation of A Computer
  557.    Programming Language Based on Constraints", PhD thesis, MIT, 1980.
  558.  
  559.    Tsang, Edward, "Foundations of Constraint Satisfaction", Academic
  560.    Press, 1993. 421 pages, ISBN 0-12-701610-4 ($75). [Good overview.]
  561.  
  562.    Zhang, Ying and Alan K. Mackworth, "Constraint Programming in
  563.    Constraint Nets", in Position Papers for the First Workshop on
  564.    Principles and Practice of Constraint Programming, pages 303-312,
  565.    Newport, RI, April 28-30, 1993.
  566.  
  567.    [See also the articles on Constraint Networks (pages 276-285) and
  568.    Constraint Satisfaction (pages 285-293) in Shapiro's Encyclopedia
  569.    of Artificial Intelligence.]
  570.  
  571. Prolog Implementations and WAMs:
  572.  
  573.    Ait-Kaci, Hassan, "Warren's Abstract Machine: A Tutorial Reconstruction",
  574.    MIT Press, Cambridge, MA. 1991.
  575.    125 pages, ISBN 0-262-51058-8 paper ($17.50), 0-262-01123-9 cloth.
  576.  
  577.    Patrice Boizumault, "The Implementation of Prolog", Princeton
  578.    University Press, Princeton, NJ, 1993.  Translated by Ara M.
  579.    Djamboulian and Jamal Fattouh. ISBN 0-691-08757-1, 357 pages ($49.50).
  580.    [The interpreters developed in the book are available by anonymous
  581.    ftp from cnam.cnam.fr:/pub/Boizumault/. See [2-1].]
  582.  
  583.    Campbell, J.A. (ed):  "Implementations of Prolog", John Wiley, 1984
  584.  
  585.    Peter M. Kogge, "The Architecture of Symbolic Computers", 
  586.    McGraw-Hill, 1991. ISBN 0-07-035596-7.
  587.       Includes sections on memory management, the SECD and
  588.       Warren Abstract Machines, and overviews of the various
  589.       Lisp Machine architectures.
  590.  
  591.    David H. D. Warren: "An Abstract Prolog Instruction Set", Technical Note
  592.    No 309, SRI International, Menlo Park, CA, 1983.
  593.  
  594.    David H. D. Warren, "Logic Programming and Compiler Writing," in
  595.    Software-Practice and Experience 10(2):97-125, 1980.
  596.  
  597.    J. Cohen and T. Hickey, "Parsing and Compiling using Prolog",
  598.    ACM Transactions on Programming Languages and Systems (TOPLAS), 
  599.    9(2):125-163, 1987.
  600.  
  601.    J. Paakki, "Prolog in practical compiler writing", The Computer
  602.    Journal 34(1):64-72, 1991. (But see Letters to the Editor, The
  603.    Computer Journal 35(3):313, 1992.)
  604.  
  605.    Jonathan P. Bowen, "From Programs to Object Code using Logic and Logic
  606.    Programming", in R. Giegerich and S. L. Graham, editors, Code
  607.    Generation -- Concepts, Tools, Techniques, pages 173-192,
  608.    Springer-Verlag, 1992.
  609.  
  610.    Jonathan P. Bowen, "From Programs to Object Code and back again using
  611.    Logic Programming: Compilation and Decompilation", Journal of
  612.    Software Maintenance: Research and Practice 5(4):205-234, December 1993.
  613.  
  614. Parallel Prologs:
  615.  
  616.    Gregory, Steve: "Parallel Logic Programming in Parlog: The Language
  617.    and Its Implementation", Addison-Wesley, 1987, ISBN 0-201-19241-1.
  618.  
  619.    Tick, E.: "Parallel Logic Programming". MIT Press, 1991
  620.  
  621. Miscellaneous:
  622.  
  623.    Deville, Yves: "Logic Programming, Systematic Program Development",
  624.    International Series in Logic Programming, Addison-Wesley, 1990, 338 pages.
  625.    ISBN 0-201-17576-2. 
  626.  
  627.    Wolfram, D.A., "The Clausal Theory of Types", Cambridge Tracts in 
  628.    Theoretical Computer Science {\bf 21}, Cambridge University Press,
  629.    1993.
  630.  
  631. Magazine Articles:
  632.  
  633.    PCAI Magzine, September/October 1993. Article on exploring Prolog,
  634.    showing the first steps to four applications -- an adventure game, an
  635.    object-oriented shell, a tax program, and an animal guessing game.
  636.    An excerpt of this article is available from
  637.       ftp.cs.cmu.edu:/user/ai/lang/prolog/doc/intro/explore.doc 
  638.  
  639.    BYTE Magazine, August 1987. 5 introductory articles on Prolog.
  640.    Applications include logic grammars and simulating a microprocessor.
  641.  
  642.    Uwe Schreiweis: Beredte Logik, Konzepte der 'KI-Sprache" Prolog,
  643.    (Eloquent Logic, Concepts of the AI language Prolog), iX Magazine,
  644.    October 1992, pages 84-90.
  645.  
  646.    Uwe Schreiweis: Basis der Fuenf, Die Sprache Prolog in der Public
  647.    Domain, (Base of the Five, Prolog in the Public Domain), iX Magazine,
  648.    October 1992, pages 92-94.
  649.  
  650.    Uwe Schreiweis: Fuenfte Generation, Kommerzielle Prolog-Systeme,
  651.    (Fifth Generation, Commercial Prolog Systems), iX Magazine, October
  652.    1992, pages 96-102.
  653.  
  654.    Klaus Bothe: Weniger Raum, Speicherplatzbezogener Prolog-Benchmark,
  655.    (Less Space, A Space Oriented Prolog Benchmark), iX Magazine, October
  656.    1992, pages 106-7.
  657.  
  658. Magazines Related to Prolog:
  659.  
  660.    Logic Programming Newsletter (4 issues/yr)
  661.    Included with membership in the Association for Logic Programming 
  662.    ($20 regular, $10 students). For membership information, write to
  663.    Cheryl Anderson (ALP), DoC-ICSTM, 180 Queens Gate, London SW7 2BZ,
  664.    UK, phone +44-71-589-5111 x5011, fax +44-71-589-1552, or send email
  665.    to alp@doc.ic.ac.uk. Contributions are welcome and should be sent
  666.    to Andrew Davidson <ad@cs.mu.oz.au>. Selected articles from the
  667.    newsletter are available from the WWW archive
  668.       http://www.cs.mu.oz.au/~ad/alp/archive.html
  669.  
  670.    AI Communications (4 issues/yr)
  671.    "The European Journal on Artificial Intelligence"  ISSN 0921-7126,
  672.    European Coordinating Committee for Artificial Intelligence.
  673.  
  674.    AI Expert (issued monthly) ISSN 0888-3785, Miller Freeman Publishers
  675.    See a copy of the magazine for list of BBS's in NA. On CompuServe: GO
  676.    AIEXPERT. Regularly reviews Prolog interpreters and compilers.
  677.  
  678.    Expert Systems (issued Feb, May, Aug and Nov) ISSN 0266-4720,
  679.    Learned Information (Europe) Ltd. Subscription: GBP 85 or USD 110
  680.  
  681.    IEEE Expert (issued bimonthly) ISSN 0885-9000, IEEE Computer Society
  682.  
  683.    The Journal of Logic Programming (issued bimonthly), (North-Holland),
  684.    Elsevier Publishing Company, ISSN 0743-1066
  685.  
  686.    New Generation Computing, Springer-Verlag. (LOTS of Prolog in it.)
  687.  
  688. ----------------------------------------------------------------
  689. Subject: [1-4] Prolog and Logic Programming Associations and Journals
  690.  
  691. ASSOCIATION FOR LOGIC PROGRAMMING (ALP)
  692. Members receive the ALP Newsletter.
  693.  
  694. For information on membership, contact
  695.  
  696.    Cheryl Anderson
  697.    ALP Administrative Secretary
  698.    Department of Computing
  699.    Imperial College
  700.    180 Queen's Gate
  701.    London, SW7 2BZ, UK
  702.  
  703.    Email:   csa@doc.ic.ac.uk
  704.    Fax:    +44 71 589 1552
  705.    Phone:  +44 71 589 5111 x5011
  706.  
  707. Newsletter submissions should be sent to
  708.  
  709.    Andrew Davison
  710.    Department of Computer Science
  711.    University of Melbourne
  712.    Parkville
  713.    Melbourne, Victoria 3052
  714.    AUSTRALIA
  715.  
  716.    Email:   ad@cs.mu.oz.au
  717.    Fax:    +61 3 348 1184
  718.    Phone:  +61 3 344 7207 / 5230
  719.    Telex:   AA 35185
  720.  
  721. ----------------------------------------------------------------
  722. Subject: [1-5] FTP Archives and Other Resources
  723.  
  724. The following are achives that contain Prolog-related material, such as
  725. code, interpreters, articles, etc. Most of the archives are ftp sites.
  726. They are listed by domain.name and [IP Address]. To access them and
  727. download programs type at the prompt: 
  728.  
  729.         ftp <site name> (or IP address)
  730.         login: "anonymous",
  731.         password: your own return email address,
  732.         cd <directory>, ls to see files, 
  733.         set binary, 
  734.         get <filename> to transfer file to your system
  735.         stop with quit or exit
  736.  
  737. Deviations from this general scheme may occur but the above should
  738. work in most cases.
  739.  
  740. CMU AI Repository, Prolog Section:
  741.  
  742.    The Prolog Section of the CMU Artificial Intelligence Repository
  743.    (aka "The Prolog Repository") is accessible by anonymous ftp to
  744.       ftp.cs.cmu.edu:/user/ai/lang/prolog/ [128.2.206.173]
  745.    through the AFS directory
  746.       /afs/cs.cmu.edu/project/ai-repository/ai/lang/prolog/
  747.    or by WWW from the URL   
  748.       http://www.cs.cmu.edu:8001/Web/Groups/AI/html/repository.html
  749.    and includes more than 110 megabytes of sources and other materials
  750.    of interest to Prolog programmers, including all freely
  751.    distributable implementations and many programs. The contents of the 
  752.    CMU AI Repository has been keyword indexed to provide convenient
  753.    browsing of the contents.
  754.  
  755.    The repository has standardized on using 'tar' for producing
  756.    archives of files and 'gzip' for compression.
  757.  
  758.    To search the keyword index by mail, send a message to:
  759.       ai+query@cs.cmu.edu
  760.    with one or more lines containing calls to the keys command, such as:
  761.       keys prolog gui
  762.    in the message body.  Keywords may be regular expressions and are
  763.    compared with the index in a case-insensitive conjunctive fashion.  
  764.    You'll get a response by return mail. Do not include anything else in 
  765.    the Subject line of the message or in the message body.  For help on
  766.    the query mail server, include: 
  767.       help
  768.    instead. 
  769.  
  770.    A Mosaic interface to the keyword searching program is in the
  771.    works.  We also plan to make the source code (including indexes) to
  772.    this program available, as soon as it is stable.
  773.  
  774.    Most of the Prolog Section of the AI Repository appears on Prime Time 
  775.    Freeware for AI, Issue 1-1, a mixed-media book/CD-ROM publication. It
  776.    includes two ISO-9660 CD-ROMs bound into a 224 page book and sells
  777.    (list) for US$60 plus applicable sales tax and shipping and handling
  778.    charges. Payable through Visa, Mastercard, postal money orders in US
  779.    funds, and checks in US funds drawn on a US bank. For more
  780.    information write to Prime Time Freeware, 370 Altair Way, Suite 150,
  781.    Sunnyvale, CA  94086  USA, call 408-433-9662, 408-433-0727 (fax),
  782.    or send email to ptf@cfcl.com.
  783.  
  784.    Contributions of software and other materials are always welcome but
  785.    must be accompanied by an unambiguous copyright statement that grants
  786.    permission for free use, copying, and distribution -- either a
  787.    declaration by the author that the materials are in the public domain,
  788.    that the materials are subject to the GNU General Public License (cite
  789.    version), or that the materials are subject to copyright, but the
  790.    copyright holder grants permission for free use, copying, and
  791.    distribution. (We will tell you if the copying permissions are too
  792.    restrictive for us to include the materials in the repository.)
  793.    Inclusion of materials in the repository does not modify their
  794.    copyright status in any way. Materials may be placed in:
  795.       ftp.cs.cmu.edu:/user/ai/new/
  796.    When you put anything in this directory, please send mail to
  797.       ai+contrib@cs.cmu.edu
  798.    giving us permission to distribute the files, and state whether
  799.    this permission is just for the AI Repository, or also includes
  800.    publication on the CD-ROM version (Prime Time Freeware for AI).
  801.    We would also appreciate if you would include a 0.doc file for your
  802.    package; see /user/ai/new/package.doc for a template. (If you don't
  803.    have the time to write your own, we can write it for you based on
  804.    the information in your package.)
  805.  
  806.    The Prolog Section of the AI Repository is maintained by Mark Kantrowitz 
  807.    <AI.Repository@cs.cmu.edu>. 
  808.  
  809. Artificial Intelligence Programs:
  810.    ai.uga.edu:/pub/ [128.192.12.9]
  811.  
  812.    The University of Georgia AI FTP Library contains public domain
  813.    Prologs, such as Open Prolog and ESL PD Prolog, PrEd (a small text
  814.    editor for Prolog), and some miscellaneous prolog programs in
  815.       ai.uga.edu:/pub/prolog/
  816.    A copy of the programs from the book by Covington, Nute, and Vellino, (see
  817.    the section on Books below), is in
  818.       ai.uga.edu:/pub/prolog.book/
  819.    and the draft ISO standard for prolog is in
  820.       ai.uga.edu:/pub/prolog.standard/
  821.    Some technical reports with accompanying code are in
  822.       ai.uga.edu:/pub/ai.reports/
  823.    Other materials of interest are in
  824.       ai.uga.edu:/pub/natural.language/
  825.       ai.uga.edu:/pub/natural.language.book/
  826.    Maintained by Michael Covington <mcovingt@ai.uga.edu>.
  827.  
  828. ALE:     
  829.    ALE (Attribute Logic Engine), a freeware system written in
  830.    Prolog, integrates phrase structure parsing and constraint logic
  831.    programming with typed feature structures as terms.  Types are
  832.    arranged in an inheritance hierarchy and specified for the features
  833.    and value types for which they are appropriate.  Grammars may also
  834.    interleave unification steps with logic program goal calls (as can be
  835.    done in DCGs), thus allowing parsing to be interleaved with other
  836.    system components.  While ALE was developed to handle HPSG grammars,
  837.    it can also execute PATR-II grammars, DCG grammars, Prolog, Prolog-II,
  838.    and LOGIN programs, etc. Grammars and programs are specified with a
  839.    version of Rounds-Kasper Attribute Value Logic with macros and
  840.    variables.  ALE supports lexical rules and empty categories for
  841.    grammars, using a bottom-up, all-paths dynamic chart parser. ALE
  842.    supports last call optimization, negation by failure and cuts in
  843.    definite clauses, which may be used independently or integrated into
  844.    grammars. The system is distributed with several sample grammars,
  845.    including a fairly comprehensive implementation of a head-driven
  846.    phrase structure grammar for English. Version 2.0 of ALE is
  847.    available free for research purposes by anonymous ftp from 
  848.       j.gp.cs.cmu.edu:/usr1/carp/ftp/
  849.    as the files ale.*, or from the CMU AI Repository in
  850.       ftp.cs.cmu.edu:/user/ai/lang/prolog/code/parsing/ale/
  851.    For more information write to Bob Carpenter <carp@lcl.cmu.edu> or
  852.    Gerald Penn <penn@lcl.cmu.edu>.
  853.  
  854. ALP-UK Library:
  855.    The best Prolog library currently is the one collected by the ALP-UK
  856.    group. It is available to members at 30 pounds sterling for a Sun
  857.    cartridge or 2 pounds/IBM DOS disk. (non-members maybe, how much?) It
  858.    contains MBs of Prolog systems (including SB Prolog), libraries
  859.    (including the Edinburgh library), benchmarks, grammars, theorem provers,
  860.    object and graphics systems etc. For more information, write to ALP-UK
  861.    Library, Sanjay Raina, Librarian, Dept. of Computer Science, University
  862.    of Bristol, University Walk, Bristol BS8 1TR, UK, call +44 0272 303030
  863.    x3304, or send email to raina@compsci.bristol.ac.uk.
  864.  
  865. CASLOG
  866.    CASLOG (Complexity Analysis System for LOGic) is an experimental
  867.    semi-automatic complexity analysis system for logic programs. It can
  868.    perform the worst-case analysis for complexity measures: argument size
  869.    complexity, number of solutions complexity, and time complexity.
  870.  
  871.    CASLOG extends the techniques developed for analyzing imperative and
  872.    functional languages to deal with nondeterminism and generation of
  873.    multiple solutions via backtracking in logic languages. The analyses
  874.    for different complexity measures are implemented in a unified
  875.    framework and share several common features. First, the predicates in
  876.    a program are processed in an order generated by a bottom-up
  877.    topological sorting over the call graph of the program. Second, the
  878.    complexity function for a predicate is derived from the complexity
  879.    function of its clauses by using the information about the mutual
  880.    exclusion relationships between its clauses. Third, the complexity
  881.    function for a clause is inferred based on the data dependency
  882.    relationships between its literals. Fourth, the complexity functions
  883.    for recursive clauses are in the form of difference equations and are
  884.    transformed into closed form functions using difference equation
  885.    solving techniques. This unified framework can simplify proofs of
  886.    correctness and the implementation of the algorithms.
  887.  
  888.    CASLOG is available by anonymous ftp from cs.arizona.edu:/caslog/. This
  889.    is an alpha distribution, and includes CASLOG version 1.0, a
  890.    preliminary user manual, a paper on CASLOG, and a set of examples.
  891.    For more information, contact Nai-Wei Lin <naiwei@cs.arizona.edu>.
  892.  
  893. Constraint Programming Paper Archive:
  894.    Aarhus University, Denmark, has established an anonymous ftp archive
  895.    for papers on "Constraint Programming" at ftp.daimi.aau.dk:/pub/CLP/.
  896.    For further information, contact Brian H. Mayoh <brian@daimi.aau.dk>.
  897.  
  898. CSP:
  899.  
  900.    Some constraint-related papers by a research group at the
  901.    University of Washington are available by anonymous ftp from 
  902.       june.cs.washington.edu:/pub/constraints/papers/
  903.    The papers from the 1994 Principles and Practice of Constraint
  904.    Programming Workshop are available in
  905.       june.cs.washington.edu:/pub/constraints/papers/ppcp94/
  906.    There are also implementations of several constraint satisfaction
  907.    algorithms and constraint-based systems, including the DeltaBlue and
  908.    SkyBlue algorithms, the Multi-Garnet user interface toolkit, ThingLab
  909.    II, and CoolDraw (a constraint-based drawing system), in
  910.    subdirectories of 
  911.       june.cs.washington.edu:/pub/constraints/code/
  912.    The ftp archive is also accessible via WWW:
  913.       http://web.cs.city.ac.uk/archive/constraints/constraints.html
  914.    All the source code is in the public domain. For more information,
  915.    write to Alan Borning <borning@geoduck.cs.washington.edu>.
  916.  
  917.    C implementations of a number of constraint satisfaction algorithms
  918.    are available by anonymous ftp from
  919.       ftp.cs.ualberta.ca:/pub/ai/csp/
  920.    Get the files README and csplib.tar.Z.  The algorithms include
  921.    variations on backtracking (backjumping, backmarking, chronological
  922.    backtracking, etc.), local consistency preprocessing algorithms (e.g.,
  923.    arc consistency), and random problem generators. For more information,
  924.    write to Peter van Beek <vanbeek@cs.ualberta.ca>.
  925.  
  926. Eden:
  927.    Eden is a Poplog-based AI microworld developed by Simon Perkins,
  928.    Jocelyn Paine and Edmund Chattoe of the Oxford University Artificial
  929.    Intelligence Society. It is intended to serve as a testbed for
  930.    learning and planning programs. Programs written in Pop-11, Prolog,
  931.    Lisp, and ML control a "bug" that lives in a 2-dimensional world. Any
  932.    kind of algorithm may be used to control the bug, including genetic
  933.    algorithms, neural nets, and rule-based systems. Eden consists of a
  934.    grid of cells, each of which can contain objects such as keys, doors,
  935.    boulders and quicksand. Bug's objective is to find and eat a piece of
  936.    food which the simulator has placed somewhere within this grid. To do
  937.    this, Bug must negotiate its way towards the food while dealing
  938.    intelligently with obstacles. Eden's laws of physics allow Bug to take
  939.    one of several different actions when it encounters an object. The
  940.    simulator then works out the consequences of the chosen action on Bug
  941.    and on Eden, and displays these graphically in a Ved window. Bug's
  942.    perceptions are updated to reflect the new state of the world, and the
  943.    cycle repeats. Eden is available by anonymous ftp from the Imperial
  944.    College archive in
  945.       src.doc.ic.ac.uk:/packages/prolog-pd-software/ [146.169.2.10] 
  946.    as the file eden.tar.Z. (Note: This is really a link to the
  947.    directory computing/programming/languages/prolog/pd-software/.)
  948.    Eden includes PopBeast, a simple Prolog bug which can read and
  949.    parse simple commands, extract their meaning, plan how to satisfy
  950.    these commands, and then carry out the plans.
  951.  
  952.    Parts of the current Eden are coded in Pop-11, so porting it to
  953.    Prologs other than Poplog will require some effort. Most of the
  954.    recoding needed is in the grid-world simulator and the definition of
  955.    objects. Send mail to Jocelyn Paine <popx@vax.oxford.ac.uk> if
  956.    you're willing to try this. 
  957.  
  958. FW_Rules:
  959.  
  960.    FW_RULES is a Sicstus Prolog library providing a compiler for forward
  961.    chaining rules.  The implementation is based on a non-state saving
  962.    technique coupled with an indexing mechanism on the working memory
  963.    based on C bitwise operations to achieve efficiency. The library
  964.    supports interoperability between the forward chaining language and
  965.    the underlying Prolog engine.  Terms in the working memory are
  966.    represented as Prolog facts and can be accessed from Prolog to perform
  967.    deduction. It is available by anonymous FTP from
  968.       ftp.cs.unibo.it:/pub/gaspari/fw_rules/
  969.    as the files README and fw_rules.tar.Z. For more information,
  970.    please write to Mauro Gaspari <gaspari@cs.unibo.it>.
  971.  
  972. HDRUG:
  973.  
  974.    Hdrug is an environment to develop logic grammars, parsers, and
  975.    generators for natural languages.  The package comes with a number of
  976.    example grammars, including a Categorial Grammar, a Tree Adjoining
  977.    Grammar, a Unification Grammar in the spirit of Head-driven Phrase
  978.    Structure Grammar, an Extraposition Grammar, a Definite Clause
  979.    Grammar, and a port of the HPSG grammar from Bob Carpenter's ALE
  980.    system. Each of the grammars comes with a set of parsers, such as 
  981.    Earley-like chart parsers, left-corner parsers and head-driven
  982.    parsers. Some grammars come with variants of the head-driven
  983.    generator. The package allows easy comparison of different
  984.    parsers/generators, extensive possibilities of compiling feature
  985.    equations into Prolog terms, graphical (Tk), LaTeX and ordinary Prolog
  986.    output of trees, feature structures and Prolog terms, and plotted
  987.    graphs and tables of statistical information. Hdrug runs in Sicstus
  988.    Prolog and requires ProTcl and Tcl/Tk. It is available by anonymous
  989.    FTP from
  990.       tyr.let.rug.nl:/pub/prolog-app/Hdrug/
  991.    or by WWW from
  992.       http://tyr.let.rug.nl/~vannoord/prolog-app/Hdrug/
  993.    For more information, write to Gertjan van Noord <vannoord@let.rug.nl>.
  994.  
  995. Logic Programming Bibliographies:
  996.    duck.dfki.uni-sb.de:/pub/lp-proceedings/ [134.96.188.92]
  997.  
  998.    The ftp server supports tar'ing on the fly, so if you type "get
  999.    bibtex.tar" you will get a tar'ed version of the "bibtex" directory.
  1000.  
  1001.    BibTeX entries for the proceedings of the following conferences
  1002.    are included: SLP84-87,91, NACLP89-90, ILPS91, ICLP82,84,86-91,93,
  1003.       JICLP92, LP88, RTA89,93, PLILP90-92, ALPUK91, ICOT92, ALP90,92,
  1004.       CADE90,92, CTRS90,92, LICS86-91, UNIF89, EPIA89,91,93, TACS91,
  1005.       TAPSOFT93, EAIA90, FGCS92, FAC, ILPS93, PEPM91,93
  1006.    and the following journals: JLP85-93, JAR91-93, JSC91-93, IANDC82-92.
  1007.  
  1008.    The bibliography is mirrored by the Universidade Nova de Lisboa.
  1009.    In addition, the bibliography can be searched using either WAIS or
  1010.    GOPHER. To search the lp-proceedings using WAIS, use the
  1011.       lp-proceedings.src 
  1012.    wais source, available from the directory of servers. To search the
  1013.    lp-proceedings using GOPHER, point the client to gopher.fct.unl.pt,
  1014.    and follow the directories 
  1015.       "Research/Bibliography/Logic Programming Proceedings".
  1016.    Searching should be easier than retrieving the entire package every
  1017.    time you want to locate a particular article.
  1018.  
  1019.    Send comments and bug reports to rscheidhauer@dfki.uni-sb.de.
  1020.  
  1021. Machine Learning Algorithms Implemented in Prolog:
  1022.  
  1023.    In 1988 the Special Interest Group on Machine Learning of the German
  1024.    Society for Computer Science (GI e.V.) decided to establish a library
  1025.    of PROLOG implementations of Machine Learning algorithms. The library
  1026.    includes - amongst others - PROLOG implementations of Winston's arch, 
  1027.    Becker's AQ-PROLOG, Fisher's COBWEB, Brazdil's generation of 
  1028.    discriminations from derivation trees, Quinlan's ID3, FOIL, IDT,
  1029.    substitution matching, explanation based generalization, inverse 
  1030.    resolution, and Mitchell's version spaces algorithm. 
  1031.    All algorithms are written in Edinburgh Prolog syntax. Most of the
  1032.    algorithms are copyleft under the GNU General Public License. 
  1033.    The programs are currently available via anonymous ftp-server from
  1034.    the GMD: 
  1035.  
  1036.         ftp.gmd.de:/gmd/mlt/ML-Program-Library/ [129.26.8.84]
  1037.  
  1038.    They are also available by surface mail from Thomas Hoppe, 
  1039.    Projektgruppe KIT, Technische Universitaet Berlin, Franklinstr. 28/29,
  1040.    10629 Berlin, Germany. Files will be distributed via MS-DOS formated
  1041.    3.5 inch floppy (double, high and extra-high density),  which should
  1042.    be included with your request. You can also get them by sending an email
  1043.    message to Thomas Hoppe (see below).
  1044.  
  1045.    Send additional PROLOG implementations of Machine Learning
  1046.    Algorithms, complaints about them and detected bugs or problems
  1047.    to Thomas Hoppe, <hoppet@cs.tu-berlin.de>. Send suggestions and
  1048.    complaints about the ftp library to Werner Emde, Gesellschaft
  1049.    fuer Mathematik und Datenverarbeitung, Bonn, <emde@gmd.de>. 
  1050.  
  1051.  
  1052. Natural Language Processing in Prolog:
  1053.  
  1054.    The Prolog and DCG programs from Pereira and Shieber's book, "Prolog
  1055.    and Natural Language Analysis", are available by anonymous ftp from
  1056.    das.harvard.edu:/pub/shieber/pnla/. See the file README for the
  1057.    conditions under which the material is distributed. If you retrieve
  1058.    the files, please send an email message to the authors letting them
  1059.    know how you plan to use them. For further information, write to
  1060.    Fernando Pereira <pereira@research.att.com> or Stuart Shieber
  1061.    <shieber@das.harvard.edu>.
  1062.  
  1063. Parser:
  1064.    A parser for standard Prolog text written in C is available by
  1065.    anonymous ftp from
  1066.       trappist.elis.rug.ac.be:/pub/prolog/
  1067.    It consists of only three modules (tokenizer, parser, and display
  1068.    routine) and an interface module to integrate it with an existing
  1069.    Prolog system. It is completely deterministic and about 10 times
  1070.    faster than O'Keefe's public domain parser written in Prolog.
  1071.    For more information, write to Koen De Bosschere <kdb@elis.rug.ac.be>.
  1072.  
  1073. Partial Evaluation:
  1074.  
  1075.    Prolog code for the partial evaluator for the flowchart language
  1076.    described in Ch. 4 of "Partial Evaluation and Automatic Program
  1077.    Generation" by Jones, Gomard and Sestoft is available for anonymous
  1078.    ftp from 
  1079.       ftp.diku.dk:/pub/diku/dists/jones-book/ch4_pl.tar.Z
  1080.    All three Futamura projections are implemented. The code has been
  1081.    tested under SWI Prolog 1.5 and 1.7 and should hopefully port to other
  1082.    prologs without too many problems.  For more information, please
  1083.    contact Zerksis Umrigar <umrigar@cs.binghamton.edu>.
  1084.  
  1085. Pleuk Grammar Development System:
  1086.  
  1087.    Pleuk is intended to be a shell for grammar development, in that many
  1088.    different grammatical formalisms can be embedded within it.
  1089.    Grammatical formalisms that currently work with Pleuk include CFG (a
  1090.    simple context-free grammar system), HPSG-PL (a system for developing
  1091.    HPSG-style grammars, produced at Simon Fraser University, Canada, by
  1092.    Fred Popowich, Sandi Kodric and Carl Vogel), Mike (a simple
  1093.    graph-based unification system, enhanced with additional operations
  1094.    for the treatment of free word order proposed by Mike Reape in various
  1095.    publications), SLE (a graph-based formalism enhanced with arbitrary
  1096.    relations in the manner of Johnson & Rosner and Doerre & Eisele.
  1097.    Delayed evaluation is used to compute infinite relations.  This system
  1098.    has been used for the development of several HPSG-style grammars) and
  1099.    Term (a term-based unification grammar system, originally developed
  1100.    for the support of Unification Categorial Grammar of Zeevat, Klein and
  1101.    Calder). Sample grammars are provided for all of these formalisms.
  1102.    Work continues apace on other formalisms, including Bob Carpenter's
  1103.    Ale system for typed feature structures, and Veronica Dahl's Static
  1104.    Discontinuity Grammars.
  1105.  
  1106.    Pleuk requires SICStus prolog version 2.1#6 or later, plus a variety
  1107.    of ancillary programs available free of charge from many FTP servers.
  1108.    Pleuk is available via anonymous FTP from the University of Georgia
  1109.    Artificial Intelligence FTP library
  1110.       ai.uga.edu:/pub/natural.language/
  1111.    as the files pleuk.1.0.tar.Z, pleuk.PSmanuals.tar.Z, and pleuk.README.  
  1112.    Pleuk will also be available shortly from the Natural Language
  1113.    Software Registry, German Research Institute for Artificial
  1114.    Intelligence (DKFI), Saarbruecken.  For more information, send email
  1115.    to pleuk@cogsci.ed.ac.uk.
  1116.  
  1117. Prolog Repository:
  1118.    Established by Jocelyn Paine of Experimental Psychology, Oxford
  1119.    University in 1987. The current catalogue (January 1991) contains
  1120.    30 entries. For catalogue, queries and contributions contact POPX at: 
  1121.       popx%vax.ox.ac.uk@oxmail.ox.ac.uk (internet) or 
  1122.       popx@uk.ac.ox.vax (janet) 
  1123.  
  1124.    FTP access is available through the Imperial College archive at
  1125.       src.doc.ic.ac.uk:/packages/prolog-pd-software/  [146.169.2.10]
  1126.    This is actually a link to the directory
  1127.       /computing/programming/languages/prolog/pd-software/
  1128.       
  1129.    To access it, cd to either of the above directories via
  1130.    anonymous ftp. The file README gives a brief summary of the
  1131.    contents of the directory and CATALOGUE gives a (long!)
  1132.    description of each entry. Entries include the Logic Programming
  1133.    Tutor from Paine's book, the DEC-10 public-domain library, the
  1134.    Linger natural-language corrector, a simple object-oriented
  1135.    add-on for Prolog, graph utilities, among other things.
  1136.  
  1137.    Files in the archive are also available on MS-DOS floppies for a
  1138.    nominal fee to cover the cost of floppies, postage, and packing. 
  1139.  
  1140. Prolog to SQL Compiler:
  1141.    The Prolog to SQL Compiler translates database access requests,
  1142.    which consist of a projection term and a database goal, to the
  1143.    appropriate SQL query. The compiler is written in standard Edinburgh
  1144.    Prolog and has been ported to a number of Prologs. The code posted to
  1145.    comp.lang.prolog works in ECRC's SEPIA Prolog, but should be easily
  1146.    ported to other Prologs. A detailed tech report on the implementation
  1147.    is available by email from draxler@cis.uni-muenchen.de (include
  1148.    your full postal address). The compiler is copyright, but may be used
  1149.    free of charge for non-commercial purposes and redistributed provided
  1150.    the copyright notice is retained intact.
  1151.  
  1152. PSI:
  1153.    PSI is a handy system for the management and retrieval of your
  1154.    personal data, be it addresses, CD collections, or bibliographic
  1155.    references. It is intended for the non-commercial user. It may not be
  1156.    as full-fledged as some data-base systems, but has some features that
  1157.    you won't find in most commercial systems. Also, you may find it
  1158.    easier to set up and faster to use. PSI is useful for a broad range of
  1159.    data. Indexing with descriptors makes searching for the data you need
  1160.    fast, and the interface to other data-base formats (import and export)
  1161.    is quite powerful. PSI was written in LPA MacProlog and is a "genuine
  1162.    'double clickable' Mac application". PSI runs on all Macs with System
  1163.    6 or 7 in 1MB of main memory. As LPA MacProlog isn't yet 32-bit clean,
  1164.    PSI isn't either. Extensive documentation and some examples are
  1165.    included. PSI is available by anonymous ftp from
  1166.    sumex-aim.stanford.edu:/info-mac/app/ as the file psi-23.hqx. It
  1167.    was also available on a recent Nautilus CD-ROM and will be on the
  1168.    first Info-Mac CD-ROM.
  1169.  
  1170. Queens and Knights:
  1171.    Queens and Knights are favorite problems for Prolog programmers.
  1172.    A collection of several implementations is available by anonymous
  1173.    ftp from sics.se:/pub/muse/queensANDknights.tar.Z.uue
  1174.    Write to Roland Karlsson <roland@sics.se> for more information.
  1175.  
  1176. Rubik's Cube:
  1177.    Amzi! Inc., the creators of Cogent Prolog, have made sources to Cube Solver
  1178.    II available from their ftp site, ftp.std.com:/vendors/amzi/.  It is
  1179.    also available from the Prolog Repository at CMU, in
  1180.    ftp.cs.cmu.edu:/user/ai/lang/prolog/code/fun/rubik/.  This Prolog
  1181.    program solves Rubik's Cube.  The sources include a simple scrolling
  1182.    interface that should work in any Edinburgh standard Prolog.  Also
  1183.    included is a ready-made executable for 386 and 486 PCs; it was
  1184.    implemented using Cogent Prolog.  For more information, write to Amzi!
  1185.    Inc. (formerly Amziod) <amzi@world.std.com>, 40 Samuel Prescott Dr.,
  1186.    Stow, MA 01775, Tel: 508-897-7332. Fax: 508-897-2784.
  1187.  
  1188. SEL:
  1189.    SEL is a declarative set processing language. Its main features are
  1190.    subset and equational program clauses, pattern matching over sets,
  1191.    support for efficient iteration and point-wise/incremental computation
  1192.    over sets, the ability to define transitive closures through circular
  1193.    constraints, meta-programming and simple higher-order programming, and
  1194.    a modest user-interface including tracing. The language seems
  1195.    well-suited to a number of problems in graph theory, program analysis,
  1196.    and discrete mathematics. The SEL compiler is written in Quintus
  1197.    Prolog and the run-time system is written in C. It generates WAM-like
  1198.    code, extended to deal with set-matching, memoization, and the novel
  1199.    control structure of the language. SEL is available by anonymous FTP
  1200.    from ftp.cs.buffalo.edu:/users/bharat/SEL2/.  The FTP release comes with a
  1201.    user manual, bibliography of papers (including .dvi files), several
  1202.    sample programs, and source code. For further information, write to
  1203.    Bharat Jayaraman <bharat@cs.buffalo.edu>.
  1204.  
  1205. A public-domain WAM emulator, written in C++ by Herve Touati, is
  1206. available by anonymous FTP from gatekeeper.dec.com:/pub/plan/prolog/ucb/.
  1207.  
  1208. ----------------------------------------------------------------
  1209. Subject: [1-6] Free Object-Oriented Systems for Prolog
  1210.  
  1211. OL(P), Object Layer for Prolog, is an object-oriented extension to
  1212. Prolog.  It provides an object-oriented structuring and reuse
  1213. mechanism for Prolog in a manner that preserves performance and
  1214. semantics. The object-oriented layer is compiled into Prolog without
  1215. introducing any side-effects.  OL(P) takes the view of objects as
  1216. collections of predicates (called methods).  To Prolog, OL(P) 1.1 adds
  1217. objects with methods, data encapsulation, instances, and multiple
  1218. inheritance. Object methods can access Prolog predicates and vice
  1219. versa. The OL(P) incremental compiler translates OL(P) programs to
  1220. Prolog programs that don't need runtime interpretation (e.g., no
  1221. search is needed for inheritance).  OL(P) 1.1 comes with prepared
  1222. installation for SICStus Prolog and QUINTUS Prolog (both on UNIX),
  1223. documentation, simple built-in project management, some libraries,
  1224. and example programs. The source is included, so you can port OL(P)
  1225. to different platforms, different Prolog systems, and different
  1226. logic programming languages. OL(P) is available by anonymous ftp
  1227. from parcftp.xerox.com:/ftp/pub/ol/ [13.1.64.94]. Written by Markus
  1228. P.J. Fromherz <fromherz@parc.xerox.com>. 
  1229.  
  1230. See Common ESP (CESP) in [2-1] and BeBOP in [2-3].
  1231.  
  1232. ----------------------------------------------------------------
  1233. Subject: [1-7] Commercial Object-Oriented Systems for Prolog
  1234.  
  1235. LAP is an object-oriented system by Elsa. For more information, write
  1236. to Elsa Software, La Grange Dame Rose, 6 ave du Marechal Juin, 92366
  1237. Meudon-La-Foret Cedex, France, call +33 (1) 46 30 24 55, fax +33 (1)
  1238. 46 30 55 26, or send email to elsa!lap@uunet.uu.net.
  1239.  
  1240. SPIRAL is an object oriented system by CRIL for Sun3 and Sun4 under
  1241. Unix. For more information, write to CRIL, Conception et Realisation,
  1242. Industriel de Logiciel, 146 bd de Valmy 92707, Colombes Cedex, France,
  1243. call +33 1 47 69 53 67, or fax +33 1 47 69 53 99.
  1244.  
  1245. See also LPA Prolog ++ in [2-2].
  1246.  
  1247. ----------------------------------------------------------------
  1248. Subject: [1-8]  The Prolog 1000 Database
  1249.  
  1250. The Prolog 1000 is a database of real Prolog applications being
  1251. assembled in conjunction with the Association for Logic Programming
  1252. (ALP) and PVG. The aim is to demonstrate how Prolog is being used in
  1253. the real world and it already contains over 500 programs with well
  1254. over 2 million lines of code. The database is available for research
  1255. use in SGML format from the Imperial College archive
  1256.    src.doc.ic.ac.uk:/packages/prolog-progs-db/prolog1000.v1.gz
  1257. If you have or know about a program that might qualify for inclusion,
  1258. send an email message to Al Roth (alroth@cix.compulink.co.uk) for an
  1259. electronic entry form which only takes a few minutes to complete. Or
  1260. write to Prolog 1000, PO Box 137, Blackpool, Lancashire, FY2 0XY,
  1261. U.K., Fax: +44 253 53811 Telephone: +44 253 58081. (Floppy disks for
  1262. PC or Mac in text form are also welcome, and paper entries may also be
  1263. sent). Queries may also be addressed to: Chris Moss
  1264. (cdsm@doc.ic.ac.uk), Leon Sterling (leon@alpha.ces.cwru.edu).
  1265.  
  1266. ----------------------------------------------------------------
  1267. Subject: [1-9] X-Windows Interfaces
  1268.  
  1269. PI:
  1270.    PI is an interface between Prolog applications and the X Window System
  1271.    that aims to be independent from the Prolog engine, provided that it
  1272.    has a Quintus-style foreign function interface (such as SICStus, YAP).
  1273.    It is mostly written in Prolog and is divided in two libraries: (1)
  1274.    Edipo, a low-level interface to the Xlib functions, and (2) Ytoolkit,
  1275.    a high-level user interface toolkit that allows you to create and
  1276.    manage graphical objects, define new classes of objects, and handle
  1277.    user interaction. PI is available by anonymous ftp from
  1278.    ftp.ncc.up.pt:/pub/prolog/pi_1.2.tar.gz and includes documentation
  1279.    and some demos. Also see ytoolkit.tar.Z. PI has been tested in
  1280.    Quintus Prolog 3.1.1 and SICStus 2.1 #8. Send questions, comments,
  1281.    and bug reports to Ze' Paulo Leal, Universidade de Porto, Portugal,
  1282.    <zp@ncc.up.pt>. 
  1283.  
  1284. XWIP: 
  1285.    ftp.x.org:/contrib/xwip.tar.Z  (formerly export.lcs.mit.edu)
  1286.    ftp.uu.net:/X/contrib/xwip.tar.Z
  1287.  
  1288.    XWIP is an X Windows interface for PROLOG.
  1289.  
  1290. XPCE:
  1291.    XPCE is an object-oriented X-window interface toolkit for symbolic
  1292.    programming languages (Prolog and Lisp), offering a high level of
  1293.    abstraction for communication with X11, Unix processes, Unix
  1294.    networking facilities (sockets) and Unix files. XPCE's built-in
  1295.    classes (about 150) are mostly written in C.  The XPCE/Prolog
  1296.    interface allows the user to create and manipulate instances of these
  1297.    classes.  The user can also create new XPCE classes from Prolog.
  1298.    XPCE's window related classes provide various styles of menus,
  1299.    primitive graphical objects, compound graphical objects and Emacs
  1300.    oriented programmable text manipulation windows. The distribution
  1301.    contains several demo programs, including a diagram drawing tool
  1302.    (PceDraw), an animation demo, an Epoch-like editor, a graphical
  1303.    interface to Unix ispell, and an online hyper-text manual for XPCE
  1304.    itself.  A demo version of XPCE/SWI-Prolog for Linux may be obtained
  1305.    by anonymous ftp from swi.psy.uva.nl:/pub/xpce/linux/ [145.18.114.17].
  1306.    The non-demo versions (for SWI-Prolog, SICStus Prolog, Lucid Common
  1307.    Lisp and LispWorks) require filling out a license and paying a fee
  1308.    (see the file pub/xpce/INFO).  To be added to the mailing list
  1309.    xpce@swi.psy.uva.nl send mail to xpce-request@swi.psy.uva.nl. Send
  1310.    bugs to xpce-bugs@swi.psy.uva.nl. 
  1311.  
  1312.    ProWindows 3 is a commercial version of XPCE for Quintus Prolog. 
  1313.    For further information, write to Simon Heywood, AI International Ltd, 
  1314.    The Chapel, Park View House, 1 Park View Road, Berkhamsted, Herts, 
  1315.    HP4 3EY, phone +44-(0)442-876722 (Sales Hotline +44 (0)442 876448),
  1316.    fax +44-(0)442-877997, or send email to sheywood@aiil.co.uk.
  1317.  
  1318. ProTcl:
  1319.  
  1320.    ProTcl (pronounced pro-tickle) is a Prolog interface to Tcl/Tk. It has
  1321.    a very simple and lightweight interface, which allows one to evaluate
  1322.    Tcl expressions from Prolog. It defines the tcl_eval/1,2 predicate
  1323.    which passes the Tcl expressions to the Tcl interpreter. It has been
  1324.    tested on ECLiPSe and SICStus, on a Sparc 10. ProTcl is available
  1325.    by anonymous ftp from 
  1326.       ftp.ecrc.de:/pub/eclipse/progs/protcl/
  1327.    The ProTCL home page is
  1328.       http://www.ecrc.de/eclipse/html/protcl.html
  1329.    Send comments and suggestions to Micha Meier <micha@ecrc.de>.
  1330.  
  1331. ----------------------------------------------------------------
  1332. Subject: [1-10] Is there a straight-forward way of compiling Prolog to C?
  1333.  
  1334. Two methods of compiling Prolog to C have been reported in the
  1335. literature:
  1336.    -  WAM-based approaches
  1337.    -  Continuation-based approaches
  1338.  
  1339. The WAM-based approach compiles Prolog programs into a sequence of C
  1340. function or macro calls to WAM instructions. A brief description of
  1341. this method and some results are given in the paper:
  1342.  
  1343.    Michael R. Levy and R. Nigel Horspool, "Translating Prolog to C: a
  1344.    WAM-based Approach", in Proceedings of the Second Compulog Network
  1345.    Area Meeting on Programming Languages, and the Workshop on Logic
  1346.    Languages in Pisa, May 1993. (Available by anonymous ftp from 
  1347.    csr.uvic.ca:/pub/mlevy/.)
  1348.  
  1349. The best tutorial for writing a WAM-based compiler or WAM emulator is
  1350. Hassan Ait-Kaci's book, "Warren's Abstract Machine: A Tutorial
  1351. Reconstruction" (see [1-3] above). 
  1352.  
  1353. A "quick-and-dirty" method is to implement the WAM functions as described
  1354. in Ait-Kaci's tutorial, to label each call with a C case label, and then throw
  1355. a giant switch(P) statement around the entire sequence of calls, where P
  1356. is the WAM program counter.  On return from any instruction that modifies
  1357. P, a "goto Start" must be inserted. (This method was posted by Rob
  1358. Scott, <rbs@aisb.ed.ac.uk>, based on the JANUS papers by Saraswat.)
  1359.  
  1360. This strategy will work, but does not allow you to modularize your
  1361. prolog program. Predicates in prolog seem to generate 8 to 15 WAM
  1362. instructions per clause, so (assuming very roughly a clause per
  1363. line)you might expect your 1,000 line program to expand to a switch
  1364. statement containing up to 15,000 lines. Some C compilers can't handle
  1365. such a big switch statement.
  1366.  
  1367. Levy and Horspool solve this problem by compiling each Prolog
  1368. predicate to a seperate C function. A dispatch loop mechanism is used
  1369. to call the C functions. C switch statements are used only inside the
  1370. functions.  A predicate that calls another predicate sets P to contain
  1371. the address of the C function that implements the called predicate,
  1372. (and sets another register called W in their scheme) and then returns
  1373. to the dispatcher instead of calling the predicate. This bypasses the
  1374. C run-time stack.  This lets one exploit WAM optimizations (like LCO)
  1375. and yet retain the ability to create many modules. Their system
  1376. performs well when compared with byte-code compilers, but translated
  1377. code runs slower than code produced by native code compilers.  On the
  1378. other hand, it outputs portable ANSI C that can run on any machine
  1379. with a C compiler.
  1380.  
  1381. Other approaches to translating to C use continuations. The idea here
  1382. is to translate every Prolog predicate to a C function that has
  1383. an additional argument, namely a continuation function. If the function
  1384. fails, it simply returns, but if it succeeds, it executes the continuation.
  1385. When the function regains control from the continuation, it can then try
  1386. to generate a new solution. Here are two references
  1387. that describe systems built using continuations:
  1388.  
  1389.    J. L. Weiner and S. Ramakrishnan, "A Piggy-Back Compiler for Prolog",
  1390.    in Proceedings of SIGPLAN T88 Conference on Programming Language
  1391.    Design and Implementation, Atlanta, Georgia, 1988, pages 288-296.
  1392.  
  1393.    J. L. Boyd and G. M. Karam, "Prolog in C", Carleton University,
  1394.    Ottawa, 1988. 
  1395.  
  1396. Oliver Ridoux <Olivier.Ridoux@irisa.fr> reports that a
  1397. continuation-based approach works well when used to compile
  1398. LambdaProlog. His scheme translates every predicate into a function
  1399. that uses and modifies the success and failure continuations, with
  1400. recursion in the predicate becoming iteration in the continuation
  1401. passing mechanism. Inside the function one uses whichever intermediate
  1402. machine one fancies. Clauses within the function can be either the
  1403. branches of a switch statement or simply labelled when using a C
  1404. system that can store labels. This approach can still generate
  1405. monstrous C programs that blow up the C compiler, but the C programs
  1406. aren't as large as those generated by a one module to a function
  1407. scheme. Approaches that replace recursion in a predicate with
  1408. recursion in a function tend to overload the C stack and lead to
  1409. sloppy memory management.  Two technical reports describing Ridoux's
  1410. approach are available by anonymous ftp from 
  1411.    ftp.irisa.fr:/
  1412. as pm/*.ps.Z and mailv06/*.ps.Z.
  1413.  
  1414. Michael Covington <mcovingt@ai.uga.edu> points out that a very simple
  1415. approach is to write a Prolog interpreter in C, then store the Prolog
  1416. program in that program's data! This will, of course, execute slowly.
  1417. One might imagine all sorts of other schemes. For example, a query
  1418. could be treated as a stack of "suspensions" (with the left-most goal
  1419. on top).  The top suspension is executed by selecting the appropriate
  1420. clause (possibly using indexing), and then, if necessary, pushing new
  1421. suspensions on the stack (the body of the clause whose head unified
  1422. with the current suspension).
  1423.  
  1424. Another question to ask is this: Is there any reason why you should want to
  1425. convert Prolog to C at all? George Saab of Quintus Corp. pointed out that,
  1426. with Quintus Prolog, you can create a standard .o file from a Prolog file,
  1427. which can then be linked with your other .o files to create an executable.
  1428. What's more, your Prolog code can be called from C code and vice versa.
  1429.  
  1430. On ther hand, the advantage of distributing "Prolog objects" as C rather than
  1431. .o files is portability.
  1432.  
  1433. M. Gaspari  and G. Attardi describe an approach to translating Prolog to C
  1434. based on the provision of a common runtime architecture. This is
  1435. described in 
  1436.  
  1437.    G. Attardi and M. Gaspari, "Multilanguage Interoperability", in
  1438.    Proceedings of The 3rd International Symposium, PLILP 91, 
  1439.    Springer Verlag, LNCS #528, 1991.
  1440.  
  1441. [Note: Thanks to Michael Levy, Department of Computer Science,
  1442. University of Victoria, <mlevy@csr.uvic.ca>, for writing this section.]
  1443.  
  1444. ----------------------------------------------------------------
  1445. Subject: [1-11] WAM emulators and tracers
  1446.  
  1447. Johan Bevemyr's Luther-based WAM-tracer is available by anonymous ftp
  1448. from Uppsala University in Sweden. It includes a simple compiler from
  1449. Prolog to WAM code and a low-level WAM code tracer written in
  1450. emacs-lisp.  The tracer splits the screen into regions to show
  1451. data-areas, registers, and so on. You can then step through running
  1452. the code. The tracer is available by anonymous ftp from
  1453.    ftp.csd.uu.se:/pub/WAM-tracer/luther.tar.Z
  1454. Documentation on the tracer is included in the distribution.  The
  1455. emulator is in the /pub/WAM-emulator/ directory (and runs in SICStus
  1456. Prolog).  For more information, contact Johan Bevemyr
  1457. <bevemyr@csd.uu.se> or <bevemyr@sics.se>.
  1458.  
  1459. ----------------------------------------------------------------
  1460. Subject: [1-12] What is the Basic Andorra Model and AKL?
  1461.  
  1462. The Basic Andorra Model is a way to execute definite clause programs
  1463. that allows dependent and-parallelism to be exploited transparently.
  1464. It also supports nice programming techniques for search programs.  The
  1465. idea is to first reduce all goals that match at most one clause.  When
  1466. no such goal exists, any goal (e.g., the left-most) may be chosen.
  1467. The BAM was proposed by David H. D. Warren, and his group at Bristol
  1468. has developed an AND-OR parallel implementation called Andorra-I,
  1469. which also supports full Prolog.  See, for example, 
  1470.  
  1471.    Seif Haridi and Per Brand, "Andorra Prolog, an integration of Prolog
  1472.    and committed choice languages", in Proceedings of the FGCS 1988,
  1473.    ICOT, Tokyo, 1988.
  1474.  
  1475.    Vitor Santos Costa, David H. D. Warren, and Rong Yang, "Two papers on
  1476.    the Andorra-I engine and preprocessor", in Proceedings of the 8th
  1477.    ICLP. MIT Press, 1991.
  1478.  
  1479.    Steve Gregory and Rong Yang, "Parallel Constraint Solving in
  1480.    Andorra-I", in Proceedings of FGCS'92. ICOT, Tokyo, 1992.
  1481.  
  1482. AKL (Andorra Kernel Language) is a concurrent constraint programming
  1483. language that supports both Prolog-style programming and committed
  1484. choice programming.  Its control of don't-know nondeterminism is based
  1485. on the Andorra model, which has been generalised to also deal with
  1486. nondeterminism encapsulated in guards and aggregates (such as bagof)
  1487. in a concurrent setting. See, for example,
  1488.  
  1489.    Sverker Janson and Seif Haridi, "Programming Paradigms of the Andorra
  1490.    Kernel Language", in Proceedings of ILPS'91. MIT Press, 1991.
  1491.  
  1492.    Torkel Franzen, "Logical Aspects of the Andorra Kernel Language", SICS
  1493.    Research Report R91:12, Swedish Institute of Computer Science, 1991.
  1494.  
  1495.    Torkel Franzen, Seif Haridi, and Sverker Janson, "An Overview of the
  1496.    Andorra Kernel Language", In LNAI (LNCS) 596, Springer-Verlag, 1992.
  1497.  
  1498.    Sverker Janson, Johan Montelius, and Seif Haridi, "Ports for Objects
  1499.    in Concurrent Logic Programs", in Research Directions in Concurrent
  1500.    Object-Oriented Programming, MIT Press, 1993 (forthcoming).
  1501.  
  1502. The above papers on AKL are available by anonymous ftp from 
  1503.    sics.se:/pub/ccp/papers/
  1504. An (as yet non-released) prototype implementation of AKL is available
  1505. for research purposes (contact sverker@sics.se). 
  1506.  
  1507. ----------------------------------------------------------------
  1508. Subject: [1-13] What is Constraint Logic Programming?
  1509.  
  1510. Constraint Logic Programming (CLP) augments Prolog by adding
  1511. constraints to the clauses. The CLP implementation solves goals in the
  1512. same manner as Prolog, but also merges the constraints associated with
  1513. each rule. If the merge succeeds, the successful goal and the
  1514. corresponding constraints are returned. If, however, the constraints
  1515. are mutually exclusive, the solution fails.
  1516.  
  1517. ----------------------------------------------------------------
  1518. Subject: [1-14] How do you write portable programs in Prolog?
  1519.  
  1520. The de-facto standard syntax for Prolog is known as the Edinburgh
  1521. standard. It is based on the syntax of DEC-10 Prolog, an early Prolog
  1522. implementation developed at the University of Edinburgh.
  1523. See question [1-1] for information on the draft ISO standard for
  1524. Prolog.
  1525.  
  1526. Unfortunately, not every Prolog implementation is Edinburgh compatible.
  1527. There also isn't any notion of read-conditionalization, like #+ and #-
  1528. *features* in Common Lisp. 
  1529.  
  1530. One option is to use the C preprocessor on Prolog code before loading
  1531. it into Prolog.  Or you could use term-expansion to roll your own
  1532. conditional compilation system. Term expanding a clause to []
  1533. effectively discards it.
  1534.  
  1535. Another possibility is to conditionalize the execution instead of the
  1536. compilation. The user would have to uncomment a line like one of the
  1537. following, 
  1538.    % this_is(quintus).
  1539.    % this_is(sicstus).    
  1540. and the code would have to test for the proper literal
  1541.    a :- this_is(quintus), blah, blah, blah.
  1542.    a :- this_is(sicstus), blah, blah, blah.
  1543. at a slight cost in efficiency. (If you first feed the program through
  1544. a general partial evaluator, you'll get an equivalent program without
  1545. the inefficiency. Partial evaluation is in some sense a more powerful
  1546. and semantically cleaner form of source preprocessing. Given
  1547.         <head> :- <condition>, <rest of body>.
  1548. If <condition> is always false, we can safely drop the clause. If
  1549. <condition> is always true, we can drop it from any clauses that
  1550. include it.) 
  1551.  
  1552. Another possibility is Richard O'Keefe's environment package for
  1553. Prolog. It was posted to comp.lang.prolog on 1-SEP-94; a copy can be
  1554. found in
  1555.    ftp.cs.cmu.edu:/user/ai/lang/prolog/code/ext/env/env.pl
  1556.  
  1557. ----------------------------------------------------------------
  1558. Subject: [1-15] World-Wide Web (WWW) Resources
  1559.  
  1560. The World Wide Web (WWW) is a hypermedia document that spans the
  1561. Internet.  It uses the http (HyperText Transfer Protocol) for the
  1562. light-weight exchange of files over the Internet.  NCSA Mosaic is a
  1563. World Wide Web browser developed at the National Center for
  1564. Supercomputing Applications (NCSA). 
  1565.  
  1566. Mosaic's popularity derives, in part, from its ability to communicate
  1567. using more traditional Internet protocols like FTP, Gopher, WAIS, and
  1568. NNTP, in addition to http. Mosaic can display text, hypertext links,
  1569. and inlined graphics directly. When Mosaic encounters a file type it
  1570. can't handle internally, such as Postscript documents, mpeg movies,
  1571. sound files, and JPEG images, it uses an external viewer (or player)
  1572. like Ghostscript to handle the file. Mosaic also includes facilities
  1573. for exploring the Internet. In other words, Mosaic is an multimedia
  1574. interface to the Internet.
  1575.  
  1576. The hypertext documents viewed with Mosaic are written in HTML
  1577. (HyperText Markup Language), which is a subset of SGML (Standard
  1578. Generalized Markup Language).  All that is needed is just a few more
  1579. improvements, such as the ability to format tables and mathematics,
  1580. and a WYSIWYG editor, for HTML to greatly facilitate electronic
  1581. journals and other publications.
  1582.  
  1583. NCSA Mosaic for the X Window System is available by anonymous ftp from  
  1584.    ftp.ncsa.uiuc.edu:/Mosaic/
  1585. as source code and binaries for Sun, SGI, IBM RS/6000, DEC Alpha OSF/1, DEC
  1586. Ultrix, and HP-UX. Questions about NCSA Mosaic should be directed to 
  1587. mosaic-x@ncsa.uiuc.edu (X-Windows version), mosaic-mac@ncsa.uiuc.edu
  1588. (Macintosh), and mosaic-win@ncsa.uiuc.edu (Microsoft Windows).
  1589.  
  1590. An automatically generated HTML version of the PRG is accessible by
  1591. WWW as part of the AI-related FAQs Mosaic page. The URL for this
  1592. resource is
  1593.    http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/top.html
  1594. The direct URL for the PRG is
  1595.    http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/lang/prolog/prg/top.html
  1596.  
  1597. The remainder of this section lists WWW resources of interest to Prolog
  1598. and logic programming researchers, students, and practitioners.
  1599.  
  1600. Constraints:
  1601.  
  1602.    The newsgroup comp.constraints has an ftp archive and WWW home page:
  1603.       ftp.cs.city.ac.uk:/pub/constraints
  1604.       http://web.cs.city.ac.uk/archive/constraints/constraints.html
  1605.  
  1606. Logic Programming:
  1607.  
  1608.     http://www.comlab.ox.ac.uk/archive/logic-prog.html
  1609.     Jonathan Bowen <Jonathan.Bowen@comlab.ox.ac.uk>
  1610.  
  1611.     http://www.watson.ibm.com/watson/logicpgm/
  1612.     [Logic Programming at IBM Research]
  1613.     Peter Reintjes <reintjes@watson.ibm.com>
  1614.  
  1615.    http://ps-www.dfki.uni-sb.de/~vanroy/impltalk.html
  1616.    ["Issues in Implementing Logic Languages" -- overview of
  1617.     state-of-art in Prolog implementation.] 
  1618.    Peter Van Roy <vanroy@dfki.uni-sb.de>
  1619.  
  1620. Abstract Interpretation for LP Bibliography:
  1621.  
  1622.    http://www.labri.u-bordeaux.fr/~corsini/Public/Reports/abint-biblio.ps
  1623.    200 entries so far. 
  1624.    Marc-Michel Corsini <corsini@labri.u-bordeaux.fr>
  1625.  
  1626. ----------------------------------------------------------------
  1627. Subject: [1-16] Prolog Job Postings
  1628.  
  1629. The PROLOG-JOBS mailing list exists to help programmers find Prolog
  1630. programming positions, and to help companies with Prolog programming
  1631. positions find capable Prolog programmers. (Prolog here means Prolog-like
  1632. languages, including logic programming languages.)
  1633.  
  1634. Material appropriate for the list includes Prolog job announcements and
  1635. should be sent to ai+prolog-jobs@cs.cmu.edu. Resumes should NOT be sent to
  1636. the list. 
  1637.  
  1638. [Note: The 'ai+' part of the mailing list name is used for directing
  1639. submissions to the appropriate mail-server. The list is NOT restricted
  1640. to AI-related Prolog jobs -- all Prolog job announcements are welcome.]
  1641.  
  1642. As a matter of policy, the contents of this mailing list is
  1643. considered confidential and will not be disclosed to anybody.
  1644.  
  1645. To subscribe, send a message to ai+query@cs.cmu.edu with
  1646.    subscribe prolog-jobs <First Name> <Last Name>, <Affiliation/Organization>
  1647. in the message body.
  1648.  
  1649. (If your mailer objects to the "+", send subscription requests to
  1650. "ai+query"@cs.cmu.edu, job announcements to "ai+prolog-jobs"@cs.cmu.edu, 
  1651. etc.) 
  1652.  
  1653. For help on using the query server, send mail to ai+query@cs.cmu.edu with
  1654.    help
  1655. in the message body.
  1656.  
  1657. If you have any other questions, please send them to ai+@cs.cmu.edu
  1658.  
  1659. ----------------------------------------------------------------
  1660. Subject: [1-17] Is Prolog really used in Windows NT?
  1661.  
  1662. Yes. 
  1663.  
  1664. For more information, see
  1665.  
  1666.    Dennis Merritt, "Extending C with Prolog", Dr Dobb's Journal, 
  1667.    August 1994, pages 78-82 and 102, 104. 
  1668.  
  1669.    D. Hovel, "Small Prolog and Windows NT Networking", Dr Dobb's Journal,
  1670.    August 1994, page 80.
  1671.  
  1672. ----------------------------------------------------------------
  1673. Subject: [1-A] Acknowledgements
  1674.  
  1675. The original version of this guide (Version 0.6, Dec 11, 1991) was
  1676. compiled by Dag Wahlberg, Uppsala University, Sweden
  1677. <dagwag@csd.uu.se>, and published in the 5(1) issue of the ALP
  1678. Newsletter (February 1992).  Other people who helped with the
  1679. compilation include Chris Moss <cdsm@doc.ic.ac.uk>, Mats Carlsson,
  1680. SICS <matsc@sics.se>, Michael A. Covington <mcovingt@ai.uga.edu>,
  1681. Jocelyn Paine <popx@vax.ox.ac.uk>, Per G. Bilse, PDC <pdev@pdc.dk>,
  1682. David Cohen, BIM Systems Inc <dc@bim.com>, Mark Korsloot
  1683. <mark@logic.et.tudelft.nl>, and David W. Talmage
  1684. <talmage@luvthang.aquin.ori-cal.com>.
  1685.  
  1686. Thanks also to Jamie Andrews <jamie@cs.sfu.ca>.
  1687.  
  1688. ----------------------------------------------------------------
  1689. ;;; *EOF*
  1690.