NAME¶
clips - an expert system programming language
SYNOPSIS¶
clips [ file.clp ]
DESCRIPTION¶
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 numerous 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:
- Knowledge Representation
- CLIPS provides a cohesive tool for handling a wide variety of
knowledge with support for three different programming paradigms:
rule-based, object-oriented and procedural. Rule-based programming allows
knowledge to be represented as heuristics, or "rules of thumb,"
which specify a set of actions to be performed for a given situation.
Object-oriented programming allows complex systems to be modeled as
modular components (which can be easily reused to model other systems or
to create new components). The procedural programming capabilities
provided by CLIPS are similar to capabilities found in languages
such as C, Pascal, Ada, and LISP.
- Portability
- CLIPS is written in C for portability and speed and has been
installed on many different computers without code changes. Computers on
which CLIPS has been tested include an IBM PC running DOS and
Windows 95 and a Macintosh running MacOS and Mach. CLIPS can be
ported to any system which has an ANSI compliant C compiler. CLIPS
comes with all source code which can be modified or tailored to meet a
user's specific needs.
- Integration/Extensibility
- CLIPS can be embedded within procedural code, called as a
subroutine, and integrated with languages such as C, FORTRAN and ADA.
CLIPS can be easily extended by a user through the use of several
well-defined protocols.
- Interactive Development
- The standard version of CLIPS provides an interactive, text
oriented development environment, including debugging aids, on-line help,
and an integrated editor. Interfaces providing features such as pulldown
menus, integrated editors, and multiple windows have been developed for
the Macintosh, Windows 95, and X Window environments.
- Verification/Validation
-
CLIPS includes a number of features to support the verification and
validation of expert systems including support for modular design and
partitioning of a knowledge base, static and dynamic constraint checking
of slot values and function arguments, and semantic analysis of rule
patterns to determine if inconsistencies could prevent a rule from firing
or generate an error.
- Fully Documented
- CLIPS comes with extensive documentation including a Reference
Manual and a User's Guide. (provided in the Debian clips-doc
package)
FILES¶
- /usr/lib/clips/clips.hlp
- The help for the CLIPS interpreter, type in (help) once the
interpreter is run it to read it.
BUGS¶
CLIPS is old software so bugs are not unheard of.
HISTORY¶
The origins of the C Language Integrated Production System (CLIPS) date back to
1984 at NASA's Johnson Space Center. At this time, the Artificial Intelligence
Section (later the Software Technology Branch, Client/Server Systems Branch,
and now the Information Technology Office) had developed over a dozen
prototype expert systems applications using state-of-the-art hardware and
software. However, despite extensive demonstrations of the potential of expert
systems, few of these applications were put into regular use. This failure to
provide expert systems technology within NASA's operational computing
constraints could largely be traced to the use of LISP as the base language
for nearly all expert system software tools at that time. In particular, three
problems hindered the use of LISP based expert system tools within NASA: the
low availability of LISP on a wide variety of conventional computers, the high
cost of state-of-the-art LISP tools and hardware, and the poor integration of
LISP with other languages (making embedded applications difficult).
The Artificial Intelligence Section felt that the use of a conventional
language, such as C, would eliminate most of these problems, and initially
looked to the expert system tool vendors to provide an expert system tool
written using a conventional language. Although a number of tool vendors
started converting their tools to run in C, the cost of each tool was still
very high, most were restricted to a small variety of computers, and the
projected availability times were discouraging. To meet all of its needs in a
timely and cost effective manner, it became evident that the Artificial
Intelligence Section would have to develop its own C based expert system tool.
The prototype version of
CLIPS was developed in the spring of 1985 in a
little over two months. Particular attention was given to making the tool
compatible with expert systems under development at that time by the
Artificial Intelligence Section. Thus, the syntax of
CLIPS was made to
very closely resemble the syntax of a subset of the ART expert system tool
developed by Inference Corporation. Although originally modelled from ART,
CLIPS was developed entirely without assistance from Inference or
access to the ART source code.
The original intent for
CLIPS was to gain useful insight and knowledge
about the construction of expert system tools and to lay the groundwork for
the construction of a replacement tool for the commercial tools currently
being used. Version 1.0 demonstrated the feasibility of the project concept.
After additional development, it became apparent that
CLIPS would be a
low cost expert system tool ideal for the purposes of training. Another year
of development and internal use went into
CLIPS improving its
portability, performance, functionality, and supporting documentation. Version
3.0 of
CLIPS was made available to groups outside of NASA in the summer
of 1986.
Further enhancements transformed
CLIPS from a training tool into a tool
useful for the development and delivery of expert systems as well. Versions
4.0 and 4.1 of
CLIPS, released respectively in the summer and fall of
1987, featured greatly improved performance, external language integration,
and delivery capabilities. Version 4.2 of
CLIPS, released in the summer
of 1988, was a complete rewrite of
CLIPS for code modularity. Also included with this release were an
architecture manual providing a detailed description of the
CLIPS
software architecture and a utility program for aiding in the verification and
validation of rule-based programs. Version 4.3 of
CLIPS, released in
the summer of 1989, added still more functionality.
Originally, the primary representation methodology in
CLIPS was a forward
chaining rule language based on the Rete algorithm (hence the Production
System part of the
CLIPS acronym). Version 5.0 of
CLIPS,
released in the spring of 1991, introduced two new programming paradigms:
procedural programming (as found in languages such as C and Ada;) and
object-oriented programming (as found in languages such as the Common Lisp
Object System and Smalltalk). The object-oriented programming language
provided within
CLIPS is called the
CLIPS Object-Oriented
Language (COOL). Version 5.1 of
CLIPS, released in the fall of 1991,
was primarily a software maintenance upgrade required to support the newly
developed and/or enhanced X Window, MS-DOS, and Macintosh interfaces. Version
6.0, released in the Spring of 1993, added fully integrated object/rule
pattern matching and support features for rule-based software engineering.
Version 6.1, released in the Summer of 1998, added C++ compatibility and
functions for profiling performance.
Because of its portability, extensibility, capabilities, and low-cost,
CLIPS has received widespread acceptance throughout the government,
industry, and academia. The development of
CLIPS has helped to improve
the ability to deliver expert system technology throughout the public and
private sectors for a wide range of applications and diverse computing
environments.
CLIPS is being used by over 5,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 private companies.
CLIPS is now maintained as public domain software by the main program
authors who no longer work for NASA.
There have appeared also derivative works from
CLIPS like:
- JESS
- The Java Expert System Shell, which provides a CLIPS interpreter
for the Java programming language.
- fuzzyCLIPS
- A fuzzy extension of CLIPS.
- bw
- CLIPS A version of CLIPS using backward chains.
AUTHOR¶
As with any large project,
CLIPS is the result of the efforts of numerous
people. The primary contributors have been: Robert Savely, previous branch
chief of the STB and now chief scientist of advanced software technology at
JSC, who conceived the project and provided overall direction and support;
Chris Culbert, current chief of the Information Technology Office, who managed
the project, wrote the original
CLIPS Reference Manual, and designed
the original version of CRSV; Gary Riley, who designed and developed the
rule-based portion of
CLIPS , coauthored the
CLIPS Reference Manual and
CLIPS
Architecture Manual, and developed the Macintosh interface for
CLIPS ;
Brian Donnell, who designed and developed the
CLIPS Object Oriented
Language (COOL), coauthored the
CLIPS Reference Manual and
CLIPS
Architecture Manual, and developed the previous MS-DOS interfaces for
CLIPS ; Bebe Ly, who was responsible for maintenance and enhancements
to CRSV and is now responsible for developing the X Window interface for
CLIPS; Chris Ortiz, who developed the Windows 3.1 interface for
CLIPS; Dr. Joseph Giarratano of the University of Houston-Clear Lake,
who wrote the
CLIPS User's Guide; and Frank Lopez, who designed and
developed
CLIPS version 1.0 and wrote the
CLIPS 1.0 User's
Guide.
Many other individuals contributed to the design, development, review, and
general support of
CLIPS, including: Jack Aldridge, Carla Armstrong,
Paul Baffes, Ann Baker, Stephen Baudendistel, Les Berke, Tom Blinn, Marlon
Boarnet, Dan Bochsler, Bob Brown, Barry Cameron, Tim Cleghorn, Major Paul
Condit, Major Steve Cross, Andy Cunningham, Dan Danley, Mark Engelberg, Kirt
Fields, Ken Freeman, Kevin Greiner, Ervin Grice, Sharon Hecht, Patti Herrick,
Mark Hoffman, Grace Hua, Gordon Johnson, Phillip Johnston, Sam Juliano, Ed
Lineberry, Bowen Loftin, Linda Martin, Daniel McCoy, Terry McGregor, Becky
McGuire, Scott Meadows, C. J. Melebeck, Paul Mitchell, Steve Mueller, Bill
Paseman, Cynthia Rathjen, Eric Raymond, Reza Razavipour, Marsha Renals, Monica
Rua, Tim Saito, Gregg Swietek, Eric Taylor, James Villarreal, Lui Wang, Bob
Way, Jim Wescott, Charlie Wheeler, and Wes White.
SEE ALSO¶
/usr/share/doc/clips-common/CLIPS-FAQ In Debian systems, you will find
the FAQ file compressed, use zcat or zless to read it.
/usr/share/doc/clips-common/html/ You will find more documentation from
upstream development in the html directoryin Debian systems.
/usr/share/doc/clips-common/examples/ A number of examples of
CLIPS program are available so you can test the interpreter and learn
how it works. You can, for example, load one of them with
(load
"/usr/share/doc/clips-common/examples/wordgame.clp") and run it
using
(reset) and
(run).
COPYRIGHT¶
This manpage was made by Javier Fernandez-Sanguino <jfs@debian.org> for
Debian GNU/Linux (but may be used by others)