home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #2 / Amiga Plus CD - 1995 - No. 2.iso / internet / faq / englisch / comp.constraints < prev    next >
Encoding:
Text File  |  1995-04-11  |  77.4 KB  |  1,620 lines

  1. Archive-name: constraints-faq/part1
  2. Last-Modified: Thu Feb  2 14:44:00 1995 by Michael Jampel
  3. Version: 1.67
  4.  
  5. Important Changes (since last posting): `Topic' changed to `Subject'
  6.  
  7. Contributions and corrections should be sent to Michael Jampel
  8. <jampel@cs.city.ac.uk>.
  9.  
  10. This is a list of Frequently Asked Questions (and answers) for the area
  11. of constraints, including books, journal articles, ftp archives, and
  12. systems & products. It is posted once a month to the newsgroups
  13. comp.constraints, comp.answers, and news.answers.
  14.  
  15. NOTE: the WWW page associated with this FAQ now contains far more
  16. information than the FAQ does, including meta-information, i.e. pointers
  17. to other WWW pages and ftp sites. I strongly suggest you have a look at it:
  18.     http://web.cs.city.ac.uk/archive/constraints/constraints.html
  19.  
  20. People who helped with this FAQ include Philippe Blache
  21. <pb@llaor.unice.fr>, Mark Kantrowitz <mkant@cs.cmu.edu>, Wm Leler
  22. <wm@ithaca.com>, Manfred Meyer <meyer@dfki.uni-kl.de>, Milind Tambe
  23. <tambe@isi.edu>, Thomas Schiex <schiex@cert.fr>, and Tad Hogg
  24. <hogg@parc.xerox.com>.
  25.  
  26. Thanks to Mark Kantrowitz for allowing me to use large parts of his
  27. FAQs and Resource Guides for comp.lang.prolog and comp.ai.
  28.  
  29. ----------------------------------------------------------------
  30. Table of Contents:
  31.  [1-1]  Introduction
  32.  [1-2]  Definitions, scope of the word `constraint'
  33.  [1-3]  Sources of information about constraints
  34.  [1-4]  Constraints-related Mailing Lists
  35.  [1-5]  FTP Archives, WWW Pages, and Other Resources
  36.  [1-6]  Books and Journal Articles
  37.  [1-7]  Reviews and Surveys of Constraint Systems
  38.  [1-8]  Complexity of Constraint Satisfaction (including Phase Transition)
  39.  [1-9]  Benchmarks for Constraint Satisfaction Problems
  40.  [1-10] Constraints for Natural Language Processing
  41.  [1-11] N-Ary CSPs (N > 2)
  42.  [1-12] Constraint Libraries for C programs
  43.  [1-13] Constraints and Rule-Based (Production) Systems
  44.  [1-14] Interval Constraints and Newton's Approximation
  45.  [1-15] Dynamic CSPs (Constraint Satisfaction Problems)
  46.  [1-16] Glossary: definitions of some terms 
  47.  [1-17] Explanation of value ordering heuristics
  48.  [1-18] Explanation of constraint entailment
  49.  [1-19] Explanation of Don't Know / Don't Care nondeterminism
  50.  
  51. In the second part of this FAQ:
  52.  [2-1]  Introduction (same as in part1)
  53.  [2-2]  Free and Commercial Constraint Systems
  54.  
  55. Search for [#] to get to topic number # quickly. In newsreaders which
  56. support digests (such as rn), [CTRL]-G will page through the answers.
  57.  
  58. ----------------------------------------------------------------
  59. Subject: [1-1] Introduction
  60.  
  61. This guide lists constraint-related resources: archives, newsgroups,
  62. books, magazines, compilers and interpreters (in part 2), and anything
  63. else you can think of. Also included is a list of suppliers of products
  64. and a list of publishers.
  65.  
  66. This guide is regularly posted in two parts to comp.constraints,
  67. usually on the 17th or 18th of each month.
  68.  
  69. It may also be obtained by anonymous ftp from City University:
  70.     ftp.cs.city.ac.uk [138.40.91.9],
  71.  using username "anonymous" and password "name@host".
  72.  The files part1 and part2 are located in the directory
  73.     pub/constraints/constraints-faq/
  74.  [The ftp site will also contain other items on constraints.]
  75.  
  76. WWW (World Wide Web) address:
  77.     http://web.cs.city.ac.uk/archive/constraints/constraints.html
  78. This is also a jumping-off point giving access to most of the ftp sites
  79. mentioned in section [1-5].
  80.  
  81. The articles posted to the newsgroup are archived by month in the same
  82. location as this FAQ, in subdirectory
  83. ftp.cs.city.ac.uk:/pub/constraints/archive/comp.constraints
  84.  
  85. The FAQ postings are also archived in the periodic posting archive on
  86. rtfm.mit.edu. Look in the anonymous ftp directory
  87. /pub/usenet/news.answers/constraints-faq in the files part1 and part2.
  88. If you do not have anonymous ftp access, you can access the archive by
  89. mail server as well. Send an E-mail message to mail-server@rtfm.mit.edu
  90. with "help" and "index" in the body on separate lines for more
  91. information.
  92.  
  93. FAQs and Resource Guides for other newsgroups will usually be available
  94. on rtfm.mit.edu too.
  95.  
  96. Disclaimer: We are not responsible for anything at all. Ever. So there.
  97.  
  98. Copyright Michael Jampel 1994. Permission to do reasonable things
  99. not for profit is given to anyone. Anything else, ask me.
  100.  
  101. ----------------------------------------------------------------
  102. Subject: [1-2] Definitions, scope of the word `constraint'
  103.  
  104. ``Constraint programming techniques can be more declarative and elegant
  105. (hence maintainable) than standard imperative languages, without
  106. sacrificing efficiency.''
  107.  
  108. Areas of interest include:        [suggestions welcome]
  109.  constraint satisfaction problem (eg Travelling Salesman)
  110.  constraint satisfaction in AI
  111.  constraint logic programming 
  112.  concurrent constraint programming
  113.  complexity of constraint satisfaction
  114.  dynamic (dynamically changing) constraint satisfaction problems
  115.  partial constraint satisfaction
  116.  hierarchical CLP
  117.  object-oriented constraints
  118.  deductive databases
  119.  applications
  120.  links to linear programming
  121.  heterogeneous systems (e.g. mixtures of constraints with C (see [1-12]),
  122.     expert system shells, constraint imperative programming etc).
  123.  
  124. ----------------------------------------------------------------
  125. Subject: [1-3] Sources of Information about constraints
  126.  
  127. The newsgroups comp.lang.prolog, comp.ai, and (to a lesser extent)
  128. sci.op-research and comp.theory are a source of information and
  129. discussion on constraints. See also [1-4] and [1-5].
  130.  
  131. ----------------------------------------------------------------
  132. Subject: [1-4] Mailing Lists
  133.  
  134. Constraint Logic Programming
  135. clp-request@cis.ohio-state.edu
  136.  
  137. For those interested in the CLP(R) Language:
  138. clpr-users-request@cis.ohio-state.edu
  139.  
  140. Both the above lists are maintained by Spiro Michaylov
  141. <spiro@cis.ohio-state.edu>. E-mail the given addresses for more info.
  142.  
  143. The list clp-request.All_Areas@xerox.com, aimed at Concurrent
  144. Logic Programming, no longer exists, according to Vijay Saraswat
  145. (information via David Joslin).
  146.  
  147. Constraint Satisfaction Problem (CSP)
  148. To subscribe, send e-mail to listserver@saturne.cert.fr in the form
  149. "SUB CSP-LIST <name>". (Send submissions to <csp-list@saturne.cert.fr>.)
  150. List maintained by Thomas Schiex <schiex@cert.fr>. Previous articles are
  151. archived at the same place as this FAQ; availble via WWW or ftp from
  152. ftp.cs.city.ac.uk:/pub/constraints/archive/csp-list
  153.  
  154. Intelligent Decision Support System Mailing List [not completely
  155. relevant, but to some extent related to applications of constraints] To
  156. post to the list e-mail <IDSS@socs.uts.EDU.AU>. Subscription requests
  157. should be sent to <idss-request@socs.uts.EDU.AU>
  158.  
  159. Electronic Journal of Functional and Logic Programming (EJFLP)
  160.  
  161.  EJFLP is a refereed journal that will be distributed for free via e-mail.
  162.  The aim of EJFLP is to create a new medium for research investigating the
  163.  integration of the functional, logic and constraint programming paradigms.
  164.  
  165.  For instructions on submitting a paper, send an empty mail message with 
  166.     subject: Help
  167.  to: 
  168.     submissions@ls5.informatik.uni-dortmund.de. 
  169.  You will receive an acknowledgement of your submission within a few hours.
  170.  
  171.  To subscribe to the journal, send an empty mail message to the following
  172.  address:
  173.     subscriptions@ls5.informatik.uni-dortmund.de
  174.  You will receive an acknowledgement of your subscription within a few days. 
  175.  
  176.  If there are any problems with the mail-server, send mail to
  177.  ejflp.op@ls5.informatik.uni-dortmund.de. 
  178.  
  179. ----------------------------------------------------------------
  180. Subject: [1-5] FTP Archives, WWW pages, and Other Resources
  181.  
  182. The following are archives that contain constraint-related material.
  183. Most of the archives are anonymous ftp sites. 
  184.  
  185. Mark_Kantrowitz@cs.cmu.edu has created an AI ftp repository.
  186.     ftp.cs.cmu.edu:/user/ai
  187. See also PTF below.
  188.  
  189. Constraint Programming Paper Archive:
  190. Aarhus University, Denmark, has established an anonymous ftp archive
  191. for papers on "Constraint Programming" at ftp.daimi.aau.dk:/pub/CLP/
  192. For further information, contact Brian H. Mayoh <brian@daimi.aau.dk>.
  193.  
  194. Constraints Bibliography:
  195.  
  196.  ftp ???            [any offers?]
  197.  ???
  198.  Maintained by ???
  199.  
  200.  Manfred Meyer's constraints bibliography may be made available soon.
  201.  It, and other useful items concerning constraints, may be found on the
  202.  City University ftp site where this FAQ is stored. See topic [1-1].
  203.  
  204. Original Constraint Logic Programming Bibliography:
  205. [A more recent, larger, version is available on the ftp site for this
  206. FAQ: ftp.cs.city.ac.uk:/pub/constraints/bibliography/] 
  207.  
  208.  ftp archive.cis.ohio-state.edu:/pub/clp (128.146.8.52)
  209.  cd pub/clp or cd pub/clp/{bib,papers}
  210.  Maintained by Spiro Michaylov <spiro@cis.ohio-state.edu>
  211.  
  212. ECRC tech reports are available by anonymous ftp from ftp.ecrc.de or
  213. http://www.ecrc.de/ on WWW.
  214.  
  215. FAQs on Linear and Non-Linear programming written by John Gregory
  216. <jwg@ceres.cray.com> for the sci.op-research newsgroup are posted there
  217. and are available from rtfm.mit.edu directory /pub/usenet/sci.answers/
  218. in files linear-programming-faq and nonlinear-programming-faq.
  219.  
  220.    ICOT:
  221. Japan's Institute for New Generation Computer Technology (ICOT) has
  222. made their software available to the public free of charge. The
  223. collection includes a variety of prolog-based programs in symbol
  224. processing, knowledge representation, reasoning and problem solving,
  225. natural language processing. All programs are available by anonymous
  226. ftp from ftp.icot.or.jp. Note that most of the programs are written for
  227. the PSI machines, and very few have been ported to Unix-based
  228. emulators. Some languages are discussed in section [2-1] in part2 of
  229. this FAQ; for further information, send email to ifs@icot.or.jp, or
  230. write to ICOT Free Software Desk, Institute for New Generation Computer
  231. Technology, 21st Floor, Mita Kokusai Bldg., 4-28, Mita 1-chome,
  232. Minato-ku, Tokyo 108, Japan, fax +81-3-4456-1618. See also PTF.
  233.  
  234.    PTF:
  235. The Prime Time Freeware CD-ROM series contains various items mentioned
  236. in this FAQ including Mark Kantrowitz's AI Repository, some ICOT
  237. material, BERTRAND, GARNET, and LIFE. Prime Time Freeware for UNIX
  238. sells for $60 US, list, and is issued twice each year. E-mail
  239. <ptf@cfcl.com> for more details.
  240.  
  241.    University of Washington (Seattle):
  242. Constraint-related papers and solvers/implementations including
  243. ThingLabII, CoolDraw (a constraint-based drawing system), and the
  244. DeltaBlue and SkyBlue algorithms. All public domain. Contact Alan
  245. Borning <borning@cs.washington.edu> for details.
  246. ftp.cs.washington.edu:/pub/constraints or, on WWW, 
  247. http://www.cs.washington.edu/research/projects/weird/www/constraints.html
  248.  
  249.   WWW sites:
  250. http://web.cs.city.ac.uk/archive/constraints/constraints.html
  251. http://ps-www.dfki.uni-sb.de/
  252. http://www.ecrc.de/
  253. http://www.cis.upenn.edu/~screamer-tools/home.html/
  254. http://www.sics.se/ccp/ccp.html/
  255. http://www.cs.washington.edu/research/projects/weird/www/constraints.html
  256.  
  257. ----------------------------------------------------------------
  258. Subject: [1-6] Books and Journal Articles
  259.  
  260. This is not intended to be a complete bibliography. See ftp sites above
  261. for the location of longer bibliographies. Please suggest additions etc.
  262.  
  263. F. Benhamou and A. Colmerauer, eds. "Constraint Logic Programming:
  264. Selected Research" MIT Press, 1993.
  265.  
  266. J. Cohen, "Constraint Logic Programming Languages",
  267. Communications of the ACM 33(7):52-68, 1992. [Good introduction to CLP
  268. and includes a historical overview.]
  269.  
  270. B. Freeman-Benson, J. Maloney, and A. Borning, "An Incremental
  271. Constraint Solver", Communications of the ACM 33(1):54-63, 1990.
  272. [Includes a good reading list on the history and applications of
  273. constraints.]
  274.  
  275. E. Freuder, "Synthesizing Constraint Expressions",
  276. Communications of the ACM 21(11):24-32, 1978.
  277.  
  278. T. Fruehwirth et al, "Constraint Logic Programming: An Informal
  279. Introduction", in Logic Programming in Action, 1992, Springer-Verlag,
  280. LNCS 636, (Also available as Technical Report ECRC-93-5. ECRC tech
  281. reports are available from ftp.ecrc.de:/pub/ECRC_tech_reports)
  282.  
  283. J. Jaffar and J-L. Lassez, "Constraint Logic Programming", in
  284. Proceedings of the 14th ACM Symposium on Principles of Programming
  285. Languages (POPL), Munich, pp. 111-119, 1987.
  286.  
  287. J. Jaffar and M. Maher, "Constraint Logic Programming: A
  288. Survey", Journal of Logic Programming, 1994, (To appear).
  289.  
  290. V. Kumar, "Algorithms for Constraint-Satisfaction Problems: A Survey",
  291. AI Magazine 13(1):32-44, 1992.
  292.  
  293. E. Lawler, J. Lenstra, A. Rinnooy Kan and D. Shmoys,
  294. "The Traveling Salesman Problem", Wiley, 1985/1992.
  295.  
  296. W. Leler, "Constraint Programming Languages", Addison-Wesley, 1988,
  297. 0-201-06243-7. (See entry on `BERTRAND' in section [2-1] of part2 of
  298. this FAQ.)
  299.  
  300. A. Mackworth, "Consistency in Networks of Relations", Artificial
  301. Intelligence 8(1):99-118, 1977.
  302.  
  303. P. Meseguer, "Constraint Satisfaction Problems: An Overview", AICOM
  304. 2(1):3-17, 1989.
  305.  
  306. U. Montanari, "Networks of Constraints: Fundamental Properties and
  307. Applications to Picture Processing", Information Science 7(2):95-132,
  308. 1974.
  309.  
  310. G. Nemhasuer, A. Rinnooy Kan, M. Todd, "Optimization",
  311. North-Holland, 1989.
  312.  
  313. J. Pearl, "Heuristics: Intelligent Search Strategies for Computer
  314. Problem Solving", 1984, Addison-Wesley, 0-201-05594-5.
  315.  
  316. V. Saraswat, "Concurrent Constraint Programming", MIT Press, 1993.
  317.  
  318. G. Steele, "The Definition and Implementation of A Computer
  319. Programming Language Based on Constraints", PhD thesis, MIT, 1980.
  320.  
  321. E. Tsang, "Foundations of Constraint Satisfaction", Academic Press, 1993.
  322. ISBN 0-12-701610-4.
  323.  
  324. P. Van Hentenryck, "Constraint Logic Programming",
  325. Knowledge Engineering Review, 6(3):151-194, September 1991.
  326.  
  327. P. Van Hentenryck, "Constraint Satisfaction in Logic Programming",
  328. MIT Press, Cambridge, MA, 1989, ISBN 0-262-08181-4.
  329.  
  330. [See also the articles on Constraint Networks (pages 276-285) and
  331. Constraint Satisfaction (pages 285-293) in Shapiro's Encyclopedia
  332. of Artificial Intelligence.]
  333.  
  334. The Journal "Artificial Intelligence" has articles on the Constraint
  335. Satisfaction Problem (CSP), as do other AI journals. Magazines related
  336. to Prolog will have articles on Constraint Logic programming (CLP).
  337.  
  338.  AI Communications (4 issues/yr)
  339.  "The European Journal on Artificial Intelligence" ISSN 0921-7126,
  340.  European Coordinating Committee for Artificial Intelligence.
  341.  
  342.  AI Expert (issued monthly) ISSN 0888-3785, Miller Freeman Publishers
  343.  On CompuServe: GO AIEXPERT. Reviews Prolog-related products.
  344.  
  345.  Expert Systems (4 issues/yr) ISSN 0266-4720,
  346.  Learned Information (Europe) Ltd.
  347.  
  348.  IEEE Expert (issued bimonthly) ISSN 0885-9000, IEEE Computer Society
  349.  
  350.  The Journal of Logic Programming (issued bimonthly), (North-Holland),
  351.  Elsevier Publishing Company, ISSN 0743-1066
  352.  
  353.  New Generation Computing, Springer-Verlag. (Prolog-related articles)
  354.  
  355. ----------------------------------------------------------------
  356. Subject: [1-7] Reviews and Surveys of Constraint Systems
  357.  
  358. The WWW address http://www.aiai.ed.ac.uk/~timd/constraints/csptools.html
  359. contains an Overview of CSP tools, including CHIP, CHARME, and ILOG
  360. SOLVER by Tim Duncan.
  361.  
  362. ----------------------------------------------------------------
  363. Subject: [1-8] Complexity of Constraint Satisfaction
  364.         (including Phase Transition)
  365.  
  366. Standard papers on this area include:
  367.  
  368. Alan Mackworth and Eugene Freuder, "The Complexity of Some
  369. Polynomial Network Consistency Algorithms for Constraint Satisfaction
  370. Problems", in Artificial Intelligence, 1985, 25:65-73
  371.  
  372. Alan Mackworth and Eugene Freuder, "The Complexity of Constraint
  373. Satisfaction Revisited", in Artificial Intelligence, February 1993, 59
  374. (1-2): 57-62,
  375.  
  376. Also Tsang's book as mentioned previously.
  377.  
  378.  
  379. Phase Transitions in Constraint Satisfaction Problems
  380. -----------------------------------------------------
  381.  
  382. The search difficulty of constraint satisfaction problems can be
  383. determined, on average, from knowledge of easily computed structural
  384. properties of the problems. In fact, hard problem instances are
  385. concentrated near an abrupt transition between under- and over-
  386. constrained problems. This transition is analogous to phase transitions
  387. in physical systems and offers a way to estimate the likely difficulty
  388. of a constraint problem before attempting to solve it with search.
  389.  
  390. For more information and pointers to related work, see the web page:
  391. ftp://parcftp.xerox.com/pub/dynamics/constraints.html
  392.  
  393. Information kindly supplied by Tad Hogg <hogg@parc.xerox.com>.
  394.  
  395. ----------------------------------------------------------------
  396. Subject: [1-9] Benchmarks for Constraint Satisfaction Problems
  397.  
  398. Some benchmarks are available from the same ftp archive and WWW page
  399. as this FAQ: ftp.cs.city.ac.uk:/pub/constraints/csp-benchmarks
  400. including a Radio Link Frequency Assignment Problem
  401.  
  402. ----------------------------------------------------------------
  403. Subject: [1-10] Constraints for Natural Language Processing
  404.  
  405. [This entry reprinted by kind permission of the author: Philippe
  406. Blache <pb@llaor.unice.fr>, University of Nice-Sophia Antipolis]
  407.  
  408. Current linguistics theories often describe syntactic relations as
  409. constraints on linguistic structures. It is in particular the case of
  410. unification-based theories. But linguistic constraints are generally
  411. far from the CLP ones and the question remains: is NLP a constraint
  412. satisfaction problem ? [[MBJ adds an editorial note: Micha Meier
  413. <micha@ecrc.de> feels that NLP _is_ a typical CSP.]]
  414.  
  415. It is still difficult to say what could be the actual advantages of a
  416. CLP approach for natural language processing in general. But if we
  417. don't have a global answer, several works propose CLP representation of
  418. particular problems such as linear precedence (cf Patrick Saint-
  419. Dizier), disjunctive values (cf Franz Guenthner), subcategorization,
  420. etc ... I'm currently working on the interpretation of HPSG's
  421. principles with boolean constraints. The problem in this case comes
  422. from the fact that the instantiation principles of this theory can be
  423. seen as constraints on feature structures, but using actual active
  424. constraints need a very rigid (and heavy) representation of these
  425. structures. A compromise between a pure CLP and a pure linguistic
  426. approach is still inevitable.
  427.  
  428. I would be deeply interested in other approaches to this problem.
  429.  
  430. Franz Guenthner (1988) "Features and Values 1988"
  431.     CIS-BERICHT-90-2, Univerity of Munich
  432.  
  433. Patrick Saint-Dizier (1994) Advanced Logic Programming for Natural Language
  434.     Processing, Academic Press, London
  435.  
  436. Philippe Blache (1992) "Using Active Constraints to Parse GPSGs"
  437.     in proceedings of COLING'92
  438.  
  439. ----------------------------------------------------------------
  440. Subject: [1-11] N-Ary CSPs (N > 2)
  441.  
  442. [This entry reprinted by kind permission of the author: Sunil
  443. Mohan <mohan@yoko.rutgers.edu>, Rutgers University]
  444.  
  445. N-ary CSPs have constraints with arbitrary arity, including some with
  446. arity > 2. There are some problems with solving CSPs that appear only
  447. when encountering constraints with higher arities. Constraints with
  448. maximum arity are also called global constraints.
  449.  
  450. Selecting a suitable Variable-Constraint Ordering (Control Sequence)
  451. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  452. Some of the popular variable ordering heuristics for generating a
  453. "good" control sequence fail on N-ary CSPs:
  454.  
  455. - Ordering based on variable domain size. Many such heuristics fail
  456. because of their very localized view of the problem. Consider the CSP:
  457.     {<x1..x5> | T1(x1 x2) T2(x1 x2 x3) T3(x4 x5)}
  458. After first selecting (x1 x2 T1), a variable-domain-size based
  459. heuristic could proceed to pick x4 as the next variable to bind, when
  460. x3 could have been a better choice because it allows T3 to be tested.
  461. Or, in Forward-Check, (x1 T1 x2 T3..) is probably a better choice than
  462. (x1 T1 x4 T5 x2 T3..), but this heuristic does not have a way of
  463. recognizing the presence of higher-arity constraints.
  464.  
  465. This is not a problem with Binary CSPs, particularly in FwdChk, because
  466. after binding each variable, a binary constraint on that variable can
  467. be tested.
  468.  
  469. - Ordering based on variable connectivity. In a CSP with a global
  470. constraint, every variable is connected to n-1 other variables. The
  471. same happens with heuristics based on minimizing Constraint Bandwidth
  472. [Ramin Zabih, 8th NCAI 1990].
  473.  
  474.  
  475. Some Ordering Heuristics for N-ary CSPs
  476. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  477. I have experimented with the following ordering heuristics:
  478.  - Minimizing Constraint Bandwidth Sum
  479.  - Minimizing Constraint Depth Sum
  480.     (Constr Depth is distance of constr from beginning of sequence)
  481.  - Ordering variables based on nbr of constraints on it.
  482.  
  483. In general, to generate a good control sequence for N-ary CSPs, a
  484. global view of the problem is needed. Binding a variable that allows a
  485. (n-ary) constraint that already has the rest of its argument variables
  486. bound, should get higher priority than another variable, all other
  487. things being equal. Sometimes it is better to view the problem as one
  488. of ordering constraints rather than variables.
  489.  
  490. I like to think of testing constraints as early as possible in the
  491. search tree. Hence the Constraint BandWidth Sum and Depth Sum
  492. heuristics. Of course, variable domain size is also a factor.
  493.  
  494. Decomposing the CSP
  495. ~~~~~~~~~~~~~~~~~~~
  496. Freuder [JACM, Jan 1981] showed that tree-shaped CSPs can be solved
  497. (find first solution) without backtracking after some consistency
  498. processing. Consequently some techniques have been developed to get
  499. non-tree problems into that form. Some techniques decompose a CSP into
  500. variable clusters such that the shape of the constraint network on
  501. these clusters is tree shaped [Dechter & Pearl, AIJ 1989; Gyssens,
  502. Jeavons, Cohen, 1992; etc.]. Each variable cluster includes some
  503. cluster-local constraints. The complexity of the problem is reduced to
  504. the complexity of the largest cluster. With a global constraint in the
  505. CSP, this kind of decomposition is not possible. Cycle-cutset based
  506. techniques stumble in the same way.
  507.  
  508. ----------------------------------------------------------------
  509. Subject: [1-12] Constraint Libraries for C Programs
  510.  
  511. Peter Van Beek <vanbeek@cs.ualberta.ca> has written a set of libraries
  512. for C, implementing various standard algorithms as discussed by Prosser
  513. and others. This package is available from ftp.cs.ualberta.ca:/pub/ai/csp
  514. where you will find a README and also csplib.tar.Z. Also available from
  515. the archive site for this FAQ (see section [1-1]).
  516.  
  517. ----------------------------------------------------------------
  518. Subject: [1-13] Constraints and Rule-Based (Production) Systems
  519.  
  520. Milind Tambe <tambe@isi.edu> writes: Many researchers have explored
  521. the possible integration of constraint satisfaction techniques/methods
  522. and production (rule-based) systems. The integration has been explored
  523. in the context of both backward chaining[1] and forward-chaining
  524. systems (see below).
  525.  
  526. This short note focuses on one aspect of this integration: constraints
  527. and forward-chaining production systems. These forward chaining systems
  528. execute tasks by going through recognize-act cycles: in the recognize
  529. or match phase, productions or rules match with working memory (a
  530. database of facts) and in the act phase, the matched productions are
  531. fired, causing changes to working memory, in turn causing the system to
  532. execute the next recognize act cycle. Integration of constraints with
  533. such systems is possible at multiple levels. At a higher level, the
  534. integration with constraints may involve a shift in the recognize-act
  535. cycle. For instance, constraint-satisfaction techniques may be used in
  536. addition to the recognize-act cycle to define values in working
  537. memory[2]. At this higher level, constraints do not change the
  538. recognize-act cycle itself. At a lower level, however, the integration
  539. with constraints may involve a change in the recognition procedure,
  540. i.e., the procedure used to match productions with working memory. More
  541. specifically, the problem of matching conditions of productions with
  542. working memory can be mapped over onto constraint satisfaction
  543. problems. Techniques such as arc-consistency, path-consistency or
  544. others may then be used either to reduce the match cost of productions
  545. by quickly eliminating easily detectably inconsistencies, or
  546. alternatively even to substitute for the matching procedure[3].
  547.  
  548. 1. "Concurrent constraint programming languages", V. Saraswat, PhD
  549. Thesis, 1989, School of Computer Science, Carnegie Mellon University,
  550. Pittsburgh, PA.
  551.  
  552. 2. "Constrained heuristic search" M. Fox, N. Zadeh & C. Baykan,
  553. IJCAI-89, pp 309-315.
  554.  
  555. 3. "Investigation production system representations for non-
  556. combinatorial match" M. Tambe & P. Rosenbloom, Artificial Intel.,
  557. Volume 68, Number 2, 1994.
  558.  
  559. ----------------------------------------------------------------
  560. Subject: [1-14] Interval Constraints and Newton's Approximation
  561.  
  562. Michael Jampel asked: Would anyone like to comment on the integration
  563. of Newton's approximation method with interval constraint solvers?
  564.  
  565. Pascal Van Hentenryck <pvh@cs.brown.edu> replied: You may want to look
  566. at our recent technical report CS-94-18:
  567.  CLP(Intervals) Revisited
  568.  F. Benhamou, D. McAllester, and P. Van Hentenryck
  569. which describes precisely a smooth integration of Newton method into a
  570. CLP(Intervals) language. The language, called Newton, was applied to
  571. some traditional benchmarks in this area and compared with specific
  572. tools. You may get a copy of the report by anonymous ftp from
  573. wilma.cs.brown        b/techreports/94/cs94-18.ps.Z
  574.  
  575. ----------------------------------------------------------------
  576. Subject: [1-15] Dynamic CSPs (Constraint Satisfaction Problems)
  577.  
  578. Thomas Schiex <schiex@saturne.cert.fr> writes: A definition: A dynamic
  579. constraint satisfaction problem P is a sequence P_0 ... P_alpha of
  580. static CSPs each one resulting from a change in the preceding one [1].
  581. This change may be a _restriction_ (a new constraint is imposed on a
  582. subset of variables) or a _relaxation_ (a constraint is removed from
  583. the CSP).
  584.  
  585. [2] and [3] contain many references to other papers in the field.
  586.  
  587. [1] Rina Dechter and Avi Dechter, ``Belief Maintenance in Dynamic
  588. Constraint Networks'', Proceedings AAAI, 1988, pp 37-42.
  589.  
  590. [2] Gerard Verfaillie and Thomas Schiex, ``Solution reuse in dynamic
  591. CSPS'', Proceedings AAAI, August 1994.
  592.  
  593. [3] Christian Bessiere, ``Arc-Consistency in Dynamic CSPs'',
  594. Proceedings AAAI, 1991, pp 221-226.
  595.  
  596. ----------------------------------------------------------------
  597. Subject: [1-16] Glossary: definitions of some terms 
  598.  
  599. Thanks to Patrick Prosser, Thomas Schiex, Berthe Choueiry, Alan Borning,
  600. Warwick Harvey, Thom Fruehwirth. Please inform me of additions.
  601.  
  602. AC    Arc-Consistency: a method for reducing the amount of 
  603.     back-tracking in CSPs
  604. AC-n    Different algorithms for enforcing arc consistency: AC-3, AC-4
  605.     (Mackworth), AC-5 (van Hentenryck), AC-6+, AC6++ (Bessiere and
  606.     Regin), AC-7 (Freuder). Also Hierarchical AC: HAC (Mackworth)
  607.     and HAC-6 (Kokeny)
  608. AKL    Agent Kernel Language: object-oriented concurrent constraints
  609.     (previously called Andorra Kernel Language)
  610. AND-    AND-PARALLEL means doing all the atomic goals in one clause (or
  611.     query) of a logic program in parallel (all the nodes of one
  612.     branch of the search tree). OR-PARALLEL means doing all the
  613.     clauses in parallel (all the branches of the search tree).
  614. ATMS    Assumption-Based Truth-Maintenance System
  615. BJ    Backjumping (*)
  616. BM    Backmarking (*)
  617. BMJ    Backmarking with backjumping (*)
  618. CBJ    Conflict-Directed Back-Jumping (*)
  619. DB    Dynamic Backtracking (*)
  620. CC(FD)    Concurrent Constraint Programming over Finite Domains
  621. CCP    Concurrent Constraint Programming
  622. CHR    Constraint Handling Rules (Fruehwirth)
  623. CIP    Constraint Imperative Programming
  624. CLP    Constraint Logic Programming
  625. CLP(FD)    Constraint Logic Programming over finite domains
  626. CLP(R)    Constraint Logic Programming over the domain of Real numbers
  627. CLP(X)    Constraint Logic Programming over some domain X
  628. COP    Constrained Optimization Problem
  629. CSP    Constraint Satisfaction Problem
  630. DBT    Dynamic backtracking
  631. DCSP    Dynamic CSP
  632. DnAC    Dynamic arc-consistency
  633. DVO    Dynamic Variable Ordering heuristic (*)
  634. FC    Forward-checking (*)
  635. FF    First Fail principle: choose the variable with the
  636.     smallest domain as the next instantiation (*)
  637. FLA    Full Look Ahead
  638. FOF    Factor Out Failure
  639. FSL    Full Shallow learning (*)
  640. GBJ    Graph based Backjumping (*)
  641. GSAT    Selman's GSAT
  642. HAC    Hierarchical Arc Consistency. See AC-n.
  643. HCLP    Hierarchical CLP
  644. IB    Intelligent Backtracking (*)
  645. IDA*    Iterative Deepening A*
  646. ILP    Integer Linear Programming
  647. IP    Integer Programming
  648. LC    Local changes
  649. LP    Logic Programming or Linear Programming
  650. MAC    Maintaining Arc-Consistency
  651. NC    Node consistency (see AC). Not much used
  652. NLP    Non-Linear Programming. (Natural Language Processing elsewhere)
  653. NR    Nogood recording (*)
  654. OR    Operations Research. see newsgroup sci.op-research
  655. OR-    See AND-
  656. PC    Path-Consistency. Not much used
  657. PCSP    Partial CSP
  658. PLA    Partial Look Ahead
  659. RFLA    Real Full Look Ahead
  660. SAT    The problem of deciding if a given logical formula is
  661.     SATisfiable.
  662. TMS    Truth-Maintenance System
  663. TSP    Travelling Salesman Problem; a typical very hard problem
  664.  
  665. (*)    All these are different techniques/heuristics for improving the
  666.     efficiency of constraint satisfaction
  667.  
  668. ----------------------------------------------------------------
  669. Subject: [1-17] Explanation of value ordering heuristics
  670.  
  671. > Can someone tell me what is the definition of VALUE ORDERING
  672. > and what is its purpose, and are there any rules  to follow
  673. > when doing value ordering or is it domain dependent?
  674.  
  675. In Constraint Satisfaction Problems, once you have decided which
  676. _variable_ to instantiate next, say V, if V has more than one possible
  677. value, you might ask which _value_ to choose first.
  678.  
  679. The simplest is to go systematically through the domain of V from
  680. smallest to largest. But if V has domain [1,2,...10] and (by some
  681. magic) you know that some/all the solutions to your CSP have V=10, then
  682. it would be nice if you could try V=10 first, before wasting a lot of
  683. work on 1,2,...
  684.  
  685. One well-known heuristic is to choose that value for V which is
  686. consistent with the _greatest_ number of the constraints on V. If V is
  687. only involved in constraints with X, and the possible values for (V,X)
  688. are (1,2), (1,3), (2,3), then you should choose V=1 before trying V=2.
  689.  
  690. Unfortunately, it is quite expensive to keep on checking which is the
  691. most popular value in this sense. (And there is no point doing it if
  692. you want all solutions, as you will have to try V=1 and V=2 anyway.) It
  693. is so expensive that it is usually not worth doing.
  694.  
  695. Of course, if you have problem-specific knowledge it might suggest a
  696. different heuristic, which might be good in your particular circumstances.
  697.  
  698. In contrast, the first-fail heuristic for choosing which _variable_ to
  699. instantiate next by choosing the one with smallest domain size, is (a)
  700. very cheap (b) often gives good benefits.
  701.  
  702. ----------------------------------------------------------------
  703. Subject: [1-18] Explanation of constraint entailment
  704.  
  705. > Could anybody give me the definition of constraint entailment?
  706.  
  707. If we already have `X = 8' in the constraint store, we can ask three
  708. questions about some other constraint C:
  709.  
  710. a) Is C entailed by the store?
  711.     If C is, say, `X > 5' then the answer is `yes' -- X > 5 does
  712.     not give you any extra information if you already know that
  713.     X = 8.
  714. b) Is the negation of C entailed by the store? (Is C `disentailed')
  715.         If C is `X > 5' the answer is `no', but if C was, say, X < 2,
  716.         it would be false in the context provided by the store
  717. c) Is C neither entailed nor disentailed?
  718.         The constraint `Y = 4' is consistent with the store, and so is
  719.         its negation, but it is not entailed by it.
  720.  
  721. In the language of Concurrent Constraints, we can `ask' if a constraint
  722. is entailed, and get `yes', `no' or `suspend' (i.e. the ask goes to
  723. sleep until enough extra information is added to the store to give a
  724. definite answer). If we want to add information to the store, we can do
  725. a `tell' which only works if the constraint to be told is not
  726. inconsistent with the store.
  727.  
  728. ----------------------------------------------------------------
  729. Subject: [1-19] Explanation of Don't Know / Don't Care nondeterminism
  730.  
  731. > Could anybody give me the definitions of committed choice, don't
  732. > know, and don't care nondeterminism, please?
  733.  
  734. Don't know/don't care nondeterminism:
  735. If I say to a class of students ``Write all your names on this piece of
  736. paper'' then I know that I want ALL the names, but I don't KNOW which
  737. ORDER they will be written in. 
  738.  
  739. If I say to a class of students ``One of you must clean the board
  740. before the lesson'' then I only want ONE of them to do it, and I don't
  741. CARE who.
  742.  
  743. Or, in an operating system, when I save a file in the editor, I don't
  744. care which particular block of the disk the file is written on.  But
  745. once the OS has started writing the file to one block, I don't want it
  746. to change its mind half-way through -- I want it to COMMIT to the
  747. CHOICE it has made.
  748.  
  749. So don't know nondeterminism is what you get from Prolog's search rule
  750. whereas don't care nondeterminism (sometimes called `indeterminism') is
  751. what you would expect from an OS, or from ``Committed choice parallel
  752. logic languages'' such as Parlog or FGHC. Committed choice is linked to
  753. the idea of a `guard' or `commit' operator which is like the `cut' in
  754. Prolog (but imagine having to have a cut at the begining of every
  755. clause, so once you have selected it, you are committed to it and there
  756. is no back-tracking).
  757.  
  758. Committed-choice and don't care --> you lose the link between
  759. declarative (model-theoretic) and operational semantics which is one of
  760. the nice things about Prolog.
  761.  
  762. ----------------------------------------------------------------
  763. ;;; *EOF*
  764.  
  765. Archive-name: constraints-faq/part2
  766. Last-Modified: Thu Feb  2 14:45:00 1995 by Michael Jampel
  767. Version: 2.12
  768.  
  769. Important Changes (since last posting): Oz new release. Something
  770. deleted (I could tell you what, but then I'd have to kill you :-)
  771. `Topic' changed to `Subject'
  772.  
  773. Contributions and corrections should be sent to Michael Jampel
  774. <jampel@cs.city.ac.uk>.
  775.  
  776. This is a list of Frequently Asked       ons (and answers) for the area
  777. of constraints, including books, journal articles, ftp archives, and
  778. systems & products. It is posted once a month to the newsgroups
  779. comp.constraints, comp.answers, and news.answers.
  780.  
  781. NOTE: the WWW page associated with this FAQ now contains far more
  782. information than the FAQ does, including meta-information, i.e. pointers
  783. to other WWW pages and ftp sites. I strongly suggest you have a look at it:
  784.     http://web.cs.city.ac.uk/archive/constraints/constraints.html
  785.  
  786. People who helped with this FAQ include Philippe Blache
  787. <pb@llaor.unice.fr>, Mark Kantrowitz <mkant@cs.cmu.edu>, Wm Leler
  788. <wm@ithaca.com>, Manfred Meyer <meyer@dfki.uni-kl.de>, Milind Tambe
  789. <tambe@isi.edu>, Thomas Schiex <schiex@cert.fr>, and Tad Hogg
  790. <hogg@parc.xerox.com>.
  791.  
  792. Thanks to Mark Kantrowitz for allowing me to use large parts of his
  793. FAQs and Resource Guides for comp.lang.prolog and comp.ai.
  794.  
  795. ----------------------------------------------------------------
  796. Table of Contents:
  797. In this part of the FAQ:
  798.  [2-1]  Introduction (same as in part 1)
  799.  [2-2]  Free and Commercial Constraint Systems
  800.  
  801. In the other (first) part of this FAQ there are definitions, glossaries,
  802. explanations, a short bibliography, pointers to FTP and WWW archives and
  803. other resources, reviews and surveys of constraint systems, and
  804. basically everything else which is not in this part.
  805.  
  806. Search for [#] to get to topic number # quickly. In newsreaders which
  807. support digests (such as rn), [CTRL]-G will page through the answers.
  808.  
  809. ----------------------------------------------------------------
  810. Subject: [2-1] Introduction
  811.  
  812. This guide lists constraint-related resources: compilers and
  813. interpreters (in this part), archives, newsgroups, books, magazines,
  814. and anything else you can think of (all in part 1). Also included is a
  815. list of suppliers of products and a list of publishers.
  816.  
  817. This guide is regularly posted in two parts to comp.constraints,
  818. usually on the 17th or 18th of each month.
  819.  
  820. It may also be obtained by anonymous ftp from City University:
  821.     ftp.cs.city.ac.uk [138.40.91.9],
  822.  using username "anonymous" and password "name@host".
  823.  The files part1 and part2 are located in the directory
  824.     pub/constraints/constraints-faq/
  825.  [The ftp site will also contain other items on constraints.]
  826.  
  827. WWW (World Wide Web) address:
  828.     http://web.cs.city.ac.uk/archive/constraints/constraints.html
  829. This is also a jumping-off point giving access to most of the ftp sites
  830. mentioned in section [1-5].
  831.  
  832. The articles posted to the newsgroup are archived by month in the same
  833. location as this FAQ, in subdirectory
  834. ftp.cs.city.ac.uk:/pub/constraints/archive/comp.constraints
  835.  
  836. The FAQ postings are also archived in the periodic posting archive on
  837. rtfm.mit.edu. Look in the anonymous ftp directory
  838. /pub/usenet/news.answers/constraints-faq in the files part1 and part2.
  839. If you do not have anonymous ftp access, you can access the archive by
  840. mail server as well. Send an E-mail message to mail-server@rtfm.mit.edu
  841. with "help" and "index" in the body on separate lines for more
  842. information.
  843.  
  844. FAQs and Resource Guides for other newsgroups will usually be available
  845. on rtfm.mit.edu too.
  846.  
  847. Disclaimer: We are not responsible for anything at all. Ever. So there.
  848.  
  849. Copyright Michael Jampel 1994. Permission to do reasonable things
  850. not for profit is given to anyone. Anything else, ask me.
  851.  
  852. ----------------------------------------------------------------
  853. Subject: [2-2] Free and Commercial Constraint Systems
  854.  
  855. See the comp.lang.prolog, comp.lang.lisp, comp.ai and comp.lang.scheme
  856. FAQs and Resource Guides for possibly more up-to-date and complete
  857. information.
  858.  
  859. Note on costs: there is a difference between FREE software (which may
  860. have restrictions attached), Public Domain software (FREE-PD), CHEAP
  861. software (arbitrarily and approximately: less than 100 pounds or 200
  862. dollars or 300 deutschmarks), shareware (CHEAP-SH), and software which
  863. is COMMERCIAL [to avoid calling it non-cheap or expensive]. Some
  864. software may not be available for commercial use, although commercial
  865. enterprises may be able to use it for their own research. These are
  866. labelled C=N/A. Costs may also vary depending on whether the customer
  867. is (A) academic, (E) Eastern European, or (C) a commercial enterprise.
  868. So each section here will have a header of the following form:
  869. [COST A=CHEAP,E=FREE,C=PRICE]. If something has the same cost for all
  870. groups, I abbreviate the entry to e.g. [COST FREE-PD].
  871.  
  872. Warning: there is no guarantee that this information is correct and it
  873. should not be treated as implying some kind of contract either on my
  874. part (FAQ maintainer) or on the part of the supplier. Please notify me
  875. of errors.
  876.  
  877.    AKL:                    [COST A=E=FREE,C=N/A]
  878. AKL (previously Andorra Kernel Language, now Agent Kernel Language) is
  879. a concurrent constraint programming language that supports both
  880. Prolog-style programming and committed choice programming. Its control
  881. of don't-know nondeterminism is based on the Andorra model, which has
  882. been generalised to also deal with nondeterminism encapsulated in
  883. guards and aggregates (such as bagof) in a concurrent setting. See, for
  884. example,
  885.  
  886.  Sverker Janson and Seif Haridi, "Programming Paradigms of the Andorra
  887.  Kernel Language", in Proceedings of ILPS'91. MIT Press, 1991.
  888.  
  889.  Torkel Franzen, "Logical Aspects of the Andorra Kernel Language", SICS
  890.  Research Report R91:12, Swedish Institute of Computer Science, 1991.
  891.  
  892.  Torkel Franzen, Seif Haridi, and Sverker Janson, "An Overview of the
  893.  Andorra Kernel Language", In LNAI (LNCS) 596, Springer-Verlag, 1992.
  894.  
  895.  Sverker Janson, Johan Montelius, and Seif Haridi, "Ports for Objects
  896.  in Concurrent Logic Programs", in Research Directions in Concurrent
  897.  Object-Oriented Programming, MIT Press, 1993 (forthcoming).
  898.  
  899. The above papers on AKL are available by ftp from
  900. sics.se:/pub/ccp/papers.
  901. An (as yet non-released) prototype implementation of AKL is available
  902. for research purposes (contact sverker@sics.se).
  903.  
  904.    ALE:                    [COST FREE-PD]
  905. ALE (Attribute Logic Engine), a public domain system written in
  906. Prolog, integrates phrase structure parsing and constraint logic
  907. programming with typed feature structures as terms. Types are arranged
  908. in an inheritance hierarchy and specified for the features and value
  909. types for which they are appropriate. Grammars may also interleave
  910. unification steps with logic program goal calls (as can be done in
  911. DCGs), thus allowing parsing to be interleaved with other system
  912. components. While ALE was developed to handle HPSG grammars, it can
  913. also execute PATR-II grammars, DCG grammars, Prolog, Prolog-II, and
  914. LOGIN programs, etc. Grammars and programs are specified with a version
  915. of Rounds-Kasper Attribute Value Logic with macros and variables. ALE
  916. supports lexical rules and empty categories for grammars, using a
  917. bottom-up, breadth-first dynamic chart parser. ALE supports last call
  918. optimization, negation by failure and cuts in definite clauses, which
  919. may be used independently or integrated into grammars. The system is
  920. available free for research purposes, from Bob Carpenter
  921. <carp@lcl.cmu.edu>.
  922.  
  923.    BERTRAND:                [COST CHEAP-SH]
  924. Bertrand is the language described by Leler in his book (see section
  925. [1-6]). See [1-5] PTF for more details.
  926.  
  927.    BULL SOLVER:                [COST COMMERCIAL]
  928. See ILOG SOLVER.
  929.  
  930.    CFSQP:                [COST A=E=FREE,C=FREEish]
  931. See FSQP.
  932.  
  933.    CHARME:                [COST COMMERCIAL]
  934. CHARME was a commercial product from Bull. The latest version is called
  935. BULL SOLVER, but see also ILOG SOLVER.
  936.  
  937.    CHIP:                [COST COMMERCIAL]
  938. CHIP V4 (Constraint Handling In Prolog) is designed as an extension to
  939. Prolog offering three constraint solving domains: Integers, Rationals
  940. and Booleans. The system was originally developed at ECRC in Munich and
  941. now extended by the same team at COSYTEC in Paris. CHIP V4 includes
  942. extensions to the three domains: symbolic constraints, update demons
  943. and cumulative constraints. The system is available with optional
  944. interfaces for X11 and DOS graphics (XGIP), Oracle or Ingres database
  945. connection (QUIC), C language interface (CLIC) and embedded application
  946. interface (EMC). CHIP V4 is written completely in C, and is available
  947. on a range of workstations including SunSparc IBM RS6000, HP 9000/700,
  948. Decstations and PC386/486 (Dos 5.0). An academic discount is offered
  949. for educational and research purposes. For more information contact
  950. COSYTEC, Parc Club Orsay Universite 4 rue Jean Rostand, 91893 Orsay
  951. Cedex, France, phone +33-1-60-19-37-38, fax +33-1-60-19-36-20 or email
  952. <cosytec@cosytec.fr>.
  953.  
  954.    CHR:                    [COST FREE with ECLIPSE]
  955. Constraint Handling Rules (CHRs) is a library of ECLiPSe [see separate
  956. entry] for writing custom constraint systems in a high-level language.
  957. CHRs is essentially a committed-choice language consisting of guarded
  958. rules that rewrite constraints into simpler ones until they are
  959. solved. The usual formalisms to describe a constraint theory, i.e.
  960. inference rules, rewrite rules, sequents, first-order axioms, can be
  961. expressed as CHR programs in a straightforward way. The CHR release
  962. includes a full colour demo involving geometric constraints, a compiler
  963. (into ECLiPSe), two debuggers, a runtime system and 18 constraint
  964. solvers. There are solvers for lists, sets, trees, terms, finite and
  965. infinite domains, booleans, linear polynomials over reals and
  966. rationals, for incremental path consistency, and for terminological and
  967. temporal reasoning. CHR documentation is available by anonymous ftp
  968. from ftp.ecrc.de:/pub/eclipse/doc in the extensions-manual. You can
  969. also ftp a technical report describing constraint handling rules (file
  970. ECRC-92-18.ps.Z in directory pub/ECRC_tech_reports/reports) and their
  971. application to temporal and terminological reasoning (files
  972. ECRC-94-05.ps.Z and ECRC-94-06.ps.Z). For more information on CHRs
  973. contact Thom Fruehwirth (thom@ecrc.de).
  974.  
  975.    CIAL 1.0 (Beta)            [COST FREE]
  976. CIAL is an interval constraint logic programming language. The main
  977. difference between CIAL and other CLP(Interval) languages is that a
  978. linear constraint solver, which is based on preconditioned interval
  979. Gauss-Seidel method, is embedded in CIAL in addition to the interval
  980. narrowing solver. The main motivations for a linear solver are:
  981. * Pure interval narrowing fails to narrow the intervals to any useful 
  982.   width even for such simple systems as {X+Y=5, X-Y=6}. Interval
  983.   splitting may help but is costly.
  984. * Pure interval narrowing cannot always detect inconsistency or halt
  985.   (in a reasonable time). A simple example is {A+1=D, A+B=D, A>0, B<0}.
  986. * Efficient linear constraint solver is also important to the study of
  987.   efficient non-linear constraint-solving. Recent results show that 
  988.   interval Newton method works better than pure interval narrowing for 
  989.   solving non-linear constraints, but may require to solve many linear
  990.   constraints in order to give the best results.
  991. This version of CIAL prototype is implemented as an extension to CLP(R)
  992. v1.2 and tested on Sun Sparc machines. You should have obtained CLP(R)
  993. from IBM prior to installing CIAL. Our distribution is in the form of
  994. patches to the CLP(R) sources. [See entry on CLP(R) below].
  995.  
  996. E-mail cial@cs.cuhk.hk to request CIAL, and for more details.
  997.  
  998. [FAQ maintainer's note: I have deleted most of the references provided,
  999. for space reasons, if they are in well-known journals and conferences;
  1000. the CIAL team have not simply cited only their own work. MBJ.]
  1001.  
  1002. C.K. Chiu and J.H.M. Lee. Towards practical interval constraint solving
  1003. in logic programming. (To appear) In Proceedings of the Eleventh
  1004. International Logic Programming Symposium, Ithaca, USA, Nov.1994.
  1005.  
  1006. J.H.M. Lee and T.W. Lee. A WAM-based abstract machine for interval
  1007. constraint logic programming and the multiple-trailing problem.
  1008. Proceedings Sixth IEEE International Conference on Tools with
  1009. Artificial Intelligence, New Orleans, Nov 1994.
  1010.  
  1011.  
  1012.    CLP(BNR):                [COST ???]
  1013. CLP(BNR) [Constraint Logic Programming with Booleans Naturals and
  1014. Reals] is an experimental CLP Language developed at the Bell-Northern
  1015. Research Computing Research Lab. CLP(BNR) is a Prolog-based language
  1016. that incorporates an arc-consistency propagation algorithm on
  1017. interval-bounded constraints which handles general algebraic
  1018. constraints over continuous, integer and boolean variables. This allows
  1019. programmers to express systems of non-linear equations on real
  1020. intervals that can be arbitrarily mixed with integer and boolean
  1021. constraints equations. For more information on CLP(BNR) contact
  1022. Andre' Vellino <vellino@bnr.ca> (613)763-7513, fax (613)763-4222
  1023. Bell-Northern Research, Box 3511, Station C, Ottawa, CANADA K1Y 4H7
  1024. See also section [1-6] for papers by Benhamou/ Older/ Vellino.
  1025.  
  1026.    CLP(FD):                [COST FREE]
  1027. CLP(FD) 2.2 is a constraint logic programming language over Finite
  1028. Domains. It is based on the wamcc Prolog compiler which translates
  1029. Prolog to C. It provides several constraints "a la CHIP" on Finite
  1030. Domains and Booleans and some facilities to build new constraints.
  1031. clp(FD) is 4 times faster than CHIP v3.2 on average.  Available from
  1032.  ftp.inria.fr:/INRIA/Projects/ChLoE/LOGIC_PROGRAMMING/clp_fd
  1033. Requires GNU C (gcc) version 2.4.5 or higher. Ported to Sparc
  1034. workstations, PC under linux, sony mews, dec ultrix, portable generally
  1035. to 32-bit machines with gcc. See also under WAMCC, below. For more
  1036. details, contact the author Daniel Diaz <Daniel.Diaz@inria.fr> INRIA
  1037. Rocquencourt, FRANCE.
  1038.  
  1039.    CLP(R):                [COST A=FREE,E=FREE,C=N/A]
  1040.                     [Commercial users: see next section]
  1041. CLP(R) is a constraint logic programming language with real-arithmetic
  1042. constraints. The implementation contains a built-in constraint solver
  1043. which deals with linear arithmetic and contains a mechanism for
  1044. delaying nonlinear constraints until they become linear. Since CLP(R)
  1045. subsumes PROLOG, the system is also usable as a general-purpose logic
  1046. programming language. It includes facilities for meta-programming with
  1047. constraints. The system consists of a compiler, byte-code emulator,
  1048. and constraint solver. CLP(R) is written entirely in C and runs on
  1049. Suns, Vaxen, MIPS-based machines (Decstations, Silicon Graphics), IBM
  1050. RS6000s and PS2s. Includes MS-DOS support. It is available free from
  1051. IBM for academic and research purposes only. For more information,
  1052. write to Joxan Jaffar, H1-D48, IBM Thomas J. Watson Research Center,
  1053. P.O. Box 704, Yorktown Heights, NY 10598, or send email to
  1054. joxan@watson.ibm.com or joxan@yktvmh.bitnet. Current version 1.2.
  1055.  
  1056.    CLP(R):                [COST CHEAP]
  1057. CLP(R) is a constraint system from Monash University for VAX, Sun, and
  1058. Pyramid (Unix). Costs $150. For more information, write to Monash
  1059. University, CLP(R) Distribution, Department of Computer Science,
  1060. Clayton, Victoria 3168, Australia, or send email to
  1061. clp@moncsbruce.oz.au. [Although the system is still available, it has
  1062. not been maintained or supported for about 5 years, and it will remain
  1063. that way.]
  1064.  
  1065.    COOLDRAW:                [COST FREE-PD]
  1066. A constraint-based drawing package from the same stable as ThingLabII.
  1067. See information on the Seattle ftp site in section [1-5].
  1068.  
  1069.    CONTAX:                [COST FREE-PD]
  1070. Public domain constraint system written by Manfred Meyer
  1071. <meyer@dfki.uni-kl.de>. [More details soon.]
  1072.  
  1073.    CU-PROLOG:                [COST FREE]
  1074. cu-Prolog is an experimental constraint logic programming language
  1075. available free from Japan's Institute for New Generation Computer
  1076. Technology (ICOT). Unlike most conventional CLP systems, cu-Prolog
  1077. allows user-defined predicates as constraints and is suitable for
  1078. implementing a natural language processing system based on the
  1079. unification-based grammar. For example, the cu-Prolog developers
  1080. implemented a JPSG (Japanese Phrase Structure Grammar) parser in
  1081. cu-Prolog with the JPSG Working Group (the chairman is Prof. GUNJI,
  1082. Takao of Osaka University) at ICOT. cu-Prolog is a complete
  1083. implementation of Constraint Unification (cu), hence the name.
  1084. cu-Prolog is implemented in C for BSD UNIX 4.2/3. Professor Sirai of
  1085. Chukyo-University has also implemented cu-Prolog for the Apple
  1086. Macintosh and DJ's GPP (80386/486 MS-DOS machine with the DOS
  1087. extender). Available free by anonymous ftp: see section [1-5].
  1088.  
  1089.    DELTABLUE:                [COST FREE-PD]
  1090. A constraint-solving algorithm. See information on the Seattle ftp site
  1091. in section [1-5]. See paper by Freeman-Benson et al in section [1-6].
  1092.  
  1093.    ECLIPSE:                [COST A=CHEAP,E=FREE,C=see below]
  1094. ECLiPSe (ECRC Logic Programming System) combines the functionalities of
  1095. several ECRC systems, including Sepia, MegaLog and CHIP. ECLiPSe
  1096. includes a Prolog compiler with extended functionality that is Quintus
  1097. and SICStus compatible, a tightly connected database system based on
  1098. the BANG file system, a CLP system, and an interface to the Tcl/Tk X11
  1099. toolkit. The BANG database can store not only relations, but also any
  1100. Prolog structures and programs. The CLP system contains several
  1101. libraries with various types of constraint handling schemes, including
  1102. atomic finite domains, linear rational constraints, CHR (constraint
  1103. handling rules) and Propia (generalised propagation). See also the
  1104. separate entry for CHR.] It also supports writing further extensions
  1105. like new user-defined constraints or complete new constraint solvers.
  1106. ECLiPSe also includes a profiler, user-definable syntax, metaterms as
  1107. first-class citizens, coroutining, and unlimited precision integer and
  1108. rational numbers. ECLiPSe is available for a nominal fee of DM 300
  1109. (~$200) to all academic and government-sponsored organizations.
  1110. Commercial users may obtain ECliPSe for DM 7000, but for research
  1111. purposes only. It is distributed in binary form for Sun-3, Sparc, and
  1112. many other types of machine. Send orders or requests for further
  1113. information to eclipse_request@ecrc.de or write to ECRC,
  1114. Arabellastrasse 17, 81925 Munich, Germany. The ECLiPSe documentation
  1115. (ASCII and dvi) and some shareware packages ported to ECliPSe are now
  1116. available by anonymous ftp from ecrc.de:/pub/eclipse. To subscribe to
  1117. the eclipse_users@ecrc.de mailing list, send mail to
  1118. eclipse_request@ecrc.de.
  1119.  
  1120.    ECRC SEPIA:                [COST FREE with ECLIPSE]
  1121. See ECLIPSE. SEPIA is no longer delivered as a stand-alone system, but
  1122. as a part of ECLiPSe.
  1123.  
  1124.    FSQP/CFSQP:                [COST A=E=FREE,C=FREEish]
  1125. FSQP (Feasible SQP; FORTRAN; developed by J.L. Zhou and A.L. Tits) and
  1126. CFSQP (C version of same, with enhancements; port and enhancements due
  1127. to C.T. Lawrence) are software packages aimed at solving constrained
  1128. optimization problems, including constrained minimax problems (where
  1129. the max is taken over a finite number of smooth functions). (C)FSQP's
  1130. main distinguishing feature is that all the iterates it generates
  1131. satisfy the constraints, except for nonlinear equality constraints, for
  1132. which mere "semi-feasibility" is maintained (given a scalar constraint
  1133. h(x)=0, if h(x0)<=0 (resp. >=0), then h(xk)<=0 (resp. >=0) for all k.)
  1134. This is of value in many engineering related problems. Extensive
  1135. numerical tests show that FSQP's efficiency is comparable to that of
  1136. the most popular (non-"feasible") codes. Detailed User's Manuals are
  1137. available. (C)FSQP is available free of charge to academic and other
  1138. non-profit organizations (as well as, for an evaluation period, to
  1139. for-profit organizations) but may not be redistributed without the
  1140. authors' approval. To obtain FSQP or CFSQP, please contact Andre Tits
  1141. (andre@eng.umd.edu).
  1142.  
  1143.    GARNET:                [COST FREE]
  1144. The Garnet system is a fully functional user interface development
  1145. environment and toolkit implemented on top of a comprehensive one-way
  1146. constraint system. It is in CommonLisp for X/11. All widgets and other
  1147. user interface elements are implemented using the constraint. The
  1148. constraints are implemented as part of the object system, and the
  1149. object system with constraints can be used independently of the
  1150. user-interface components, if desired. Garnet is available for free by
  1151. anonymous FTP from a.gp.cs.cmu.edu (128.2.242.7). Retrieve
  1152. /usr/garnet/garnet/README. More information on Garnet is available from
  1153. http://www.cs.cmu.edu:8001/Web/Groups/garnet/garnet-home.html or in the
  1154. newsgroup comp.windows.garnet or e-mail garnet@cs.cmu.edu. See also [1-5]
  1155. PTF for more details. See also Multi-GArnet, below.
  1156.  
  1157.    GOEDEL:                [COST FREE]
  1158. Goedel is intended to be a declarative successor to Prolog. 
  1159. It is defined as supporting certain constraint domains, but these are
  1160. not yet implemented. See the comp.lang.prolog FAQ for more details.
  1161.  
  1162.    ICOT language CU-PROLOG:
  1163. See entry CU-PROLOG.
  1164.  
  1165.    ICOT language CAL in ESP:        [COST FREE]
  1166. To execute this system, SIMPOS Ver.7 must be running on your PSI.
  1167. CAL is a sequential constraint logic programming language which can 
  1168. deal with various constraints including non-linear polynomial 
  1169. equations.
  1170. In the CAL system, you can use Context. A context is a constraint set. 
  1171. A new context is created whenever the constraint set is changed. The 
  1172. history of changing contexts is manipulated by the Context Tree, and 
  1173. Current Context is the target of the context manipulation. You can 
  1174. set a context on the context tree arbitrarily as the current context.
  1175. Functions include finding real roots:
  1176. The query "find" computes real roots of the univariate equations 
  1177. and returns one solution. The user can obtain other solutions by 
  1178. backtrack, and branches of the context tree are created.
  1179. The CAL system has 4 constraint solvers,
  1180.  (1) Algebraic constraint solver
  1181.  (2) Boolean constraint solver
  1182.  (3) Linear constraint solver
  1183.  (4) Set constraint solver
  1184. Available free by anonymous ftp: see section [1-5].
  1185.  
  1186.  A. Aiba, K. Sakai, Y. Sato, D. J. Hawley, and R. Hasegawa:
  1187.  Constraint Logic Programming Language CAL. In Proceedings of the
  1188.  International Conference on Fifth Generation Computer Systems 1988,
  1189.  November 1988.
  1190.  
  1191.  Contrainte Avec Logique version 2.12 User's manual
  1192.  Institute for New Generation Computer Technology,
  1193.  in preparation.
  1194.  
  1195.    ICOT language CAL Common ESP version written in CESP:   [COST FREE]
  1196. Same as CAL in ESP, but can run on Unix, needing: UNIX machine, Emacs
  1197. CESP, C language compiler, GNU MP, 50Mbyte disk, 16Mbyte memory
  1198. Available free by anonymous ftp: see section [1-5].
  1199.  
  1200.    ICOT language Hierarchical CLP Language CHAL:    [COST FREE]
  1201. You need the SIMPOS/ESP environment to run CHAL.
  1202. Hierarchical Constraint Logic Programming Language: CHAL
  1203. A hierarchical constraint logic programming language processor
  1204. which introduces hierarchy in terms of strength of constraints.
  1205. Hierarchical constraint logic programming language CHAL
  1206. consists of constraint hierarchy solver which manipulates
  1207. various strength of constraints in various domains and
  1208. constraint language processor.
  1209. An Extension of Constraint Logic Programming Language
  1210. Usual constraint logic programming languages output nothing
  1211. if there is no solution for given constraints. On the other
  1212. hand, by introducing hierarchy of strength in constraints,
  1213. CHAL ignores some weak constraints in order to output some
  1214. better solutions. This function is important in planning
  1215. and design problems.
  1216. Available free by anonymous ftp: see section [1-5].
  1217.  
  1218.    ICOT language PCHAL:            [COST FREE]
  1219. Hierarchical Constraint Parallel Solver: P-CHAL
  1220. Similar to CHAL, above.
  1221. Parallel Solving of Constraint Hierarchy: P-CHAL reduces computational
  1222. costs by a bottom-up calculation of maximal consistent sets and
  1223. parallel processing of GDCC.
  1224. Available free by anonymous ftp: see section [1-5].
  1225.  
  1226.    ICOT language Knowledge Representation Language Quixote: [COST FREE]
  1227. Main documentation in Japanese.
  1228. Quixote is a DOOD (Deductive Object-Oriented Database) system
  1229. developed at ICOT. The following are outstanding Quixote features.
  1230. 1. Object identity defined over extended terms (object terms).
  1231. 2. Constraints in terms of subsumption relation among object terms.
  1232. 3. Property inheritance among objects.
  1233. 4. Modularized and hierarchical knowledge bases defined by modules
  1234. and rule inheritance between them.
  1235. 5. Queries having additional assertions to knowledge bases, and
  1236. answers with assumed constraints.
  1237. Available free by anonymous ftp: see section [1-5].
  1238.  
  1239. Kazumasa Yokota, Deductive Object-Oriented Databases, Computer
  1240. Software, Vol.9, No.4, pp3--18, 1992 (in Japanese).
  1241.  
  1242. Hideki Yasukawa, Hiroshi Tsuda, and Kazumasa Yokota,
  1243. Object, Properties, and Modules in QUIXOTE,
  1244. Proc. of FGCS92, pp257--268, 1992.
  1245.  
  1246. Quixote Ver.III consists of (1) Quixote client on UNIX with C,
  1247. X-Window(X11R5), and GNU-Emacs, and (2) Quixote server on PIM/PIMOS
  1248. with KL1. Both UNIX workstation (such as SS2) and PIM/PSI are required
  1249. to run this version of Quixote.
  1250.  
  1251.    ICOT language Micro Quixote (Version 0.5):        [COST FREE]
  1252. Micro Quixote is another implementation of the language Quixote. It is
  1253. implemented with C. It eliminates many features of Quixote, and only
  1254. implements core feature of Quixote. However, it's small, and easy to
  1255. install. And more, it is expected that Micro Quixote could run on other
  1256. operating systems apart from Unix.
  1257. Available free by anonymous ftp: see section [1-5].
  1258.  
  1259.    ICOT language GDCC (Guarded Definite Clauses with Constraints):
  1260.                     [COST FREE]
  1261. GDCC is the parallel constraint logic programming experimental system.
  1262. GDCC has been developed on PIMOS and runs only on PIMOS. Therefore,
  1263. PIMOS needs to be installed on your machine before GDCC is installed.
  1264. Includes linear constraints, boolean constraints, and the find utility
  1265. (Algebraic constraint solver) which is used to find approximate real
  1266. roots from the results of solving algebraic constraints.
  1267. Available free by anonymous ftp: see section [1-5].
  1268.  
  1269.    IF/Prolog 5.0            [COST COMMERCIAL]
  1270. IF/Prolog 5.0 is a full ISO-compliant Prolog which incorporates
  1271. constraint solving technology. IF/Prolog is available on ALL UNIX
  1272. systems, VMS, OSF/1, MS-Windows and Mainframes. Constraint domains
  1273. include Boolean constraints, Rational terms, Linear terms, Equations
  1274. and Inequations, Finite Domain Constraints and Co-routines. Interfaces
  1275. to standard software packages and other programming languages including
  1276. C, C++ and FORTRAN, SQL (Ingres, Oracle and Informix) and X11 (Motif
  1277. and Athena widgetsets). IF/Prolog has full screen X11 and Windows based
  1278. debuggers and online hypertext help and quick reference guide.
  1279. IF/Prolog 5.0 is available on ALL UNIX, OSF/1, VMS and MS-Windows, OS/2
  1280. platforms. There is a 50% accademic discount and demo licences are
  1281. avilaible. Further information contact: Annette Kolb (marketing) or
  1282. Dr. Andrew Verden (technical) at IF Computer GmbH, Ludwig-Thoma-Weg
  1283. 11a, D-82065 Baierbrunn, tel +49 89 7936 0037, fax +49 89 7936 0039.
  1284. E-mail prolog@mch.sni.de
  1285.  
  1286.    ILOG SCHEDULE:            [COST COMMERCIAL]
  1287. ILOG SCHEDULE is an add-on to ILOG SOLVER, used to develop finite
  1288. capacity scheduling applications. ILOG SCHEDULE includes a natural
  1289. object model for representing schedules in terms of activities and
  1290. resources used and shared by these activities. Three categories of
  1291. constraints are predefined:
  1292.  - TEMPORAL CONSTRAINTS. Users may link any two activities together
  1293.    by any type of precedence constraint. Minimum and maximum delays
  1294.    between activities can be imposed.
  1295.  - CAPACITY CONSTRAINTS. Unary resources represent resources of
  1296.    capacity one. Volumetric resources represent resource pools of
  1297.    non-differentiated resources. State resources represent situations
  1298.    where an activity uses a resource only under specific conditions.
  1299.    The capacity of a resource can be constrained either at each time
  1300.    unit or over given time periods.
  1301.  - RESOURCE UTILIZATION CONSTRAINTS. An activity may require, consume,
  1302.    provide and produce resources, in an amount represented either
  1303.    as a constant or as an ILOG SOLVER variable. This allows the
  1304.    representation of the case where the duration of the activity
  1305.    varies with the amount of resources assigned to the activity.
  1306. ILOG SCHEDULE is available on the same platforms as ILOG SOLVER. For
  1307. further information and contact addresses, see entry on ILOG SOLVER.
  1308.  
  1309.    ILOG SOLVER:                [COST COMMERCIAL]
  1310. [Ilog and Bull have agreed to sell the same thing under different
  1311. names. Charme Object and Ilog Solver have been merged. M Jampel.]
  1312. ILOG SOLVER (formerly called PECOS) is a highly efficient C++ class
  1313. library that implements constraint programming. SOLVER has been used
  1314. to develop fielded applications handling large problems in areas such
  1315. as job shop scheduling, timetabling, configuration, transport,
  1316. logistic planning, network routing, and frequency allocation.
  1317. SOLVER implements integer variables, floating point variables, Boolean
  1318. variables, and set variables. Constraints include =, <=, >=, <, >, +,
  1319. -, *, /, subset, superset, union, intersection, member, Boolean or,
  1320. Boolean and, Boolean not, Boolean xor, cardinality, element, generic
  1321. constraints, and meta constraints (conjunction and disjunction of
  1322. constraints, order among constraints). You can add new constraints to
  1323. SOLVER by deriving new C++ classes.  SOLVER provides a backtracking
  1324. search and a branch-and-bound algorithm together with a large number
  1325. of search strategies. SOLVER also provides C++ classes and functions
  1326. that implement non-deterministic programming.
  1327. SOLVER is available on most Unix platforms and on MS-Windows.  For
  1328. further information, please contact:
  1329. - In the USA and Canada:        - Outside the USA: 
  1330.   ILOG, Inc.                      ILOG SA
  1331.   2105 Landings Drive             12 avenue Raspail
  1332.   Mountain View, CA 94303.        94251 Gentilly Cedex, France 
  1333.   Phone: +415 390-9000            Phone: +33 1 4740-8000
  1334.   e-mail: info@ilog.com           e-mail: info@ilog.fr
  1335. - The ILOG web server at the URL: http://www.ilog.fr/
  1336.  
  1337.    LIFE:                [COST FREE]
  1338. LIFE (Logic, Inheritance, Functions, and Equations) is an experimental
  1339. programming language with a powerful facility for structured type
  1340. inheritance. It reconciles styles from functional programming, logic
  1341. programming, and object-oriented programming. It subsumes the
  1342. functionality of its precursor languages LOGIN and Le_Fun, and may be
  1343. seen as an extension of Prolog. The syntax of Wild_LIFE has been kept
  1344. as close as possible to that of the Edinburgh standard for Prolog.
  1345. LIFE offers natively high-level abstraction facilities and convenient
  1346. data and control structures particularly well-suited for AI
  1347. programming. LIFE implements a constraint logic programming language
  1348. with equality (unification) and entailment (matching) constraints over
  1349. order-sorted feature terms. The interplay of unification and matching
  1350. provides an implicit coroutining facility thanks to an automatic
  1351. suspension mechanism. This allows interleaving interpretation of
  1352. relational and functional expressions which specify structural
  1353. dependencies on objects. The Wild_LIFE interpreter is the first
  1354. implementation of the LIFE language available to the general public.
  1355. It is a product of the Paradise project at Digital Equipment
  1356. Corporation's Paris Research Laboratory (DEC PRL). Wild_LIFE runs on
  1357. DECstations (Ultrix), SparcStations and RS/6000 systems and should be
  1358. portable to other Unix workstations. It is implemented in C, and
  1359. includes an interface to X Windows. Wild_LIFE is available by anonymous
  1360. ftp from gatekeeper.dec.com:/pub/plan as the file Life.tar.Z. To be
  1361. added to the mailing list (life-users@prl.dec.com), send mail to
  1362. life-request@prl.dec.com. Send bug reports to life-bugs@prl.dec.com.
  1363. See also [1-5] PTF for more details.
  1364.  
  1365.    OMEGA:                [COST FREE]
  1366. Version 0.90 of the Omega Calculator and Omega Library is now
  1367. available, including source code. The Omega library/calculator
  1368. manipulates sets of integer tuples and relations between integer
  1369. tuples. Some examples include:
  1370.  
  1371. { [i,j] : 1 <= i,j <= 10};
  1372. { [i] ->[i,j] : 1 <= i < j <= 10};
  1373. { [i,j] ->[j,j'] : 1 <= i < j < j' <= n};
  1374.  
  1375. The conditions describing a set or tuple can be an formulas can
  1376. described by an arbitrary Presburger formula. Relations and sets can be
  1377. combined using functions such as composition, intersection, union and
  1378. difference. It also provides routines to generate code to iterate over
  1379. the points in an integer tuple set. The Omega library provides a
  1380. high-level, C++ interface to our routines. The Omega calculator is a
  1381. text-based interface to the Omega library. Omega is available for
  1382. anonymous ftp from ftp.cs.umd.edu:pub/omega/omega_library. More
  1383. information is available by email from omega@cs.umd.edu on the www at
  1384. http://www.cs.umd.edu/projects/omega/.
  1385.  
  1386.    OZ:                    [COST FREE]
  1387. Oz is a concurrent constraint programming language designed for
  1388. applications that require complex symbolic computations, organization
  1389. into multiple agents, and soft real-time control. It is based on a new
  1390. computation model providing a uniform foundation for higher-order
  1391. functional programming, constraint logic programming, and concurrent
  1392. objects with multiple inheritance. From functional languages Oz
  1393. inherits full compositionality, and from logic languages Oz inherits
  1394. logic variables and constraints (including feature and finite domain
  1395. constraints). Search in Oz is encapsulated (no backtracking) and
  1396. includes one, best and all solution strategies.
  1397. DFKI Oz is an interactive implementation of Oz featuring a programming
  1398. interface based on GNU Emacs, a concurrent browser, an object-oriented
  1399. interface to Tcl/Tk, powerful interoperability features (sockets, C,
  1400. C++), an incremental compiler, a garbage collector, and support for
  1401. stand-alone applications. Performance is competitive with commercial
  1402. Prolog and Lisp systems. DFKI Oz is available for many platforms
  1403. running Unix/X, including Sparcs and 486 PCs. Applications DFKI Oz has
  1404. already been used for include simulations, multi-agent systems, natural
  1405. language processing, virtual reality, graphical user interfaces,
  1406. scheduling, placement problems, and configuration.
  1407. Version 1.0 of DFKI Oz (January 23, 1995) is available by anonymous ftp
  1408. from ps-ftp.dfki.uni-sb.de:/pub/oz, or through the WWW from
  1409.     http://ps-www.dfki.uni-sb.de/
  1410. Tutorials, reference manuals, and research papers are available from
  1411. the same sources. You may start with "A Survey of Oz" (8 pages) and
  1412. continue with "An Oz Primer" (110 pages). For specific questions mail
  1413. oz@dfki.uni-sb.de. To join the Oz users mailing list, contact
  1414. oz-users-request@dfki.uni-sb.de.
  1415.  
  1416.    PROFIT:                 [COST FREE]
  1417. ProFIT (Prolog with Features Inheritance and Templates) is an extension
  1418. of Prolog with sorted feature structures (including multi-dimensional
  1419. inheritance), finite domains, feature search, cyclic terms, and
  1420. templates. ProFIT works as a pre-processor, which takes a file
  1421. containing a ProFIT program as input, and gives a file with a Prolog
  1422. program as output. Sorted feature terms and finite domains are
  1423. compiled into a Prolog term representation, and the usual Prolog term
  1424. unification is used at runtime, so that there is no slowdown through a
  1425. unification algorithm, and no meta-interpreter is needed. ProFIT uses
  1426. the same techniques for compiling sorted feature terms and finite
  1427. domains into Prolog terms as the Core Langauge Engine of SRI Cambridge
  1428. and the Advanced Linguistic Engineering Platform (ALEP 2.2) by the
  1429. European Community, BIM, and Cray Systems. ProFIT is not a grammar
  1430. formalism (although it is motivated by NLP), although it provides some
  1431. ingredients that are considered typical of grammar        sms. The goal
  1432. of ProFIT is to provide these datatypes without enforcing any
  1433. particular theory of grammar, parsing or generation. ProFIT can be used
  1434. to extend your favourite Prolog-based grammar formalism, parser and
  1435. generator with the expressive power of sorted feature terms. Cyclic
  1436. terms can be printed out and a user-configurable pretty-printer for
  1437. feature terms is provided. ProFIT is available free of charge by
  1438. anonymous ftp from coli.uni-sb.de:/pub/profit
  1439. Implemented in Sicstus Prolog (2.1 #9) by Gregor Erbach, Univ.
  1440. Saarlandes, Saarbruecken, Germany <erbach@coli.uni-sb.de>
  1441. <http://coli.uni-sb.de/~erbach>
  1442.  
  1443.    PROLOG III:                [COST COMMERCIAL]
  1444. Prolog III was the first commercial Constraint Logic Programming
  1445. language. It incorporates all the main features of PROLOG II+, but
  1446. also gives the user the ability to express constraints over various
  1447. different domains. In particular the fundamental concept of constraint
  1448. resolution allows for numerical processing and also a complete
  1449. treatment of Boolean algebra, in a logic programming style. Version
  1450. 1.5 of PROLOG III is available on wide range of platforms including PC,
  1451. MAC, UNIX, ULTRIX, VMS, NeXTSTEP, ALPHA OSF1. For more information,
  1452. write to PrologIA, Luminy - case 919 - 13288 MARSEILLE cedex 09 -
  1453. FRANCE or contact Fabienne LELEU : ph (33) 91 26 86 36 fax (33) 91 41
  1454. 96 37 e-mail prologia@prologianet.univ-mrs.fr
  1455.  
  1456.    QUANTUM LEAP:            [COST COMMERCIAL or CHEAP]
  1457.                     [See last paragraph]
  1458. The Quantum Leap Problem Solving Engine (PSE) works like a community of
  1459. competing and cooperating experts - each one using a different
  1460. methodology to obtain the best solution to a problem. Users employ the
  1461. Problem Representation Facility (PRF), an object based, graphical
  1462. interface, to build statements of their problems. Quantum Leap employs
  1463. a coordinated team of optimization methods, including: Linear
  1464. Programming, Quadratic Programming, Generalized Reduced Gradient,
  1465. Conjugate Direction, Evolutionary Programming, Simulated Annealing,
  1466. Zoomed Enumeration, Logical Reduction, Pseudo Boltzman, and Heuristic
  1467. Search. It also offers an object-oriented, tabular, multidimensional
  1468. representation, with inheritance and self-reference, both numeric and
  1469. symbolic constructs, an English-like language, internal and external
  1470. (C) user defined functions, and many built-in aggregates and numeric
  1471. functions. It has a Client-Server Architecture, with the PSE
  1472. implemented locally, on another LAN node, or remotely. A multi-PSE
  1473. version finds faster solutions to many problems via parallel
  1474. processing. Users can define multiple objectives, and priorities among
  1475. goals. The system finds "Best Balanced" points for infeasible problems,
  1476. and multiple solutions to some problems. APIs are available that allow
  1477. a compiled model to be used as a stand-alone application. Quantum
  1478. Development wants you to solve your problem, then grant the right to
  1479. publish your approach! In return, you become a member of the LEAPER
  1480. program, use Quantum Leap for only shipping and materials cost. Leapers
  1481. will receive the LEAPER LETTER, a moderated news-list for exchange of
  1482. technical information. To receive more information, send email to
  1483. leapers@qdc.com. The body of the note should contain, as the first
  1484. line: GET <offer>
  1485.  
  1486.    SCREAMER:                [COST FREE]
  1487. Screamer is an extension of Common Lisp that adds support for
  1488. nondeterministic programming. Screamer consists of two levels. The
  1489. basic nondeterministic level adds support for backtracking and undoable
  1490. side effects. On top of this nondeterministic substrate, Screamer
  1491. provides a comprehensive constraint programming language in which one
  1492. can formulate and solve mixed systems of numeric and symbolic
  1493. constraints. Together, these two levels augment Common Lisp with
  1494. practically all of the functionality of both Prolog and constraint
  1495. logic programming languages such as CHiP and CLP(R). Furthermore,
  1496. Screamer is fully integrated with Common Lisp. Screamer programs can
  1497. coexist and interoperate with other extensions to Common Lisp such as
  1498. CLOS, CLIM and Iterate.
  1499.  
  1500. In several ways Screamer is more efficient than other implementations
  1501. of backtracking languages. The overhead to support backtracking is only
  1502. paid for those portions of the program which use the backtracking
  1503. primitives. Deterministic portions of user programs pass through the
  1504. Screamer to Common Lisp transformation unchanged. If only small
  1505. portions of your programs utilize the backtracking primitives, Screamer
  1506. can produce more efficient code than compilers for languages in which
  1507. backtracking is more pervasive.
  1508.  
  1509. Screamer is fairly portable across most Common Lisp implementations.
  1510. Screamer is available from ftp.ai.mit.edu:/pub/screamer.tar.Z. Contact
  1511. Jeffrey Mark Siskind <qobi@ai.mit.edu> for further information.
  1512.  
  1513.    SCREAMER TOOL REPOSITORY        [COST FREE]
  1514. There is a tools repository (ftp site) for user-contributed Screamer
  1515. code: ftp.cis.upenn.edu:/pub/screamer-tools. The repository is also
  1516. accessible at http://www.cis.upenn.edu/~screamer-tools/home.html
  1517. Questions about the repository to screamer-repository@cis.upenn.edu.
  1518.  
  1519.    SEL:                    [COST FREE]
  1520. SEL is a declarative set processing language. Its main features are
  1521. subset and equational program clauses, pattern matching over sets,
  1522. support for efficient iteration and point-wise/incremental computation
  1523. over sets, the ability to define transitive closures through circular
  1524. constraints, meta-programming and simple higher-order programming, and
  1525. a modest user-interface including tracing. The language seems
  1526. well-suited to a number of problems in graph theory, program analysis,
  1527. and discrete mathematics. The SEL compiler is written in Quintus Prolog
  1528. and the run-time system is written in C. It generates WAM-like code,
  1529. extended to deal with set-matching, memoization, and the novel control
  1530. structure of the language. SEL is available by anonymous FTP from
  1531. ftp.cs.buffalo.edu:/users/bharat/SEL2/. The FTP release comes with a
  1532. user manual, bibliography of papers (including .dvi files), several
  1533. sample programs, and source code. For further information, write to
  1534. Bharat Jayaraman <bharat@cs.buffalo.edu>.
  1535.  
  1536.    SEPIA:                [COST FREE with ECLIPSE]
  1537. See ECLIPSE (also see 'ECRC SEPIA').
  1538.  
  1539.    SICSTUS PROLOG:            [COST A=CHEAP,E=??,C=COMMERCIAL]
  1540. SICStus Prolog is a Unix prolog by SICS. It is portable to most UNIX
  1541. machines (Berkeley UNIX is preferred over System V). SICS Aurora and
  1542. Echo is a parallel emulator for Sequent Balance, Sequent Symmetry,
  1543. Encore Multimax, and BBN Butterfly (Unix). For more information, write
  1544. to SICS, Swedish Institute of Computer Science, P.O. Box 1263, S-164
  1545. 28 KISTA, Sweden, call +46 8 752 15 02, fax +46 8 751 72 30, or send
  1546. email to sicstus-request@sics.se or sicstus@sics.se. Bug reports
  1547. and tech support questions should be sent to sicstus-bug@sics.se.
  1548. To subscribe to the users group and implementors mailing list, send
  1549. email to sicstus-users-request@sics.se.
  1550.  
  1551.    SKYBLUE:                [COST FREE-PD]
  1552. A constraint-solving algorithm. See information on the Seattle ftp site
  1553. in section [1-5]. See paper by Freeman-Benson et al in section [1-6].
  1554.  
  1555.    STEELE'S CONSTRAINT SYSTEM:        [COST FREE]
  1556. Chris Hanson's implementation of Steele's constraint system is
  1557. available by ftp from martigny.ai.mit.edu:/archive/cph/constraint.tar
  1558. or nexus.yorku.ca:/pub/scheme/new/constraint.tar.Z. A compressed
  1559. version is also stored there. The software is source code for MIT
  1560. Scheme. It should run in release 7.1.3. Most of the MIT Scheme
  1561. dependencies could be eliminated, but it also uses the following
  1562. procedures which aren't in standard Scheme: error, bkpt, macros,
  1563. dynamic binding, and string output ports. The code corresponds pretty
  1564. closely to Guy Steele's PhD thesis implementation, which you can obtain
  1565. in printed form from the MIT AI Lab publications office as AI-TR-595
  1566. for $15.00 (email publications@ai.mit.edu for more information). For
  1567. more information, send email to Chris Hanson
  1568. <cph@martigny.ai.mit.edu>.
  1569.  
  1570.    THINGLABII                [COST FREE-PD]
  1571. ThingLabII is a constraint-based package. See information on the Seattle
  1572. ftp site in section [1-5].
  1573.  
  1574.    TOUPIE:                [COST FREE]
  1575. Toupie is a finite domain $\mu$-calculus interpreter designed by A.
  1576. Rauzy <rauzy@labri.u-bordeaux.fr>. It uses Decision Diagrams to
  1577. represent relations and formulas. Decision Diagrams are an extension of
  1578. the BDD first introduced by Bryant. The original propositional
  1579. $\mu$-calculus interpreter was designed to express properties of finite
  1580. states machines. In addition to classical connectives of the
  1581. propositional calculus, it provides the two quantifications and the
  1582. possibility to define relations as least or greatest fixpoints of
  1583. equations. Toupie is a $\mu(\cal FD)$ interpreter, i.e. an extension to
  1584. finite domains handling numerical linear constraints. This language has
  1585. been successfuly used for abstract interpretation of Prolog, analysis
  1586. of mutual exclusion algorithms, classical logic puzzles and
  1587. model-checking a recent presentation can be found in ESOP'94 "Symbolic
  1588. Model Checking and Constraint Logic Programming: a Cross-
  1589. Fertilization". [Information kindly supplied by Marc-Michel
  1590. Corsini <Marc.Corsini@labri.u-bordeaux.fr>.]
  1591.  
  1592.    TRILOGY:                [COST CHEAP]
  1593. Trilogy is a constraint system developed by Complete Logic Systems. It
  1594. costs $100. For more information, write to Complete Logic Systems, Inc,
  1595. 741 Blueridge Avenue, V7R 2J5, North Vancouver BC, Canada, or call
  1596. 604-986-3234. [Does the company still exist?]
  1597.  
  1598.    VS TRILOGY:                [COST COMMERCIAL]
  1599. VS Trilogy is a Prolog compiler available from Vertical Software for
  1600. $395. For more information, write to Vertical Software Ltd., 14-636
  1601. Clyde Ave, W. Vancouver, BC, V7T 1E1, Canada, call 604-925-0321, or fax
  1602. 604-688-8479.
  1603.  
  1604.    WAMCC:                [COST FREE]
  1605. WAMCC 2.2 is a WAM-based Prolog to C compiler. It conforms more or
  1606. less to the Edinburgh standard, and includes most of the usual built-in
  1607. predicates, a top-level, a Prolog debugger and a WAM debugger. It is
  1608. designed to be easily extended (for example see clp(FD)). WAMCC's
  1609. speed is halfway between SICStus emulated and SICStus native code on a
  1610. Sparc (1.5 times faster and 1.5 times slower, respectively). It 
  1611. requires GCC 2.4.5 or higher and has been tested on Sparc workstations.
  1612. It should be easily ported to 32-bit machines with GCC. WAMCC is
  1613. available free by anonymous ftp from
  1614. ftp.inria.fr:/INRIA/Projects/ChLoE/LOGIC_PROGRAMMING/wamcc/
  1615. For more information, write to Daniel Diaz <Daniel.Diaz@inria.fr>,
  1616. INRIA Rocquencourt, FRANCE.
  1617. ----------------------------------------------------------------
  1618. ;;; *EOF*
  1619.  
  1620.