Chapter 16
Building Expert Systems: Process and Tools
 
 
Carnegie Mellon  
AI Web Site/Info
Appendix  
W16-A
Figure 
W16.1
Table 
W16.1
Table W16.2 Appendix  
W16-B
Table 
W16.3
Additional  
Internet  
Exercises
Additional  
References
Links
 
../images/slinks.gif (16248 bytes)


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

LISP (for LISt Processor; see Harrison [1990] and Slade [1997]) 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."

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.
 

Click here to access Carnegie Mellon's LISP Tutorial.
 

Prolog

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. [1997], Shoham [1993], Spivey [1996] and Teft [1990]). 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:

                 Prolog                                              Meaning

              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.

Click here to download and/or get  information on SWI Prolog from the University of Amsterdam.
 

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)

../images/f162.jpg (23349 bytes)
 
 

Back to the Top

 



Table W16.1: Software Sampler
 
Vendor
Products
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
Cimflex-Teknowledge M-4
Cogent Software Personal Hyperbase, Hyperbase Developer
Cognitive Systems Remind
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
Integrated Systems RT/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
Logic Programming FLEX
M.I.S. International Consult-I
Micro Data Base Systems Guru, Guru Solver, GURU First Step
Multilogic EXSYS EL, EXSYS Professional
Neuron Data Nexpert Object, NEXTRA
Norrad NetLink+
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
Softsync, Inc. SUPEREXPERT
Software Artistry Expert Advisor, Knowledge-Engine, PC Expert
Software Plus Ltd. CxPert
Symbologic Corp. Adept
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.
 
Description
Product
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
Induction 1st-CLASS, TIMM
Back to the Top
 



Appendix W17-B: Additional Development Environments

Smalltalk was developed initially as an object-oriented programming language. It was expanded to include facilities for data abstraction, message sending, object classification and interactive development. Now it is a complete development toolkit used for rapid prototyping of AI systems. Smalltalk has many built-in graphic interfaces.

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.
 
Vendor 
Product
Brightware, Inc. 
(Novato, CA)
ART Enterprise
Computer Associates 
(Westwood, MA)
Application Expert
IBM Corp.
(White Plains, NY)
ESE, KT, TIRS
IntelliCorp.
(Mountain View, CA)
KEE, KEE/370
Neuron Data, Inc. 
(Palo Alto, CA)
Nexpert
Platinum Software Corp. 
(Palo Alto, CA)
ADS, KBMS
Back to the Top



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. [1997] 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



Additional References

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

Legal Statement