AI Web Site/Info
Carnegie Mellon University's AI Web Site
Please be sure to take a look at the Carnegie Mellon Web Site which offers a wealth of information concerning Artificial Intelligence. The site is also a good place to find links to free software demos.
Follow this link: CMU
Artificial Intelligence Repository
Back to the Top
APPENDIX W16-A: AI (Symbolic) Languages
The AI, or symbolic manipulation, languages provide an effective way to present AI-type objects. The two major languages are LISP and Prolog. With these languages, the programming and debugging procedures can frequently be done much faster. (For a resource guide see the "AI Language Resource Guide," AI Expert, November 1994.) The major characteristics of the two languages are described next.
LISP (for LISt Processor; see Harrison  and Slade ) is one of the oldest general-purpose languages. Developed at MIT by McCarthy in 1958, it is still in active use. LISP's applications include expert systems, natural language processing, robotics, and educational and psychological programming. Its unique features give the programmer the power to develop software that goes far beyond the limitations of other general-purpose languages such as COBOL and Pascal.
Specifically, LISP is oriented toward symbolic computation; the programmer can assign values to terms like financial and liquidity. Although the values have no direct meaning in LISP, the LISP program can conveniently manipulate such symbols and their relationships. LISP programs also have the ability to modify themselves. In a limited sense, this means that a computer can be programmed to "learn" from its past experiences.
LISP allows programmers to represent objects like rules and nets as "lists"-sequences of numbers, character strings or other lists. It provides them with operations for splitting lists apart and for making new lists by joining old ones. Conventionally, LISP programmers write lists as bracketed sequences of elements. They often draw them as box-and-arrow diagrams. The accompanying illustration shows a list that represents the sentence "PC is a computer."
In most programming situations, lists contain other lists or sublists as elements. Here is a simple example of list code, a recursive definition of a function that sums two integers:
(defun sum (A B))
(cond ((eq A O) B)
(t (sum (minus 1 A) (plus 1 B)))
This definition says: "If you have two numbers and the first [A] is 0, then the other [B] is their total. If the first is not 0, then try for the sum (A - 1, B + 1)." In this example, sum is a newly defined function, whereas the remaining functions (e.g., defun, cond, minus 1, t) are predefined. LISP programs consist of many such functions.
LISP code is usually executed directly by a LISP interpreter. In some versions, the source program is compiled to increase efficiency.
There are numerous variations of LISP. Some include built-in
features for special applications. Most notable are Common LISP, IQLISP,
INTERLISP, MACLISP, ZETALISP, Golden Common LISP (GCLISP) and FRANZLISP
(UNIX-based). Each of these may have several subvariants.
here to access Carnegie Mellon's LISP Tutorial.
Although LISP was the most popular AI language in the United States through the 1980s, Prolog (for Programming in logic) has passed it in popularity. Prolog was the most popular AI language in Japan and probably in Europe (see Covington et al. , Shoham , Spivey  and Teft ). Its basic idea is to express statements of logic as statements in programming language. The proof of a theorem using these statements could be thought of as a way of executing those statements. Thus logic itself could be used directly as a programming language. For example, the statements "all dogs are animals" and "Lassie is a dog," and the theorem "Lassie is an animal," could be expressed formally in Prolog as follows:
animal(X):-dog(X). (X is an animal if X is a dog)
dog(lassie). (Lassie is a dog)
? animal(lassie). (Is Lassie an animal?)
Prolog can then be run to try to prove the theorem, given the two statements (one rule and one fact). Clearly, it will come to the conclusion that the theorem is true. (Note, in Prolog, symbols starting with upper case are variable, while those starting with lower case are existing instances of objects, like lassie.)
There are three basic types of statements in Prolog:
:-Pmeans P is a goal (or predicate) to be proven
P.means P is an assertion or a fact
P:Q,R,Smeans Q, R and S imply P
To define a goal, several clauses may be required. One of the techniques of knowledge representation is first-order logic. Because Prolog is based on a subset of first-order logic (predicate calculus), it can use this format of knowledge representation. Prolog has the additional advantage of having a very powerful inference engine in place. Therefore, the algorithm used in Prolog is more powerful than the simple pattern-matching algorithms commonly used with LISP in production-rule representations of knowledge. Prolog performs backtracking through its facts and rules to prove or disprove assertions.
Prolog's basis in logic provides its distinctive flavor. Because a Prolog program is a series of statements in logic, it can be understood declaratively; that is, it can be understood quite separately from considerations of how it will be executed. Traditional languages can be understood only procedurally, that is, by considering what happens when the program is executed on a computer. Representative variants of Prolog include ALS Prolog, MProlog, Arity Prolog, Quintus Prolog and SWI Prolog.
LISP was the favorite AI language in the United States for many years. To a large extent, this was due to the development of sophisticated programming environments and specialized AI workstations. The situation has changed, however, as more sophisticated implementations of Prolog supported by improved environments have appeared on the market.
Prolog allows a program to be formulated in smaller units, each with a natural declarative reading; by contrast, the size and multiple nesting of function definitions in LISP are barriers to readability. In addition, Prolog's built-in pattern-matching capability is an extremely useful device. Prolog does, however, have certain deficiencies. For example, the use of built-in input/output predicates creates symbols that have no meaning in logic.
The arguments for (and against) LISP and Prolog are likely
to go on for some time. In the meantime, some attempts are being made to
combine the two. One such example is a product called POPLOG_a programming
environment that combines Prolog, LISP and POP-11 (POP-11 is an extension
of Prolog) into a single package. The package is friendlier than its components,
and when compiled it runs faster than Prolog, LISP or POP-11.
Click here to access The University of Sheffield's (UK) Prolog Tutorial.
here to download and/or get information on SWI Prolog from the University
References Appendix W16-A
Covington, M. A., D. Nute and A. Vellino. (1997). Prolog Programming in Depth. 2nd. ed. Upper Saddle River, NJ: Prentice Hall.
Harrison, P. R. (1990). Common Lisp and Artificial Intelligence. Englewood Cliffs, NJ: Prentice-Hall.
Shoham, Y. (1993). AI Techniques in Prolog. Mountain View, CA: Morgan Kaufmann.
Slade, S. (1997). Object-Oriented Common LISP. Upper Saddle River, NJ: Prentice Hall PTR.
Spivey, J. M. (1996). Logic Programming: The Essence of Prolog. Upper Saddle River, NJ: Prentice Hall PTR.
Teft, L. (1990). Programming in Turbo Prolog with an Introduction to Knowledge-based Systems. Englewood Cliffs, NJ: Prentice-Hall.
Weissman, G. (1996, Aug). "Building an Expert System with
Prolog and C/C++." Dr.
Back to the Top
Figure W16.1 Technology Levels of Expert System Software.
(Figure 16.2 from the textbook p. 613)
Back to the Top
Table W16.1: Software Sampler
|AB Tech Corp.||AIM (several products)|
|AI Technologies (AIT)||Mercury KBE, ISIU, MIDS|
|ARITY Corp.||The Arity/Expert Development Package|
|ATTAR Software||Xpert Rule|
|Carnegie Group||Test Bench, Knowledge Craft, IMKA Technology, Rock|
|Cogent Software||Personal Hyperbase, Hyperbase Developer|
|Computer Associates||CA-DB: Expert/VAX, CA-DB Expert/Voice|
|Emerald Intelligence||Diagnostic Advisor, Mahogany Helpdesk|
|Firstmark Technologies||Knowledge Seeker|
|Gensym Corp.||G2 (GDA), DSP, G2 Reactive|
|Ginesys Corp.||K-Base Corporate, K-Base Builder, ESS IWC, K-vision|
|Gold Hill, Inc.||GoldWorks III|
|The Haley Enterprise||Eclipse DOS Developer's Edition, Eclipse Toolkits, Eclipse Windows|
|IBM Corp.||TIRS, ESE, AD/Cycle|
|ICARUS Corp.||Icarus Mentor (several products)|
|Inference Corp.||ART-IM, CBR Express, XiPlus, ART Enterprise|
|Information Builders||Level5, Level5 Object|
|Information Engineering Systems||USER Expert System, IE-Expert|
|IntelliCorp.||KEE, ProKappa, Kappa PC|
|Intelligence Ware, Inc. (Email Link)||Auto-Intelligence, Expert Measure, IDIS|
|Intelligent Environments, Inc.||CRYSTAL, CRYSTAL Induction|
|KDS Corp.||KDS 3|
|Knowledge Garden Inc.||KnowledgePro, Micro Expert, KPWIN, Knowledge Maker|
|Micro Data Base Systems||Guru, Guru Solver, GURU First Step|
|Multilogic||EXSYS EL, EXSYS Professional|
|Neuron Data||Nexpert Object, NEXTRA|
|Oxko Corp.||Inducprl, Maingen, Esteem, PRL, Database Toolbox|
|Perceptics, Inc.||Knowledge Shaper|
|Production Systems Technology||OPS83, RAL|
|Rosh Intelligent Systems||Knowledge-CAIS, Brief-CAIS, Hyper-CAIS|
|Software Artistry||Expert Advisor, Knowledge-Engine, PC Expert|
|Software Plus Ltd.||CxPert|
|Transform Logic||Transform Expert|
|Trinzic Corp.||ADS, KBMS, 1st-class, Fusion HT, Aion DS|
|Wang Laboratories||Common Knowledge|
|Wordtech System, Inc.||VP Expert|
Back to the Top
Table W16.2. Some Examples of Rule-based Shells.
|Small Size||EXSYS EL, VP-Expert, Level5|
|Medium Size||EXSYS Professional, Guru, KES 2.2, Nexpert, M.4|
|Large Size||ESE, AES, IMPACT, SYNTEL, ADS|
Appendix W17-B: Additional Development Environments
OPS is a production system programming environment. Production system techniques are useful when the knowledge related to a programming problem occurs (or can be expressed) in a natural rule structure. The OPS family was used in developing the XCON system at Digital Equipment Corp. It combines a rule-based language with a conventional procedural programming technique. Two commercial products were developed from the initial research tool: OPS5 (implemented in LISP) and OPS83 (which incorporates an imperative sublanguage similar to Pascal or C). It is now being used in a comprehensive commercial environment known as Knowledge Craft.
Hybrid systems are gaining popularity. Representative examples are:
Back to the Top
TABLE W16.3 Examples of ES Development Software for the Mainframe.
(White Plains, NY)
|ESE, KT, TIRS|
(Mountain View, CA)
(Palo Alto, CA)
(Palo Alto, CA)
Additional Internet Exercises
W16.3. Access the Carnegie Mellon University Web site to find information on Expert Systems Shells FAQ (http://cs.cmu.edu:8001/afs/cs.cmu.edu/project/ai). How many commercial shells do they list? How many shareware and freeware shells do they list? Pick two from each set and compare their structure and capabilities. Download at least one free one and one commercial demo and compare them directly. Use Expert Choice (see Chapter 5) to select the best one for the ES projects you are doing in this class.
W16.4. Learn about CLIPS, a tool for building expert systems. Obtain a demo of CLIPS or the non-government version (check the CLIPS Web site (http://www.jsc.nasa.gov/~clips.CLIPS.html)), install, and try it. What features make CLIPS useful? What could potentially hinder it?
W16.6. Access the Chinook Web site at the Department of Computer Science, University of Alberta, Edmonton, Canada (http://web.cd.ualberta.ca:80/~chinook/). Chinook is a world championship checkers program. Read the material describing the development of Chinook and how to use it. Then run the online demo and describe its strategy (if you can). How do the development and use of game playing methods relate to AI and ES?
W16.7. Access the Web sites of Ginesys Corp. (http://ginesys.com/) and Exsys Corp. (http://www.exsys.com/) to evaluate their current generation of expert systems, and their approach toward Web integration in their products. Run their online demos and compare the way they work. Write up your results in a report.
W16.9. The Department of Social Science Informatics at the University of Amsterdam maintains a standard version of Prolog. Access the SWI Prolog Web site (http://www.swi.psy.uva.nl/usr/jan/SWI-Prolog.html) and download a version of it (manuals may also be downloaded). Install and run it. (see Covington et al.  for details on how to develop a simple system and get it working; use the predicate consult ("filename") to open a Prolog program). Create a Prolog program that represents the family tree of one group member. How hard or easy is it to represent facts and rules in Prolog? Explain.
Back to the Top
Montiwalla, L. (1995). A Primer on EXSYS for DOS. Burr Ridge, IL: Irwin Professional Publishers.
O’Keefe, R. and A. D. Preece. (1996, Aug). "The Development,
Validation and Implementation of Knowledge-based Systems." European
Journal of Operational Research.
Back to the Top
|©1999 Prentice-Hall, Inc.
A division of Pearson Education
Upper Saddle River, New Jersey 07458