An Introduction to the CLIPS Programming Language

Total Page:16

File Type:pdf, Size:1020Kb

An Introduction to the CLIPS Programming Language An Introduction to the CLIPS Programming Language Jack L. Watkin Department of Electrical and Computer Engineering University of Dayton Dayton, Ohio 45469–0232 USA [email protected] ABSTRACT Programming Languages We provide an introduction to clips—a declarative programming language for implementing expert systems. KEYWORDS Procedural Nonprocedural clips, expert systems, rule-based language. Imperative Functional Jack L. Watkin. 2017. An Introduction to the CLIPS Programming Nondeclarative Declarative Language. CPS 499-03: Emerging Languages, University of Dayton, c lisp Ohio 45469–0232 USA, Spring 2017, 4 pages. Articial Rule Based Logic Neural Systems 1 INTRODUCTION clips prolog Originally called nasa’s Articial Intelligence Language (nail), Figure 1: A hierarchy of programming paradigms and lan- clips started as a tool for creating expert systems at nasa in the guages (adapted from [2]). 1980s. clips stands for CLanguage Integrated Production System. In AI, a production system is a computer system which relies on facts and rules to guide its decision making. clips is a nonpro- Table 1: Essential clips shell commands. cedural, declarative, and rule-based language, which is dierent than more traditional programming languages like c or lisp. Fig. 1 Command Function situates clips in relation to other programming paradigms and (run) Run the inference engine. languages [2]. (facts) Retrieve the current fact-list. (clear) Restores CLIPS to start-up state. 2 CLIPS FROM THE COMMAND LINE (retract n) Retract fact n. The clips shell can be invoked in unix-based systems through (retract *) Retract all facts. the clips command. From within the shell, the user can assert (watch facts) Observe facts entering or exiting memory. facts, defrules, and (run) the inference engine. To load facts and rules from an external le, use the -f option (e.g., clips -f database.clp). Table 1 is a summary of commands to be used from ( d e f r u l e within the clips shell or that can be used in clips scripts. (weather raining) => 3 EXPERT SYSTEMS IN CLIPS (assert (carry umbrella))) An expert system is a computer program capable of modeling the The assert keyword denes facts, which are inserted in fifo or- knowledge of a human expert [3]. In clips expert systems, knowl- der into the fact-list. Facts can also be added to the fact-list edge is represented as facts and rules. Facts are axioms that are through the deffacts command. The following is the general syn- asserted as true. Rules are declarations expressed in the form of an tax [3]1 of a rule: IF THEN statement. For example, a fact may be ‘It is raining,’ and a rule could be ‘If it is raining, then I carry an umbrella.’ In clips this (defrule rule_name fact and rule could be written as: (pattern_1) ; IF Condition 1 (assert (weather raining)) (pattern_2) ; And Condition 2 . Permission to make digital or hard copies of part or all of this work for personal or (pattern_N) ; And Condition N classroom use is granted without fee provided that copies are not made or distributed for prot or commercial advantage and that copies bear this notice and the full citation => ; THEN on the rst page. Copyrights for third-party components of this work must be honored. (action_1) ; Perform Action 1 For all other uses, contact the owner/author(s). CPS 499-03: Emerging Languages, University of Dayton, Ohio 45469–0232 USA (action_2) ; And Action 2 © 2017 Copyright held by the owner/author(s). 1Note that ; begins a comment. CPS 499-03: Emerging Languages, Spring 2017, University of Dayton, Ohio 45469–0232 USA J.L. Watkin . multiple facts, where each fact is a slot in the template. Rules can . be pattern matched to templates based on a subset of a template’s (action_N)) ; And Action N slots. Below is a demonstration of the use of pattern matching to select specic data from a database of facts. When the user issues the (run) command, the clips inference engine pattern matches facts with rules. If all patterns are matched (deftemplate car within the rule, then the actions associated with that rule are red. ( s l o t make ( type SYMBOL ) 4 THEORY OF CLIPS ( allowed −symbols In logic programming languages like prolog, the inference engine truck compact) is given a goal that it then sets out to prove based on the system’s (default compact)) knowledge base. This approach is called backward chaining because (multislot name the system works backward from a goal to nd a path to prove ( type SYMBOL ) that the goal is true. clips works in the opposite direction. clips (default ?DERIVE))) takes asserted facts and attempts to match them to rules to make (deffacts cars inferences. This is known as forward chaining. The diagram shown in Fig. 2 illustrates the overall architecture of the clips system [4]. (car (make truck) The Match-Resolve-Act Cycle is the foundation of the clips in- (name Tundra)) ference engine which performs pattern matching between rules (car (make compact) and facts through the use of the Rete Algorithm. Once the clips (name Accord)) inference engine has matched all applicable rules, conict resolu- (car (make compact) tion occurs. Conict resolution is the process of scheduling rules (name Passat ))) that were matched at the same time. Once the actions have been performed, the inference engine returns to the pattern matching (defrule compactcar stage to search for new rules that may be matched as a result of the (car (make compact) previous actions. This continues until a xed point is reached. (name ?name)) 5 FEATURES => (printout t ?name crlf)) 5.1 Variables ? ?x Variables in clips are prexed with a (e.g., ). Variables need 5.3 Conditional Facts in Rules not be declared explicitly. However, variables must be bound to a value before they are used. Consider the following program that Pattern matching need not match an exact pattern. Rather logi- computes a factorial: cal operands can be applied to the patterns to support conditional matches. This is done through the or (|), and (&), and not (~) opera- (defrule factorial tors. The following rule demonstrates the use of these operators: (factrun ?x) (defrule walk => (light ~red&~yellow) ;if the light (assert (fact ?x 1))) ; isn ' t yellow and ; isn ' t red (defrule facthelper (cars none|stopped) ;no cars or stopped ( f a c t ? x ?y ) => (test (> ?x 0)) (printout t "Walk" crlf)) => (assert (fact ( − ? x 1 ) ( ∗ ? x ?y ) ) ) ) When the facts for the rule facthelper are pattern matched, ?x and 6 DECISION TREES, FLOW CHARTS, AND ?y are bound with values. Next, the bound value for ?x is used to STATE MACHINES evaluate the validity of the fact (test (> ?x 0)). When variables An application of clips is decision trees. More generally, clips are bound within a rule, that binding exists only within that rule. can be applied to graphs that represent a human decision-making For persistent global data, defglobal should be used as follows: process. Facts can be thought of as the edges of these graphs, while (defglobal ? ∗ var ∗ = " " ) rules can be thought of as the actions or states associated with each node of the graph. Assignment to global variables is done with the bind operator. One example of this decision making process is an expert sys- tem that emulates a doctor in treating, diagnosis, and explaining 5.2 Templates diabetes [1]. The patient asserts facts about herself including eating Templates are used to associate related data (e.g., facts) in a single habits, blood-sugar levels, and symptoms. The rules within this ex- package—similar to structs in c. Templates are containers for pert system match these facts and provide recommendations about An Introduction to the CLIPS Programming LanguageCPS499-03: Emerging Languages, Spring 2017, University of Dayton, Ohio 45469–0232 USA Figure 2: Overall architectural design of clips (adapted from [2]). managing diabetes in the same way a doctor may interact with a CLIPS> (reset) patient. CLIPS> (run) String? aabbba 7 EXERCISES Accepted The following are programming exercises that incorporate essential clips concepts: CLIPS > (1) Build a state machine using clips that accepts a language (2) Rewrite the factorial program in x 5.1 so that only the fact L consisting of strings in which the number of a’s in the with the nal result of the factorial rule is stored in the fact string is a multiple of three over an alphabet {a,b}. Hint: list. Hint: retract can be used to remove facts from the use the following state machine for L: fact list. Examples: CLIPS> (assert (fact_run 5)) CLIPS> (run) CLIPS> (facts) f −0 (fact_run 5) f −1 (fact 0 120) CLIPS > 8 CONCLUSION Clips is a language which allows for the implementation of ‘rule of thumb’ knowledge similar to that of a human expert. These forward-chaining systems help a computer make heuristic decisions by considering the facts (or lack of facts) of a situation and drawing conclusions. Because clips can handle arbitrarily large data, it has an advantage over human experts because humans are limited in Examples: their ability to consider many facts at once. CLIPS> (run) String? aaabba REFERENCES [1] M. Garcia, T. Gandhi, J. Singh, L. Duarte, R. Shen, M. Dantu, S. Ponder, and R e j e c t e d H. Ramirez. 2001. Esdiabetes (an Expert System in Diabetes). Consortium for Computing Sciences in Colleges. 166–175 pages. CPS 499-03: Emerging Languages, Spring 2017, University of Dayton, Ohio 45469–0232 USA J.L. Watkin [2] J.C. Giarratano and G. Riley. 1998. Expert systems principles and programming. [4] P. Lucas and L. van der Gaag. 1991. Principles of expert systems. Addison-Wesley, PWS Publishing Company, Boston, MA.
Recommended publications
  • User's Guide PDF.Pages
    CLIPS User’s Guide by Joseph C. Giarratano, Ph.D. Version 6.30 Table of Contents Readme ....................................................................................i Just the Facts ............................................................................1 Following the Rules ...............................................................20 Adding Details .......................................................................29 Variable Interests ...................................................................36 Doing It Up In Style .............................................................49 Being Functional ...................................................................59 How to Be in Control ............................................................70 Matters of Inheritance ..........................................................78 Meaningful Messages ............................................................96 Fascinating Facets ................................................................109 Handling Handlers ..............................................................116 Questions and Answers .......................................................145 Support Information ...........................................................154 Readme The first step on the road to wisdom is the admission of ignorance. The second step is realizing that you don’t have to blab it to the world. This section was formerly called the Preface, but since nobody read it, I renamed it to a more conventional title that computers
    [Show full text]
  • Evaluation and Implementation of Match Algorithms for Rule-Based Multi-Agent Systems Using the Example of Jadex
    Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Evaluation and Implementation of Match Algorithms for Rule-based Multi-Agent Systems using the Example of Jadex Master's Thesis Diplomarbeit Eryk Lagun [email protected] Studiengang Informatik Matrikelnummer: 5318142 Fachsemester: 16 Erstgutachter: Dr. Lars Braubach Zweitgutachter: Dr. Guido Gryczan Contents 1 Introduction.....................................................................................................1 1.1 Motivation and Goals....................................................................................................1 1.2 Context and Scope.........................................................................................................2 1.3 Intended Readers........................................................................................................... 4 1.4 Outline ........................................................................................................................... 4 2 Background......................................................................................................6 2.1 Rule-based Systems....................................................................................................... 6 2.1.1 Definition............................................................................................................ 7 2.1.2 Rule Execution................................................................................................... 8 2.1.3 Recognize-Act Cycle..........................................................................................8
    [Show full text]
  • Third Conference on CLIPS Proceedings (Electronic Version)
    ’94 Third Conference on CLIPS Proceedings (Electronic Version) September 12–14, 1994 Lyndon B. Johnson Space Center Third Conference on CLIPS November 15, 1994 CONTENTS INTRODUCTION ..........................................................................................................1 THE BUFFER DIAGNOSTIC PROTOTYPE A FAULT ISOLATION APPLICATION USING CLIPS .............................................3 ON THE DEVELOPMENT OF AN EXPERT SYSTEM5 FOR WHEELCHAIR SELECTION...............................................................................5 EXPERT WITNESS - A SYSTEM FOR DEVELOPING EXPERT MEDICAL TESTIMONY ..............................................................................19 A CLIPS-BASED EXPERT SYSTEM FOR THE EVALUATION AND SELECTION OF ROBOTS .......................................................23 THE DESIGN AND IMPLEMENTATION OF EPL: AN EVENT PATTERN LANGUAGE FOR ACTIVE DATABASES..........................35 EMBEDDING CLIPS INTO C++ ..................................................................................43 EXPERT SYSTEM SHELL TO REASON ON LARGE AMOUNT OF DATA ..........45 AI & WORKFLOW AUTOMATION: THE PROTOTYPE ELECTRONIC PURCHASE REQUEST SYSTEM .....................55 A KNOWLEDGE-BASED SYSTEM FOR CONTROLLING AUTOMOBILE TRAFFIC ...............................................................63 DEVELOPMENT OF AN EXPERT SYSTEM FOR POWER QUALITY ADVISEMENT USING CLIPS 6.0..............................................75 QPA-CLIPS: A LANGUAGE AND REPRESENTATION FOR PROCESS CONTROL...........................................................................................83
    [Show full text]
  • CLIPS Basic Programming Guide Version 6.30 March 17Th 2015
    Reference Manual Volume I Basic Programming Guide Version 6.30 March 17th 2015 CLIPS Reference Manual CLIPS Basic Programming Guide Version 6.30 March 17th 2015 CONTENTS License Information ....................................................................................................................... i Preface ........................................................................................................................................... iii Acknowledgements ...................................................................................................................... vii Section 1: Introduction .................................................................................................................. 1 Section 2: CLIPS Overview .......................................................................................................... 3 2.1 Interacting with CLIPS ........................................................................................................ 3 2.1.1 Top Level Commands ................................................................................................ 3 2.1.2 Automated Command Entry and Loading .................................................................. 4 2.1.3 Integration with Other Programming Languages ....................................................... 5 2.2 Reference Manual Syntax .................................................................................................... 5 2.3 Basic Programming Elements ............................................................................................
    [Show full text]
  • CLIPS 6.4 User's Guide
    CLIPS 6.4 User’s Guide by Joseph C. Giarratano, Ph.D. Table of Contents Readme ...................................................................................3 Just the Facts ............................................................................6 Following the Rules ...............................................................24 Adding Details .......................................................................33 Variable Interests ...................................................................40 Doing It Up In Style .............................................................53 Being Functional ...................................................................63 How to Be in Control ............................................................74 Matters of Inheritance ..........................................................82 Meaningful Messages ............................................................98 Fascinating Facets ................................................................111 Handling Handlers ..............................................................118 Questions and Answers .......................................................147 Support Information ...........................................................156 Readme The first step on the road to wisdom is the admission of ignorance. The second step is realizing that you don’t have to blab it to the world. This section was formerly called the Preface, but since nobody read it, I renamed it to a more conventional title that computers users
    [Show full text]
  • An Introduction to Declarative Programming in CLIPS and PROLOG Jack L
    University of Dayton eCommons Computer Science Faculty Publications Department of Computer Science 7-2019 An Introduction to Declarative Programming in CLIPS and PROLOG Jack L. Watkin University of Nebraska - Lincoln Adam C. Volk University of Nebraska - Lincoln Saverio Perugini University of Dayton, [email protected] Follow this and additional works at: https://ecommons.udayton.edu/cps_fac_pub Part of the Graphics and Human Computer Interfaces Commons, and the Other Computer Sciences Commons eCommons Citation Watkin, Jack L.; Volk, Adam C.; and Perugini, Saverio, "An Introduction to Declarative Programming in CLIPS and PROLOG" (2019). Computer Science Faculty Publications. 179. https://ecommons.udayton.edu/cps_fac_pub/179 This Conference Paper is brought to you for free and open access by the Department of Computer Science at eCommons. It has been accepted for inclusion in Computer Science Faculty Publications by an authorized administrator of eCommons. For more information, please contact [email protected], [email protected]. Int’l Conf. Scientific Computing j CSC’19 j 105 An Introduction to Declarative Programming in CLIPS and PROLOG Jack L. Watkin, Adam C. Volk1, and Saverio Perugini2 1Department of Mathematics, University of Nebraska Lincoln, Lincoln, Nebraska, USA 2Department of Computer Science, University of Dayton, Dayton, Ohio, USA Programming Languages Abstract— We provide a brief introduction to CLIPS—a declarative/logic programming language for implementing expert systems—and PROLOG—a declarative/logic program- ming language based on first-order, predicate calculus. Un- Procedural Non-procedural like imperative languages in which the programmer specifies how to compute a solution to a problem, in a declarative Imperative Functional language, the programmer specifies what they what to find, Non-declarative Declarative C LISP and the system uses a search strategy built into the language.
    [Show full text]
  • C LANGUAGE INTEGRATED PROD~~Q~SYSTEM Gary Riley Software Technology Branch NASA Johnson Space Center Mail Stop PT4 Houston, TX 77058 ABSTRACT
    https://ntrs.nasa.gov/search.jsp?R=19960022632 2020-06-16T04:50:23+00:00Z View metadata, citation and similar papers at core.ac.uk brought to you by CORE provided by NASA Technical Reports Server CLIPS C LANGUAGE INTEGRATED PROD~~Q~SYSTEM Gary Riley Software Technology Branch NASA Johnson Space Center Mail Stop PT4 Houston, TX 77058 ABSTRACT Expert systems are computer programs which emulate human expertise in well defined problem domains. The potential payoff from expert systems is high valuable expertise can be captured and preserved, repetitive and/or mundane tasks requiring human expertise can be automated, and uniformity can be applied in decision making processes. The C Language Integrated Production System (CLIPS) is an expert system building tool, developed at the Johnson Space Center, which provides a complete environment for the development and delivery of rule and/or object based expert systems. CLIPS was specifically designed to provide a low cost option for developing and deploying expert system applications across a wide range of hardware platforms. The commercial potential of CLIPS is vast. Currently, CLIPS is being used by over 5,000 individuals throughout the public and private sector. Because the CLIPS source code is readily available, numerous groups have used CLIPS as the basis for their own expert system tools. To date, three commercially available tools have been derived from CLIPS. In general, 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. INTRODUCTION Conventional programming languages, such as FORTRAN and C, are designed and optimized for the procedural manipulation of data (such as numbers and arrays).
    [Show full text]
  • Production and Rewrite Systems Horatiu Cirstea, Claude Kirchner, Michael Moossen, Pierre-Etienne Moreau
    Production and Rewrite Systems Horatiu Cirstea, Claude Kirchner, Michael Moossen, Pierre-Etienne Moreau To cite this version: Horatiu Cirstea, Claude Kirchner, Michael Moossen, Pierre-Etienne Moreau. Production and Rewrite Systems. [Research Report] 2004, pp.23. inria-00280939 HAL Id: inria-00280939 https://hal.inria.fr/inria-00280939 Submitted on 20 May 2008 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. M´eta-compilation non intrusive du filtrage par contraintes Non intrusive meta-compilation of matching by constraints Sous Projet 1 RETE et r´e´ecriture Production and Rewrite Systems Description : This report studies the relationship between producton systems and term rewrite systems. Auteur(s) : Horatiu C, Claude K, Michael M, Pierre-Etienne M R´ef´erence : M / Sous Projet 1 / Fourniture 1.2 / V0.8 Date : 31 aoˆut 2004 Statut : `avalider Version : 0.8 R´eseau National des Technologies Logicielles Projet subventionn´epar le Minist`ere de l’´economie, des finances et de l’industrie ILOG, INRIA Lorraine, INRIA Rocquencourt M – M´eta-compilation non intrusive du filtrage par contraintes Historique 31 aoˆut 2004 V 0.8 cr´eation du document 15 septembre 2004 V1.0 version finale Contents 1 Definition of production systems 3 1.1 Informal presentation of production systems .
    [Show full text]
  • Reference Manual
    Reference Manual Volume I Basic Programming Guide Version 6.05 November 1st 1997 CLIPS Reference Manual CLIPS Basic Programming Guide Version 6.05 November 1st 1997 CONTENTS Preface..........................................................................................................................................xv Acknowledgements.....................................................................................................................xix Section 1 - Introduction ................................................................................................................1 Section 2 - CLIPS Overview.........................................................................................................3 2.1 Interacting with CLIPS .......................................................................................................3 2.1.1 Top Level Commands................................................................................................3 2.1.2 Automated Command Entry and Loading .................................................................4 2.1.3 Integration with Other Languages..............................................................................5 2.2 Reference Manual Syntax ...................................................................................................5 2.3 Basic Programming Elements.............................................................................................6 2.3.1 Data Types .................................................................................................................6
    [Show full text]