CLIPS Programming Language
   HOME

TheInfoList



OR:

CLIPS (C Language Integrated Production System) is a
public-domain software Public-domain software is software that has been placed in the public domain, in other words, software for which there is absolutely no ownership such as copyright, trademark, or patent. Software in the public domain can be modified, distributed, ...
tool for building
expert system In artificial intelligence (AI), an expert system is a computer system emulating the decision-making ability of a human expert. Expert systems are designed to solve complex problems by reasoning through bodies of knowledge, represented mainly as ...
s. The
syntax In linguistics, syntax ( ) is the study of how words and morphemes combine to form larger units such as phrases and sentences. Central concerns of syntax include word order, grammatical relations, hierarchical sentence structure (constituenc ...
and name were inspired by Charles Forgy's OPS5. The first versions of CLIPS were developed starting in 1985 at the
NASA The National Aeronautics and Space Administration (NASA ) is an independent agencies of the United States government, independent agency of the federal government of the United States, US federal government responsible for the United States ...
Johnson Space Center The Lyndon B. Johnson Space Center (JSC) is NASA's center for human spaceflight in Houston, Texas (originally named the Manned Spacecraft Center), where human spaceflight training, research, and flight controller, flight control are conducted. ...
(as an alternative for existing system ART*Inference) until 1996, when the development group's responsibilities ceased to focus on expert system technology. The original name of the project was ''NASA's AI Language'' (NAIL). As of 2005, CLIPS was probably the most widely used expert system tool. CLIPS is written in C, extensions can be written in C, and CLIPS can be called from C. Its syntax resembles that of the
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
Lisp Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized Polish notation#Explanation, prefix notation. Originally specified in the late 1950s, ...
. CLIPS incorporates a complete
object-oriented programming Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impl ...
language for writing expert systems. COOL combines the
programming paradigm A programming paradigm is a relatively high-level way to conceptualize and structure the implementation of a computer program. A programming language can be classified as supporting one or more paradigms. Paradigms are separated along and descri ...
s of procedural, object oriented, and
logic programming Logic programming is a programming, database and knowledge representation paradigm based on formal logic. A logic program is a set of sentences in logical form, representing knowledge about some problem domain. Computation is performed by applyin ...
(
automated theorem proving Automated theorem proving (also known as ATP or automated deduction) is a subfield of automated reasoning and mathematical logic dealing with proving mathematical theorems by computer programs. Automated reasoning over mathematical proof was a majo ...
) languages.


Facts and rules

CLIPS uses
forward chaining Forward chaining (or forward reasoning) is one of the two main methods of reasoning when using an inference engine and can be described logically as repeated application of ''modus ponens''. Forward chaining is a popular implementation strategy f ...
. Like other expert system languages, CLIPS deals with rules and facts. Various facts can make a rule applicable. An applicable rule is then fired. Facts and rules are created by first defining them, as shown below: (deftemplate car_problem (slot name) (slot status)) (deffacts trouble_shooting (car_problem (name ignition_key) (status on)) (car_problem (name engine) (status wont_start)) (car_problem (name headlights) (status work))) (defrule rule1 (car_problem (name ignition_key) (status on)) (car_problem (name engine) (status wont_start)) => (assert (car_problem (name starter) (status faulty)))) Having set this up, the (reset) command causes CLIPS to read the facts and rules. In this case, that would lead to the three "trouble_shooting" facts being asserted. Then the (run) command is used. Given that the two facts listed in rule1 have both been asserted, the conditions for doing its action have been met so the additional fact is asserted as a result of the run. CLIPS> (reset) CLIPS> (agenda) 0 rule1: f-1,f-2 For a total of 1 activation. CLIPS> (facts) f-0 (initial-fact) f-1 (car_problem (name ignition_key) (status on)) f-2 (car_problem (name engine) (status wont_start)) f-3 (car_problem (name headlights) (status work)) For a total of 4 facts. CLIPS> (run) CLIPS> (facts) f-0 (initial-fact) f-1 (car_problem (name ignition_key) (status on)) f-2 (car_problem (name engine) (status wont_start)) f-3 (car_problem (name headlights) (status work)) f-4 (car_problem (name starter) (status faulty)) For a total of 5 facts. CLIPS> (assert +) (Assert (object (name "chair") (Material wood) (height 3feet) (Color brown)) CLIPS(retract In CLIPS, ''salience'' allows a user to assign priority (or weight) to a rule.


Descendants

Descendants of the CLIPS language include Jess (rule-based portion of CLIPS rewritten in
Java Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
, it later grew in a different direction), "Jess was originally inspired by the CLIPS expert system shell, but has grown into a complete, distinct Java-influenced environment of its own." and
FuzzyCLIPS FuzzyCLIPS is a fuzzy logic extension of the CLIPS (C Language Integrated Production System) expert system shell from NASA. It was developed by the Integrated Reasoning Group of the Institute for Information Technology of the National Research Cou ...
(which adds concept of relevancy into the language).


See also

*
Constraint Handling Rules Constraint Handling Rules (CHR) is a declarative, rule-based programming language, introduced in 1991 by Thom Frühwirth at the time with European Computer-Industry Research Centre (ECRC) in Munich, Germany.Thom Frühwirth. ''Theory and Practice ...
*
Drools Drools is a business rule management system (BRMS) with a forward and backward chaining inference-based rules engine, more correctly known as a production rule system, using an enhanced implementation of the Rete algorithm. Drools support ...
* OpenL Tablets


References


External links

* , downloads, information, news, history
CLIPS expert system tool: a candidate for the Diagnostic System engine

CLIPS tutorial on Code Project
* , code editor for CLIPS {{DEFAULTSORT:Clips Expert systems Public-domain software with source code Domain-specific programming languages Knowledge representation languages