Está en la página 1de 3

Codigo en CLP

CLIPS> (defrule progenitor1


(padre-de ?padre ?hijo)
(marido-de ?padre ?madre)
=>
(assert (progenitor-de ?madre ?hijo))
)
CLIPS> (list-defrules)
progenitor1
For a total of 1 defrule.
CLIPS> (defrule esposa
(marido-de ?hombre ?mujer)
=> (assert (esposa-de ?mujer ?hombre)
(printout t ?mujer "es la esposa de " ?hombre)))
CLIPS> (list-defrules)
progenitor1
esposa
For a total of 2 defrules.
CLIPS> (defrule padre
(progenitor-de ?uno ?dos)
(hombre ?uno)
=>
(assert (padre-de ?uno ?dos))
(printout ?uno " es padre de " ?dos crlf)
)
CLIPS> (list-defrules)
progenitor1
esposa
padre
For a total of 3 defrules.
CLIPS> (defrule madre
(progenitor-de ?uno ?dos)
(mujer ?uno)
=>
(printout t ?uno " es madre de " ?dos))
CLIPS> (list-defrules)
progenitor1
esposa
padre
madre
For a total of 4 defrules.
CLIPS> (defrule abuelia
(progenitor-de ?uno ?dos)
(progenitor-de ?tres ?uno)
=>
(assert (abuelia con ?tres ?dos))
)
CLIPS> (list-defrules)
progenitor1
esposa
padre
madre
abuelia
For a total of 5 defrules.
CLIPS> (defrule abuelo
(abuelia-con ?uno ?dos)
(hombre ?uno)
=>
(assert (abuelo-de ?uno ?dos))
(printout t ?uno " es el abuelo de " ?dos crlf)
)
CLIPS> (list-defrules)
progenitor1
esposa
padre
madre
abuelia
abuelo
For a total of 6 defrules.
CLIPS> (defrule abuela
(abuelia-con ?uno ?dos)
(mujer ?uno)
=>
(assert (abuelo-de ?uno ?dos))
(printout t ?uno " es la abuela de " ?dos crlf)
)
CLIPS> (defrule hermanos
(padre-de ?uno ?dos)
(padre-de ?uno ?tres)
(test (neq ?dos ?tres))
=> (assert (hermanos_de ?dos ?tres)))
CLIPS> (list-defrules)
progenitor1
esposa
padre
madre
abuelia
abuelo
abuela
hermanos
For a total of 8 defrules.
CLIPS> (defrule hermanos2
(madre-de ?uno ?dos)
(madre-de ?uno ?tres)
(test (neq ?dos ?tres))
=> (assert (hermanos_de ?dos ?tres)))
CLIPS> (defrule hermana
(hermanos_de ?uno ?dos)
(mujer ?uno)
=> (assert (hermana-de ?uno ?dos)
(printout t ?uno " es hermana de " ?dos crlf)))
CLIPS> (defrule hermano
(hermanos_de ?uno ?dos)
(hombre ?uno)
=> (assert (hermano-de ?uno ?dos)
(printout t ?uno " es hermano de " ?dos crlf)))
CLIPS> (defrule tios
(progenitor-de ?uno ?dos)
(hermanos_de ?uno ?tres)
=> (assert (tios-de ?uno ?tres)))
CLIPS> (defrule tio
(tios-de ?uno ?dos)
(hombre ?uno)
=> (assert (tio-de ?uno ?dos)
(printout t ?uno " es tio de " ?dos crlf)))
CLIPS> (defrule tia
(tios-de ?uno ?dos)
(mujer ?uno)
=> (assert (tio-de ?uno ?dos)
(printout t ?uno " es tia de " ?dos crlf)))
CLIPS> (defrule sobrinos
(progenitor-de ?uno ?dos)
(hermanos_de ?uno ?tres)
=> (assert (sobrinos-de ?tres ?uno)))
CLIPS> (defrule sobrino
(sobrinos-de ?uno ?dos)
(hombre ?uno)
=> (assert (sobrino-de ?uno ?dos)
(printout t ?uno " es sobrino de " ?dos crlf)))
CLIPS> (defrule sobrina
(sobrinos-de ?uno ?dos)
(mujer ?uno)
=> (assert (sobrina-de ?uno ?dos)
(printout t ?uno " es sobrina de " ?dos crlf)))
CLIPS>

;hechos
(deffacts inicio
(mujer Ana)
(mujer Felisa)
(mujer Rosa)
(mujer Irene)
(hombre Jose)
(hombre Andres)
(hombre Marcial)
(hombre Luis)
(hombre Nestor)
(hombre Alejandro)
(hombre Enrique)
(progenitor-de Jose Vicente)
(progenitor-de Jose Andres)
(progenitor-de Jose Irene)
(progenitor-de Andres Luis)
(progenitor-de Vicente Nestor)
(progenitor-de Vicente Alejandro)
(progenitor-de Marcial Enrique)
(marido-de Vicente Rosa)
(marido Marcial Irene)
(marido Jose Ana)
)

También podría gustarte