Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
CLIPS
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Distinguish|CLISP}} {{Refimprove|date=September 2013}} {{Infobox programming language | name = CLIPS | logo = | paradigm = [[Object-oriented programming|object-oriented]], [[expert system]] | designer = | developer = [[NASA]] [[Johnson Space Center]] | released = {{Start date and age|1985}} | latest release version = 6.4.1 | latest release date = {{Start date and age|2023|04|21}} | typing = | memory management = [[Garbage collection (computer science)|garbage collected]] | programming language = [[C (programming language)|C]] | license = [[public domain]] | file ext = | website = {{URL|clipsrules.net}} | wikibooks = | implementations = | dialects = | influenced by = [[OPS5]] | influenced = }} '''CLIPS''' ('''C Language Integrated Production System''') is a [[public-domain software]] tool for building [[expert system]]s. The [[Syntax (programming languages)|syntax]] and name were inspired by [[Charles Forgy]]'s [[OPS5]]. The first versions of CLIPS were developed starting in 1985 at the [[NASA]] [[Johnson Space Center]] (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.<ref>{{cite conference|title=ERESYE: artificial intelligence in Erlang programs|conference=Proceedings of the 2005 ACM [[SIGPLAN]] workshop on Erlang|year=2005|publisher=ACM|location=Tallinn, Estonia|isbn=1-59593-066-3|pages=62β71|author1=Di Stefano, Antonella|author2=Gangemi, Francesc|author3=Santoro, Corrado|doi=10.1145/1088361.1088373}}</ref> CLIPS is written in [[C (programming language)|C]], extensions can be written in C, and CLIPS can be called from C. Its syntax resembles that of the [[programming language]] [[Lisp (programming language)|Lisp]].<ref name="giarratano">{{cite book|first1=Joseph C|last1=Giarratano|first2=Gary D.|last2=Riley|date=2005|title=Expert Systems: Principles and Programming|isbn=81-315-0167-1|publisher=Thomson|location=Boston}}</ref> CLIPS incorporates a complete [[object-oriented programming]] language for writing expert systems. COOL combines the [[programming paradigm]]s of [[Procedural programming|procedural]], object oriented, and [[logic programming]] ([[automated theorem proving]]) languages.<ref name="vol1">{{cite book|last1=Riley|first1=Gary|date=30 November 2017|title=CLIPS Reference Manual: Volume 1 β Basic Programming Guide|url=https://clipsrules.sourceforge.net/documentation/v640/bpg.pdf|access-date=29 April 2023}}</ref> ==Facts and rules== CLIPS uses [[forward chaining]].<ref name="water"/><ref name="giarratano"/> Like other expert system languages, CLIPS deals with rules and facts. Various facts can make a rule applicable. An applicable rule is then fired.<ref name="water">{{cite journal|last1=Sandeep|first1=K|last2=Rakesh|first2=K|date=2011|title=CLIPS based decision support system for water distribution networks|journal=Drinking Water Engineering and Science|volume=4|issue=1|pages=37β50|doi=10.5194/dwes-4-37-2011|doi-access=free}}</ref> Facts and rules are created by first defining them, as shown below: <syntaxhighlight lang="lisp"> (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)))) </syntaxhighlight> 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. <syntaxhighlight lang="lisp"> 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 <fact>+) (Assert (object (name "chair") (Material wood) (height 3feet) (Color brown)) CLIPS(retract <fact-index+) (retract 0) for a color </syntaxhighlight> In CLIPS, ''salience'' allows a user to assign priority (or weight) to a rule. ==Descendants== Descendants of the CLIPS language include [[Jess (programming language)|Jess]] (rule-based portion of CLIPS rewritten in [[Java (programming language)|Java]], it later grew in a different direction),<ref>{{cite journal|last1=Goyal|first1=R|last2=Jayasudha|first2=T|last3=Pandey|first3=P|last4=Devi|first4=R. D|last5=Rebecca|first5=A|first6=M. Manju|last6=Sarma|last7=Lakshmi|first7=B|date=2014|title=Knowledge based system for Satellite data product selection|journal=The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences|volume=40|number=8|pages=1233β1236|doi=10.5194/isprsarchives-XL-8-1233-2014|doi-access=free|bibcode=2014ISPAr.XL8.1233G|url=https://www.proquest.com/openview/6e32cf733cd92d98974a96c1d80e3774/1?pq-origsite=gscholar&cbl=2037674}} "Jess was originally inspired by the CLIPS expert system shell, but has grown into a complete, distinct Java-influenced environment of its own."</ref> and [[FuzzyCLIPS]] (which adds concept of relevancy into the language). == See also == * [[Constraint Handling Rules]] * [[Drools]] * [[OpenL Tablets]] ==References== {{Reflist}} ==External links== * {{Official website|siliconvalleyone.com/founder/clips}}, downloads, information, news, history<!-- Likely mirror --> * [https://www.researchgate.net/publication/2706176_CLIPS_expert_system_tool_a_candidate_for_the_Diagnostic_System_engine CLIPS expert system tool: a candidate for the Diagnostic System engine] * [https://www.codeproject.com/Articles/179375/Man-Marriage-and-Machine-Adventures-in-Artificia CLIPS tutorial on Code Project] * {{GitHub|doughodson/CLIPSEditor}}, code editor for CLIPS {{Automated reasoning}} {{DEFAULTSORT:Clips}} [[Category:Expert systems]] [[Category:Public-domain software with source code]] [[Category:Domain-specific programming languages]] [[Category:Knowledge representation languages]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Automated reasoning
(
edit
)
Template:Cite book
(
edit
)
Template:Cite conference
(
edit
)
Template:Cite journal
(
edit
)
Template:Distinguish
(
edit
)
Template:GitHub
(
edit
)
Template:Infobox programming language
(
edit
)
Template:Official website
(
edit
)
Template:Refimprove
(
edit
)
Template:Reflist
(
edit
)