CLIPS
CLIPS is publicdomainsoftware voor het ontwikkelen van expertsystemen. CLIPS is een acroniem voor C Language Integrated Production System. De ontwikkeling van CLIPS begon in 1985 op het Lyndon B. Johnson Space Center van de NASA.

Overzicht 
CLIPS is geschreven in C en het kan geïntegreerd worden in bestaande applicaties. De syntaxis van CLIPS lijkt op die van Lisp. In CLIPS wordt, zoals in andere expertsystemen, gebruikgemaakt van een verzameling feiten en regels. Deze regels geven aan welke nieuwe feiten geconcludeerd kunnen worden als aan bepaalde premissen is voldaan (dit is de manier waarop CLIPS functioneert; ter vergelijking, in Prolog begint een redenatie bij de conclusie om zo terug te redeneren naar de bekende feiten). CLIPS maakt gebruik van het Rete-algoritme om regels toe te passen en de feitenverzameling uit te breiden.

De eerste prototypeversie werd ontwikkeld in 1985. De eerste naam van het project was NAIL (NASA's AI Language).

Werking 

Een expertsysteem in CLIPS bestaat uit feiten en afleidingsregels. CLIPS maakt gebruik van bottom-up inferentie voor het afleiden van nieuwe feiten. Een afleidingsregel wordt toegepast als aan de premissen van de regel voldaan is (dit is het geval als er feiten zijn die overeenkomen met die premissen). Een afleidingsregel in CLIPS heeft de volgende vorm:
 (defrule naam-van-regel
     (voorwaarde1)
     (voorwaarde2)
     ...
     =>
     (actie1)
     (actie2)
     ...
 )
Bijvoorbeeld:
 (defrule voorbeeld-regel
     (voorwaarde1 ?var1)
     (voorwaarde2 ?var2 ?var3)
     =>
     (printout t "Regel toegepast" crlf)
 )
Voor de => staan de premissen van de regel en erna staan de acties die gedaan moeten worden als de regel wordt toegepast (in dit geval het weergeven van een tekst maar in het gangbare geval kunnen nieuwe feiten toegevoegd of teruggetrokken worden met assert en retract). De premissen kunnen bepaalde variabelen hebben, deze worden aangeduid met een vraagteken. CLIPS controleert of er een geldige toekenning van waarden aan deze variabelen is zodanig dat er aan de premissen voldaan wordt. De waarde van een variabele kan in de rest van de regel gebruikt worden.

Salience
Het kan zijn dat er meerdere regels zijn waarbij aan de premissen voldaan is. In dit geval dient er een keuze gemaakt te worden welke regel toegepast wordt. Het is om deze reden mogelijk om salience toe te kennen aan een regel wat de prioriteit van een regel aanduidt: regels met een hogere salience gaan voor regels met een lagere salience:
 (defrule regel-A
     (declare (salience 20))
     (voorwaarde1 ?var1)
     (voorwaarde2 ?var2 ?var3)
     =>
     (printout t "Regel A toegepast" crlf)
 )

 (defrule regel-B
     (declare (salience 10))
     (voorwaarde1 ?var1)
     (voorwaarde2 ?var2 ?var3)
     =>
     (printout t "Regel B toegepast" crlf)
 )
Door de salience gaat regel A voor regel B.

Zie ook 
 Prolog

Externe links 
 Projectpagina
  CLIPS, SourceForge.net
  CLIPS, Geschiedenis en informatie

Expertsysteem
Software in het publiek domein