Vous êtes sur la page 1sur 13

Apuntes Logica

Razonamiento Automatico
M. A. Pinninghoff J.
R. Contreras A.

Primer semestre 2012

1 Razonamiento automatico
Anteriormente se vio como determinar la correccion del razonamiento deductivo usando formulas
del Calculo Proposicional. Una forma fue usando tablas de verdad y la otra, reglas de deduccion.
Las ultimas no son muy adecuadas para la implementacion del razonamiento en una maquina, ya
que requieren de experiencia y representar esta experiencia en una base de conocimientos, no resulta
facil. Las tablas de verdad presentan un mecanismo adecuado, pero se hacen computacionalmente
intratables a medida que el numero de variables crece, mas aun si el lenguaje involucrado pertenece
al Calculo de Predicados.

Este captulo introduce un procedimiento adecuado para la implementacion de razonamiento


automatico. Este procedimiento se llama resolucion. La resolucion es una regla de inferencia
simple, engloba todas las demas reglas de inferencia y obtiene las demostraciones por refutacion,
esto es, por contradiccion. Primero se vera resolucion en el Calculo Proposicional. A fin de que las
expresiones logicas puedan ser resueltas, ellas deben estar en una forma normal llamada clausulas
disyuntivas, donde los elementos disyuntivos de la forma normal conjuntiva son agrupados en un
cojunto de clausulas al que se le aplicara la resolucion. Despues se vera la aplicacion de resolucion
a formulas del Calculo de Predicados. El procedimiento es el mismo del Calculo Proposicional pero
se requiere trabajo extra para manejar variables y cuantificadores.

1.1 Resolucion en la logica proposicional


Un literal es una proposicion formada por una variable proposicional o por la negacion de una
variable proposicional.

Ejemplo.

p es un literal, tambien llamado literal positivo.

p es un literal, tambien llamado literal negativo.

Todas las formulas que participan en el razonamiento deben estar en su forma normal conjuntiva,
es decir tienen la estructura de una conjuncion de clausulas disyuntivas:
C1 C2 Cn

Cada Ci es llamada clausula. Una clausula es una disyuncion de literales y puede consistir de
un solo literal:
l1 l2 ln
donde cada li es un literal (positivo o negativo).

Ejemplo.
1
p q es una clausula.

{p q, p q r, q} es un conjunto de clausulas.

Refutacion es una estrategia de prueba, que consiste en mostrar que la negacion de la conclusion
es inconsistente con sus premisas, es decir, no hay una atribucion de verdad que satisfaga tanto a
las premisas como a la negacion de la conclusion (conjunto insatisfactible). Por ejemplo

{(p q), p} |= q

tiene la forma

{A1 , A2 , , An } |= C

lo cual significa que q es consecuencia logica (o se deduce) de {(p q), p}, una forma de pro-
bar esto es mostrar que la negacion de la conclusion es inconsistente con las premisas, esto es, en
el conjunto de formulas es insatisfactible o hay una contradiccion. Esta inconsistencia puede ser
expresada de la siguiente manera:

{(p q) p q} |=

donde el smbolo es una constante que tiene el valor falso y se conoce como clausula nula.
Por lo tanto lo que se dice en la expresion anterior es que la clausula nula se deduce de las premisas.
La prueba se puede ver facilmente: ya que p es verdadera, y tenemos que (p q) es verdadera, por
lo tanto q debiera ser verdadera, pero se tiene q!, luego hay una contradiccion.

La resolucion involucra los siguientes pasos:

1.- Negar la conclusion e incluirla en el conjunto de argumentos


2.- Llevar todas las formulas (premisas y conclusion negada) a su forma normal conjuntiva y
formar un conjunto de clausulas. A su vez cada clausula forma un conjunto de literales.
3.- Buscar pares complementarios de literales que esten en diferentes clausulas para generar un
resolvente. Un resolvente de dos clausulas C1 y C2 que tienen literales complementarios l y l
respectivamente, llamadas clausulas padres, es definido como sigue:

res(C1 , C2 ) = C1 {l} C2 {l}

donde 0 0 significa la diferencia de conjuntos. En otras palabras, el resolvente es una nueva


clausula formada por la union de las dos clausulas padres con los literales complementarios removi-
dos. Por ejemplo:
si las clausulas padres son {p, q} y {p}, un resolvente es {q}
si las clausulas padres son {p, q} y {p, r}, un resolvente es {q, r}
4.- Continuar resolviendo clausulas hasta que no existan mas resoluciones o se encuentre la
clausula nula. Encontrar la clausula nula () significa que el conjunto de clausulas es inconsistente.

1.2 Ejemplos
a.- Supongamos que Socrates esta en tal situacion, que el estara dispuesto a visitar a Platon, solo si
Platon estuviese dispuesto a visitarlo; y que Platon esta en tal situacion, que el no estara dispuesto
a visitar a Socrates, si Socrates estuviese dispuesto a visitarlo; pero estara dispuesto a visitar a
Socrates, si Socrates no estuviese dispuesto a visitarlo.

Socrates esta dispuesto a visitar a Platon?

2
p: Socrates esta dispuesto a visitar a Platon
q: Platon esta dispuesto a visitar a Socrates

Como premisas se tienen:


A1 : p q
A2 : p q
A3 : p q

Supongamos como conclusion que Socrates no esta dispuesto a visitar a Platon: p

Paso 1: Negar la conclusion e incluirla en el conjunto de argumentos, por lo tanto tenemos:

{p q, p q, p q, p}

Paso 2: Llevar todas las formulas (premisas y conclusion negada) a clausulas y formar un con-
junto de clausulas. A su vez cada clausula forma un conjunto de literales.

Clausulas:
{p q, p q, p q, p}
{{p, q}, {p, q}, {p, q}, {p}}

Resolucion:
i) {p, q} y {p} resuelven en {q}
ii) {p, q} y {q} resuelven en {p}
iii) {p} y {p} resuelven en

Por lo tanto {p q, p q, p q} |= p.
Esto es, de las premisas se deduce que Socrates no esta dispuesto a visitar a Platon.

Observacion: p q y p q resuelven en q q o en p p, lo cual nunca sera falso y por lo


tanto no aportan al proceso deductivo.

b) Un bebe llora si tiene hambre. Cuando un babe se enoja se le pone la cara roja. Si el bebe
no esta enojado, no llora. Luego, si un bebe tiene hambre, tiene la cara roja.

p: El bebe llora
q: El bebe tiene hambre
r: El bebe se enoja
s: El bebe tiene la cara roja

Como premisas se tienen:


A1 : q p
A2 : r s
A3 : r p
C: q s

Paso 1: Negar la conclusion e incluirla en el conjunto de argumentos, por lo tanto tenemos:


{q p, r s, r p, (q s)}

Paso 2: Llevar todas las formulas (premisas y conclusion negada) a clausulas y formar un con-
junto de clausulas.

Clausulas:
3
{q p, r s, r p, q s}

El caso de q s, se transforma en dos clausulas diferentes: q y s, ya que las clausulas estan


formadas por las partes de la forma normal conjuntiva. Luego el conjunto de clausulas es:

{q p, r s, r p, q, s}, que llevado a su forma de conjuntos, queda:


{{q, p}, {r, s}, {r, p}, {q}, {s}}

Resolucion:
i) {r, s} y {s} resuelven en {r}
ii) {r, p} y {r} resuelven en {p}
iii) {q, p} y {p} resuelven en {q}
iv) {q} y {q} resuelven en

Por lo tanto {q p, r s, r p} |= q s.
Esto es, de las premisas se deduce que si un bebe tiene hambre, tiene la cara roja.

2 Resolucion en el Calculo de Predicados


Como se deduce de la seccion anterior, resolucion es un procedimiento sencillo y adecuado para
la implementacion de programas logicos en un computador. El Calculo de Predicados de Primer
Orden (CPPO) es mucho mas expresivo que el Proposicional, por eso se quiere aplicar resolucion
a formulas en este lenguaje. El procedimiento para aplicar resolucion a formulas del CPPO, es
esencialmente el mismo que para el caso del proposicional, sin embargo hay aspectos adicionales
que considerar respecto a variables individuales y a cuantificadores.

El primer paso es llevar las formulas a la forma de clausulas disyuntivas tanto a las premisas
como a la negacion de la conclusion. En el segundo paso, es necesario unificar las clausulas candi-
datas a parear como padres. Esta unificacion consiste en determinar si es posible aplicar regla de
sustitucion a los terminos que forman parte de los predicados de las candidatas a padres. Estos
dos pasos requieren de procedimientos que se veran en las subsecciones siguientes. Finalmente se
aplica resolucion a las clausulas padres que parean.

2.1 Clausulas en el Calculo de Predicados


Se veran las mismas definiciones de la seccion anterior, pero ahora aplicadas a predicados.
Un literal es un predicado (n-ario) afirmado o negado:

Ejemplo.

P (x1 , x2 , , xn ) es un literal positivo.

P (x1 , x2 , , xn ) es un literal negativo.

Una clausula es una disyuncion finita de literales (positivos o negativos), que puede consistir de
un solo literal.

Ejemplos.

P (x1 , x2 , , xn )

P1 (x1 , x2 , , xn ) P2 (x1 , x2 , , xi ) Pk (x1 , x2 , , xj )


4
2.1.1 Skolemizacion
Una fbf de la forma
xP (x)

afirma que en el dominio de discurso existe algun x que cumple con la propiedad P . La formula
es satisfecha con al menos una constante que tiene la propiedad P . Suponga que esa constante es
c; entonces xP (x) puede ser reemplazado por P (c).
Por ejemplo suponga que x {Juan, Mara, Sara, David, Sergio }

xM ujer(x) es verdad y tambien lo son M ujer(Mara) y M ujer(Sara)

As, xM ujer(x) es satisfecha por alguna constante y esa constante puede ser Mara o Sara.
Una variable existencialmente cuantificada puede ser reemplazada por una constante, pero esa
constante debe ser una nueva, no usada anteriormente.

Considerese ahora xyP (x, y)

para todo x existe un y que esta en la relacion P . Por ejemplo, todos tienen una madre o cada
hombre ama a una mujer :

x(Hombre(x) y(M ujer(y) Ama(x, y)))

Puede ser escrita como:

xy(Hombre(x) (M ujer(y) Ama(x, y)))

En este caso el cuantificador existencial no puede ser reemplazado por una constante. Si se hace
esto, significara que todos los hombres aman a la misma mujer. Pero s, la variable existencialmente
cuantificada se puede reemplazar por una funcion que mapea cada x a la mujer que ama. La funcion
puede ser:

mujer amada por(x)

la cual retorna a la mujer que ama x. En generico podemos decir f (x) en lugar de mujer
amada por(x). Eliminando el cuantificador existencial queda:

x(Hombre(x) (M ujer(f (x)) Ama(x, f (x))))

La funcion f es llamada funcion de Skolem. Finalmente, considerese la siguiente situacion:

xyzP (x, y, z)

El cuantificador existencial es precedido por dos cuantificadores universales, por lo tanto la


funcion de Skolem debe tener como argumentos las dos variables cuantificadas por los cuantifi-
cadores universales:

xyP (x, y, g(x, y)), g es funcion de Skolem.

2.1.2 Procedimiento
1.- Eliminar y , aplicando sus definiciones, donde X = x1 , x2 , , xn :

P (X) Q(X) P (X) Q(X)


5
P (X) Q(X) (P (X) Q(X)) (Q(X) P (X))

2.- Eliminar parentesis negados, aplicando leyes de De Morgan:

(P (X) Q(X)) P (X) Q(X)


(P (X) Q(X)) P (X) Q(X)
xP (X) xP (X)
xP (X) xP (X)

3.- Eliminar doble negacion:

xP (X) xP (X)
xP (X) xP (X)
P (X) P (X)

4.- Normalizar variables. Si dos cuantificadores comparten un mismo nombre de variable, en-
tonces una de ellas bebe cambiar de nombre, a fin de que quede claro el dominio de cada cuantifi-
cador.

Por ejemplo
xP (x) xQ(x) debe cambiar a xP (x) yQ(y)

5.- Eliminar cuantificadores existenciales usando Skolemizacion.


x(P (x) yQ(y)) debe cambiar a x(P (x) Q(f (x))) donde f es una funcion de Skolem.

xP (x) debe cambiar a P (c), donde c es una constante

xz(P (x) yQ(y, z)) debe cambiar a xz(P (x) Q(g(x, z), z)) donde g es una funcion de
Skolem.

6.- Convertir a forma normal prenex.


Una fbf del Calculo de Predicados esta en forma normal prenex cuando todos los cuantificadores
estan a la izquierda y fuera de la formula. El string de cuantificadores se llama prefijo y el resto de
la formula, entre parentesis y libre de cuantificadores, se llama matriz.

xyz(P (x) Q(y, z))

7.- Llevar la matriz a su forma normal conjuntiva.


Aplicando conmutatividad, asociatividad y distributividad.

8.- Eliminar cuantificadores universales.


Esto se puede hacer porque se asume en este estado que todas las variables que quedan estan
universalmente cuantificadas.

9.- Generar el conjunto de clausulas eliminando .

10.- Renombrar las variables. Que cada clausula tenga diferentes nombres de variables. Con
esto se busca que no haya dos clausulas que hagan referencia a la misma variable, para lo cual
es necesario renombrar a las variables adecuadamente. No es necesario que haya ninguna relacion
entre las variables de dos clausulas diferentes, aunque se hayan generado de la misma fbf.

Ejemplo 1.

6
Convertir la siguiente fbf en clausula:

xP (x) xQ(x)

Eliminar implicacion:

xP (x) xQ(x)

Eliminar parentesis negados

xP (x) xQ(x)

Renombrar variables:

xP (x) yQ(y)

Eliminar cuantificador existencial:

xP (x) Q(c), donde c es constante

Llevar a forma normal prenex:

x(P (x) Q(c))

Eliminar prefijo:

P (x) Q(c) es una clausula.

Ejemplo 2.
Convertir la siguiente fbf en clausula:

x(P (x) y(Q(y) R(x, y)))

Eliminar implicacion:

x(P (x) y(Q(y) R(x, y)))

Eliminar cuantificador existencial:

x(P (x) (Q(f (x)) R(x, f (x)))), donde f es funcion de Skolem

Llevar la matriz a forma normal conjuntiva:

x((P (x) Q(f (x))) (P (x) R(x, f (x)))), por distributividad

Eliminar prefijo:

((P (x) Q(f (x))) (P (x) R(x, f (x))))

Formar el conjunto de clausulas:

{(P (x) Q(f (x))), (P (x) R(x, f (x)))}

7
2.2 Unificacion
En la logica proposicional es facil determinar que dos literales l y l no pueden ser ciertos al mismo
tiempo. En la logica de predicados es un poco mas complicado, puesto que se deben considerar los
argumentos de los predicados. Por ejemplo, M ujer(Sara) y M ujer(Sara) es una contradiccion,
pero M ujer(Sara) y M ujer(Juan) no lo es. As para detectar contradicciones, se necesita un
algoritmo de pareamiento que compare dos literales y descubra si existe un conjunto de sustituciones
que los hace identicos. Este algoritmo se llama algoritmo de unificacion.
La esencia de la unificacion es tratar de ver si dos literales parean, esto es, comprobar si los
predicados coinciden, es decir, tienen nombres iguales. Si es as sigue adelante, si no, no hay forma
de unificarlos cualesquiera que sean sus argumentos. Si los predicados concuerdan, se analizan los
argumentos de dos en dos (uno de cada literal); si en el primer par, los elementos son iguales o hay
una sustitucion que los iguale, se sigue con el siguiente, y as sucesivamente.
Por ejemplo, la siguiente expresion dice que ser madre tambien es ser padres:

M adre(x, y) P adres(x, y)

A fin de chequear si un individuo pertenece a la categora de padres, se deben parear los literales
en la expresion. Suponga que sabemos que Sara es la madre de Juan:

M adre(Sara, Juan)

Es facil ver que Sara es uno de los padres de Juan. Esto se deduce de lo anterior sustituyendo
Sara por x y Juan por y. Al hacer esta sustitucion las varibles quedan ligadas a las constantes que
las sustituyeron. Una variable esta ligada, en este contexto, si hace referencia (es sustituida por) a
una constante u otra variable. En el ejemplo anterior, x quedo ligada a Sara y y a Juan y forman
un conjunto de sustituciones denotado por {Sara/x, Juan/y}.
La resolucion necesita conocer si los literales pueden parear. Si dos literales en diferentes
clausulas parean y uno es el complemento (negacion) del otro, entonces las clausulas pueden re-
solver. Dos literales parean si cumplen las siguientes condiciones:

1.- Nombre y numero de argumentos. Los nombres de los literales deben ser identicos (caracter
por caracter). Por ejemplo M adre y M adrede son distintos. Tambien deben tener igual numero de
argumentos (aridad).

2.- Si los nombres de los predicados son iguales, el paso siguiente es chequear los argumentos.
Cualquier funcion debe parear de acuerdo a 1. Quedan constantes y variables, para las cuales se
tiene las siguientes posibilidades:

i) constante a y constante b. Las constantes a y b parean si ellas parean caracter por caracter
(por ejemplo Juan no parea con Juana).

ii) Constante a y variable x. Si la variable x no esta ligada entonces ellas parean y la variable se
liga a la constante a/x. Si la variable ya esta ligada, solo parean si x estaba ligada a a anteriormente.

iii) Variable x y variable y. Si x e y ambas no estan ligadas, entonces ellas parean, pero si mas
tarde una de las variabes se liga con una sustitucion, entonces la otra tambien se liga. Si una de
las variables ya esta ligada y la otra no, entonces las variables parean y la variable no ligada se
ligara la misma constante. Dos variables ligadas parean si ambas estan ligadas a la misma constante.

A continuacion se muestran algunos ejemplos de pareamiento:

M adre(x, y) y P adre(x, y) no parean porque tienen nombres de predicado diferentes.


8
M adre(x, y) y M adre(x, y, z) no parean porque tienen diferente aridad (numero de argumen-
tos).

M adre(x, y) y M adre(Sara, w) parean ligando Sara/x y w/y.

M adre(x, y) y M adre(Clara, z) Si ya esta Sara/x, no parean porque Sara no parea con


Clara.

El proceso de pareamiento y ligacion de las variables es llamado unificacion. Dos literales unif-
ican si hay una sustitucion que los hace iguales. Por ejemplo, M adre(x, y) y M adre(Sara, w)
unifican con la sustitucion {Sara/x, w/y}. Al conjunto de sustituciones se le llama unificador. Lo
que hace el algoritmo de unificacion es automatizar todo el proceso. Este algoritmo retorna el
unificador mas general (most general unifier, mgu), es decir, el menor conjunto de sustituciones
que unifican los literales. A continuacion se muestra el algoritmo; aqu, una expresion compuesta
se refiere a un predicado o una funcion; op denota al nombre del predicado o funcion y args op
a los argumentos. Las variables y los valores a los que son ligadas son almacenados en una tabla
de unificacion (UT). ADD UT agrega una entrada en UT y GET VAL retorna el valor al que la
variable esta ligada en UT o retorna la variable si esta no esta ligada. S es una estructura de pila
donde se almacenan las expresiones a unificar. Una pila es una estructura donde primero sale lo
ultimo que ingresa.

Procedure U N IF ICACION (exp1 , exp2 )


while S no vaca
desempilar el primer par < s1 , s2 >
if s1 es una variable then s1 GET V AL(s1 ) endif
if s2 es una variable then s2 GET V AL(s2 ) endif
if s1 y s2 son constantes y s1 6= s2 then return falla
else if s1 es una variable y s1 6= s2 then
if s1 ocurre en s2 then return falla endif
ADD UT(s1 , s2 )
else if s2 es una variable y s2 6= s1 then
if s2 ocurre en s1 then return falla endif
ADD UT(s2 , s1 )
else if s1 y s2 son ambas expresiones compuestas then
if not(op1 = op2 ) then return falla endif
if not(argsop1 = argsop2 ) then return falla endif
empilar en S el par de argumentos
endif
endif
endif
endif
endwhile
return exito.

2.3 Ejemplos
2.3.1 Ejemplo 1
Encontrar el mgu (unificador mas general) de los dos literales:

P (x, f (y)) y P (a, f (b))

La pila parte con con el siguiente par:


9
< P (x, f (y)), P (a, f (b)) >

Cada elemento del par es una expresion compuesta. Ambos predicados tienen el mismo nombre:
P ; y el mismo numero de argumentos: 2. Entonces en la pila se almacenan los siguientes pares:

< x, a >< f (y), f (b) >

La tabla UT aun esta vaca, por lo tanto GET VAL(x) simplemente retorna x, esto quiere decir
que x no esta ligada, luego puede parear con la constante a. UT es actualizada:

V ariable V alor
x a

Se retira de la pila el siguente par. Ambos elementos del par son funciones con el mismo nombre
y un argumento. Los argumentos son ingresados a la pila. El ultimo par es:

< y, b >

La variable y no esta en UT, luego parea con la constante b. Por lo tanto UT queda:

V ariable V alor
x a
y b

Esto significa que el mgu, o sea el conjunto menor de sustituciones que unifica a los literales es
{a/x, b/y}.

2.3.2 Ejemplo 2
Encontrar el mgu de los dos literales:

P (x, x, f (a)) y P (y, g(f (b)), z)

Tanto los nombres de los predicados como el numero de argumentos parean. Los pares en la
pila son:

< x, y >, < x, g(f (b)) >, < f (a), z >

Primero sale < x, y >. Ni x ni y estan en UT, por lo tanto ellas parean:

V ariable V alor
x y

Se retira de la pila el siguente par < x, g(f (b)) >. Retorna el valor de x, el cual es y. Pero y
puede parear con g(f (b)). UT queda:

V ariable V alor
x y
y g(f (b))

10
Se retira de la pila < f (a), z >. z no esta en UT y parea con f (a):

V ariable V alor
x y
y g(f (b))
z f (a)

Luego, el mgu es {y/x, g(f (b))/y, f (a)/z}.

2.3.3 Ejemplo 3
En este ejemplo se pondran en practica los conceptos anteriores. Se entregan tres sentencias,
seguidas de una pregunta que necesita ser respondida. La respuesta a la pregunta debe ser de-
ducida de las afirmaciones.

A todos los amigos de Gustavo les gusta la cerveza.


A todos los que les gusta la cerveza, beben alcohol.
Bernardo es amigo de Gustavo.
Bernardo bebe alcohol?

Primero todas las sentencias se deben representar en logica de predicados.

x(Amigo(x, Gustavo) Gustar(x, cerveza))


x(Gustar(x, cerveza) Beber(x, alcohol))
Amigo(Bernardo, Gustavo)

En clausulas disyuntivas:

Amigo(x, Gustavo) Gustar(x, cerveza)


Gustar(y, cerveza) Beber(y, alcohol)
Amigo(Bernardo, Gustavo)

Puestos como conjuntos de clausulas:

{{Amigo(x, Gustavo), Gustar(x, cerveza)}


{Gustar(y, cerveza), Beber(y, alcohol)}
{Amigo(Bernardo, Gustavo)}}

En este caso la resolucion es usada como proceso deductivo. Lo que se quiere ver es si del
conjunto de clausulas se deduce (usando resolucion) que Bernardo bebe o no bebe alcohol.

Resolucion:

{Amigo(x, Gustavo), Gustar(x, cerveza)} y {Amigo(Bernardo, Gustavo)}} mgu: {Bernardo/x},


resolvente: {Gustar(Bernardo, cerveza)}
{Gustar(Bernardo, cerveza)} y {Gustar(y, cerveza), Beber(y, alcohol)} mgu: {Bernardo/y},
resolvente: {Beber(Bernardo, alcohol)}

Luego, la respuesta a la pregunta es: Bernardo bebe alcohol.

11
2.3.4 Ejemplo 4
Este ejemplo tiene lo mismo del ejemplo anterior con una pequena modificacion. Es un poco mas
preciso respecto a que a los amigos de Gustavo les gusta alguna clase de cerveza. Ademas se quiere
verificar si el razonamiento es correcto, esto es, si la conclusion se deduce de los argumentos
i) A todos los amigos de Gustavo les gusta la cerveza.
ii) A todos los que les gusta la cerveza, beben alcohol.
iii) Bernardo es amigo de Gustavo.
C) Luego, Bernardo bebe alcohol.

Conversion a logica de predicados:

i) x(Amigo(x, Gustavo) y(Cerveza(y) Gustar(x, y)))


ii) xy(Cerveza(y) Gustar(x, y) Beber(x, alcohol))
iii) Amigo(Bernardo, Gustavo)
C) Beber(Bernardo, alcohol)

Negacion de la conclusion: Beber(Bernardo, alcohol)

Llevandolo a clausulas:

i) x(Amigo(x, Gustavo) y(Cerveza(y) Gustar(x, y)))


x(Amigo(x, Gustavo) y(Cerveza(y) Gustar(x, y))) por definicion de implicacion
Cada cuantificador tiene diferentes nombres de variable. Luego se debe skolemizar:
x(Amigo(x, Gustavo) (Cerveza(f (x)) Gustar(x, f (x)))) skolemizacion, f: funcion de
Skolem
La expresion esta en forma normal prenex. Se debe llevar la matriz a FNC:
x((Amigo(x, Gustavo)Cerveza(f (x)))(Amigo(x, Gustavo)Gustar(x, f (x)))) Distribu-
tividad
Se elimina el prefijo:
((Amigo(x, Gustavo) Cerveza(f (x))) (Amigo(x, Gustavo) Gustar(x, f (x))))
Clausulas disyuntivas:
{(Amigo(x, Gustavo) Cerveza(f (x))), (Amigo(x, Gustavo) Gustar(x, f (x)))}

ii)xy(Cerveza(y) Gustar(x, y) Beber(x, alcohol))


xy((Cerveza(y) Gustar(x, y)) Beber(x, alcohol)) por definicion de implicacion
xy(Cerveza(y) Gustar(x, y) Beber(x, alcohol)) leyes de De Morgan, asociatividad
x(Cerveza(f (x)) Gustar(x, f (x)) Beber(x, alcohol)) por skolemizacion, f: funcion de
Skolem
(Cerveza(f (x))Gustar(x, f (x))Beber(x, alcohol)) eliminacion del prefijo, clausula disyun-
tiva

Ahora renombrando las variables se tiene el siguiente conjunto de clausulas disyuntivas:

{(Amigo(x, Gustavo)Cerveza(f (x))), (Amigo(y, Gustavo)Gustar(y, f (y))), (Cerveza(f (z))


Gustar(z, f (z)) Beber(z, alcohol)), Amigo(Bernardo, Gustavo), Beber(Bernardo, alcohol)}

Como conjuntos:

1.- {Amigo(x, Gustavo), Cerveza(f (x))},


2.- {Amigo(y, Gustavo), Gustar(y, f (y))},
3.- {Cerveza(f (z)), Gustar(z, f (z)), Beber(z, alcohol)},
4.- {Amigo(Bernardo, Gustavo)},
12
5.- {Beber(Bernardo, alcohol)}

Resolucion:

6.- {Cerveza(f (Bernardo)), Gustar(Bernardo, f (Bernardo)) de 3 y 5 usando la sustitucion


Bernardo/z
7.- {Cerveza(f (Bernardo))} de 1 y 4 usando la sustitucion Bernardo/x
8.- {Gustar(Bernardo, f (Bernardo)) de 6 y 7
9.- {Amigo(Bernardo, Gustavo)} de 2 y 8 usando la sustitucion Bernardo/y
10.- de 4 y 9.

Luego el razonamiento esta correcto.

References
[1] Callan, Rob. Artificial Intelligence. Palgrave Macmillan, 2003.

[2] Rich, Elaine; Knight, Kevin. Inteligencia Artificial. 2a Edicion McGraw-Hill, 1994.

[3] Russell, Stuart; Norvig, Peter. Inteligencia Artificial. Un enfoque moderno. Prentice Hall 1996.

13

Vous aimerez peut-être aussi