CLIPS

CLIPS (of English. C Language Integrated Production System, ie " C language integrated production system " ) is a software tool for creating expert systems. Became known as CLIPS data-driven (ie vorwärtsverkettendes ) production system can be created using the expert systems (XPS). It includes a written in C development environment with a Lisp -like appearance and the multi paradigme COOL programming language, which both rule-based, object- oriented, functional and the procedural programming support. Thus it combines the paradigms that are often only individually implemented by languages ​​such as Prolog (rule- based), Smalltalk (OO), Lisp ( functional) and C ( procedural).

Historical

In the 1970s and 1980s, the heyday of AI research, the U.S. space agency NASA was working on expert systems. As a programming language for AI research and rule-based systems in the 1970s was mostly Lisp ( "List Processing" ), often used on more expensive dedicated hardware. NASA continued from 1984 on such Lispmaschinen the product ART * Inference ( or short- ART, "Automated Reasoning Tool" ), a special software of Inference Corporation, which was written in Lisp and the rule definition language went back to OPS5, a.

Dissatisfied with the development, the lack of portability of the software and the high costs, NASA decided in the short term, even to develop a suitable language that was run on inexpensive Intel hardware. The project name of this language was initially NAIL ( " NASA Artificial Intelligence Language" ), and it was for the purpose of greater platform independence since 1985 in ISO -C instead written in Lisp. In order to continue the inventory of existing ART software, they should lexically, semantically and functionally a 1:1 copy of the previously used by NASA commercial product ART (without use and knowledge of their sources ). The user environment was known of Lisp modeled. However, the language range of CLIPS compared to the original ART * Inference had due to the weaker Intel platform ( the absolute addressable memory boundary at the time was only 640 kB) to be slimmed down. 1985 was the first prototype, the year version 1.0 was reached. In the summer of 1986, CLIPS was made ​​publicly available by NASA as version 3.0 ( "public domain", and later the sources).

Development

Until 1988, then followed at a high repetition new versions and sub-versions with advanced functionalities and CLIPS became gradually more widespread in business and in academia. Was completely rewritten and modularized CLIPS then between version 4.1 (1986) and 4.2 (1988). With this version, a detailed guide to the CLIPS architecture was also released for the first time, also functionality was added to the validation and verification of the rules. New functionality came in 1989 with version 4.3. Until then, CLIPS was a purely "logical" language with deductions based on the Rete algorithm. With CLIPS 5.0 1991 further program paradigms, however, were introduced: the procedurally - imperative and object orientation. This was related to the introduction of OOP language COOL ( "Clips Object - Oriented Language ", ie, object-oriented CLIPS language). With CLIPS 5.1 1991 there were extensions to the X Window System, MS -DOS and Macintosh interfaces. CLIPS 6.1 supported then from 1998 C compiler. CLIPS 6.2 finally brought a further expansion of the supported interfaces for the operating systems MS Windows 95, 98, Windows NT, and MacOS X.

2008 CLIPS reached version 6.30. It is characterized mainly by an improved integration into C . NET and Java.

For version 6.4, according to FAQ of the CLIPS website Unicode support is provided, which is also relevant for language interoperability, since all current operating systems on which CLIPS is run, as well as some of the measures provided for software integration programming languages ​​and runtime environments (Java and. NET support ) Unicode already for many years.

Technical

With CLIPS expert systems can be created in the classical sense. Before you run the source code with a standard ANSI C compiler must be compiled for each platform. Such compilers are available for all major platforms before.

CLIPS can be embedded but also by run -time programs into other programs that are written in common languages. These were initially C, C , Ada, and later more languages ​​were added, such as Delphi and Java. This possible embedding in other languages ​​is a conscious desirable characteristic of CLIPS / COOL over other logical or AI languages ​​such as Prolog, Planner or Lisp (which in the 1970s and 1980s, the AI scene dominated ), as this interoperationality with existing software environments, Reusing existing code and the transfer of knowledge be promoted and also the effort to familiarize themselves with CLIPS, is decreased.

Operation in a case study

CLIPS works for logical deductions as usual with facts (logical premises ) and rules (logical syllogistic figures ). The common already in the ancient logic circuit figure of the Modus Ponens ( or, more precisely differentiated here: the darii mode ) is often represented by the following example:

  • All men are mortal.
  • Socrates is a man.
  • It follows that Socrates is mortal.

It is to show how CLIPS from the facts (lines 1 and 2) produces the conclusion ( statement, line 3 ). First, the knowledge base about the two relevant inputs will be enhanced:

  • Men are mortal.
  • Socrates is a man.

Now we add another factor:

  • Dogs are mortal.

In CLIPS language that denomination is as follows:

( deffacts truths       ( man is mortal)       ( Socrates is human )       ( dog is mortal)    ) Note the Lisp - like notation of CLIPS use parentheses with the order (Operator Argument argument).

The applicable rule of inference (the mode ponens ) reads as follows:

  • If and only if a implies b and b implies c, also follows: a implies c,

What is in CLIPS language:

( defrule translation       ( is? a? b )       ( is? b? c )        ⇒       ( assert ( is? a? c ) )    ) Prior to the first embodiment of this rule, our knowledge base looks for a query even like this:

1 - ( man is mortal)     2 - ( Socrates is human )     3 - ( dog is mortal) Now we apply the above formulated rule once on the set facts. CLIPS is then the following:

1 - ( man is mortal)     2 - ( Socrates is human )     3 - ( dog is mortal)     4 - ( Socrates is mortal ) The system stops when all the rules were applied to all the facts. The conclusion is simply added as a new fact of the knowledge base. Therefore, we now find a new statement in the knowledge base before, in CLIPS language " ( Socrates is mortal) " or translated back into the syntax of everyday language: Socrates is mortal. And as we also notice the system has made ​​" (dog is mortal ) " does not come to the conclusion " ( Socrates is Dog) " is thus not fallen for the famous sophism, which was in ancient times a well-known fallacy.

Follow-up projects

From CLIPS companies Inference and its successor a number of products launched from that were renamed again or new follow-up projects initiated. So there was the software products ( in this temporal sequence ) (later called ARTEnterprise ) ART- IM, Eclipse (not to be confused with the same development environment ), whose successor Haley Rules and CLIPS/R2 ( from the company Production Systems Technology).

A functionally first simplified version of CLIPS is ( "Java Expert System Shell" ) for the operating system Unix and MS Windows platforms available, since version 7, the rule definition language includes JessML since 1995 under the name JESS. JESS, has been completely re-written at Sandia National Laboratories in Livermore, USA in Java and designed for use with, or as an extension of Java. It is against the CLIPS functionality is somewhat reduced, it offers less choice of rule application strategies waived modules and provides most of the features of COOL not to, because Java provides these missing features are concerned. However JESS can be used completely without Java. Unlike CLIPS JESS is not open source. Commercial users also need an appropriate use permit. In October 2013, version 8.0 was released with initial support for the Android mobile operating system.

A fuzzy logic to extended version of CLIPS is FuzzyCLIPS ( "Fuzzy Extension to the CLIPS Expert System Shell" ). The system uses two additional concepts: Blur ( " fuzziness " ) and uncertainty. FuzzyCLIPS allows free mixing of fuzzy and ordinary expressions for the rules and facts of an expert system. It was developed at the Institute for Information Technology of the National Authority for Scientific and Industrial Research of Canada and also found its way into the integrated software development environment Eclipse. Due to the high expense adjustment to new CLIPS versions of the project from 2010 was no longer being developed.

EHSIS ( " Erabaki Hartzea SIstemen Sortzailea " ) is a commercial, written in C Spanish-language integrated development environment to create expert systems based on CLIPS and FuzzyCLIPS. It supports a variety of communication protocols, database connectors and multimedia interfaces, but only runs under MS Windows. EHSIS has been used primarily in the medical sector and at universities in Latin America.

Since 2004, the Python module PyCLIPS 1.0 is available, an extension module for the Python programming language that provides the complete CLIPS functionality in Python.

2001 David Young began an inspired by CLIPS and JESS system named LISA ( " Lisp -based Intelligent Software Agents" ) to develop, which is written in the Common Lisp Object System of ANSI Common Lisp. The objectives of Young are completely free availability and maximum portability ( portability ) of the sources as well as interoperability with as many of the Common Lisp variants. The first productive release appeared as Version 1.0 August 31, 2001, Version 3.0 was released on September 8, 2007. It runs with LispWorks, ACL, CLISP, CMUCL, SBCL and OpenMCL.

194128
de