Ejemplo de busqueda en CLIPS

Inicio de una sesion en CLips version para UNIX.

Esto es un ejemplo de como realizar busquedas.

godai@godai:~$ clips
         CLIPS (V6.10 07/01/98)
CLIPS> (deffacts dato
(dato jose mariscal)
(dato jose casa)
(dato jose lapiz)
(dato casa azul)
)
CLIPS> (defrule busca-dato-1
(dato jose ?x)
(dato casa ?x)
=>)
CLIPS> (defrule busca-dato-2
(dato jose $?x)
(dato casa $?x)
=>)
CLIPS> (reset)
CLIPS> (facts)
f-0     (initial-fact)
f-1     (dato jose mariscal)
f-2     (dato jose casa)
f-3     (dato jose lapiz)
f-4     (dato casa azul)
For a total of 5 facts.
CLIPS> (agenda)

;; no se ve nada en la agenda porque las reglas que hemos metido con 
;; defrule no se activan
;; vamos a crear una que busque (dato jose casa)
CLIPS> (defrule como
(dato jose casa)
=>)
CLIPS> (agenda)
0      como: f-2
For a total of 1 activation.

;; efectivamente se activa esa regla
CLIPS> (defrule busqueda-1
(dato ?x casa)
=>)
CLIPS> (agenda)
0      busqueda-1: f-2
0      como: f-2
For a total of 2 activations.
CLIPS> (defrule busqueda-2
(dato jose ?x)
(dato jose ?y)
=>)

;; esta se va a repetir mucho puesto que buscamos doblemente, se activara 
;; como hay tres reglas que empiezan por jose, tres veces en cada una.
;; es decir la que se este evaluando consigo misma y con las demas
;; restantes
CLIPS> (agenda)
0      busqueda-2: f-1,f-3
0      busqueda-2: f-1,f-2
0      busqueda-2: f-1,f-1
0      busqueda-2: f-2,f-3
0      busqueda-2: f-2,f-2
0      busqueda-2: f-2,f-1
0      busqueda-2: f-3,f-3
0      busqueda-2: f-3,f-2
0      busqueda-2: f-3,f-1
0      busqueda-1: f-2
0      como: f-2
For a total of 11 activations.


;; ahora buscamos que sean solo jose y casa, se activaran las que tienen
;; jose con las que aparezcan casa.
CLIPS> (defrule busqueda-3
(dato jose $?x)
(dato casa $?k)
=>)
CLIPS> (agenda)
0      busqueda-3: f-1,f-4
0      busqueda-3: f-2,f-4
0      busqueda-3: f-3,f-4
0      busqueda-2: f-1,f-3
0      busqueda-2: f-1,f-2
0      busqueda-2: f-1,f-1
0      busqueda-2: f-2,f-3
0      busqueda-2: f-2,f-2
0      busqueda-2: f-2,f-1
0      busqueda-2: f-3,f-3
0      busqueda-2: f-3,f-2
0      busqueda-2: f-3,f-1
0      busqueda-1: f-2
0      como: f-2
For a total of 14 activations.