Tema 6: Representaci´ on del conocimiento on mediante reglas C. Grac Gracia iani ni D´ıaz ıaz F. J. Mart´ Mart´ın Ma Mate teos os J. L. Ruiz Reina Dpto. Ciencias de la Computaci´ on e Inteligencia Artificial on Universidad de Sevilla
Sistemas basados en el conocimiento
Sistemas basados en el conocimiento: Programas que resuelven problemas usando un determinado dominio de conocimiento A veces son llamados sistemas llamados sistemas expertos
Ventajas: F´acil acil acceso y disponibilidad disponibi lidad de conocimiento (experto) Coste reducido Permanencia Fiabilidad y rapidez Respuestas no subjetivas Explicaci´on on del razonamiento Herramientas de aprendizaje Competitivos con expertos humanos
Sistemas basados en el conocimiento
Componentes principales de un SBC Conocimiento, que necesita ser representado ser representado Mecanismos que permitan inferir permitan inferir nuevo nuevo conocimiento Estos componentes comp onentes deber deb er´´ıan constituir consti tuir m´ odulos independientes
Otros componentes: Interfaz de usuario Subsistema de explicaci´ on del conocimiento inferido on Subsistema de adquisici´ on de nuevo conocimiento on Herramientas de aprendizaje
Representaci´on on del conocimiento
Requisitos de los formalismos de representaci´ on on del conocimiento: Potencia expresiva Facilidad de interpretaci´ on on Eficiencia Eficiencia deductiva deductiva Posibilidad de explicaci´ on on y justificaci´on on
Algunos formalismos de representaci´ on: on: Reglas, Regla s, redes sem´anticas, antic as, marcos, l´ ogicas ogicas de descripci´on, on, l´ogic ogicaa de prime primerr orden orden,, . . .
Cada formalismo de representaci´ on on usa un m´etodo eto do de infe infere renc ncia ia esp espec´ ec´ıfi ıfico co:: Razonamiento hacia adelante, razonamiento hacia atr´as as (SLD-resoluci´on), on), herencia, tableros, resoluci´ on, . . .
Representaci´on del conocimiento mediante reglas
Reglas ´ foro es verde SI la luz del sem a Y no hay peatones cruzando ENTONCES contin´ u a la marcha S I x e s n´ umero natural Y x es par ENTONCES x es divisible por 2 SI el reactivo toma color azul Y la morfolog´ ı a del organismo es alargada Y el paciente es un posible receptor ENTONCES existe una evidencia (0.7) de que la infecci´ on proviene de pseudomonas.
Hechos La luz del sem ´ a foro es verde El reactivo toma color azul
Representaci´on del conocimiento mediante reglas
Esencialmente, existen dos mecanismos para inferir nuevo conocimiento a partir de un conjunto de reglas Razonamiento hacia atr´as (backward chaining ) Razonamiento hacia adelante (forward chaining )
Se estudian mejor desde un punto de vista formal mediante su formulaci´ on l´ ogica
L´ ogica de primer orden
Lenguaje de la l´ ogica de primer orden S´ımbolos de variable : x, y, . . . S´ımbolos de funci´ on (con su aridad ): f , g, ...(las constantes son s´ımbolos de funci´on de aridad 0) S´ımbolos de predicado (con su aridad ): p, q , . . . Conectivas: ¬, ∨, ∧, →, ↔ Cuantificadores: ∀, ∃
L´ ogica de primer orden
T´erminos de la l´ogica de primer orden Las variables son t´erminos Si t1 , . . . , tn son t´erminos y f es un s´ımbolo de funci´ on de aridad n, entonces f(t1 , . . . , tn ) es un t´ermino
F´ ormulas de la l´ ogica de primer orden Si t1 , . . . , tn son t´erminos y p es un s´ımbolo de predicado de aridad n, entonces p(t1 , . . . , tn ) es una f´ormula (at´ omica) Si F1 y F2 y son f´ormulas y x es una variable, entonces F1 ∨ F2 , F1 ∧ F2 , F1 → F2 , ¬F1 , F1 ↔ F2 , ∀xF1 y ∃xF1 tambi´en son f´ormulas
L´ ogica de primer orden
Una interpretaci´ on es un conjunto (universo ) junto con una asignaci´on de funciones y relaciones concretas, en ese universo, a los s´ımbolos de funci´ on y predicado Una interpretaci´ on asigna un valor de verdad a cada f´ormula (V o´ F) Decimos que una f´ ormula G es consecuencia l´ ogica de un conjunto de f´ ormulas {F1 , F2 , . . . , Fn } (y lo escribiremos {F1 , F2 , . . . , Fn } |= G) si para toda interpretaci´on I tal que I(Fi ) = V para todo i = 1, . . . , n, entonces se tiene que I(G) = V
Reglas, hechos y bases de conocimiento
Una regla es una f´ormula de primer orden de la forma
P1 ∧ P2 ∧ . . . ∧ Pn → Q donde P1 , . . . , Pn , Q son f´ ormulas at´ omicas Las variables de una regla se interpretan universalmente cuantificadas Cabeza de la regla: Q Cuerpo de la regla: P1 ∧ P2 ∧ . . . ∧ Pn
Un hecho es una f´ormula at´ omica Un hecho puede verse como una regla sin cuerpo
Una base de conocimiento es un conjunto de hechos y reglas
Reglas, hechos y bases de conocimiento
Una peque˜ na base de conocimiento R1: R2: R3: R4: R5: H1: H2: H3: H4: H5:
bueno(x) ∧ rico(y) ∧ quiere(x,y) → hereda-de(x,y) amigo(x,y) → quiere(x,y) antecesor(y,x) → quiere(x,y) progenitor(x,y) → antecesor(x,y) progenitor(x,z) ∧ progenitor(z,y) → antecesor(x,y) progenitor(padre(x),x) rico(Pedro) rico(padre(padre(Juan))) amigo(Juan,Pedro) bueno(Juan)
Deducci´ on en una base de conocimiento Sustituciones: θ = {x1 → t1 , . . . , xn → tn } Si Q es una f´ormula at´ omica, θ (Q) es la f´ormula obtenida sustituyendo cada aparici´ on de xi en Q por ti
Regla de inferencia: Modus Ponens Generalizado
P1
P2 . . . Pn
P′1 ∧ P′2 ∧ . . . ∧ P′n → Q θ (Q)
donde θ es una sustituci´on tal que θ(Pi ) = θ(P′i ), para todo i Dada una base de conocimiento BC y una f´ormula at´ omica P, decimos que BC ⊢ P si existe una secuencia de f´ormulas F1 , . . . , Fn tales que Fn = P y cada Fi est´a en BC o se obtiene de f´ ormulas anteriores mediante aplicaci´ on de Modus Ponens Generalizado Detalle t´ecnico: cada vez que se usa una f´ ormula, se pueden renombrar sus variables (de manera consistente)
Deducci´ on en una base de conocimiento
Una peque˜ na base de conocimiento R1: R2: R3: R4: R5: H1: H2: H3: H4: H5:
bueno(x) ∧ rico(y) ∧ quiere(x,y) → hereda-de(x,y) amigo(x,y) → quiere(x,y) antecesor(y,x) → quiere(x,y) progenitor(x,y) → antecesor(x,y) progenitor(x,z) ∧ progenitor(z,y) → antecesor(x,y) progenitor(padre(x),x) rico(Pedro) rico(padre(padre(Juan))) amigo(Juan,Pedro) bueno(Juan)
En este caso, a partir de antecesor(y,x) → quiere(x,y) y de antecesor(Pedro,Juan) se deduce quiere(Juan,Pedro) (mediante la sustituci´ on θ = {x → Juan,y → Pedro})
Deducci´ on en una base de conocimiento
Teorema: BC |= P ⇐⇒ BC ⊢ P Este teorema nos sugiere c´omo implementar algoritmos para responder preguntas a una base de conocimiento Esencialmente, se trata de implementar procesos que buscan una secuencia de aplicaciones v´ alidas de la regla de Modus Ponens que obtenga P como f´ormula final Por tanto, algoritmos de b´ usqueda
Esta b´ usqueda puede realizarse: Hacia atr´as : partiendo de P Hacia adelante : partiendo de BC
Razonamiento hacia atr´ as con reglas de primer orden
Podemos dise˜ nar un algoritmo de encadenamiento hacia atr´as basado en la regla de Modus Ponens Generalizado Dado un objetivo Q y una regla Q1 ∧ . . . ∧ Qn → P, los nuevos objetivos podr´ıan ser {θ (Q1 ), . . . , θ (Qn )} si encontramos una sustituci´ on θ tal que θ (P) = θ(Q) Dicha sustituci´ on se denomina unificador de P y Q
Por tanto, se necesita un algoritmo que dado el objetivo y la cabeza de la regla, encuentre un unificador, si es que existe Dicho algoritmo se denomina algoritmo de unificaci´ on
Unificaci´ on Ejemplos: Objetivo Cabeza de regla amigo(x,Juan) amigo(Antonio,y) Unificador: {x → Antonio, y → Juan} progenitor(padre(x),x) progenitor(y,Juan) Unificador: {x → Juan, y → padre(Juan)} quiere(x,z) amigo(Antonio,y) Unificador: No existe quiere(x,z) quiere(padre(y),x) Unificador: {x → padre(Juan), y → Juan, z → padre(Juan)} quiere(x,z) quiere(padre(y),x) Unificador: {x → padre(y), z → padre(y)}
Dos ´atomos cualesquiera podr´ıan no ser unificables, o serlo y tener m´as de un unificador Se puede demostrar que si son unificables entonces existe un unificador m´as general que cualquier otro
Algoritmo de unificaci´ on Algoritmo de unificaci´ on FUNCI´ ON UNIFICA(S,T) Devolver UNIFICA-REC(S,T,{}) ´N UNIFICA-REC(S,T,θ) FUNCIO 1 S i S = T, devolver {} 2 Si no, si S es variable, entonces: 2.1 Si S ocurre en T, devolver FALLO 2.2 Si S no ocurre en T, devolver {S → T} 3 Si no, si T es variable, entonces devolver UNIFICA-REC(T,S,θ ) 4 Si no, sean S = f(S1 ,...,Sn ) y T = g(T1 ,...,Tm ) ´ n 4.1 Si f = g o = m, devolver FALLO 4.2 En otro caso, devolver UNIFICA-REC-LISTA([S1 ,...,Sn ],[T1 ,...,Tn ],θ) FUNCI´ ON UNIFICA-REC-LISTA(LS,LT,θ) 1 Si LS es la lista vac´ ıa, devolver θ 2 Si no, sea σ = UNIFICA-REC(PRIMERO(LS),PRIMERO(LT),θ ) 2.1 Si σ es igual a FALLO, devolver FALLO 2.2 En caso contrario, devolver UNIFICA-REC-LISTA(σ (RESTO(LS)),σ (RESTO(LT)),COMPONER(θ,σ ))
Nota: COMPONER(S1,S2) obtiene la sustituci´ on que act´ ua como si se aplicara S1 y a continuaci´on S2
Algoritmo de unificaci´ on
Traza del algoritmo UNIFICA(quiere(x,z),quiere(padre(y),x)) ⇒ UNIFICA-REC(quiere(x,z),quiere(padre(y),x),{}) ⇒ UNIFICA-REC-LISTA({x,z},{ padre(y),x},{}) ⇒ [UNIFICA-REC(x,padre(y),{}) = {x → padre(y)}] UNIFICA-REC-LISTA({z},{ padre(y)},{x → padre(y)}) ⇒ [UNIFICA-REC(z,padre(y),{x → padre(y)}) = {z → padre(y)}] UNIFICA-REC-LISTA({},{},{x → padre(y),z → padre(y)}) ⇒ {x → padre(y),z → padre(y)}
Teorema: UNIFICA(S,T) no devuelve FALLO si y s´olo si S y T se pueden unificar; en ese caso, devuelve un unificador de S y T m´ as general que cualquier otro unificador
SLD-resoluci´ on
Combinando unificaci´ on y encadenamiento hacia atr´as podemos obtener un procedimiento que permite responder a preguntas del tipo ¿BC |= P? En concreto, el algoritmo encontrar´ a sustituciones θ tal que BC |= θ (P). A estas sustituciones se las llama respuestas Este algoritmo se denomina SLD-resoluci´ on
El algoritmo realiza una b´ usqueda en profundidad (backtracking) Como es habitual, esta b´usqueda se puede representar mediante un ´arbol
Un ejemplo de ´ arbol SLD
´ Arboles SLD Un ´arbol SLD representa el proceso de b´ usqueda Los nodos de un ´arbol representan los objetivos pendientes (´atomos por deducir)
Nodo ra´ız: objetivo inicial Nodos finales: Un nodo de fallo se obtiene cuando su primer ´atomo no es unificable con la cabeza de ninguna regla o hecho Un nodo de ´exito es aqu´el que no tiene objetivos pendientes
Ramas de ´exito Una rama de ´exito es aquella que termina en un nodo de ´exito Cada rama de ´exito “construye” una sustituci´ on (respuesta) que se va “concretando” mediante los sucesivos pasos de unificaci´on Cada rama de ´exito representa una SLD-refutaci´ on
Renombrado de reglas y hechos
Algoritmo de SLD-resoluci´ on
Algoritmo de SLD-resoluci´ on ´N SLD-RESOLUCI´ FUNCIO ON(BC,Q) Devolver SLD-RESOLUCI´ ON-REC(BC,{Q},{}) FUNCI´ ON SLD-RESOLUCI´ ON-REC(BC,OBJETIVOS,θ ) 1 Si OBJETIVOS est´ a vac´ ı o, devolver la lista unitaria {θ } 2 Hacer RESPUESTAS igual a la lista vac´ ıa Hacer ACTUAL igual θ (SELECCIONA-UNO(OBJETIVOS)) 3 Para cada regla P1 , ..., Pn → P en BC (renombrada con variables nuevas) tal que σ = UNIFICA(P,ACTUAL) es distinto de FALLO 3.1 Hacer NUEVOS-OBJETIVOS igual a {P1 , ..., Pn } ∪ (OBJETIVOS\{ ACTUAL}) 3.2 A ˜ n adir a RESPUESTAS el resultado de SLD-RESOLUCI´ ON-REC(BC,NUEVOS-OBJETIVOS,COMPONER(θ ,σ )) 4 Devolver RESPUESTAS
Propiedades del algoritmo de SLD-resoluci´on
Teorema (correcci´ on): Si θ ∈ SLD-RESOLUCION(BC,P) entonces BC ⊢ θ(P) Teorema: Si BC ⊢ σ (P), entonces existe una SLD-refutaci´ on a partir de P que construye una respuesta θ tal que σ es “un caso particular” de θ Problema: el algoritmo de SLD-resoluci´on podr´ıa no encontrar tal SLD-refutaci´ on debido a la existencia de ramas infinitas
Estrategia de b´ usqueda: En nuestro pseudoc´odigo, b´ usqueda en profundidad Selecci´on del objetivo a resolver: cualquier funci´on de selecci´on servir´ıa Orden en el que se usan las reglas y hechos de la BC
Programaci´ on l´ ogica El algoritmo de SLD-resoluci´ on es el elemento en torno al cual se desarrolla el paradigma declarativo de programaci´ on l´ ogica Programa l´ ogico: conjunto de reglas y hechos Declarativo: “qu´e es” en lugar de “c´ omo se hace”
Una base de conocimiento puede verse como un programa l´ ogico Las respuestas que calcula el algoritmo de SLD-resoluci´ on pueden verse como la salida que calcula el programa PROLOG es el lenguaje de programaci´on m´as conocido basado en el paradigma de la programaci´on l´ ogica Debido a que el encadenamiento hacia atr´as forma parte del propio int´erprete, PROLOG es un lenguaje especialmente adecuado para la implementaci´ on de SBCs basados en reglas con razonamiento hacia atr´as
Deducci´ on hacia adelante En contraposici´ on al encadenamiento hacia atr´as, podemos aplicar la regla de Modus Ponens Generalizado hacia adelante A partir de los hechos, y usando las reglas, obtener nuevos hechos De la misma manera, los hechos deducidos permiten obtener nuevos hechos
Problemas adecuados para razonar hacia adelante Monitorizaci´ on y control Problemas dirigidos por los datos Sin necesidad de explicaci´ on
Problemas adecuados para razonar hacia atr´as Diagn´ostico Problemas dirigidos por los objetivos Interacci´on/Explicaci´on al usuario
Deducci´ on hacia adelante
Algoritmo de encadenamiento hacia adelante ´N ENCADENAMIENTO-HACIA-ADELANTE(BC,P) FUNCIO 1 Hacer DEDUCIDOS igual a vac´ ıo 2 Para cada regla P1 , ..., Pn → Q en BC (renombrada con variables nuevas) 2.1 Para cada θ tal que θ (Pi ) = θ (Ri ) para ciertos Ri en BC, i=1,...,n, 2.1.1 Hacer S = θ (Q) 2.1.2 Si S (o un renombrado) no est´ a ni en BC ni en DEDUCIDOS, a˜ nadir S a DEDUCIDOS 2.1.3 Si σ =UNIFICA(P,S) es distinto de FALLO, devolver σ y terminar 3 Si DEDUCIDOS es vac´ ı o, devolver FALLO y terminar. en caso contrario, a˜ nadir DEDUCIDOS a BC y volver al punto 1
Deducci´ on hacia adelante
Ejemplo: una peque˜ na base de conocimiento R1: R2: R3: R4: R5: H1: H2: H3: H4: H5:
bueno(x) ∧ rico(y) ∧ quiere(x,y) → hereda-de(x,y) amigo(x,y) → quiere(x,y) antecesor(y,x) → quiere(x,y) progenitor(x,y) → antecesor(x,y) progenitor(x,z) ∧ progenitor(z,y) → antecesor(x,y) progenitor(padre(x),x) rico(Pedro) rico(padre(padre(Juan))) amigo(Juan,Pedro) bueno(Juan)
Ejemplo: una peque˜ na base de conocimiento
Traza del algoritmo ENCADENAMIENTO-HACIA-ADELANTE(BC,hereda-de(x,y)) H6: quiere(Juan, Pedro) | R2 {x1 → Juan, y1 → Pedro} H4 H7: antecesor(padre(x), x) | R4 {x1 → padre(x), y1 → x}, H1 H8: antecesor(padre(padre(x)), x) | R5 {x1 → padre(padre(x2)), z1 → padre(x2), y1 → x2}, | H1 {x → padre(x2)}, H1 {x → x2} H9: hereda-de(Juan, Pedro) | R1 {x1 → Juan, y1 → Pedro}, H5, H2, H6 θ = {x → Juan, y → Pedro} H10: quiere(x, padre(x)) | R3 {x1 → x, y1 → padre(x)} H7 H11: quiere(x, padre(padre(x))) | R3 {x1 → x, y1 → padre(padre(x))} H8 H12: hereda-de(Juan, padre(padre(Juan))) | R1 {x1 → Juan, y1 → padre(padre(Juan))}, | H5, H3, H11 {x → Juan} θ = {x → Juan, y → padre(padre(Juan))}
Sistemas de producci´ on
Un sistema de producci´ on es un mecanismo computacional basado en reglas de producci´ on de la forma: “Si se cumplen las condiciones entonces se ejecutan las acciones ” El conjunto de las reglas de producci´ on forma la base de conocimiento que describe como evoluciona un sistema Las reglas de producci´ on act´ uan sobre una memoria de trabajo o base de datos que describe el estado actual del sistema Si la condici´on de una regla de producci´on se satisface entonces dicha regla est´a activa El conjunto de reglas de producci´on activas en un instante concreto forma el conjunto de conflicto o agenda La estrategia de resoluci´ on selecciona una regla del conjunto de conflicto para ser ejecutada o disparada modificando as´ı la memoria de trabajo
Sistemas de producci´ on
Paradigma de los sistemas de producci´on Hechos: pieza b´asica de informaci´ on Reglas: describen el comportamiento del programa en funci´on de la informaci´on existente
Modelo de hecho: <´ ındice>:
( *)
Modelo de regla: REGLA : SI * ENTONCES *
Elementos de una regla
Condiciones: Existencia de cierta informaci´ on: Ausencia de cierta informaci´on: no() Relaciones entre datos
Acciones: Incluir nueva informaci´ on: INCLUIR: ) Eliminar informaci´ on: ELIMINAR: )
Ejemplo de sistema de producci´ on Ejemplo Base de Hechos: 1: Tiene(pelos) 2: Tiene(pezu˜ nas) 3: Tiene(rayas-negras) Base de Reglas: REGLA Jirafa: Es(ungulado) Tiene(cuello-largo) => INCLUIR: Es(jirafa) REGLA Cebra: Es(ungulado) Tiene(rayas-negras) => INCLUIR: Es(cebra) REGLA Ungulado-1: Es(mam ´ ıfero) Tiene(pezu˜ nas) => INCLUIR: Es(ungulado)
REGLA Ungulado-2: Es(mam ´ ı fero) Rumia() => INCLUIR: Es(ungulado) REGLA Mam´ ıfero-1: Tiene(pelos) => INCLUIR: Es(mam ´ ı fero) REGLA Mam ´ ıfero-2: Da(leche) => INCLUIR: Es(mam ´ ı fero)
Sistemas de producci´ on
Componentes: Base de hechos (memoria de trabajo ). Elemento din´amico Base de reglas. Elemento est´atico Motor de inferencia (produce los cambios en la memoria de trabajo)
Elementos adicionales: Algoritmo de equiparaci´ on de patrones : Algoritmo para calcular eficientemente la agenda Estrategia de resoluci´ on de conflictos : Proceso para decidir en cada momento qu´e regla de la agenda debe ser disparada
Ciclo de ejecuci´ on
Reglas
Hechos
Equiparacion de patrones Agenda Resolucion de conflictos
Disparo
Resoluci´ on de conflictos
Una activaci´ on s´ olo se produce una vez Estrategias m´as comunes: Tratar la agenda como una pila Tratar la agenda como una cola Elecci´on aleatoria Regla m´as espec´ıfica (n´ umero de condiciones) Activaci´on m´as reciente (en funci´on de los hechos) Regla menos utilizada Mejor (pesos)
Tabla de seguimiento
Base de Hechos 1: Tiene(pelos) 2: Tiene(pezuñas) 3: Tiene(rayas-negras) 4: Es(mamífero) 5: Es(ungulado) 6: Es(cebra)
E 0 0 0 1 2 3
Agenda Mamífero-1: 1
Ungulado-1: 4,2 Cebra: 5,3
D 1
2 3
Variables: simples, m´ ultiples, an´ onimas, con restricciones Variable simple: ?x, ?y, ?elemento Variable an´ onima simple: ? Variable m´ ultiple: $?x, $?y, $?elemento Variable an´ onima m´ ultiple: $? Variables con restricciones: ?x&a|b, ?x&~a,
Sistema de producci´ on con variables Base de Hechos: 1: Lista(Mar Ana Luis Pepe) 2: Alumno(Mar) 3: Alumno(Ana 2 3 9) 4: Alumno(Luis) 5: Alumno(Pepe 3) Base de Reglas: Elimina: SI Alumno(?n ? $?) Lista($?i ?n $?f) ENTONCES ELIMINAR: Lista(?i ?n ?f) INCLUIR: Lista(?i ?f)
?x&:(< ?x 3)
Tabla de seguimiento
Base de Hechos 1:Lista(Mar Ana Luis Pepe) 2:Alumno(Mar) 3:Alumno(Ana 2 3 9)
4:Alumno(Luis) 5:Alumno(Pepe 3)
6:Lista(Mar Ana Luis)
7:Lista(Mar Luis)
E 0 0 0
S 1
2
D
Elimina: 3,1 ?n → Ana $?i → Mar $?f → Luis Pepe
0 0
1
Agenda
2
S
1
Elimina: 5,1 ?n → Pepe $?i → Mar Ana Luis $?f →
1
Elimina: 3,6 ?n → Ana $?i → Mar $?f → Luis
2
Equiparaci´ on de patrones
La forma m´as simple de calcular el conjunto de conflicto supone analizar las condiciones de todas las reglas en la memoria de trabajo actual, este proceso es muy costoso
Algoritmo de fuerza bruta Por cada regla Ri hacer Por cada patr´ on de hecho Pj en Ri hacer Por cada hecho Hk en la memoria de trabajo hacer Comprobar si Pj equipara con Hk Si todos los patrones tienen equiparaci´ on incluir en la agenda todas las posibles activaciones de la regla Ri
Equiparaci´ on de patrones
Para hacer m´as eficiente el proceso de equiparaci´ on de patrones se pueden tener en cuenta las siguientes propiedades Redundancia Temporal: el disparo de una regla usualmente cambia pocos hechos y son pocas las reglas afectadas por esos cambios Similitud Estructural: una misma condici´ on aparece frecuentemente en m´as de una regla
El algoritmo RETE aprovecha estas caracter´ısticas para limitar el esfuerzo requerido para calcular el conjunto de conflicto despu´es de que una regla es disparada
CLIPS CLIPS ≡ C Language Integrated Production Systems http://www.ghg.net/clips/CLIPS.html
Lenguaje basado en reglas de producci´ on. Desarrollado en el Johnson Space Center de la NASA. Relacionado con OPS5 y ART Sint´axis espec´ıfica de CLIPS: deffacts, defrule, assert, retract
Caracter´ısticas: Conocimiento: Reglas, objetos y procedimental Portabilidad: implementado en C Integraci´on y Extensibilidad: C, Java, FORTRAN, ADA Documentaci´on Bajo coste: software libre