This article needs additional citations for verification .(September 2013) |
Paradigm | object-oriented, expert system |
---|---|
Developer | NASA Johnson Space Center |
First appeared | 1985 |
Stable release | 6.4.1 / April 21, 2023 |
Memory management | garbage collected |
Implementation language | C |
License | public domain |
Website | clipsrules |
Influenced by | |
OPS5 |
CLIPS (C Language Integrated Production System) is a public-domain software tool for building expert systems. The 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. [1] 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 Lisp. [2]
CLIPS incorporates a complete object-oriented programming language for writing expert systems. COOL combines the programming paradigms of procedural, object oriented, and logic programming (automated theorem proving) languages. [3]
CLIPS uses forward chaining. [4] [2] Like other expert system languages, CLIPS deals with rules and facts. Various facts can make a rule applicable. An applicable rule is then fired. [4] Facts and rules are created by first defining them, as shown below:
(deftemplatecar_problem(slotname)(slotstatus))(deffactstrouble_shooting(car_problem(nameignition_key)(statuson))(car_problem(nameengine)(statuswont_start))(car_problem(nameheadlights)(statuswork)))(defrulerule1(car_problem(nameignition_key)(statuson))(car_problem(nameengine)(statuswont_start))=>(assert(car_problem(namestarter)(statusfaulty))))
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)0rule1:f-1,f-2Foratotalof1activation.CLIPS>(facts)f-0(initial-fact)f-1(car_problem(nameignition_key)(statuson))f-2(car_problem(nameengine)(statuswont_start))f-3(car_problem(nameheadlights)(statuswork))Foratotalof4facts.CLIPS>(run)CLIPS>(facts)f-0(initial-fact)f-1(car_problem(nameignition_key)(statuson))f-2(car_problem(nameengine)(statuswont_start))f-3(car_problem(nameheadlights)(statuswork))f-4(car_problem(namestarter)(statusfaulty))Foratotalof5facts.CLIPS>(assert<fact>+)(Assert(object(name"chair")(Materialwood)(height3feet)(Colorbrown))CLIPS(retract<fact-index+)(retract0)foracolor
In CLIPS, salience allows a user to assign priority (or weight) to a rule.
Descendants of the CLIPS language include Jess (rule-based portion of CLIPS rewritten in Java, it later grew in a different direction), [5] and FuzzyCLIPS (which adds concept of relevancy into the language).
Erlang is a general-purpose, concurrent, functional high-level programming language, and a garbage-collected runtime system. The term Erlang is used interchangeably with Erlang/OTP, or Open Telecom Platform (OTP), which consists of the Erlang runtime system, several ready-to-use components (OTP) mainly written in Erlang, and a set of design principles for Erlang programs.
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 if–then rules rather than through conventional procedural programming code. Expert systems were among the first truly successful forms of AI software. They were created in the 1970s and then proliferated in the 1980s, being then widely regarded as the future of AI — before the advent of successful artificial neural networks. An expert system is divided into two subsystems: 1) a knowledge base, which represents facts and rules; and 2) an inference engine, which applies the rules to the known facts to deduce new facts, and can include explaining and debugging abilities.
Knowledge representation and reasoning is the field of artificial intelligence (AI) dedicated to representing information about the world in a form that a computer system can use to solve complex tasks such as diagnosing a medical condition or having a dialog in a natural language. Knowledge representation incorporates findings from psychology about how humans solve problems and represent knowledge, in order to design formalisms that will make complex systems easier to design and build. Knowledge representation and reasoning also incorporates findings from logic to automate various kinds of reasoning.
In computer programming, a macro is a rule or pattern that specifies how a certain input should be mapped to a replacement output. Applying a macro to an input is known as macro expansion. The input and output may be a sequence of lexical tokens or characters, or a syntax tree. Character macros are supported in software applications to make it easy to invoke common command sequences. Token and tree macros are supported in some programming languages to enable code reuse or to extend the language, sometimes for domain-specific languages.
Jess is a rule engine for the Java computing platform, written in the Java programming language. It was developed by Ernest Friedman-Hill of Sandia National Laboratories. It is a superset of the CLIPS language. It was first written in late 1995. The language provides rule-based programming for the automation of an expert system, and is often termed as an expert system shell. In recent years, intelligent agent systems have also developed, which depend on a similar ability.
In computer science, a compiler-compiler or compiler generator is a programming tool that creates a parser, interpreter, or compiler from some form of formal description of a programming language and machine.
In the field of artificial intelligence, an inference engine is a software component of an intelligent system that applies logical rules to the knowledge base to deduce new information. The first inference engines were components of expert systems. The typical expert system consisted of a knowledge base and an inference engine. The knowledge base stored facts about the world. The inference engine applied logical rules to the knowledge base and deduced new knowledge. This process would iterate as each new fact in the knowledge base could trigger additional rules in the inference engine. Inference engines work primarily in one of two modes either special rule or facts: forward chaining and backward chaining. Forward chaining starts with the known facts and asserts new facts. Backward chaining starts with goals, and works backward to determine what facts must be asserted so that the goals can be achieved.
The history of programming languages spans from documentation of early mechanical computers to modern tools for software development. Early programming languages were highly specialized, relying on mathematical notation and similarly obscure syntax. Throughout the 20th century, research in compiler theory led to the creation of high-level programming languages, which use a more accessible syntax to communicate instructions.
On-board diagnostics (OBD) is a term referring to a vehicle's self-diagnostic and reporting capability. In the United States, this capability is a requirement to comply with federal emissions standards to detect failures that may increase the vehicle tailpipe emissions to more than 150% of the standard to which it was originally certified.
A check engine light or malfunction indicator lamp (MIL), is a tell-tale that a computerized engine-management system used to indicate a malfunction or problem with the vehicle ranging from minor to serious. Found on the instrument panel of most automobiles, it usually bears the legend engine, check engine, service engine soon, maintenance required, emiss maint, or a pictogram of an engine—and when illuminated, it is typically an amber or red color.
API Calculus is a program that solves calculus problems using operating systems within a device. In 1989, the PI Calculus was created by Robin Milner and was very successful throughout the years. The PI Calculus is an extension of the process algebra CCS, a tool with algebraic languages specific to processing and formulating statements. It provides a formal theory for modeling systems and reasoning about their behaviors. In the PI Calculus, there are two specific variables: name and processes. In 2002, Shahram Rahimi decided to create an upgraded version of the PI Calculus and called it the API Calculus. Milner claimed the detailed characteristics of the API Calculus to be its "Communication Ability, Capacity for Cooperation, Capacity for Reasoning and Learning, Adaptive Behavior, and Trustworthiness."
The Rule Interchange Format (RIF) is a W3C Recommendation. RIF is part of the infrastructure for the semantic web, along with (principally) SPARQL, RDF and OWL. Although originally envisioned by many as a "rules layer" for the semantic web, in reality the design of RIF is based on the observation that there are many "rules languages" in existence, and what is needed is to exchange rules between them.
The DMS Software Reengineering Toolkit is a proprietary set of program transformation tools available for automating custom source program analysis, modification, translation or generation of software systems for arbitrary mixtures of source languages for large scale software systems. DMS was originally motivated by a theory for maintaining designs of software called Design Maintenance Systems. DMS and "Design Maintenance System" are registered trademarks of Semantic Designs.
In computer science, a rule-based system is a computer system in which domain-specific knowledge is represented in the form of rules and general-purpose reasoning is used to solve problems in the domain.
Domain-specific multimodeling is a software development paradigm where each view is made explicit as a separate domain-specific language (DSL).
Hamcrest is a framework that assists writing software tests in the Java programming language. It supports creating customized assertion matchers, allowing match rules to be defined declaratively. These matchers have uses in unit testing frameworks such as JUnit and jMock. Hamcrest has been included in JUnit 4 since 2012, but was omitted from JUnit 5 in 2017.
Go is a statically typed, compiled high-level programming language designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson. It is syntactically similar to C, but also has memory safety, garbage collection, structural typing, and CSP-style concurrency. It is often referred to as Golang because of its former domain name, golang.org
, but its proper name is Go.
d3web is a free, open-source platform for knowledge-based systems . Its core is written in Java using XML and/or Office-based formats for the knowledge storage. All of its components are distributed under the terms of the Lesser General Public Licence (LGPL).
The General Motors ignition switch recalls refers to February 6, 2014 when General Motors recalled about 800,000 of its small cars due to faulty ignition switches, which could shut off the engine while the vehicle was in motion and thereby prevent the airbags from inflating. The company continued to recall more of its cars over the next several months, resulting in nearly 30 million cars recalled worldwide and paid compensation for 124 deaths. The fault had been known to GM for at least a decade prior to the recall being declared. As part of a Deferred Prosecution Agreement, GM agreed to forfeit $900 million to the United States.