Click here for Picture

CLIPS Version 6.0

May 28, 1993

by

Joseph C. Giarratano, Ph.D.

CLIPS User's Guide

Chapter 12 Questions and Answers

The best way to learn is by asking yourself questions; the best way to be sorry is by answering all of them.

In this chapter you'll learn how to pattern match on instances. One way is with rules. Also, CLIPS has a number of query functions to match instances. In addition, control facts and slot daemons can be used for pattern matching.

Object Lessons

One of the new features of Version 6.0 is the ability of rules to pattern match on objects. In order to use this feature you must first specify whether a class is reactive to pattern matching on the LHS of rules using the pattern-match role. If the pattern-match is reactive, the class may be pattern matched. If the class is nonreactive, it is not. The default is non-reactive.

You can also specify whether a slot facet reactive or non-reactive using the slot facet pattern-match reactive or pattern-match non-reactive. The following example shows how the value of the slot sound is pattern matched by a rule.

CLIPS> (clear)

CLIPS>

(defclass DUCK (is-a USER)(role concrete)(pattern-match reactive)

(multislot sound (create-accessor read-write)

(default quack quack)))

CLIPS> (make-instance [Dorky_Duck] of DUCK)

[Dorky_Duck]

CLIPS> (make-instance [Dinky_Duck] of DUCK)

[Dinky_Duck]

CLIPS> (defrule find-sound

?duck <- (object (is-a DUCK)(sound $?find))

=>

(printout t "Duck " (instance-name ?duck) " says " ?find crlf))

CLIPS> (run)

Duck [Dinky_Duck] says (quack quack)

Duck [Dorky_Duck] says (quack quack)

CLIPS>

The object-pattern conditional element object is followed by the classes and slots to be matched against. Following the is-a and the slot-name can be constraint expressions involving ?, $?, &, and |.

In addition, instance names can be specified for pattern matching. The following example shows how only one instance of the DUCK class is matched using the name constraint, name, of instances. Note that name is a reserved word and cannot be used as a slot name.

CLIPS> (defrule find-sound

?duck <- (object (is-a DUCK)(sound $?find)(name [Dorky_Duck]))

=>

(printout t "Duck " (instance-name ?duck) " says " ?find crlf))

CLIPS> (run)

Duck [Dorky_Duck] says (quack quack)

CLIPS>

Objects in the Database

Consider the following general type of problem. Given some instances, how many satisfy a specified condition? For example, shown following are the defclasses and definstances of Joe's Home showing the various types of sensors and the appliances connected to them. Notice that an abstract class DEVICE is defined since both SENSOR and APPLIANCE inherit common slots type and location.

(clear)

(defclass DEVICE (is-a USER)(role abstract)

(slot type (create-accessor read-write)(access initialize-only));Sensor type

(slot loc (create-accessor read-write)(access initialize-only)));Location

(defclass SENSOR (is-a DEVICE)(role concrete)

(slot reading (create-accessor read-write))

(slot min (create-accessor read-write)(access initialize-only)) ;Min reading

(slot max (create-accessor read-write)(access initialize-only)) ;Max reading

(slot app (create-accessor read-write)(access initialize-only)));SEN. APP.

(defclass APPLIANCE (is-a DEVICE)(role concrete)

(slot setting (create-accessor read-write)) ; Depends on appliance

(slot status (create-accessor read-write))) ; off or on

(definstances ENVIRONMENT_OBJECTS

(T1 of SENSOR (type temperature)

(loc kitchen)

(reading 110) ; Too hot

(min 20)

(max 100)

(app FR))

(T2 of SENSOR (type temperature)

(loc bedroom)

(reading 10) ; Too cold

(min 20)

(max 100)

(app FR))

(S1 of SENSOR (type smoke)

(loc bedroom)

(reading nil) ; Bad sensor nil reading

(min 1000)

(max 5000)

(app SA))

(W1 of SENSOR (type water)

(loc basement)

(reading 0) ; OK

(min 0)

(max 0)

(app WP))

(FR of APPLIANCE (type furnace)

(loc basement)

(setting low) ; low or high

(status on))

(WP of APPLIANCE (type water_pump)

(loc basement)

(setting fixed)

(status off))

(SA of APPLIANCE (type smoke_alarm)

(loc basement)

(setting fixed)

(status off)))

Suppose the following questions or queries are asked. What are all the objects in the database? How are all the objects arranged? What are the relationships between objects? What are all the devices? What are all the sensors? What are all the appliances? Which sensor is connected to which appliance? Are there any sensors whose type is temperature? What sensors of type temperature have a reading between min and the max? An even more basic query is whether or not there are any sensors present.

The query system of COOL is a set of six functions that may be used for pattern matching an instance-set and performing actions. An instance-set is a set of instances, such as the instances of SENSOR. The instances in the instance-set may come from multiple classes that do not have to be related. In other words, the classes do not have to be from the same inheritance path.

The following table from the CLIPS Reference Manual, summarizes the predefined query functions that may be used for instance-set access.

      Function         Purpose                                                            

any-instancep          Determines if one or more instance-                                

sets satisfy a query                                                                      

find-instance          Returns the first instance-                                        

set that satisfies a                                                                      

query                                                                                     

find-all-instances     Groups and returns all instance-                                   

sets which satisfy a                                                                      

query                                                                                     

do-for-instance        Performs an action for the first instance-                         

set which satisfies                                                                       

a query                                                                                   

do-for-all-instances   Performs an action for every instance-                             

set which satisfies                                                                       

a query as they are                                                                       

found                                                                                     

delayed-                                                                                  

do-                                                                                       

for-                                                                                      

all-                                                                                      

instances              Groups all instance-                                               

sets which satisfy a                                                                      

query and then                                                                            

iterates an action                                                                        

over this group                                                                           

Instance-set Query Functions

I'll Take Any

The any-instancep function is a predicate function that returns TRUE if there is an instance matching the pattern and FALSE otherwise. Shown following is an example of this query function used with the SENSOR and APPLIANCE classes and instances. The query function determines if there is any instance in the SENSOR class.

CLIPS> (reset)

CLIPS> (instances)

[initial-object] of INITIAL-OBJECT

[T1] of SENSOR

[T2] of SENSOR

[S1] of SENSOR

[W1] of SENSOR

[FR] of APPLIANCE

[WP] of APPLIANCE

[SA] of APPLIANCE

For a total of 8 instances.

CLIPS> (any-instancep ((?ins SENSOR)) TRUE)

TRUE ;Function returns TRUE because there is a SENSOR instance

CLIPS> (any-instancep ((?ins DUCK)) TRUE) ; Evaluation error--Bad!

[PRNTUTIL1] Unable to find class DUCK. ; No DUCK class

CLIPS>

The basic format of a query function involves an instance-set-template to specifies the instances and their classes, an instance-set-query as the boolean condition that the instances must satisfy, and an action to specifies the single action to be taken. Multiple actions can be included by grouping them with the progn function.The predicate function class-existp returns TRUE if the class exists and FALSE otherwise.

The combination of instance name followed by the one or more class restrictions is called an instancesetmembertemplate. The query functions may generally be used like any other function in CLIPS. Shown following are the Rules of Scope which describe the restrictions on the use of variables in a query function. The term scope means the section of code where a variable is visible or known. The term reference means the name or address by which a variable is accessed. In other words, the scope of a variable means where the variable can be referenced, e.g., bound or printed. Anything which is not prohibited by these rules is allowed, such as nesting. Also, the term query refers to the query portion of the query function, not the query function itself.

There are two steps involved in trying to satisfy a query. First, CLIPS generates all the possible instance-sets that match the instance-set-template. Second, the boolean instance-set-query is applied to all the instance-sets to see which ones, if any, satisfy the query. Instance-sets are generated by a simple permutation of the members in a template, where the rightmost members are varied first. Note that a permutation is not the same as a combination because order matters in a permutation but not in a combination.

The function find-all-instances returns a multifield value of all instances which satisfy the query, or an empty multifield value for none. The do-for-instance query function is similar to find-instance except that it performs a single distributed action when the query is satisfied. The do-for-all-instances function is similar to the do-for-instance except that it performs an action for every instance-set that satisfies the query.

Design Decisions

In contrast to rules which are only activated when their patterns are satisfied, deffunctions are explicitly called and then executed. Just because a rule is activated does not mean it will be executed. Deffunctions are completely procedural in nature because once called by name, their code is executed in a procedural manner, statement by statement. Also, no pattern matching involving constraints is used in a deffunction to decide if its actions should be executed. Instead, any arguments that match the number expected by the deffunction argument list will satisfy the deffunction and cause its actions to be executed.

The basic idea of deffunctions as named procedural code is carried to a much greater degree with defgenerics and the defmethods that describe their implementation. A defgeneric is like a deffunction but much more powerful because it can do different tasks depending on its argument constraints and types. The ability of a generic function to perform different actions depending on the classes of its arguments is called overloading the function name.

By proper use of operator overloading, it's possible to write code that is more readable and reusable. For example, a defgeneric for the "+" function can be defined with different defmethods. The expression,

(+ ?a ?b)

could add two real numbers represented by ?a and ?b, or two complex numbers, or two matrices, or concatenate two strings, and so forth depending if there is a defmethod defined for the argument classes. CLIPS does this by first recognizing the type of the arguments and then calling the appropriate defmethod defined for those types. A separate overloaded defmethod for "+" would be defined for each set of argument types except for the predefined system types such as real numbers. Once the defgeneric is defined, it's easy to reuse in other programs.

Any named function that is system defined or external can be overloaded using a generic function. Notice that a deffunction cannot be overloaded. An appropriate use of a generic function is to overload a named function. If overloading is not required, you should define a deffunction or an external function.

The syntax of defgenerics is very simple, consisting of just the legal CLIPS symbol name and an optional comment.

(defgeneric <name> [<comment>])

As a simple example of generic functions, consider the following attempt in CLIPS to compare two strings using the ">" function.

CLIPS> (clear)

CLIPS> (> "duck2" "duck1")

[ARGACCES5] Function > expected argument #1 to be of type integer or float

CLIPS>

It's not possible to do this comparison with the ">" function because it expects NUMBER types as arguments.

However, it's easy to define a (defgeneric) which will overload the ">" to accept STRING types as well as NUMBER types. For example, if the arguments of ">" are of type STRING, the defgeneric will do a string comparison, letter by letter starting from the left until the ASCII codes differ. In contrast, if the arguments of ">" are of type NUMBER, the system compares the sign and magnitude of the numbers. The user- defined ">" for STRING types is an explicit method, while a system-defined or user-defined external function such as ">" for NUMBER type is an implicit method.

The technique of overloading a function name so that the method which implements it is not known until run-time is another example of dynamic binding. Any object reference of name or address may be bound at run-time in CLIPS to functions through dynamic binding also.

Some languages such as Ada have a more restrictive type of overloading in which the function name must be known at compile time rather than at run-time. The run-time dynamic binding is the least restrictive since methods can be created during execution by the (build) statement. However, you should be careful in using (build) since dynamically creating constructs is often hard to debug. Also, the resulting code may be difficult to verify and validate since you'll have to stop execution to examine the code. Dynamic binding is a characteristics of a true object- oriented programming language.

Following is an example of a defgeneric, ">", for STRING types and its method.

CLIPS> (defgeneric >) ; Header declaraction. Actually unnecessary

CLIPS> (defmethod > ((?a STRING) (?b STRING))

(> (str-compare ?a ?b) 0))

CLIPS> (> "duck2" "duck1") ; The overload ">" works correctly

TRUE ; in all three cases.

CLIPS> (> "duck1" "duck1")

FALSE

CLIPS> (> "duck1" "duck2")

FALSE

CLIPS>

The (defgeneric) acts as a header declaration to declare the type of function being overloaded. It's not actually necessary to use a defgeneric in this case because CLIPS implicitly deduces the function name from the defmethod name, which is the first symbol following "defmethod". The header is a forward declaration that is necessary if the (defgeneric) methods have not yet been defined, but other code such as defrules, defmessage-handlers, and so forth refers to the (defgeneric) name.

Other Features

Compared to deffunctions, a method has an optional method index. If you don't supply this index, CLIPS will provide a unique index number among the methods for that generic function, that can be viewed by the listdefmethods command. The method body can be printed using the ppdefmethod command. A method can be removed with an undefmethod function call.

The ranking of methods determines the method precedence of a generic function. It is the method precedence which determines the methods order of listing. Higher precedence methods are listed before lower precedence methods. The highest precedence method will also be tried first by CLIPS.

A shadowed method is one in which one method must be called by another. The process by which CLIPS picks the method with highest precedence is called the generic dispatch. For more information, see the CLIPS Reference Manual.

CLIPS Main Features

A Tool for the Development and Delivery of Expert Systems

CLIPS is a productive development and delivery expert system tool which provides a complete environment for the construction of rule and/or object based expert systems. CLIPS is being used by over 4,000 users throughout the public and private community including: all NASA sites and branches of the military, numerous federal bureaus, government contractors, universities, and many companies. The key features of CLIPS are: Bibliography of CLIPS Publications

G. Riley, "Benchmarking Expert System Tools," Proceedings of ROBEX '86, NASA/Johnson Space Center, Houston, TX, June 1986.

G. Riley, "Implementation of an Expert System Shell on a Parallel Computer," Proceedings of The Third Annual Artificial Intelligence & Advanced Computer Technology Conference, Long Beach Convention Center, Long Beach, CA, April 1987.

G. Riley, "Implementing CLIPS on a Parallel Computer," Proceedings of The First Annual Workshop on Space Operations Automation and Robotics (SOAR `87), NASA/Johnson Space Center, Houston, TX, August 1987.

C. Culbert, G. Riley, and R. Savely, "Approaches to the Verification of Rule-Based Expert Systems," Proceedings of The First Annual Workshop on Space Operations Automation and Robotics (SOAR `87), NASA/Johnson Space Center, Houston, TX, August 1987.

G. Riley, C. Culbert, R. Savely, and F. Lopez, "CLIPS: An Expert System Tool for Delivery and Training," Proceedings of the Third Conference on Artificial Intelligence for Space Applications, Huntsville, AL, November 1987.

C. Culbert, G. Riley, and R. Savely, "Verification Issues for Rule-Based Expert Systems," Proceedings of the Third Conference on Artificial Intelligence for Space Applications, Huntsville, AL, November 1987.

C. Culbert, G. Riley, R. Savely, and J. Giarratano, "A Solution to the Expert System Delivery Problem," Proceedings of the ISA/88, Houston, TX, October 1988.

G. Riley, C. Culbert, and R. Savely, "CLIPS: An Expert System Tool for Training, Development, and Delivery," Intelligent Systems Review, Volume 1, Number 1, Fall 1988.

Joseph C. Giarratano, Chris Culbert, and Robert T. Savely, "The State of the Art for Current and Future Expert System Tools," ISA Transactions, Vol. 29, No. 1, pp. 17-25, Jan. 1990

G. Riley and B. Donnell, "Advanced CLIPS Capabilities," Proceedings of The Fourth Annual Workshop on Space Operations Applications and Research (SOAR `90), NASA/Johnson Space Center, Albuquerque, NM, June 1990.

G. Riley, "CLIPS: A Tool for the Development and Delivery of Expert Systems," Proceedings of the Technology 2000 Conference, Washington, DC, November 1990.

G. Riley, "CLIPS: An Expert System Building Tool," Proceedings of the Technology 2001Conference, San Jose, CA, December 1991.

Joseph C. Giarratano and Gary Riley, Expert Systems Principles and Programming, PWS Pub. Co.

Proceedings of the First CLIPS Users Conference

Aug. 13-15, 1990

NASA/Johnson Space Center, Gilruth Center

NASA Conference Publication 10049

A1 SESSION: Engineering Applications

A1.1-W. J. Parkinson, G.F. Luger, R.E. Bretz

Three CLIPS-Based Expert Systems for Solving Engineering Problems

A1.2-Ken Porter

Building Engineering Expert Systems in CLIPS

B1 SESSION: Intelligent Tutors and Training

B1.1-Randall W. Hill, Jr., Brad Pickering

Intelligent Tutoring Using HyperCLIPS

B1.2-Grace Hua

Developing An Intelligent Computer-Aided Trainer

B1.3-Stephen J. Mueller

Incorporating CLIPS into a Personal-Computer-Based Intelligent Tutoring System

A2 SESSION: Intelligent Software Engineering

A2.1-Barry W. Cameron

Hardware Independence Checkout Software

A2.2-Keith Morris

Automating Symbolic Analysis with CLIPS

B2 SESSION: Automated Knowledge Acquisition I

B2.1-Dr. Vishweshwar V. Dixit

EDNA: Expert Fault Digraph Analysis Using CLIPS

B2.2 Janice A. Jordan, Min-Jin Lin, Richard J. Mayer, Mark E. Sterle

A Middle Man Approach To Knowledge Acquisition in Expert Systems

A3 SESSION: Network Applications

A3.1-Roger F. Hansen

JESNET Expert Assistant

A3.2-Albert Leigh

The Network Management Expert System Prototype for Sun Workstations

A3.3-Tom Wannemacher

Using CLIPS in A Distributed System - The Network Control Center (NCC) Expert System

B3 SESSION: Automated Knowledge Acquisition II

B3.1-Larry Mason

From Data Rich to Information Wealthy-A CASE for CLIPS

B3.2-Tim Saito

Supplemental Knowledge Acquisition through External Product Interface for CLIPS

B3.3-Gary B. Young

Rule Induction Techniques

A4 ESSION: Verification and Validation

A4.1-Ravi M. Rangan

Enforcing Compatibility and Constraint Conditions and Information Retrieval at the Design Action

A4.2-J. B. Coombs, C Chang, R. a> Stachowitz

Validation of Knowledge-based Systems

B4 SESSION: Enhancements to CLIPS-General I

B4.1-James L. Rogers

Decomposing a Complex Design Problem Using CLIPS

B4.2-Jaye Hicks

Fault-Tolerant, Embedded CLIPS Applications

B4.3-Wesley A. White

CLIPS/Ada-An Ada-Based Tool for Building Expert Systems

A5 SESSION: Space Shuttle Quality Control/Diagnosis

A5.1-Luis M. Flores, Roger F. Hansen

System Control Module Diagnostic Expert Assistant

A5.2-George D. Lardas

Prototype Automated Post-MECO Ascent I-Load Verification Data Table

A5.3-Amy Y. Murphey

An Expert System to Manage the Operation of the Space Shuttle's Cryogenic Fuel Tank Cryogenic Reactant Tanks

B5 SESSION: Enhancements to CLIPS-General II

B5.1-Mala Mehrota, Sally C. Johnson

Rule Groupings in Expert Systems

B5.2-James R. Geissman

Automatically Structuring and Translating CLIPS

A6 SESSION: Space Shuttle and Real-time Applications

A6.1-Donald Culp

Interpretation of Space Shuttle Telemetry

A6.2-Arthur N. Rasmussen

The INCO Expert System Project-CLIPS in Shuttle Mission Control

A6.3-R. J. Frainier, N. Groleau, R. Bhatnagar. C. Lam, M. Compton, S. Colombano, S. Lai, P. Szolovits, M. Manahan, I. Statler, L. Young

A Comparison of CLIPS and LISP-Based Approaches to the Development of a Real-time Expert System

A6.4-Joseph D. Mainardi, Dr. Gerry Szatkowski

Knowledge Base Rule Partitioning Design for CLIPS

A6.5-Scott A. Dudek, Matthew R. Barry

Space Shuttle Systems Monitoring: Real-Time Telemetry Processing Using CLIPS

B6 SESSION: Medical, Biological and Agricultural Applications

B6.1-Sarjeev Batra, Bradley University

GENEX: A Knowledge-based Expert Assistant for Genbank Data Analysis

B6.2-Robert H. Fritz

Knowledge Assisted Diagnosis of Mood Disorders Using DSM-III

B6.3-Dr. Gary C. Salzman

A CLIPS Expert System for Clinical Flow Cytometry Data Analysis

B6.4-Dr. Bernard A. Engel, D.D. Jones, R.L. Rhykerd, L.M. Rhykerd, C.L. Rhykerd, Jr.

A CLIPS Expert System for Maximizing Alfalfa (Medicago Sativa L.) Production

B6.5-Dr. Chi N. Thai, J.N. Pease, R.L. Shewfelt

A Decision Support System for Delivering Optimal Quality Peach and Tomato

A7 SESSION: Quality Control Applications

A7.1-Cpt. John F. Mack

The Table of Distribution and Allowances (TDA) System Analyzer

A7.2-Richard O'Donnell

MOM-A Meteorological Data Checking Expert System in CLIPS

A7.3-Mark Tischendorf

Automated Decision Stations

B7 SESSION: Intelligent Databases, and Networks

B7.1-Lynn Fischer, Judson D. Cary

ISLE: Intelligent Selection of Loop Electronics-A CLIPS/C++/INGRES Integrated Application

B7.2-James Snyder, Dr. Laurian Chirica

An SQL Query Generator for CLIPS

B7.3-Bernard P. Wess

_CLIPSE = Presentation Management + NASA CLIPS + SQL

A8 SESSION: Space Station Freedom Applications

A8.1-Christopher Marsh

A PC Based Fault Diagnosis Expert System

B8 SESSION: User Interface I

B8.1-Dr. Bernard A. Engel, C.C. Rewerts, R. Srinivasan, J.B. Rogers, Dr. D.D. Jones

CLIPS Interface Development Tools and Their Application

B8.2-Charles R. Patton

CLIPS-A Proposal for Improved Usability

B8.3-Brad Pickering, Randall W. Hill, Jr.

HyperCLIPS-A HyperCard Interface to CLIPS

A9 SESSION: Space Shuttle and Satellite Applications

A9.1-Thomas P. Gathmann

A Dynamic Satellite Simulation Testbed Based on CLIPS and CLIPS-Derived Tools

A9.2-Dr. Christopher Landauer

Analysis of MMU FDIR Expert System

A9.3-Barbara Pauls

Satellite Simulations Utilizing CLIPS

B9 SESSION: User Interface II

B9.1-Dr. Thomas J. Nagy

Improving the Human Factors of Software with CLIPS

B9.2-Mark Sterle, Richard J. Mayer, Janice A. Jordan, Howard N. Brodale, Min-Jin Lin

A Memory Efficient User Interface for CLIPS Micro-computer Applications

B9.3-Ross C. Miller, Chuck Kosta, Matt Vesty

Prototyping User Displays Using CLIPS

A10 SESSION: Artificial Neural Systems and Fuzzy Logic

A10.1-Elizabeth Charnock, Norman Eng

CLIPS on the NeXT Computer

A10.2-Dr. Cathy H. Wu, Pamela A. Taylor, George M. Whitson, Cathy Smith

CLIPS-A Tool for Corn Disease Diagnostic System and an Aid to Neural Network for Automated Knowledge Acquisition

A10.3-Brenda McGee, Himanshu Bhatnagar

A Neural Network Simulation Package in CLIPS

B10 SESSION: Enhancements to CLIPS: Reasoning/Representation

B10.1-Hisham Assal, Dr. Leonard Myers

Implementation of a Frame-Based Representation in CLIPS

B10.2-Aurora C. Diaz, Robert A. Orchard

BB_CLIPS-Blackboard Extensions to CLIPS

A11 SESSION: Parallel and Distributed Processing I

A11.1-Steve Geyer

CLIPS Meets the Connection Machine or How to Create a Parallel Production System

A11.2-David Goldstein

PRAIS-Distributed, Real-time Knowledge-Based Systems Made Easy

B11 SESSION: Enhancements to CLIPS-Object Oriented

B11.1-Mark Auburn

Integrating an Object System into CLIPS-Language Design and Implementation Issues

B11.2-M. Aldrobi, S. Anastasiadis, B. Khalife, M. Galler, K. Kontogiannis, Prof. Renato De Mori

CLIPS Enhanced with Objects, Backward Chaining, and Explanation Facilities

B11.3-David S. Logie, H. Kamil

Integration of Object-Oriented Knowledge Representation with the CLIPS Rule-Based System

B11.4-Clifford Sobkowicz

An Object-Oriented Extension to CLIPS

A12 SESSION: Parallel and Distributed Processing II

A12.1-Dr. Leonard Myers, Coe Johnson, Dean Johnson

MARBLE - A System for Executing Expert Systems in Parallel

A12.2-Dr. Roger Schultz, Iain Stobie

Building Distributed Rule-Based Systems Using the AI Bus

A12.3-James Taylor, Dr. Leonard Myers

Executing CLIPS Expert Systems in a Distributed Environment

B12 SESSION: Enhancements to CLIPS:Graphics/X-Windows

B12.1-Andres C. Callegari

Integrating Commercial off-the-shelf (COTS) Graphics and Extended Memory Packages with CLIPS

B12.2-Ben M. Faul

Constructing Complex Graphics Applications with CLIPS and the X-Window System

b13.3-Dr. Terry Feagin

A Graphical Interface to CLIPS Using SunView

A13 SESSION: Aerospace Applications

A13.1-Matthew R. Barry

On a Production System Using Default Reasoning for Pattern Classification

A13.2-Tim Conway

Embedding CLIPS in a Data-base-Oriented Diagnostic System

A13.3-Dr. Pamela K. Fink, David T. Lincoln

UFC Advisor-An AI-Based System for the Automatic Test Environment

B13 SESSION: Advisory Systems I

B13.1-Chet Lund

Expert System for Scheduling Simulation Lab Sessions

B13.2-Dave Lavery, William D. Brooks

MacDoctor-The Macintosh Diagnoser

B13.3-S. Al-Mutawa, V. Srinivas, Dr. Young B. Moon

Development of an Instructional Expert System for Hole Drilling Processes

A14 SESSION: Simulation and Defense

A14.1-Dr. Linfu Cheng, John D. McKendrick, Jeff Liu, Elcee Computek, Inc.

Knowledge/Geometry-Based Mobile Autonomous Robot Simulator KMARS

A14.2-Brett Gossage

Embedded CLIPS for SDI BM/C3 Simulation and Analysis

A14.3-Patrick McConagha, Joseph Reynolds

Embedding CLIPS-Based Expert Systems in a Real-time Object-Oriented Simulation

B14 SESSION: Advisory Systems and Tutors

B14.1-Dr. David R. Read

SPILC-An Expert Student Advisor

B14.2-David J. Swanson

Prediction of Shipboard Electromagnetic Interference (EMI) Problems Using Artificial Intelligence (AI) Technology

B14.3-Andrew Warinner

Building an Intelligent Tutoring System for Procedural Domains

B14.4-Dr. Patrick Krolak, Mark Miller, Brenda McGee, Stanley J. Barr

Integrating PCLIPS into ULowell's Lincoln Logs Factory of the Future

A15 SESSION: Intelligent Control

A15.1-Cody R. Nivins

A Object-Oriented Generic Controller Using CLIPS

A15.2-A.A. Rabeau, K.D. Jamison, A. Bensaoula, C. Horton, A. Ignatiev, J.G. Glover

Applying CLIPS to Control of Molecular Beam Epitaxy Processing

Proceedings of the Second CLIPS Users Conference

Sept. 23-25, 1991

NASA/Johnson Space Center, Gilruth Center

NASA Conference Publication 10085

Volume 1

Page

AGENDA 3

SESSION 1

Rule Groupings: An Approach Towards Verification of Expert Systems 21

Enhanced Use of CLIPS at the Los Alamos National Laboratory 25

SESSION 2A.

Using a CLIPS Expert System to Automatically Manage TCP/IP

Networks and Their Components 41

NMESys: An Expert System for Network Fault Detection 52

A Mission Executor for an Autonomous Underwater Vehicle 58

SESSION 2B

The Automated Army ROTC Questionnaire (ARQ) 71

Decision Blocks: A Tool for Automating Decision Making in CLIPS 76

Automated Predictive Diagnosis (APD): A Three Tiered

Shell for Building Expert Systems for Automated Prediction and Decision Making 89

ICADS: A Cooperative Decision Making Model With CLIPS Experts 102

SESSION 3A

A CLlPS/-Window Interface 151

Application of Machine Learning and Expert Systems to

Statistical Process Control (SPC) Chart Interpretation 123

Application of Software Technology to Automatic Test Data Analysis 139

SESSION 3B

Acquisition, Representation and Rule Generation for Procedural Knowledge 149

Projects in an Expert System Class 162

Using CLIPS as the Cornerstone of a Graduate Expert Systems Course 166

SESSION 4A

CRN5EXP - Expert System for Statistical Quality Control 173

Distributed Semantic Networks and CLIPS 177

Object-Oriented Knowledge Representation for Expert Systems 186

SESSION 4B

Linkfinder: An Expert System that Constructs Phylogenic Trees 199

Generating Target System Specifications from a Domain Model Using CLIPS 209

The Management and Security Expert (MASE) 227

Volume 2

SESSION 5A

Adding Run History to CLIPS 237

CLIPS Application User Interface for the PC 253

Expert Networks in CLIPS 267

ECLIPS: An Extended CLIPS for Backward Chaining and Goal-Directed Reasoning 273

SESSION 5B

Extensions to the Parallel Real-Time Artificial Intelligence

System (PRAIS) for Fault-Tolerant Heterogeneous Cycle-Stealing Reasoning 287

PCLIPS- Parallel CLIPS 294

Separating Domain and Control Knowledge Using Agenda 307

Integrating CLIPS Applications into Heterogeneous Distributed Systems 308

SESSION 6A

Data-Driven Backward Chaining 325

Automated Information Retrieval Using CLIPS 332

Proposal for a CLIPS Software Library 344

SESSION 6B

Improving NAVFAC's Total Quality Management of

Construction Drawings with CLIPS 357

Validation of an Expert System Intended for Research in

Distributed Artificial Intelligence 365

Testing Validation Tools on CLlPS-Based Expert Systems 382

SESSION 7A

Design Concepts for Integrating the IMKA Technology with CLIPS 395

A CLlPS-Based Tool for Aircraft Pilot-Vehicle Interface Design 407

On the Generation of Graphical Objects and Images from within CLIPS Using XView 417

SESSION 7B

Passive Acquisition of CLIPS Rules 423

YUCSA: A CLIPS Expert Database System to Monitor Academic Performance 436

A CLIPS Based Personal Computer Hardware Diagnostic System 445

SESSION 8A

PVEX - An Expert System for ProducibilityNalue

Engineering 455

Rule Groupings in Expert Systems Using Nearest Neighbour

Decision Rules and Convex Hulls 464

Debugging Expert Systems Using a Dynamically Created Hypertext Network 475

SESSION 8B

Implementing a Frame Representation in CLIPS/COOL 497

Application of a Rule-Based Knowledge System Using CLIPS

for the Taxonomy of Selected Opuntia Species 505

The Nutrition Advisor Expert System 511

NASA STB Bulletin Board

To obtain updated and detailed information on all software tools developed by the Software Technology Branch (STB), you may log onto the STB Bulletin Board. You will find software release information, abstracts, information make-files, ordering information, bug reports, work arounds, and much more. An option is also available to communicate with NASA technical staff via email options. Anyone can use the BBS whether they are a government user or not. Simply call up the BBS 24 hours a day, and create yourself an individual account.

STB BULLETIN BOARD

Logon: (713) 286-5375, OR (713) 286-7252

300, 1200, 2400 Baud, No Parity, 8 Data bits, 1 Stop Bit

Internet Mail Address (NOT THE STB BULLETIN BOARD): stbprod@fdr.jsc.nasa.gov

STB Help Desk (Voice): (713) 286-8919

STB Help Desk (FAX): (713) 286-4479

Software tools supported by the STB

CLIPS: A productive development and delivery expert system tool which provides a complete environment for the construction of rule and/or object based expert systems. CLIPS is the first language to provide a verification/validation utility for the development of expert systems. The key features of CLIPS are knowledge representation, portability, integration/extensibility, interactive development, and objects.

NETS: A software tool which provides an environment for the development and evaluation of neural networks. With NETS you can create and execute arbitrary configurations of neural networks which use the back propagation learning technique. NETS is portable and will run on a variety of machines from mainframes to personal computers.

COSTMODL: A software tool which automates the process of developing estimates of the effort and schedule required for the development of a software product. With COSTMODL, you can estimate development costs for a wide range of software products including incrementally developed programs and programs written in Ada.

Splicer: A genetic algorithm tool which can be used to solve search and optimization problems. Genetic algorithms are adaptive search procedures based loosely on the processes of natural selection and Darwinian "survival of the fittest." Splicer provides the underlying framework and structure for building a genetic algorithm application.

TARGET: A graphical interface tool that captures procedural knowledge and produces a task hierarchy report. The initial design of TARGET was based on a knowledge tool developed by the Naval Systems Training Center, called VISTA. Target is currently written in C and is available for the Microsoft Windows platform, with future platform ports to Macintosh and X-Windows.

Titles of CLIPS abstracts

Following is an index of the CLIPS APPLICATIONS ABSTRACTS . The ABSTRACTS contains brief descriptions volunteered by users of their applications that have either been created, or are in the process of being created. The abstracts are on the STB Bulletin Board.

warfare engagements 205

Index

A

B

C

D

E

F

G

H

I

K

L

M

N

O

P

Q

R

S

SYMBOL

| constraint, 60

T

U

V

W