You are on page 1of 9

Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M.

de Herbrand Negacin

Introduccin
La programacin lgica es uno de los paradigmas de programacin
ms alejados del imperativo.
ANLISIS LGICO
Un sistema de demostracin de teoremas funciona como un
PROGRAMACIN LGICA mecanismo computacional.
La programacin lgica es declarativa: un programa es una declaracin
Francisco Hernndez Quiroz de qu se desea, y no una receta de cmo obtenerlo.
En la prctica, no siempre se puede alcanzar este ideal, por cuestiones
Departamento de Matemticas de eficiencia.
Facultad de Ciencias, UNAM
E-mail: fhq@ciencias.unam.mx La fundamentacin semntica de la programacin lgica son los
Pgina Web: www.matematicas.unam.mx/fhq modelos de Herbrand.
Un problema difcil en programacin lgica es el de la negacin. Aqu
Facultad de Ciencias se presentarn dos enfoques distintos del tema.
El lenguaje Prolog es un compromiso entre los principios de la
programacin lgica y la eficiencia de implementacin.
Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 1 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 2 / 34

Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M. de Herbrand Negacin
Sustituciones Un algoritmo para umg Sustituciones Un algoritmo para umg

Unificacin Ejemplos
Los trminos
f12 (x, f12 (c, z)) y f12 (c, f12 (y, x))
son unificados por la sustitucin
La unificacin es un caso especial de sustitucin.
[x, y, z := c, c, c],
Definicin
pues
Sean E y F dos expresiones (ya sean dos frmulas atmicas o dos trminos
f12 (x, f12 (c, z))[x,y,z:=c,c,c] = f12 (c, f12 (c, c)) = f12 (c, f12 (y, x))[x,y,z:=c,c,c] .
funcionales). Un unificador de E y F es una sustitucin tal que
A las frmulas atmicas
E = F .
P12 (f12 (x, y), c) y P12 (z, y)
las unifica la sustitucin
[z, y := f12 (x, c), c]
P12 (f12 (x, y), c)[z,y:=f 2 (x,c),c] = P12 (f12 (x, c), c) = P12 (z, y)[z,y:=f 2 (x,c),c] .
1 1

Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 3 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 4 / 34
Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M. de Herbrand Negacin
Sustituciones Un algoritmo para umg Sustituciones Un algoritmo para umg

No siempre es posible unificar dos expresiones: Composicin de sustituciones


f12 (x, c) y f12 (c1 , x)

no tienen un unificador.
En cambio, en otros casos tenemos ms de uno, como con las frmulas La composicin de dos sustituciones se define as:
P12 (x, y) y P12 (y, x) = [x1 , . . . , xn := t1 , . . . , tn ]
con los unificadores = [y1 , . . . , ym := s1 , . . . , sm ]
= = ([x1 , . . . , xn := t1 , . . . tn ] [xi := ti | xi = ti ])
[x := y], [y := x] y [x, y := c, c] :
([y1 , . . . , ym := s1 , . . . , sm ] [yi := si | yi dom()])

P12 (x, y)[x:=y] = P12 (y, y) = P12 (y, x)[x:=y]


P12 (x, y)[y:=x] = P12 (x, x) = P12 (y, x)[y:=x]
P12 (x, y)[x,y:=c,c] = P12 (c, c) = P12 (c, c)[x,y:=c,c]

Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 5 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 6 / 34

Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M. de Herbrand Negacin
Sustituciones Un algoritmo para umg Sustituciones Un algoritmo para umg

Ejemplo Unificadores de mxima generalidad

Sean
def [x, y, w := z, f11 (x), v]
def [z, x, v := y, c, w] Definicin
dos sustituciones. Entonces Sean E y F dos expresiones y sea el conjunto de sus unificadores. Un
unificador de mxima generalidad (umg) es una sustitucin tal que
= [x, y, w := z , f11 (x) , v ] ([z, x, v := y, c, w] [x := c]) para toda se tiene que = .
= ([x, y, w := y, f11 (c), w] [w := w]) [z, v := y, w]
= [x, y, z, v := y, f11 (c), y, w]

Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 7 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 8 / 34
Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M. de Herbrand Negacin
Sustituciones Un algoritmo para umg Sustituciones Un algoritmo para umg

Ejemplos Diferencias
Definicin
(a) Sean E y F dos expresiones. El conjunto diferencia de E y F , denotado
En el ejemplo de las expresiones P12 (x, y) y P12 (y, x), los dos primeros por d(E, F ), se define as:
unificadores propuestos son de mxima generalidad, pues
d(E, F ) = si E = F
[x := y][x, y := c, c] = [x, y := c, c] d(fmn (t1 , . . . , tn ), fmn (t10 , . . . , tn0 ) = d(t1 , t10 ) d(tn , tn0 ))
[x := y][y := x] = [y := x] d(Pmn (t1 , . . . , tn ), Pmn (t10 , . . . , tn0 ) = d(t1 , t10 ) d(tn , tn0 ))
[y := x][x, y := c, c] = [x, y := c, c] d(E, F ) = {E : F } en cualquier otro caso
[y := x][x := y] = [x := y]
(b) Una sustitucin reductora de d(E, F ) es una sustitucin x := t derivada
de algn par Ei : Fi d(E, F ) tal que x = Ei y t = Fi (o viceversa) y x no
aparece en t.
(c) d(E, F ) es reductible sii se puede derivar una sustitucin reductora de
todo par t : t 0 d(E, F ).
Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 9 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 10 / 34

Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M. de Herbrand Negacin
Sustituciones Un algoritmo para umg Sustituciones Un algoritmo para umg

Un algoritmo para umg Ejemplo

Unificaremos las expresiones f12 (x, f22 (a, y)) y f12 (a, f22 (x, z)):
El algoritmo es muy simple: cnstruyase una sucesin de pares de
expresiones y otra sucesin de sustituciones: d(f12 (x, f22 (a, y)), f12 (a, f22 (x, z))) = {x : a, a : x, y : z}
0 = [x := a]
(E0 , F0 ) = (E, F )
1 = 0
(En+1 , Fn+1 ) = (En n , Fn n )
2 2 2 2
(f1 (x, f2 (a, y))0 , f1 (a, f2 (x, z))0 ) = (f12 (a, f22 (a, y)), f12 (a, f22 (a, z))
0 =
d(f12 (a, f22 (a, y)), f12 (a, f22 (a, z)) = {y : z}
n+1 = n n
1 = [y := z]
donde i es una sustitucin reductora de Ei y Fi . La sucesin h(E0 , F0 ), . . . i 2 = 1 1 = [x := a, y := z]
es finita y al final se llega a uno de dos casos: (a) d(En , Fn ) = , o (b) el 2 2 2 2
(f1 (a, f2 (a, y))1 , f1 (a, f2 (a, z)1 ) = (f12 (a, f22 (a, z), f12 (a, f22 (a, z))
conjunto d(En , Fn ) es irreductible.
y como los dos ltimos trminos son iguales, el umg buscado es 2 .

Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 11 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 12 / 34
Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M. de Herbrand Negacin

Clusulas definidas Definicin


Una clusula definida es un enunciado de la forma

x1 , . . . , xm . y1 , . . . , yk . 1 n ,

donde 1 , . . . , n y son frmulas atmicas, x1 , . . . , xm son las variables


En principio se podra tener un lenguaje de programacin lgica que que aparecen en y y1 , . . . , yk son las variables que aparecen en las i
abarcara todo el clculo de predicados de primer orden. pero no en . Siguiendo la tradicin, la clusula del ejemplo se escribir
Por cuestiones de eficiencia computacional nos ocuparemos slo de las
frmulas que se ajustan a una sintaxis particular y que se conocen 1 , . . . , n .
como clusulas definidas.
La frmula se conoce como el encabezado, mientras que 1 , . . . , n son
el cuerpo.
Una frmula puede caracer de cuerpo o de encabezado, y en este ltimo
caso se llamar una meta.
Un programa lgico es un conjunto de clusulas definidas, ninguna de las
cuales es una meta.
Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 13 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 14 / 34

Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M. de Herbrand Negacin

Ms sobre las metas Ejemplo

1. P12 (c, f11 (c))


Por otra parte, conviene notar que de acuerdo con nuestra notacin una
2. P12 (f11 (c), f11 (c))
meta equivale a la negacin de un enunciado existencial:
3. P12 (f11 (f11 (x)), f12 (y, z)) P12 (x, y), P12 (f11 (x), z).
x . .
Si se interpretan las funciones f11 y f12 como sucesor y +, respectivamente, y
donde x aparece libre en . la constante c como 0, P12 corresponde a una relacin que asocia el natural n
con el n-simo nmero de Fibonacci.

Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 15 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 16 / 34
Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M. de Herbrand Negacin

Resolucin

Para hacer ms transparentes los programas lgicos, en adelante nuestro La resolucin es una regla de inferencia que permite demostrar
lenguaje lgico incluir smbolos que hagan obvia su interpretacin. teoremas por medio de refutacin.
El programa anterior se puede rescribir as:
Supngase que se tiene un programa lgico y se quiere demostrar
1. Fib(0, s(0)) que una frmula atmica se sigue de .
2. Fib(s(0), s(0)) Entonces se incluye como premisa la meta (es decir, ).
3. Fib(s(s(x)), y + z) Fib(x, y), Fib(s(x), z). Una demostracin por resolucin nos permitir derivar frmulas hasta
que, en caso de xito, lleguemos a una contradiccin y entonces se
afirmar que se sigue de .

Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 17 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 18 / 34

Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M. de Herbrand Negacin

Resolucin proposicional Versin para el clculo de predicados

1 , . . . , n , 1 , . . . , k
Resolucin
1 , . . . , n , 1 , . . . , k
1 , . . . , n 0 , 1 , . . . , k
Las dos premisas son resolventes y la conclusin es la resolucin.
1 , . . . , n , 1 , . . . , k
`R denota los teoremas de resolucin y Res es nombre de la regla. Prog
significa clusula del programa lgico. donde es un umg de y 0 y las variables que aparecen en la primera
Por ejemplo, q r p, q, r `R p: premisa no aparecen en la segunda.

1 p q, r Programa Una instancia de la regla es:


2 q Programa P(x, f (x)) Q(x, y), R(y) P(a, z), R(z)
3 r Programa Q(a, y), R(y), R(f (a))

4 p Meta donde def x, z := a, f (a).

5 q, r Resolucin 4, 1
6FranciscoHernndez
r Quiroz Resolucin Anlisis
5, 2 Lgico Programacin lgica 19 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 20 / 34
Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M. de Herbrand Negacin

Resolucin y computacin Ejemplo I


Cmo se puede computar un resultado por medio de la resolucin? 1 Fact(0, s(0)) Prog
Supngase que se tiene un programa lgico P y una meta
2 Fact(s(n), m s(n)) Fact(n, m) Prog
Pmn (t1 , . . . , tn )
3 Fact(s(s(s(0))), x) Meta
es decir,
x1 , . . . , xq . Pmn (t1 , . . . , tn ). 4 Fact(s(s(0)), m) Res 2, 3 con
Si al aplicar Res k veces se llega a la clusula vaca , se habr n, x := s(s(0)), m s(s(s(0)))
demostrado que 5 Fact(s(s(0)), m0 ) m := m0 en 4
x1 , . . . , xq . Pmn (t1 , . . . , tn )
6 Fact(s(0), m) Res 2, 5 con n, m0 := s(0), m s(s(0
y, al mismo tiempo, se tendr un umg por cada aplicacin de Res:
7 Fact(s(0), m0 ) m := m0 en 6
1 , . . . , k .
8 Fact(0, m) Res 2, 7 con n, m0 := 0, m s(0)
La aplicacin de las sustituciones:
Pmn (t1 , . . . , tn )1 k 9 Res 1, 8 con m := s(0)
constituye el cmputo deseado.
Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 21 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 22 / 34

Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M. de Herbrand Negacin

Ejemplo II Modelos de Herbrand I


5 y 7 cumplen hacen que las variables de los resolventes sean disjuntas (m
aparece en 3 y en 4 y 6). La sustitucin final es:
1 = [n, x := s(s(0)), m s(s(s(0)))]
2 = [m := m0 ]
3 = [n, m0 := s(0), m s(s(0))]
4 = [m := m0 ] Dado un programa lgico, podemos construir una interpretacin que nos
0
5 = [n, m := 0, m s(0)] permitir dar significado a las clusulas del programa lgico.
6 = [m := s(0)]
1 2 3 4 5 6 =
= [x := s(0) s(0) s(s(0)) s(s(s(0)))]
Fact(s(s(s(0))), x) = Fact(s(s(s(0))), s(0) s(0) s(s(0)) s(s(s(0))))
= Fact(3, 6)

La sustitucin est simplificada para recoger slo el valor de x.


Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 23 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 24 / 34
Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M. de Herbrand Negacin

Modelos de Herbrand II Ejemplo


Definicin
En el programa lgico para calcular la funcin factorial tenemos que
Sea p un programa lgico y sean CP = {c1 , . . . , cn } y FP = {fmn } el conjunto
de constantes y el conjunto de smbolos de funciones que aparecen en P, El universo de Herbrand es
respectivamente. Considrese ahora la cerradura inductiva de CP bajo FP y
{0, s(0), s(s(0)), . . . , 0 0, 0 s(0), s(0) s(0)}.
constryase un conjunto UP con un elemento por cada elemento en CP+ .
Llamaremos a este conjunto el universo de Herbrand de P. Cada uno de sus La base de Herbrand es
elementos es un trmino bsico.
La base de Herbrand es el conjunto de frmulas atmicas con predicados {Fact(0, 0), Fact(0, s(0)), . . . }.
que aparecen en P y cuyos argumentos son trminos bsicos. Una
interpretacin de Herbrand es el subconjunto de la base de Herbrand que Un modelo de Herbrand tiene a la relacin
son satisfechos en la interpretacin.
Un modelo de Herbrand es una interpretacin que hace verdaderas todas las {(0, s(0)), (s(0), s(0)), (s(s(0)), s(s(0))), . . . }
clusulas de P. El modelo mnimo de Herbrand es la interseccin de todos
como interpretacin de la relacin Fact.
los modelos de Herbrand. Se considerar que ste es el modelo buscado
para el programa P.
Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 25 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 26 / 34

Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M. de Herbrand Negacin

Negacin Una regla ms poderosa que resolucin?


Cmo se puede demostrar, dado el programa para la funcin factorial
anterior, que Fact(3, 9)? Hay al menos dos problemas:
(a) Dado que la resolucin busca refutar una frmula, para demostrar Para resolver el problema (a) se puede pensar en una regla de resolucin
Fact(3, 9) debemos partir de Fact(3, 9), que equivale a la ms fuerte, digamos `R0 , que nos permita demostrar teoremas de la forma
clusula Fact(3, 9) . Obviamente, no se puede aplicar resolucin con
esta meta. `R0 .
(b) Aunque la intencin del programa fue definir precisamente la funcin
Pero esto nos llevara a demostrar
factorial (y no algo parecido), desde el punto de vista lgico Fact(3, 9)
no es inconsistente con el programa: si se interpreta el predicado Fact Fact(0, s(0)) , Fact(s(n), m s(n)) Fact(n, m) `R0 Fact(3, 9)
como la relacin
{(n, m) | m = n!} {(3, 9)} y ya sabemos que esto no debera probarse, como nos dice (b). De hecho, el
problema no se limita al caso de Fact.
se tiene un modelo del programa y de la frmula Fact(3, 9) a la vez. Es
decir,
Fact(0, s(0)) , Fact(s(n), m s(n)) Fact(n, m) 6|= Fact(3, 9).
Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 27 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 28 / 34
Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M. de Herbrand Negacin

Negacin y correccin Negacin y consistencia

Un principio de solucin es restringir las frmulas negativas demostrables, es


Teorema decir, dado un programa y una frmula , slo se podra demostrar
Sea `R0 una regla que es ms fuerte que `R en el sentido de que permite
`R0
demostrar teoremas de la forma `R . Entonces, `R0 no es correcta, es
decir, existen y tales que `R , pero se tiene que 6|= . en caso de que {} sea consistente (en este caso se dir que `0R es
correcta en sentido dbil). Pero, cmo calcular las frmulas negativas
El ejemplo de Fact(3, 9) es una instancia de este teorema.
consistentes con un programa?

Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 29 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 30 / 34

Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M. de Herbrand Negacin

Closed world assumption


Una perspectiva es la llamada suposicin del mundo cerrado o CWA):
Definicin
Sea un programa lgico y sea una frmula no negativa. La regla de El siguiente teorema es el fundamento de la suposicin del mundo cerrado:
derivacin CWA es:
6`R Teorema
.

Si es un programa y cwa(), entonces {} es consistente.
El conjunto de consecuencias negativas de bajo la hiptesis del mundo
cerrado es el conjunto

cwa() = { | 6`R }.

CWA nos dice que debemos considerar un programa lgico como un mundo
cerrado sin intereferencia de otras clusulas que no pertenecen al
programa.
Si el hecho no es derivable del programa, y considerando que ste
describe el mundo
Francisco Hernndez Quiroz por completo, Anlisis
concluiremos
Lgico que . Programacin lgica 31 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 32 / 34
Unificacin Clusulas def. Resolucin M. de Herbrand Negacin Unificacin Clusulas def. Resolucin M. de Herbrand Negacin

Desventajas Negation by failure

Desafortunadamente, el teorema siguiente plantea un problema Otra perspectiva, ms modesta, es la llamada negacin por fracaso o
(computacionalmente) insuperable: NF .
Si para un programa P y una frmula especfica es posible
Teorema
determinar de manera computable que P 6`R , entonces se aceptar
Dado un programa y una frmula , la pregunta `R es indecidible, es .
decir, no existe un algoritmo que la conteste en todos los casos. Desafortunadamente, los detalles tcnicos se dejarn para un curso
ms avanzado.

Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 33 / 34 Francisco Hernndez Quiroz Anlisis Lgico Programacin lgica 34 / 34

You might also like