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)