Vous êtes sur la page 1sur 34

Carrera de Licenciatura en Sistemas

Ctedra de Paradigmas de Programacin


Apunte Lgica de Primer Orden, Clusulas y Resolucin

por Sergio Amitrano

Indice
Definicin de lenguaje de primer orden _______________________________________ 3
Sintaxis _____________________________________________________________________ 3
Semntica ___________________________________________________________________ 5
Consecuencia lgica ___________________________________________________________ 8
Consecuencia sintctica _______________________________________________________ 10

Definicin de forma clausal _______________________________________________ 14


Clusulas ___________________________________________________________________ 14
Conversin de frmulas a clusulas _____________________________________________ 16
Sustituciones ________________________________________________________________ 18
Consecuencia sintctica clausal_________________________________________________ 21
Mtodo de resolucin de Robinson ______________________________________________ 23
Clusulas de Horn y estrategia de resolucin SLD _________________________________ 25
Ejemplos de resolucin _______________________________________________________ 29

Prolog y el paradigma de la programacin lgica ______________________________ 32


Bibliografa ____________________________________________________________ 34

Universidad CAECE - Paradigmas de Programacin

Definicin de lenguaje de primer orden


La lgica de primer orden es una lgica que extiende los conceptos de la lgica
proposicional. Mientras en la lgica proposicional tenemos sintcticamente
variables que utilizando conectivos lgicos podamos armar frmulas y que
semnticamente -a nivel significado- podan tener un valor de verdad, en la lgica
de primer orden las variables representan valores de un dominio ficticio, existen
simbolos functores para construir nuevos elementos sintcticos que representan
valores de este dominio, y finalmente existen smbolos de predicados para construir
frmulas -anlogas a las de la lgica proposicional- a partir de los elementos
sintcticos que representan el dominio. Como en la lgica proposicional, tambin
existen conectivos lgicos para armar nuevas frmulas. Las frmulas
semnticamente poseen un valor de verdad binario (verdadero o falso).

Sintaxis
Def:

Un lenguaje se dice que es un lenguaje de primer orden si est representado


por la siguiente estructura:
= < V, C, L, P, {, }, {}, {(, ), {, }} >
donde cada componente representa:








conjunto infinito numerable de variables V = {vh}hH


conjunto de constantes C = {ci}iI
conjunto finito de smbolos de funcin (functores) L = {<fj, nj>}j
conjunto finito de smbolos de predicado P = {<pk, nk>}k
conjunto de conectivos lgicos
conjunto de smbolos cuantificadores
conjunto de smbolos de precedencia y auxiliares

(nj > 0)
(nk 0)

El valor ni, que est ligada a los smbolos de funcin (functores) y de predicados,
representa la aridad de cada uno de ellos (la cantidad de parmetros que recibe), y
representa un nmero natural.
Por convencin, las variables se escribirn con mayscula -a menos que estn
relacionados con un cuantificador como se ver ms adelante-, y las constantes, los
smbolos de funcin y predicados se escribirn con minscula.
Def:

Se define el conjunto de los trminos (T) de la siguiente manera:


 vV vT
 cC cT

Apunte Lgica de Primer Orden, Clusulas y Resolucin

Universidad CAECE - Paradigmas de Programacin

 t1T, ..., tnT, <f, n>L f(t1, ..., tn)T


 T es cerrado por las construcciones anteriores.
Los trminos son los componentes sintcticos que semnticamente representan
valores del dominio. Ejemplos de trminos son los siguientes:
X
ushuaia
curso(paradigmas, profesor(P), 2015)

(el curso de la materia Paradigmas dada por el profesor P en el ao 2015)

bautismo(hijo(connie))

(el bautismo del hijo de Connie)


En alguna bibliografa no figuran las constantes como componentes de un
lenguaje de primer orden, ya que las consideran como smbolos de funcin
(functores) de aridad 0.
Se define el conjunto de las frmulas bien formadas (F) de la siguiente manera:

Def:






t1T, ..., tnT, <p, n>P p(t1, ..., tn)F


PF (P)F
PF, QF (PQ)F
PF, xV ((x) P)F
F es cerrado por las construcciones anteriores.

(frmula atmica o tomo)


(negacin)
(conjuncin)
(cuantificador universal)

Las frmulas son los componentes sintcticos que semnticamente representan


valores de verdad. Ejemplos de frmulas son los siguientes:
mas_alto(juan, pedro)

(Juan es ms alto que Pedro)

blando(roble) mas_duradero(X, roble)

(El roble no es blando y X es ms duradero que el roble)


(x) es_multiplo(uno, x)

(Uno es mltiplo de cualquier cosa)


Dentro de las frmulas, se suelen llamar literales a las frmulas atmicas y a las
frmulas atmicas negadas (tambin llamados literales positivos y literales
negativos respectivamente).
Def:

Se definen los siguientes nuevos conectivos lgicos y cuantificadores en funcin


de los anteriores:





(PQ) =def (((P)(Q)))


(PQ) =def ((P)Q)
(PQ) =def ((PQ)(QP))
((x) P) =def (((x) (P)))

Apunte Lgica de Primer Orden, Clusulas y Resolucin

(disyuncin)
(implicacin material)
(doble implicacin material)
(cuantificador existencial)

Universidad CAECE - Paradigmas de Programacin

Para simplificar la escritura de frmulas bien formadas se definen las siguientes


reglas de supresin de parntesis:
 Los operadores estn ordenados de mayor a menor por su precedencia de la
siguiente manera: , , , , .
 Los operadores binarios y son asociativos a izquierda, mientras que el
operador binario lo es a derecha.
 Los cuantificadores y tienen ambos tan alta precedencia como el
operador (esto apunta a la eliminacin de los parntesis exteriores a la
frmula).
 La formacin sucesiva de frmulas precedidas por cuantificadores, permite
eliminar los parntesis exteriores de aquellas subfrmulas interiores.
 Los parntesis exteriores de cualquier frmula que no es subfrmula de otra,
pueden eliminarse.
Se define Vars (variables) de un trmino de la siguiente forma:

Def:

Vars : T (V)
Vars(x)
= {x}
Vars(c)
=
Vars(f(t1, ..., tn)) = Vars(t1) ... Vars(tn)

(si xV)
(si cC)
(si t1T y ... y tnT y <f, n>L)

Se define FV (variables libres) de una frmula de la siguiente forma:

Def:

FV : F (V)
FV(p(t1, ..., tn))
FV((P))
FV((PQ))
FV((PQ))
FV((PQ))
FV((PQ))
FV(((x) P))
FV(((x) P))

= Vars(t1) ... Vars(tn)


= FV(P)
= FV(P) FV(Q)
= FV(P) FV(Q)
= FV(P) FV(Q)
= FV(P) FV(Q)
= FV(P) \ {x}
= FV(P) \ {x}

(si t1T y ... y tnT y <p, n>P)


(si PF)
(si P, QF)
(si P, QF)
(si P, QF)
(si P, QF)
(si xV, PF)
(si xV, PF)

Semntica
Se define una estructura adecuada para el lenguaje como:

Def:





Un conjunto D (D) llamado el universo de la estructura


Un mapeo de cada cC a un elemento cDD
Un mapeo de cada <f, n>F a una funcin fD : Dn D
Un mapeo de cada <p, n>P a una funcin/relacin pD : Dn {f, v}

Apunte Lgica de Primer Orden, Clusulas y Resolucin

Universidad CAECE - Paradigmas de Programacin

Hay que tener en cuenta que el conjunto D correspondiente al universo de la


estructura (el dominio) es uno solo, ya que no existen distintos dominios
correspondientes a cada parmetro de los smbolos de funcin, a cada parmetro de
los smbolos de predicado ni a cada valor retornado por cada smbolo de funcin.
Dicho de otra forma, el universo de la estructura no est tipificado (no existe una
subclasificacin del dominio universal).
Def:

Se define una interpretacin de variables como una funcin : V D. Una


interpretacin de variables es una asignacin semntica de cada variable a un
determinado valor del universo de la estructura.

Def:

Se define una interpretacin de trminos en funcin de una interpretacin de


variables, como una funcin T : T D definida as:
 T(v) = (v)
 T(c) = cD
 T(f(t1, ..., tn)) = fD(T(t1), ..., T(tn))

(si vV)
(si cC)
(si t1T y ... y tnT y <f, n>L)

Una interpretacin de trminos es una asignacin semntica de cada trmino a un


determinado valor del universo de la estructura a partir de una interpretacin de
variables dada.
Def:

Se define una interpretacin de frmulas en funcin de una interpretacin T


de trminos, como una funcin I : F {f, v} definida as:









I(p(t1,,tn)) = pD(T(t1), ..., T(tn))


I((P)) = (I(P))
I((PQ)) = (I(P)I(Q))
I((PQ)) =def I((((P)(Q)))) = (I(P)I(Q))
I((PQ)) =def I(((P)Q)) = (I(P)I(Q))
I((PQ)) =def I(((PQ)(QP)))
I(((x) P)) = wD{I(P[w/x])}
I(((x) P)) =def I((((x) (P)))) = wD{I([w/x]P)}

(si t1T y ... y tnT y <p, n>P)


(si PF)
(si P, QF)
(si P, QF)
(si P, QF)
(si P, QF)
(si xV, PF)
(si xV, PF)

Donde en las dos ltimas definiciones [Q/x]P representa el reemplazo de todas las
variables x que aparecen libres en P por el trmino Q.
Una interpretacin de frmulas es una asignacin semntica de cada frmula a un
determinado valor de verdad verdadero o falso (elemento del conjunto {f, v}) a
partir de una interpretacin de trminos dada.
Notar que en la definicin de interpretacin de frmulas, los conectivos , y
representan en la parte izquierda de la definicin conectivos sintcticos
constructores de frmulas, mientras que en la parte derecha de la definicin

Apunte Lgica de Primer Orden, Clusulas y Resolucin

Universidad CAECE - Paradigmas de Programacin

conectivos semnticos correspondientes a los operadores lgicos de la lgica de dos


valores {f, v}.
Def:

Una interpretacin de frmulas I se dice que es modelo de una frmula P si


cumple lo siguiente:
I(P) = v

Def:

Una interpretacin de frmulas I se dice que falsifica una frmula P si cumple


lo siguiente:
I(P) = f

Def:

Una frmula P se dice que es vlida si cumple lo siguiente:


I(P) = v

Def:

para toda interpretacin I dentro de la estructura adecuada

Una frmula P se dice que es insatisfacible si cumple lo siguiente:


I(P) = f

para toda interpretacin I dentro de la estructura adecuada

Def:

Una frmula P se dice que es satisfacible si no es insatisfacible.

Def:

Una frmula P se dice que es universalmente vlida si cumple lo siguiente:


I(P) = v

para toda interpretacin I dentro de cualquier estructura


adecuada para el lenguaje

Por ejemplo, la siguiente frmula


((x)(es_numero_natural(x)

menor_igual(cero, x)))

es vlida slo para una estructura adecuada del lenguaje donde el dominio D
corresponde a un conjunto que incluye a los nmeros naturales, la constante cero se
mapea al elemento 0 correspondiente al nmero natural cero, el predicado
es_numero_natural se mapea a la relacin que indica si un valor corresponde a un
nmero natural y el predicado menor_igual se mapea a la relacin que indica si
dados dos nmeros naturales el primero es menor o igual al segundo. Bajo otras
estructuras adecuadas no se garantiza que esta frmula sea vlida.
Sin embargo, la siguiente frmula
((x)(ignifugo(x)

ignifugo(x)))

Apunte Lgica de Primer Orden, Clusulas y Resolucin

Universidad CAECE - Paradigmas de Programacin

es universalmente vlida bajo cualquier estructura adecuada para el lenguaje (no


importa cul sea el dominio D asociado ni el mapeo que se asigne al predicado
ignifugo).

Consecuencia lgica
Def:

Dado un conjunto de frmulas (posiblemente infinito), se dice que una


intepretacin de frmulas I es modelo de si se cumple lo siguiente:
P, I es modelo de P

Def:

Dado un conjunto de frmulas (posiblemente infinito), se dice que es


inconsistente o insatisfacible si se cumple lo siguiente:
I intepretacin de frmulas / I es modelo de

Def:

Dado un conjunto de frmulas (posiblemente infinito), se dice que es


consistente o satisfacible si no es inconsistente o insatisfacible.

Def:

Dado un conjunto de frmulas (posiblemente infinito) y una frmula , se dice


que es consecuencia lgica de (o bien ) si se cumple lo siguiente:

sii I intepretacin de frmulas, I es modelo de I es modelo de

Dicho de otra forma, vale que sii toda interpretacin de frmulas que es
modelo de (es modelo de todas las frmulas de ), tambin es modelo de .
Vale la pena notar que los conceptos semnticos de modelos y de consecuencia
lgica son anlogos aunque parezcan contradictorios: cuanto ms modelos existan
para , tendr a menos frmulas como consecuencia lgica; por el lado contrario,
cuanto menos modelos existan para , tendr a ms frmulas como consecuencia
lgica. En los casos extremos, si es inconsistente (no posee modelos), cualquier
frmula ser consecuencia lgica; si toda interpretacin es modelo de (todas sus
frmulas son vlidas), slo las frmulas que son vlidas sern consecuencia
lgica de .
Prop:

Si es una frmula que cumple que , entonces es (universalmente)


vlida (toda interpretacin es modelo de ) y se dice que es una tautologa.
Si se cumple que , para abreviar se suele escribir .
Para las consecuencias lgicas se pueden tratar modelos para frmulas fijando
una estructura adecuada para el lenguaje, o bien sin fijarla. Es por eso que se pueden

Apunte Lgica de Primer Orden, Clusulas y Resolucin

Universidad CAECE - Paradigmas de Programacin

obtener como consecuencia lgica frmulas vlidas o universalmente vlidas segn


el caso.
La consecuencia lgica cumple las siguientes propiedades:

Prop:

P (P)
(PQ) P y Q
(PQ) P o Q
(PQ) P o Q
(PQ) P sii Q
((x) P) [w/x]P para todo wD
((x) P) [w/x]P para algn wD
Ejemplo:
{((x)(hombre(x) mortal(x))), hombre(pedro)} mortal(pedro)
Aqu se puede ver que toda interpretacin que sea modelo de ((x)
(hombre(x) mortal(x))) y de hombre(pedro), tambin ser modelo de
mortal(pedro), porque si existiera una interpretacin que no sea modelo de
mortal(pedro) y que sea modelo de una de las frmulas ((x) (hombre(x)
mortal(x))) o hombre(pedro), no puede ser modelo de la otra frmula.
{((x)(hombre(x) superhom(x) mortal(x))), hombre(pedro)} mortal(pedro)
Aqu se puede ver que existe una interpretacin que es modelo de
hombre(pedro), que es modelo de superhom(pedro), que es modelo de ((x)
(hombre(x) superhom(x) mortal(x))), y que no es modelo de
mortal(pedro).
Importante:
Uno de los grandes objetivos de la computacin es poder llegar a deducir cundo
una frmula de un lenguaje de primer orden es consecuencia lgica de un conjunto
de frmulas. Sin embargo la visin semntica de la consecuencia lgica a travs de
las interpretaciones primero de variables y trminos, y luego de frmulas hace
inviable la combinatoria de generacin de interpretaciones posibles, y ms an
cuando el conjunto dominio de la estructura adecuada pueda ser infinito. Con
motivo de este problema, es necesario lograr otra estrategia para que un sistema
computacional pueda llegar a implementar la consecuencia lgica.

Apunte Lgica de Primer Orden, Clusulas y Resolucin

Universidad CAECE - Paradigmas de Programacin

Consecuencia sintctica
Def:

Dado un conjunto de frmulas (posiblemente infinito) y una frmula , se dice


que es consecuencia sintctica de (o bien ) si se cumple que existen
reglas de inferencia (de deduccin) dentro del sistema lgico, que partiendo de las
frmulas pertenecientes a (que funcionan como premisas) y encadenando las
deducciones obtenidas a partir de las deducciones anteriores, se puede llegar a
deducir . De otra forma, sera decir que es demostrable a partir de . Estas reglas
de inferencia no deben hacer hincapi en interpretaciones ni modelos (no se
concentrarn en valores de verdad de las frmulas), o sea que no se enfocarn en
aspectos semnticos propios de la consecuencia lgica.
Algunas reglas de inferencia conocidas son las siguientes:
Modus ponens:

P, (PQ)
Q

Modus tollens:

Q, (PQ)
P

Eliminacin universal:

((x) P)
[a/x]P

Insercin existencial:

P
((x) [x/a]P)

Insercin conjuncin:

P, Q
(PQ)

Deduccin disyuncin:

P
(PQ)

(si a es un trmino contenido en P)

En los casos de arriba, la frmula [a/x]P representa una frmula que es la frmula
P reemplazando las apariciones libres de la variable x por el trmino constante a. La
frmula [x/a]P es un abuso de notacin para indicar que representa a la frmula P
que contiene trminos constantes a, reemplazando todas las apariciones de estos
trminos constantes a por una variable x que no aparece libre en la frmula P.
Las reglas de inferencia tambin pueden escribirse como frmulas del lenguaje.
Deber ocurrir que las frmulas equivalentes a las reglas de inferencia utilizadas por
el sistema deben cumplir con la propiedad de correctitud (en ingls soundness).
Esto significa que estas frmulas deben ser universalmente vlidas desde el punto
de vista semntico.

Apunte Lgica de Primer Orden, Clusulas y Resolucin

10

Universidad CAECE - Paradigmas de Programacin

Prop:

Si es una frmula que cumple que , entonces corresponde a una


frmula que corresponde a una regla de inferencia, ya que no se infiere de ninguna
premisa, y se dice que es un teorema.
Si se cumple que , para abreviar se suele escribir . Por la propiedad de
correctitud (soundness) los teoremas deben ser tautologas.

Importante:
Los sistemas computacionales utilizan tcnicas de deduccin para llegar a la
conclusin de que una frmula es consecuencia de un conjunto de frmulas. Todos
utilizan tcnicas sintcticas basadas en inferencias para intentar llegar a probar la
consecuencia sintctica a travs de reglas de inferencia, teoremas y
encadenamientos como alternativa a la consecuencia lgica que est basada en
interpretaciones y modelos, que son inviables de implementar.
Ejemplo:
{((x)(hombre(x) mortal(x))), hombre(pedro)} mortal(pedro)
Las reglas de inferencia utilizadas con el encadenamiento de conclusiones es el
siguiente:
((x) (hombre(x) mortal(x)))
(hombre(pedro) mortal(pedro))
,
mortal(pedro)

hombre(pedro)

Aqu se ve que la primera regla de deduccin utilizada es la eliminacin


universal, y la segunda utilizada es el modus ponens.
Def:

Dos frmulas bien formadas P y Q se dice que son equivalentes (o bien P Q)


sii se cumple:
I(P) = I(Q)

I interpretacin de frmulas

Se cumplen las siguientes propiedades acerca de la equivalencia de frmulas bien


formadas:








P ((P))
((PQ)) ((P)(Q))
((PQ)) ((P)(Q))
(P(QR)) ((PQ)(PR))
(P(QR)) ((PQ)(PR))
(((x) P)) ((x) (P))
(((x) P)) ((x) (P))

Apunte Lgica de Primer Orden, Clusulas y Resolucin

11

Universidad CAECE - Paradigmas de Programacin

 ((x) (PQ)) (((x) P)((x) Q))


((x) (PQ)) (((x) P)((x) Q))

((x) (PQ)) (P((x) Q))


((x) (PQ)) (P((x) Q))

(si xFV(P))
(si xFV(P))

Notar que las estas definiciones de equivalencias entre frmulas son sintcticas y
cumplen con la propiedad de correctitud (soundness) pese a ser definidas
originalmente en trminos semnticos.
Otras propiedades importantes que cumple la consecuencia sintctica son las
siguientes:






P {Q} P
{P} Q (PQ)
P, {P} Q Q
P P se deduce de un subconjunto finito de
P {P} es insatisfacible

(monotona)
(teorema de la deduccin)
(encadenamiento de conclusiones)
(compacidad)
(reduccin al absurdo)

La propiedad  indica que si una frmula se puede deducir de un conjunto, el


hecho de agregar nuevas frmulas al conjunto no impide que las frmulas anteriores
se sigan deduciendo. La propiedad  indica que si las frmulas deducidas de un
conjunto de frmulas se utilizan para deducir nuevas frmulas, estas nuevas
frmulas son deducibles del conjunto de frmulas original, sin necesidad de utilizar
estas frmulas deducidas.
Todas las propiedades aqu expresadas de la consecuencia sintctica para los
lenguajes de primer orden preservan las mismas propiedades que la consecuencia
sintctica para la lgica proposicional.
Solamente queda verificar si se cumplen ciertas propiedades importantes:
P P

(correctitud/soundness)

La propiedad de correctitud s se cumple, ya que las reglas de inferencia y


teoremas utilizados en las deducciones son universalmente vlidas, con lo cual con
la consecuencia sintctica no se corre el risego de deducir frmulas que no sean
consecuencia de las frmulas dadas. Esto ya se coment anteriormente.
Notar que si se cumple la propiedad de correctitud/soundness, todas las frmulas P
demostrables a partir de son vlidas a partir de la validez de (las frmulas P son
consecuencia lgica de ), pero no implica que las frmulas P que no son
demostrables a partir de sean falsas a partir de la validez de (que las frmulas P
no sean consecuencia lgica de ).
Faltara analizar si realmente se cumple la siguiente propiedad deseable:

Apunte Lgica de Primer Orden, Clusulas y Resolucin

12

Universidad CAECE - Paradigmas de Programacin

(completitud/completeness)

La propiedad de completitud (completeness) es fundamental porque expresa que


toda frmula que sea consecuencia lgica de un conjunto de frmulas puede ser
obtenida utilizando las inferencias propias del sistema. Dicho de otra forma, est
indicando que el sistema computacional con sus mecanismos de inferencia es capaz
de deducir todas las frmulas que realmente son consecuencia (el sistema es
completo porque toda frmula que es consecuencia es deducida, y toda frmula que
no es consecuencia es indicada por el sistema que no es deducida).
Por contrarrecproco, la completitud/completeness asegura que las frmulas P que
no son demostrables a partir de son falsas a partir de la validez de (que las
frmulas P no son consecuencia lgica de ).
Esto es as?
Propiedad:
La lgica de primer orden es indecidible. Esto significa que no se puede
encontrar un mtodo computacional para deducir en general cundo una frmula de
un lenguaje de primer orden es consecuencia lgica de un conjunto de frmulas de
primer orden. Este problema es similar al de plantear si un programa llega a su fin
de ejecucin (halting problem) -problema planteado por Alan Turing-, o si una
expresin del -clculo tiene forma normal o si dos expresiones del -clculo son
equivalentes -problema planteado por Alonzo Church-, ambos en forma paralela en
1936. Esto mismo no ocurre con el clculo proposicional, que s es decidible.
Debido a esta gran limitacin, nos vemos forzados a replantear la sintaxis de las
frmulas de una forma ms restringida que el conjunto F de las frmulas de los
lenguajes de primer orden. El objetivo es poder aplicar de una forma sintctica y
computacional (decidible) el criterio de consecuencia lgica a este nuevo conjunto
acotado de frmulas.

Apunte Lgica de Primer Orden, Clusulas y Resolucin

13

Universidad CAECE - Paradigmas de Programacin

Definicin de forma clausal


Ya hemos explicado que la lgica de primer orden no es decidible, y por este
motivo se intentar trabajar no con frmulas de primer orden, sino con un
subconjunto de ellas, de manera que la consecuencia sintctica (con su mtodo de
inferencia) sobre este nuevo conjunto s sea decidible.

Clusulas
Se define el conjunto de las clusulas (S) como un subconjunto de frmulas
(SF) correspondientes a sentencias (frmulas sin variables libres) cuyo formato es
el siguiente:
(x1)(x2)...(xn)(p1p2...pmq1q2...qk)

(m, k 0)

donde p1, p2, ..., pm, q1, q2, ..., qk corresponden a frmulas atmicas. Las frmulas
escritas como clusulas se dice que se encuentran en forma clausal o forma
normal de Sklem.
Dicho de otra forma, una clusula se compone de una disyuncin de literales
(donde los literales pueden ser positivos -frmulas atmicas- o negativos -frmulas
atmicas negadas-) donde todas las variables contenidas se encuentras ligadas por
los cuantificadores universales externos. El orden de los cuantificadores universales
externos es irrelevante, ya que el intercambio del orden de los mismos no altera el
significado de la clusula. Notar que uno de los componentes importantes de las
frmulas de la lgica de primer orden que no aparece es el cuantificador existencial.
A partir de la definicin de clusulas como frmulas, se pueden encontrar
frmulas equivalentes, de la siguiente forma:
(x1)(x2)...(xn)(p1p2...pmq1q2...qk)
(x1)(x2)...(xn)((p1p2...pm)(q1q2...qk))
(x1)(x2)...(xn)(p1p2...pm q1q2...qk)
As es que una clusula corresponde a una implicacin donde los literales
negativos corresponden al antecedente (el antecedente sera la conjuncin de los
literales negativos sin la negacin) y los literales positivos corresponden al
consecuente (el consecuente sera la disyuncin de los literales positivos). Aqu se
introduce el smbolo con el significado de es implicado por e inverso al de la
implicacin material ya conocido . Este nuevo smbolo es muy utilizado dentro
del contexto de las clusulas.

Apunte Lgica de Primer Orden, Clusulas y Resolucin

14

Universidad CAECE - Paradigmas de Programacin

Una notacin sintctica para las clusulas es la siguiente:


p1, p2, ..., pm q1, q2, ..., qk
donde el smbolo se usa para toda clusula, tenga o no tanto literales positivos
como negativos. Ver que no se escriben los cuantificadores universales externos.
Si para una clusula se cumple que m>0 y k=0, entonces esa clusula es llamada
hecho; si cumple que m>0 y k>0, la clusula es llamada regla. Vale la pena notar
que estas dos subclasificaciones de clusulas no conforman una particin de S.
Si una clusula con literales negativos posee variables que slo aparecen en los
literales negativos, estas variables aparecen ligadas por un cuantificador existencial
dentro del antecedente, en el caso que la clusula se la describa con la notacin de la
implicacin.
Por ejemplo, si dada una clusula, x1, ..., xn son variables que aparecen en los
literiales positivos y posiblemente en literales negativos, y z1, ..., zm son variables
que aparecen en los literales negativos solamente, las siguientes frmulas-clusulas
son equivalentes:
(x1)...(xn)(z1)...(zm)(p1...pmq1...qk)
(x1)...(xn)(p1...pm(z1)...(zm)(q1...qk))
(x1)...(xn)(p1...pm(z1)...(zm)((q1...qk)))
(x1)...(xn)(p1...pm((z1)...(zm)(q1...qk)))
(x1)...(xn)(p1...pm (z1)...(zm)(q1...qk))
Como los conjuntos de frmulas, los conjuntos de clusulas tienen el significado
de clusulas unidas con conjunciones (forma normal conjuntiva).
Tambin como las frmulas, a nivel semntico existen las interpretaciones de
clusulas, que se definen para cada clusula como la interpretacin de su frmula
equivalente.
Sabiendo que ahora vamos a trabajar sobre clusulas y no sobre frmulas, deber
ser necesario encontrar un mtodo para convertir frmulas de la lgica de primer
orden en una conjuncin de clusulas, para que as se pueda aplicar su consecuencia
sintctica (que ms adelante la definiremos). Sin embargo, ste mtodo no
garantizar para cualquier frmula que la conjuncin de clusulas-resultado sea
semnticamente equivalente a ella. Este mtodo est basado en transformaciones
sucesivas de la frmula original (basndose en propiedades que garantizan
equivalencia semntica en la mayora de los casos), hasta llegar a una frmula que
pueda ser convertida en una o ms clusulas, segn la definicin anterior.

Apunte Lgica de Primer Orden, Clusulas y Resolucin

15

Universidad CAECE - Paradigmas de Programacin

Conversin de frmulas a clusulas


Se utilizar el siguiente mtodo de pasaje a forma clausal. ste transforma una
frmula que es sentencia a travs de pasos sucesivos a otra frmula que es
lgicamente equivalente a alguna conjuncin de clusulas, y as poder expresarlas
como conjunto de clusulas. Este proceso de conversin de frmulas de un lenguaje
de primer orden a su correspondiente en clusulas se llama Sklemizacin.
Para ponerlo en prctica, se deber aplicar las siguientes reglas de transformacin a
todas las subfrmulas que cumplan las condiciones necesarias, en el orden indicado:
Nota: La subfrmula a transformar debe unificar con la subfrmula de la izquierda del signo de la
regla, tranformndose en la subfrmula de la derecha del mismo signo.

 ((x) P) ((y) [y/x]P) (xwCtx(P)Var(w), yVar(P), ywCtx(P)Var(w))


((x) P) ((y) [y/x]P)
(Renombrar por variables nuevas a las variables ligadas de la frmula. Las
variables a renombrar sern aquellas con igual nombre que otras variables de
distintos alcances de cuantificadores. Esto slo garantiza no confundir esas
variables ligadas con otras del mismo nombre que estn al alcance de otro
cuantificador). Aqu Ctx(P) devuelve un conjunto de frmulas que representan
el contexto de la frmula P dentro de la frmula principal.
 (PQ) (PQ)(QP)
(PQ) ((P)Q)
(Eliminar los operadores y de implicacin, reemplazndolo por su
definicin. Estos no aparecen en la frmula final la cual es lgicamente
equivalente a una conjuncin de clusulas).
 ((PQ)) ((P)(Q))
((PQ)) ((P)(Q))
(((x) P)) ((x) (P))
(((x) P)) ((x) (P))
(Desplazar las negaciones hacia los tomos, que son donde realmente
debern aplicarse).
 ((P)) P
(Eliminar las negaciones innecesarias).
 (P(QR)) ((PQ)(PR))
(Desplazar las diyunciones hacia los tomos y desplazar las conjunciones
ms lejos de los tomos. Con esto, la estructura de la frmula se asemeja exceptuando a los cuantificadores- a una conjuncin de disyunciones, que es
el formato base de una conjuncin de clusulas).
 ((x) (PQ)) (((x) P)((x) Q))
(Desplazar los cuantificadores universales que ocurren fuera de las
clusulas, hacia ellas. Con esto nos aseguramos que las clusulas slo van a
estar conectadas con operadores de conjuncin , con la excepcin de
aquellos cuantificadores con un alcance mayor a una subfrmula-clusula y

Apunte Lgica de Primer Orden, Clusulas y Resolucin

16

Universidad CAECE - Paradigmas de Programacin

de los cuentificadores en cuyo cuerpo aparece alguna frmula con un


cuantificador ).
 (P((x) Q)) ((x) (PQ)) (si xFV(P))
(((x) P)Q) ((x) (PQ)) (si xFV(Q))
(Desplazar los cuantificadores universales que ocurren dentro de las
clusulas, hacia la subfrmula ms externa de esa clusula. Con esto nos
aseguramos que las frmulas principales asociadas a las clusulas se escriban
con cuantificadores universales . Las condiciones necesarias para poder
aplicar esta regla se van a cumplir, ya que en el punto  se renombraron
variables ligadas para evitar conflictos de nombres).
 ((x) P) P (si xFV(P))
(Eliminar los cuantificadores universales innecesarios).
((x1)(x2)...(xn)(x) P) ((x1)(x2)...(xn) [f(x1, x2, ..., xn)/x]P)
(Eliminar los cuantificadores existenciales dentro de cada clusula, ya que
no deben utilizarse. Encontramos el problema de que esta eliminacin no
preserva la semntica porque cuando se expresa la frmula ((x) P) se est
diciendo que para algn elemento del dominio x vale P. No se aclara, sin
embargo, cules ni cuntos elementos del dominio hacen valer P. Al quitar el
cuantificador se est expresando que hay un elemento del dominio que hace
valer P, y que ste es un trmino con un smbolo de funcin nuevo f en
funcin de otros trminos que son todas las variables ligadas por los
cuantificadores universales anteriores -si no existen cuantificadores
universales anteriores, se reemplaza no por un smbolo de funcin nuevo de
aridad cero, sino por una constante nueva-. Al eliminar los cuantificadores ,
podran quedar liberados algunos cuantificadores interiores cuyo alcance
abarcaba ms de una subfrmula-clusula, en los que anteriormente no poda
aplicarse la regla . Si este caso ocurre, luego de la eliminacin de los
cuantificadores existenciales, la regla  debe ser aplicada).
Un ejemplo de la regla de conversin a clusulas del punto solamente (que
como se dijo antes es la nica regla de transformacin donde no se preserva la
equivalencia) es la siguiente:
Hay un reloj que todas las personas lo usan
((r)(x)(persona(x)usa(x,r))) ((x)(persona(x)usa(x,longines)))
Todas las personas tienen un reloj que usan
((x)(r)(persona(x)usa(x,r))) ((x)(persona(x)usa(x,reloj(x))))

Apunte Lgica de Primer Orden, Clusulas y Resolucin

17

Universidad CAECE - Paradigmas de Programacin

Sustituciones
Def:

Dado un conjunto de pares {<xi, ti>}i (con xiV, tiT i) donde se cumple
adems que i xiti y ij xixj si ij, se define una sustitucin como el conjunto
{xiti}i (no confundir con el smbolo de la implicacin material de las frmulas).
La sustitucin correspondiente al conjunto vaco se la llama sustitucin vaca y
se la denota con el smbolo .

Def:

Dado un trmino t (tT) y una sustitucin , se define la aplicacin de la


sustitucin al trmino t (denotado como t) al trmino definido de la siguiente
forma:





x
x
c
f(t1, ..., tn)

=
=
=
=

x
t
c
f(t1, ..., tn)

(xV, (xt))
(xV, (xt))
(cC)
(t1T y ... y tnT y <f, n>L)

Un ejemplo de aplicacin de sustituciones es el siguiente:


familia(X, maria, Z, T) {Xjose, Zhijo(X),
familia(jose, maria, hijo(X), T)

Def:

Dado una clusula s (sS) y una sustitucin , se define la aplicacin de la


sustitucin a la clusula s (denotado como s) a la clusula definida de la
siguiente forma:
p(t1, ..., tn) = p(t1, ..., tn)
(P)
= ((P))
(PQ)
= ((P)(Q))

Def:

Wcordoba} =

(t1T y ... y tnT y <p, n>P)


(P es una frmula atmica)
(P y Q son literales)

Dadas y dos sustituciones, se define la composicin de sustituciones y


(denotado como ) a la sustitucin definida de la siguiente forma:
t()

= (t)

(tT)

Dicho de otra forma, la composicin de sustituciones corresponde a la aplicacin


sucesiva de las sustituciones a un trmino, y se puede definir ms informalmente
as:
Sean las siguientes sustituciones:
= {x1s1, ..., xmsm}
= {y1t1, ..., yntn}

Apunte Lgica de Primer Orden, Clusulas y Resolucin

18

Universidad CAECE - Paradigmas de Programacin

la composicin se define as:


= {x1s1, ..., xmsm, y1t1, ..., yntn}, eliminando luego los
elementos xisi que cumplan que xi=si, y los elementos yjtj
donde se cumpla que yj{x1, ..., xm}
Un ejemplo de composicin de sustituciones es el siguiente:
{XY, Zhijo(X), Wcordoba}{Ttandil, Xnieto(paula), Wrosario} =
{XY, Zhijo(nieto(paula)), Wcordoba, Ttandil}
Prop:

La composicin de sustituciones cumple las siguientes propiedades (dadas , y


sustituciones):
() = ()
= =

Def:

(asociatividad)
(existencia de elemento neutro )
(no conmutatividad)

Dada una sustitucin y dos trminos t y s (t, sT), se dice que la sustitucin
es un unificador de t y s si se cumple lo siguiente:
t = s
Un ejemplo de unificadores de dos trminos es el siguiente:
Trmino 1: juan
Unificadores: no poseen

Trmino 2: luisa

Trmino 1: hijo(raul)
Unificadores:{Yhijo(raul)}

Trmino 2: Y

Trmino 2: hijo(hermano(Z))
Trmino 1: hijo(X)
Unificadores: {Xhermano(Z)}
{Xhermano(paula), Zpaula}
{Xhermano(primo(Y,R)), Z primo(Y,R)}
Trmino 1: padres(Y,X)
Trmino 2: padres(aldo,hermano(Y))
Unificadores: {Yaldo, Xhermano(aldo)}
Trmino 1: padres(Y,primo(X))
Unificadores: no poseen

Trmino 2: padres(aldo,hermano(Y))

Trmino 1: padres(Y,X)
Unificadores: no poseen

Trmino 2: hermanos(Z,T)

Apunte Lgica de Primer Orden, Clusulas y Resolucin

19

Universidad CAECE - Paradigmas de Programacin

Trmino 1: padres(X,X)
Trmino 2: padres(hijo(R),hijo(hijo(W)))
Unificadores: {Xhijo(hijo(W)), Rhijo(W)}
{Xhijo(hijo(rolex)), Rhijo(rolex), Wrolex}
{Xhijo(hijo(titulo(pepsi,C))), Rhijo(titulo(pepsi,C)),
Wtitulo(pepsi,C) }
Trmino 1: padres(X,X)
Unificadores: no poseen

Trmino 2: padres(Z,hijo(Z))
verificar por qu

As como se define un unificador de dos trminos, de una forma anloga se


puede definir un unificador de dos frmulas atmicas, de dos literales y de dos
clusulas.
Si al intentar encontrar un unificador de dos clusulas aparecieran variables con
el mismo nombre en las dos clusulas, es posible renombrar previamente todas las
apariciones de esa variable en una de las dos clusulas por una variable nueva (para
evitar confusiones en las distintas apariciones de las variables) sin riesgo de que la
unificacin sea incorrecta, ya que todas las variables en una clusula se encuentran
ligadas por cuantificadores universales externos, y el renombramiento de variables
ligadas no hace que las dos clusulas antes equivalentes dejen de serlo.
Este mismo razonamiento no se puede aplicar para encontrar un unificador de dos
trminos, ya las variables aparecen libres dentro de los trminos y habra que
suponer que las variables con el mismo nombre que se encuentran en los dos
trminos el contexto hace que sean la misma variable.
Def:

Dada una sustitucin y dos trminos t y s (t, sT), se dice que la sustitucin
es el unificador ms general de t y s si se cumple lo siguiente:
 es un unificador de t y s
 es un unificador de t y s sustitucin / =

( es unificador)
( es el ms general)

De los ejemplos anteriores de pares de trminos que tengan unificadores, los


unificadores ms generales son los siguientes:
Trmino 2: Y
Trmino 1: hijo(raul)
Unificador ms general: {Yhijo(raul)}
Trmino 1: hijo(X)
Trmino 2: hijo(hermano(Z))
Unificador ms general: {Xhermano(Z)}
Trmino 2: padres(aldo,hermano(Y))
Trmino 1: padres(Y,X)
Unificador ms general: {Yaldo, Xhermano(aldo)}
Trmino 2: padres(hijo(R),hijo(hijo(W)))
Trmino 1: padres(X,X)
Unificador ms general: {Xhijo(hijo(W)), Rhijo(W)}
Apunte Lgica de Primer Orden, Clusulas y Resolucin

20

Universidad CAECE - Paradigmas de Programacin

As como se define el unificador ms general de dos trminos, de una forma


anloga se puede extender el concepto para definir el unificador ms general de
dos conjuntos de trminos, de dos frmulas atmicas, de dos literales y de dos
clusulas.
Al unificador ms general de dos smbolos sintcticos s y t (los que correspondan
segn los casos), se lo suele referenciar abreviadamente como mgu(s, t). MGU
viene de las siglas en ingls Most General Unifier (unificador ms general).
Los mtodos para obtenter el unificador ms general de dos trminos retornan si
ambos trminos unifican, y en el caso de que unifiquen, cul es la sustitucin
correspondiente al unificador ms general. Un conjunto de reglas algebraicas para la
obtencin del unificador ms general puede ser el siguiente:





X
X
X
X

 c
 c
 f(t1,t2,...,tn)

unifica con
unifica con
unifica con
unifica con

X
Y
c
f(s1,s2,...,sn)

unifica con c
unifica con X
unifica con X

 f(t1,t2,...,tn)
- t1
- t21
- t312

unifica con f(s1,s2,...,sn)


unifica con s1
unifica con s21
unifica con s312
...
- tn12...n-1 unifica con sn12...n-1
En el resto de los casos no unifica

con la sustitucin
con la sustitucin {XY} {YX}
con la sustitucin {Xc}
con la sustitucin {Xf(s1,s2,...,sn)}
(si XVar(s1)Var(s2)...Var(sn))
con la sustitucin
con la sustitucin {Xc}
con la sustitucin {Xf(t1,t2,...,tn)}
(si XVar(t1)Var(t2)...Var(tn))
con la sustitucin 12...n si
con la sustitucin 1
con la sustitucin 2
con la sustitucin 3
con la sustitucin n

Ver que en la obtencin de los unificadores entre dos trminos, las variables a
sustituir pueden llegar a aplicar tanto para las variables contenidas del primer
trmino como para las del segundo.
Ms adelante se mencionar sobre la necesidad de la definicin de sustituciones,
aplicaciones de sustituciones, y unificadores.

Consecuencia sintctica clausal


La aparicin de la forma clausal como sustituto de las frmulas permite redefinir
el mtodo de consecuencia sintctica, para lograr cumplir las falencias que posee
para la lgica de primer orden con las frmulas.

Apunte Lgica de Primer Orden, Clusulas y Resolucin

21

Universidad CAECE - Paradigmas de Programacin

En la versin clausal, la consecuencia sintctica P se define a partir de un


conjunto de clusulas (S) y una frmula atmica P. Los mtodos para llegar
este resultado son los siguientes:
 P {P} es insatisfacible

(reduccin al absurdo/refutacin)

La primera accin que se realiza es incorporar al conjunto de clusulas , la frmula


atmica P negada, y luego intentar demostrar que este nuevo conjunto de clusulas
{P} es insatisfacible.
Como se puede ver, P al ser una frmula atmica negada, es una clusula con un
solo literal negativo (la frmula atmica P por s misma es positiva y luego se la
niega) y ningn literal positivo. Al ser P una clusula, nos aseguramos que el
conjunto {P} tambin ser un conjunto de clusulas, ya que lo era
originalmente.
Ya se comprende que P sea una clusula (porque {P} debe ser un conjunto
de clusulas), pero ser cierto que P sea una clusula al ser una frmula atmica?
Veremos ciertos casos:
Caso 1: P no contiene variables
Ejemplo: usa(raul,casio)
{usa(raul,casio)} es inconsistente
Aqu se quiere demostrar si Ral usa Casio.

usa(raul,casio)

Caso 2: P contiene alguna variable


Ejemplo 1: usa(raul,X)
{(X)(usa(raul,X))} es inconsistente ...
(X)(usa(raul,X))
(X)(usa(raul,X))
{(X)(usa(raul,X))} es inconsistente (X)(usa(raul,X))
Aqu se quiere demostrar si existe algo que Ral use (qu usa Ral)
Ejemplo 2: usa(X,Y)
{(X)(Y)(usa(X,Y))} es inconsistente ...
(X)(Y)(usa(X,Y))
(X)((Y)(usa(X,Y)))
(X)(Y)(usa(X,Y))
{(X)(Y)(usa(X,Y))} es inconsistente (X)(Y)(usa(X,Y))
Aqu se quiere demostrar si existe alguien que use algo (quin usa qu)
O sea que la frmula atmica P a demostrar a partir de , si contiene variables,
estn cuantificadas por existenciales en lugar de universales, con lo cual P ser una
verdadera clusula slo si no contiene variables.

Apunte Lgica de Primer Orden, Clusulas y Resolucin

22

Universidad CAECE - Paradigmas de Programacin

 Utilizar un mecanismo de inferencia sintctica (resolucin) que cumpla con la


propiedad de correctitud (soundness) para que a partir de dos clusulas
premisas o resolutos, se obtenga una clusula conclusin o resolvente. Este
mecanismo de inferencia (teorema utilizado como mtodo de inferencia clausal)
deber ser utilizado junto con una adecuada estrategia de resolucin, que en cada
paso del proceso de inferencia establezca un criterio de seleccin de clusulas
resolutos, qu componentes resolver de los mismos, y que determine qu hacer
con la clusula resolvente (encadenamiento de resultados inferidos).
 Si el mecanismo de inferencia anterior permite obtener como resolvente la
clusula nula (una clusula sin literales positivos ni negativos) a partir de dos
clusulas resolutos, entonces el conjunto de las dos clusulas resolutos es
inconsistente.
Un ejemplo muy simple sera el siguiente (escrito con sintaxis de clusulas):
{joven(juan), joven(juan)}
La clusula nula, al ser una clusula sin literales (ni positivos ni negativos), y
dado que una clusula es una disyuncin de literales con las restricciones antes
mencionadas, se puede decir que la clusula nula corresponde al elemento neutro de
la operacin de disyuncin lgica, con lo cual corresponde a la constante lgica
falso, o sea que corresponde a una frmula-clusula inconsistente.
Si el mecanismo de inferencia dedujo la clusula nula y fue aplicado
sucesivamente a partir de otras clusulas resolventes inferidas por otras clusulas
resolutos y as sucesivamente (hacia atrs) hasta partir nicamente del conjunto de
clusulas original {P}, entonces ese conjunto {P} era inconsistente.
Resumiendo, para llegar a la conclusin que si a partir de un conjunto de
clusulas se aplic sucesivamente un mecanismo de inferencia clausal correcto con
una estrategia de resolucin determinada y se lleg a inferir la clusula nula,
entonces el conjunto de clusulas original es inconsistente.
Si el mecanismo de inferencia sintctica utilizado en el punto  combinado con una
determinada estrategia de resolucin, adems de ser correcto (cumple correctitud o
soundness) fuera completo (cumple completitud o completeness) se deducir
siempre la clusula nula si el conjunto de clusulas original es inconsistente, y no se
deducir la clusula nula (terminar el proceso de inferencia indicando que la
clusula nula no se pudo inferir) si el conjunto de clusulas original es consistente.

Mtodo de resolucin de Robinson


El nico mtodo de inferencia clausal utilizado es el mtodo de resolucin
presentado por Alan Robinson en 1965. Es un mtodo de inferencia clausal del cual
a partir de dos clusulas resoluto se infiere una clusula resolvente.

Apunte Lgica de Primer Orden, Clusulas y Resolucin

23

Universidad CAECE - Paradigmas de Programacin

El mtodo de inferencia es el siguiente:


(x1)(x2)...(xi)(p1p2...pj r q1q2...qk)
(x1)(x2)...(xm)(s1s2...sn t u1u2...uz)
((x1)(x2)...(xw)(p1p2...pjs1s2...snq1q2...qku1u2...uz)) mgu(r,t)
En todos los casos, los cuantificadores universales de cada clusula-sentencia son
todos los necesarios para ligar todas las variables que aparecen en la disyuncin de
literales de la frmula a la que aplican.
El mtodo de inferencia con la notacin clausal se escribe de la siguiente forma:
p1, p2, ..., pd-1, r, pd, ..., pj q1, q2, ..., qk
s1, s2, ..., sn u1, u2, ..., ue-1, t, ue, ..., uz
(p1, p2, ..., pd-1, pd, ..., pj, s1, s2, ..., sn q1, q2, ..., qk, u1, u2, ..., ue-1, ue, ..., uz) mgu(r,t)
Este mtodo de resolucin tambin podra utilizarse para la lgica proposicional,
donde en lugar de aplicar para clusulas descriptas como disyuncin de literales con
cuantificadores universales, aplican para disyunciones de literales proposicionales
sin cuantificadores, donde los literales proposicionales corresponden a variables
proposicionales o variables proposicionales negadas.
Recordar que en la lgica porposicional el componente sintctico mnimo que posee
un valor de verdad es una variable, mientras que en la lgica de primer orden, el
componente sintctico mnimo que posee un valor de verdad es un tomo, que a su
vez contiene internamente variables que referencian a un elemento del dominio.
La igualdad de componentes sintcticos mnimos que poseen un valor de verdad en
la lgica proposicional es la igualdad de variables, de las cuales dos variables son
iguales solamente cuando representan la misma variable (la igualdad puramente
sintctica).
La igualdad de componentes sintcticos mnimos que poseen un valor de verdad en
la forma clausal es la igualdad de tomos. Dos tomos pueden no ser iguales
sintcticamente, pero como los tomos pueden expresar generalidad/especificidad
en funcin de las variables de trmino/dominio contenidas en ellos, puede existir un
unificador (ms general) de esos dos tomos que s los haga iguales a una instancia
ms particular de ambos. As que es por eso que en la forma clausal las
sustituciones y los unificadores son fundamentales para la verificacin de igualdad
de tomos, mientras que en la lgica proposicional no tienen razn para existir.
Cuando una clusula se quiere usar como resoluto y no se puede encontrar
ninguna clusula que se puede usar como el otro resoluto para obtener un resolvente
utilizando resolucin, se dice que la clusula falla.
En el proceso de resolucin, no llegar a derivar nunca la clusula nula a partir de
la clusula negada original (sta falla) significa que no existe una traza de
encadenamiento de resolventes desde la clusula negada original que llegue a la

Apunte Lgica de Primer Orden, Clusulas y Resolucin

24

Universidad CAECE - Paradigmas de Programacin

clusula nula. Esto significa que no se llega a una justificacin de demostracin


de la clusula negada original (no se puede demostrar exitosamente que es
consecuencia sintctica). Ante esta situacin, se asume que no es consecuencia
sintctica.
La asuncin que no poder demostrar que algo es consecuencia sintctica sera lo
mismo que demostrar que no es consecuencia sintctica, es lo que se conoce como
la ley del tercero excludo (si algo es verdadero, falso o no demostrable que es
verdadero, se asume que lo no demostrable que es verdadero es lo mismo que ser
falso). Esto es lo que se suele asumir en los sistemas de resolucin, pese a que
pueden no ser completos para poder asegurarlo.
El mtodo de resolucin de Robinson, adems de cumplir la propiedad de
correctitud (soundness), si se utilizan estrategias de resolucin adecuadas, tambin
cumple con la completitud (completeness). La demostracin de la completitud del
mtodo de resolucin de Robinson trae a conocimiento nuevos conceptos como
Universo de Herbrand, Base de Herbrand, y Modelo (mnimo) de Herbrand que no
sern explicados aqu.
Alan Robinson, adems de haber definido el mtodo de inferencia clausal,
tambin implement un mtodo para la obtencin del MGU entre dos trminos, que
es muy utilizado en demostradores y lenguajes de programacin lgica.

Clusulas de Horn y estrategia de resolucin SLD


Def:

Una clusula se dice que es una clusula de Horn si posee estrictamente un


literal positivo (como las clusulas en general, pueden poseer 0, 1 ms literales
negativos).
Al igual que a las clusulas clsicas, a las clusulas de Horn tambin se las
mencionan como reglas o hechos en funcin de si tienen o no literales negativos.
Si bien corresponden a una restriccin respecto de las clusulas clsicas, las
clusulas de Horn son de inters debido a cuestiones de optimizacin y completitud
respecto al mtodo y estrategia de resolucin.
Un conjunto de clusulas de Horn siempre refleja informacin positiva (nunca
se refleja informacin falsa). Notar que nunca existen hechos falsos (los hechos
falsos corresponderan a clusulas con un literal negativo y ninguno positivo, con lo
cual no son de Horn) ni reglas en las que la el tomo implicado sea falso (estos
casos corresponderan a clusulas con ms de un literal negativo y ninguno positivo,
con lo cual tampoco son de Horn). De esta forma, la interpretacin de clusulas que
sea modelo de todos los tomos posibles que se puedan construir (los haga vlidos)
tambin ser modelo de una clusula de Horn, independientemente de si sea hecho o
regla. Sin llegar a una situacin tan extrema, dado un conjunto de clusulas de
Horn, las interpretaciones que sean modelo de todos los tomos correspondientes a

Apunte Lgica de Primer Orden, Clusulas y Resolucin

25

Universidad CAECE - Paradigmas de Programacin

los literales positivos de las clusulas de Horn pertenecientes al conjunto, tambin


sern modelo de ese conjunto de clusulas de Horn.
Def:

Una clusula se dice que es una clusula goal si no posee ningn literal positivo
(como las clusulas en general, pueden poseer 0, 1 ms literales negativos). Por
definicin, las clusulas goal no son clusulas de Horn.

Def:

Un conjunto de clusulas se dice que es un programa lgico si todas sus


clusulas contenidas son clusulas de Horn. Bsicamente representa al conjunto
conocido de clusulas (ahora de Horn) del cual intentamos deducir tomos
utilizando el mtodo de resolucin. Las clusulas goal no forman parte de un
programa lgico.

Prop:

Un programa lgico (conjunto de clusulas de Horn) nunca es insatisfacible


(siempre es satisfacible, ya que existe al menos una interpretacin que es modelo,
como se dijo ms arriba). De esto se desprende que si al usar refutacin para
demostrar que de un programa lgico se puede deducir una frmula atmica P
intentando probar que {P} es insatisfacible, en realidad la insercin de P es
lo que hace al nuevo conjunto {P} insatisfacible, ya que el conjunto original
no lo es.

Def:

Se denomina resolucin SLD a un mtodo de resolucin basado en el mtodo de


resolucin de Robinson, pero especializado para clusulas de Horn, combinado
junto con una serie de estrategias de resolucin asociadas. El nombre SLD
corresponde a las siglas en ingls Selective Linear Definite.
Para la resolucin SLD se utiliza una particularizacin del mtodo de resolucin
de Robinson, donde uno de los resolutos es una clusula goal (sin literales positivos)
y el otro de los resolutos es una clusula de Horn (con slo un literal positivo),
obteniendo como resolvente una clusula goal. El mtodo de inferencia es el
siguiente (con notacin de clusulas):
u1, u2, ..., ue-1, t, ue,
r q1, q2, ..., qk

..., uz

( u1, u2, ..., ue-1, q1, q2, ..., qk, ue, ..., uz) mgu(r,t)
La primera clusula goal que aparece en el proceso de demostracin de si una
frmula tomica P es consecuencia sintctica de un conjunto de clusulas (de Horn
o programa lgico) , es su negacin descripta como clusula (P) a travs del
mtodo de refutacin ya mencionado anteriormente. Esta primera clusula goal (la
original), se puede usar como resoluto para que resuelva con una clusula de Horn
del programa lgico, obteniendo como resolvente una nueva clusula goal, que en
algn otro momento se podr usar como resoluto junto con una clusula de Horn del
programa lgico, obteniendo como resolvente otra nueva clusula goal, y as
sucesivamente hasta llegar (o no) a la clusula nula (que tambin es una clusula

Apunte Lgica de Primer Orden, Clusulas y Resolucin

26

Universidad CAECE - Paradigmas de Programacin

goal). Las clusulas goal obtenidas como resolventes (junto a la clusula goal
original) se van acumulando para poder ser usadas como resolutos en posibles
prximas resoluciones a futuro en la misma demostracin para obtener nuevos
resolventes.
De esta forma se van encadenando los resolventes obtenidos desde el goal
original hasta la clusula nula, si es que se obtiene de resolvente. A este tipo de
encadenamiento de resultados durante la demostracin se lo denomina backward
chaining (encadenamiento hacia atrs, porque los resolventes se aplican en el
sentido contrario a las implicaciones, simulando un modus tollens ms general),
goal-directed o top-down, encadenando resultados partiendo desde lo que se quiere
demostrar (goal original) hasta los hechos del programa lgico que permitan obtener
como resolvente la clusula nula. Este mtodo de encadenamiento backward
chaining, goal-directed o top-down est garantizado por la naturaleza de la
resolucin SLD.
El mtodo de encadenamiento contrario sera partir de los hechos del programa
lgico y encadenando hacia adelante utilizando resolucin de Robinson (pero no
SLD) hasta llegar al tomo a demostrar (goal). A este tipo de encadenamiento de
resultados durante la demostracin se lo denomina forward chaining
(encadenamiento hacia adelante) o bottom-up.
La resolucin y estrategia SLD, adems de ser correcta, tambin lo es completa,
si se combina con ciertos otros criterios adicionales.
Otros componentes de la estrategia de resolucin que funcionan combinados con
la estrategia SLD (aunque realmente no forman parte de la estrategia SLD) son los
siguientes:
Criterio de seleccin de prxima clusula goal resoluto: De todas las
clusulas goal obtenidas como resolventes en la demostracin, se deber
elegir cul ser la prxima que se tome como candidata a resoluto de la
prxima resolucin. Un criterio conocido es tomar la clusula goal ms
reciente (la generada como resolvente de la ltima resolucin). Si este
criterio se combina con la utilizacin de backtracking ante la clusula goal
que falla ante una resolucin, tenemos un recorrido en profundidad (depthfirst) en lo que sera el rbol de refutacin o rbol de demostracin. Otro
criterio combinado dentro de esta categora podra ser un recorrido a la
ancho (breadth-first) en lo que sera el rbol de refutacin o rbol de
demostracin. Notar que el criterio de resolucin de recorrido en
profundidad del rbol de refutacin puede no ser completo, ya que puede
caer en un encadenamiento de derivacin que conforma una rama infinita y
nunca llegar a la clusula nula, mietras que si pudiera elegir por otro
encadenamiento s podra llegar.
Criterio de seleccin de prxima clusula de Horn resoluto: Habiendo ya
seleccionado una clusula goal como candidata a resoluto, se deber elegir
Apunte Lgica de Primer Orden, Clusulas y Resolucin

27

Universidad CAECE - Paradigmas de Programacin

qu clusula de Horn (clusula del programa lgico) capaz de resolver con la


clusula goal ya seleccionada, se tomar como resoluto de la prxima
resolucin. Un criterio consiste en seleccionar la clusula por su orden de
aparicin en el programa lgico, de arriba hacia abajo, verificando si es
capaz de resolver. Si no exitieran clusulas de Horn capaces de resolver con
la clusula goal candidata, esta falla. En general, a este tipo de criterio de
seleccin se lo conoce como seleccin OR.
Criterio de resolucin (seleccin de literal negativo de resolucin): Habiendo
ya seleccionado los dos posibles resolutos -la clusula goal y la clusula de
Horn- se deber determinar qu literal negativo de la clusula goal ser el
que deba unificar con el literal positivo de la clusula de Horn para resolver.
Un criterio consiste en tomar siempre el primero de los literales negativos
como nica posibilidad para unificar en la resolucin. Si estos literales no
llegaran a unificar, ser imposible obtener el resolvente entre las dos
clusulas, y se deber elegir otra clusula de Horn sea capaz de unificar con
la clusula goal. En general, a este tipo de criterio de seleccin se lo conoce
como seleccin AND.
Uno de los criterios combinados utilizados en sistemas implementados de
derivacin y demostracin es el siguiente:
 Representacin de informacin en forma de clusulas de Horn (programa
lgico).
 Demostracin de una frmula atmica por refutacin.
 Resolucin SLD (mtodo de resolucin de Robinson para clusulas goal con
clusulas de Horn, top-down/backward chaining).
 Recorrido depth-first de rbol de refutacin (seleccin de clusula goal ms
recientente resuelta, backtracking).
 Seleccin OR de prxima clusula de Horn resoluto, segn el orden de aparicin
en el programa lgico de arriba hacia abajo.
 Seleccin AND de literal negativo de clusula goal resoluto, siempre el primero.
 Utilizacin de la ley del tercero excludo.
Como comentario aparte, el concepto de sustituciones, aplicaciones de
sustituciones y unificadores adems de utilizarse como parte del mecanismo de
resolucin para clusulas se suele utilizar tambin en otras situaciones, como por
ejemplo en el proceso de verificacin e inferencia de tipos en lenguajes fuertemente
tipificados, donde en este caso los dos trminos correspondern a las dos
expresiones de tipo a unificar (el tipo de las expresiones por s mismas y el tipo del
contexto donde se encuentran las mismas), intentando buscar casos particulares de
ambos tipos que puedan unificar. Este proceso se hace ms complejo cuando el
lenguaje tipificado en cuestin posee tipos paramticos con variables de tipo, ya que
esas variables (de cualquiera de las dos expresiones de tipo a unificar) pueden ser
sustitudas por expresiones ms particulares.

Apunte Lgica de Primer Orden, Clusulas y Resolucin

28

Universidad CAECE - Paradigmas de Programacin

Otra situacin en donde se utilizan las sustituciones, aplicaciones de sustituciones y


unificadores es en el proceso de pattern-matching propio de los lenguajes
funcionales. Sin embargo este caso es ms dbil ya que slo uno de los dos
componentes es el que posee variables a unificar (el patrn), mientras que el otro (la
expresin funcional) no las posee, con lo cual las sustituciones slo terminarn
aplicando a las variables del patrn, pero nunca a las de la expresin.

Ejemplos de resolucin
A continuacin se presentan varios ejemplos de resolucin utilizando el rbol de
refutacin para la demostracin de un tomo a partir de un programa lgico. El
mtodo y estrategia de resolucin combinados son los comentados antes. En el rbol
de refutacin, cada nodo conforma una clusula goal. Cada nodo hijo representa la
clusula goal resolvente de la clusula goal resoluto representada en el nodo padre,
y una clusula de Horn que se indica en el arco entre dos nodos. En el arco entre el
nodo padre y el nodo hijo se describe adems de cul es la clusula de Horn resoluto
perteneciente al programa lgico, la sustitucin asociada (en realidad el mgu) que
aplica tanto sobre la clusula goal padre como sobre la clusula de Horn del
programa lgico para obtener esa clusula goal resolvente como nodo hijo. En cada
nodo-clusula goal se subraya cul es el literal negativo que se utiliza para resolver
segn el mtodo de resolucin (siempre ser el primero de la clusula goal). Para
cada nodo-clusula goal se describirn en el rbol todos los posibles nodos
resolventes como nodos hijos posibles. El nodo raz corresponde a la clusula goal
original (el tomo negado a demostrar a partir del programa lgico). Llegar al nodo
correspondiente a la clusula (goal) nula indica la demostracin exitosa por
refutacin. La respuesta (positiva) de esta demostracin deber ser acompaada por
la composicin sucesiva de todas las sustituciones aplicadas desde el nodo raz en
todos los arcos de la rama hasta llegar al nodo de la clusula goal nula, filtrando
solamente por aquellas variables que hayan aparecido en el goal original (la clusula
goal del nodo raz). Las variables de importancia en las sustituciones aplicadas
aparecen en negrita. En estos ejemplos, siempren se renombran las variables de las
clusulas de Horn en cada resolucin agregndole un nmero incremental como
postfijo, para evitar conflictos en las sustituciones con variables que puedan tener el
mismo nombre en la clusula goal resoluto.

Apunte Lgica de Primer Orden, Clusulas y Resolucin

29

Universidad CAECE - Paradigmas de Programacin

El primer ejemplo, con dos demostraciones es el siguiente:


P = { hijo(raul,carlos) ,

hijo(pedro,carlos) ,
hijo(juan,pedro) ,
hijo(ernesto,pedro) ,
hijo(alberto,ignacio) ,
padre(X,Y)hijo(Y,X) ,
abuelo(X,Y)padre(X,Z), padre(Z,Y)

(R1)
(R2)
(R3)
(R4)
(R5)
(R6)
(R7)

Demostrar si P padre(pedro,ernesto)
padre(pedro,ernesto)
R6 {X1pedro, Y1ernesto}

hijo(ernesto, pedro)
R4

Demostrar si P (X)abuelo(carlos,X)
abuelo(carlos,X)
R7 {X1carlos, Y1X}

padre(carlos,Z1), padre(Z1,X)
R6 {X2carlos, Y2Z1}

hijo(Z1,carlos), padre(Z1,X)
R1 {Z1raul}

R2 {Z1pedro}

padre(raul,X)

padre(pedro,X)

R6 {X3raul, Y3X}

R6 {X4pedro, Y4X}

hijo(X,raul)

hijo(X,pedro)
R3 {X
juan}

R4 {X
ernesto}

{Xjuan}

{Xernesto}

Apunte Lgica de Primer Orden, Clusulas y Resolucin

30

Universidad CAECE - Paradigmas de Programacin

Un segundo ejemplo, con una demostracin es el siguiente:


P = { concat(empty,X,X) ,
concat(cons(Y,YS),X,cons(Y,ZS))concat(YS,X,ZS)

(R1)
(R2)

Demostrar si P (X)(Y)concat(X,Y,cons(a,cons(b,empty)))
concat(X,Y,cons(a,cons(b,empty)))
R1 {X
empty,
X1cons(a,cons(b,empty)),
Y
cons(a,cons(b,empty))}

R2 {X
cons(a,YS2), X2Y, Y2a, ZS2cons(b,empty)}

concat(YS2,Y,cons(b,empty))

{Xempty, Ycons(a,cons(b,empty))}
R1 {YS2
empty, X3cons(b,empty),
Y
cons(b,empty)}

R2 {YS2
cons(b,YS4), X4Y, Y4b, ZS4empty}

concat(YS4,Y,empty)

{Xcons(a,empty), Ycons(b,empty)}
R1 {YS4
empty, X5empty, Y
empty}

{X cons(a,cons(b,empty)), Y empty}

Apunte Lgica de Primer Orden, Clusulas y Resolucin

31

Universidad CAECE - Paradigmas de Programacin

Prolog y el paradigma de la programacin lgica


Prolog fue el primer lenguaje de programacin implementado que introdujo el
concepto de demostracin como modelo de implementacin de ejecucin. Fue
entonces el primer lenguaje del nuevo paradigma de programacin conocido como
programacin lgica. Fue diseado e implementado en 1970 por Alain Colmerauer
y Phillip Roussel, ambos de la Universidad de Aix-Marseille I (de Marsella,
Francia). El nombre del lenguaje viene del francs PROgrammation en LOGique
(programacin en lgica). La lgica de Prolog se basa en la representacin de
programas lgicos (conjunto de clusulas de Horn) del que se intenta demostrar una
frmula atmica dada utilizando el ltimo criterio comentado combinado de
resolucin, estrategias y criterios.
La programacin lgica surgi como una alternativa de la programacin
funcional para la resolucin de problemas basados en inteligencia artificial. La
utilizacin de backtracking como parte del mecanismo de resolucin alternativa le
dio un aspecto diferente respecto al modelo de la programacin funcional, que no lo
posee. Junto con la programacin funcional conforma lo que se conocen como
paradigmas declarativos, donde el modelo de ejecucin no representa un cambio de
estado global del entorno de ejecucin y donde el control de la ejecucin no aparece
mezclado con la definicin de las sentencias que conforman el programa (en este
caso clusulas del programa lgico). Esto da la idea de la existencia de un motor
lgico que realiza el proceso de ejecucin lgica (demostracin) aplicando los
criterios de seleccin y encadenamiento de resolventes producto de la resolucin. La
diferencia entre la programacin funcional y la programacin lgica es que la
programacin funcional se dice que es determinstica, mientras que la programacin
lgica se dice que es no determinstica. Esto es as porque mientras la programacin
funcional se llega a un resultado de evaluacin directamente sin bsqueda de
alternativas, en la programacin lgica se busca intentar demostrar por varias
alternativas, en donde si una de ellas falla, se intenta por otra alternativa, dando
posiblemente varios resultados de demostracin exitosa, y donde no se espera que
los posibles mltiples resultados obtenidos (si existen) se demuestren en un orden
preestablecido. Tambin se le dice que es no determinstica porque a veces no se
hace hincapi en todos los componentes de la estrategia de seleccin ms all de la
regla de resolucin.
En Prolog (y la programacin lgica en general), un programa lgico se compone
de definiciones de predicados, en el cual la definicin de cada predicado se
compone de una o ms clusulas de Horn, expresadas como hechos o reglas. Las
definiciones de predicados utilizando clusulas de Horn pueden utilizar recursividad
en la definicin. Los trminos no estn clasificados por tipos de datos, ya que
Prolog es un lenguaje no tipado. El nico tipo de datos implcito es el trmino. Los
predicados con el mismo nombre y con distinta cantidad de trminos-parmetro se
asumen como distintos. Prolog tiene trminos que se distinguen del resto, como las

Apunte Lgica de Primer Orden, Clusulas y Resolucin

32

Universidad CAECE - Paradigmas de Programacin

constantes numricas y los trminos correspondientes a listas, que poseen constantes


y functores especficos, aunque no poseen una clasificacin de tipos para ellos.
Prolog no posee tuplas como trminos. Para poder representarlas, se deber utilizar
una lista heterognea de trminos o un functor con los trminos-parmetro que
correspondan a la tupla.
Prolog posee adems predicados especializados, como el predicado is asociado a
las operaciones aritmticas, que lleva a la limitacin de considerar cundo una
variable-trmino est instanciada (si en el contexto de demostracin la variable
posee una sustitucin asociada que se aplica a ella) o no, incidiendo en el resultado
del proceso de demostracin. Tambin posee caractersticas extralgicas como la
metaprogramacin (un trmino puede ser un tomo demostrable y puede formar
parte de una regla como un supuesto componente literal del antecedente de una
regla), el predicado cut (!) que se utiliza a efectos de implementacin para realizar
podas en el recorrido del rbol de demostracin, el predicado not que representa
la negacin de un tomo por falla (la negacin de un tomo es demostrable si y slo
si ese tomo falla, lo que da la idea de poder trabajar con clusulas con un segundo
literal positivo -el literal negativo negado-), el predicado findall que obtiene todas
las deducciones de un tomo acumulando en una lista todas las sustituciones
obtenidas en cada demostracin exitosa, predicados de entrada-salida impura (la
entrada-salida se modela a travs de predicados de entrada-salida que nunca fallan que siempre son verdaderos-) y los predicados assert y retract para la insercin
o remocin respectivamente de hechos o reglas como clusulas del programa lgico
esttico durante la demostracin.
Las caractersticas de Prolog en detalle no sern explicadas en este apunte.

Apunte Lgica de Primer Orden, Clusulas y Resolucin

33

Universidad CAECE - Paradigmas de Programacin

Bibliografa
- Kowalski, R. (1979): Logic for problem solving. Elsevier Science Publishing.
- Sterling L., Shapiro E. (1994): The Art of Prolog: Advanced programming
techniques. MIT Press.
- Nilsson U., Mauszyski J. (2000): Logic, Programming and Prolog (second
edition). Linkpings Universitet.
- Clocksin W. F., Mellish C. S. (2003): Programming in Prolog. Springer.

Apunte Lgica de Primer Orden, Clusulas y Resolucin

34