Vous êtes sur la page 1sur 74

Bsqueda e inferencia lgica

Programacin Lgica y Prolog


Contenidos
1. Introduccin a la Programacin Lgica.
2. Programas Definidos: Sintaxis de Edimburgo.
3. Resolucin SLD.
4. Intrprete abstracto de un Programa Lgico.
5. Concepto de respuesta.
6. Programacin Lgica y Negacin.
7. Una implementacin prctica: Prolog Estndar.

Anexo: rbol SLD

2
1. Introduccin
a la Programacin Lgica.
3
4
Programacin Lgica
parte de la informtica que se ocupa de la lgica como
lenguaje de programacin
Programa: conjunto finito de FBFs.
Computacin: obtencin de pruebas formales.

Evolucin histrica
Origen: demostracin automtica de teoremas + IA
Herbrand(30),Davies-Putman(~60), Robinson(65)

Aparicin PL (~70)
Kowalsky, Colmerauer, Green, Hayes

Primer interprete Prolog
Colmerauer, Rusell, Marsella 1972

Primera implementacin eficiente
Warren, AWM (Mquina Abstracta de Warren) Edimburgo,
1977

5
Clusulas definidas
A lo sumo, un literal positivo:
b
1
v b
2
v ... v b
n
v a, n>=0

En programacin lgica se representa:
a b
1
, b
2
, ... ,b
n

donde:
a, b
1
, b
2
, ... ,b
n
son literales positivos (tomos)
todas las variables se consideran cuantificadas universalmente

a se denomina cabeza de la clusula
b
1
, b
2
, ... ,b
n
se denomina cuerpo de la clusula
6
Caracterizacin Programas Lgicos
Programas Definidos
Clusulas Horn o definidas

Programas Normales
Clusulas normales: extensin clusula de Horn,
admitiendo literales negativos en cuerpo clusulas

Programas: cualquier FBF
7
2. Programas Definidos:
Sintaxis de Edimburgo.
8
Programas Definidos:
Sintaxis de Edimburgo
Trminos
Constantes
Numricas: 12, -34, 34.87,
Atmicas: a, b, ana, estudiante,
Variables: x, y, z, x1, x2,
Funciones: f(a, x), g(y), madre(ana),

tomos
p(x), q(a,y), hermano(x,y), madre(ana),
Las clusulas se construyen con tomos

9
Programas Definidos:
Sintaxis de Edimburgo

Hecho (clusula unitaria de programa): a
Regla (clusula de programa): a b
1
, b
2
, ... ,b
n

Pregunta o meta: b
1
, b
2
, ... ,b
n


Programa: conjunto finito de clusulas de programa

10
Ejemplo programa definido
Hechos

Reglas




Pregunta o meta

{hombre(juan) ,
hombre(luis) ,
hijo_de(juan, luis) ,
padre(x,y) hombre(x), hijo_de(y,x)}





padre(luis, juan)



11
3. Resolucin SLD
12
13
Resolucin SLD
Resolucin Lineal con funcin de Seleccin para Clusulas
Definidas.

C: a b
1
, b
2
, .... b
n
n>=0, clusula de programa
G: a
1
, a
2
, .... a
k
k>0, pregunta
f
s
: funcin de seleccin (regla de cmputo)
a
s
= f
s
(G), literal seleccionado

Si a
s
y a unifican con umg. , se denomina resolvente SLD
de G y C a la meta:

(a
1
, a
2
, .... a
s-1
, b
1
, b
2
, .... b
n
, a
s+1
,.... a
k
)



Ejemplo resolucin SLD
G: mujer(ana), padre(x, y), hombre(y)
f
s
(G): padre(x, y)
C: padre(u,v) hombre(u), hijo_de(v,u)
Umg de padre(x,y) y padre(u,v): ={u/x, v/y}

Resolvente SLD de G y C:
(mujer(ana), hombre(u), hijo_de(v,u), hombre(y)) {u/x, v/y}

Y aplicando la substitucin:
mujer(ana), hombre(u), hijo_de(v,u), hombre(v)



14
En formato estndar
G: mujer(ana) v padre(x, y) v hombre(y)
C: padre(u,v) v hombre(u) v hijo_de(v,u)
={u/x, v/y}

mujer(ana) v padre(x, y) v hombre(y)

padre(u,v) v hombre(u) v hijo_de(v,u)
={u/x, v/y}

mujer(ana) v hombre(v) v hombre(u) v hijo_de(v,u)

Reordenando y transformando:
mujer(ana), hombre(u), hijo_de(v,u), hombre(v)


15
16
Derivacin SLD
(cmputo de G por P)
Sean P un programa y G una meta. Una derivacin SLD de
P U {G} consiste en tres secuencias, posiblemente
infinitas, de:

G
0
=G, G
1
, G
2
, ... Metas
C
1
, C
2
, C
3
, ... Clusulas de P renombradas

1
,
2
,
3
, ... Umgs de C
i
, G
i 1
, respectivamente

tal que G
i + 1
es el resolvente SLD de G
i
y C
i+1
usando
i + 1


ESTRATEGIA DE RESOLUCIN LINEAL Y POR ENTRADAS

17
Ejemplo Derivacin SLD
G
1
: entero(5) C
1
: entero(x
1
) entero(x
2
), =(x
1
,+( x
2
,1))


1
={5/x
1
}

G
1
: entero(x
2
), =(5,+( x
2
,1)) C
2
:

entero(x
3
) entero(x
4
), =(x
3
,+( x
4
,1))


2
={x
2
/x
3
}

G
2
: entero(x
4
), =(x
2
,+( x
4
,1)), =(5,+( x
2
,1)) C
3
:

entero(x
5
) entero(x
6
), =(x
5
,+( x
6
,1))


3
={x
4
/x
5
}


G
3
: entero(x
6
), =(x
4
,+( x
6
,1)), =(x
2
,+( x
4
,1)), =(5,+( x
2
,1))
.
.
.
18
Refutacin SLD
Def. Derivacin SLD de
19
Ejemplo Refutacin SLD
G
0
: abuelo(luis, jorge) C
1
:

abuelo(u,v)
padre(u,w),padre(w, v)

1
={luis/u, jorge/v}
G
1
: padre(luis, w) , padre(w, jorge) C
2
: padre(luis, carlos)



2
={carlos/w}
G
2
: padre(carlos, jorge) C
3
: padre(carlos, jorge)



3
=C

G
3
:



padre(luis, carlos) ,
padre(carlos, jorge) ,
abuelo(x,y) padre(x,z),padre(z, y)
4. Intrprete abstracto
de un Programa Lgico
20
21
Intrprete abstracto (no determinista)
de un Programa Lgico
InterpreteAbstracto(P, G)
resolvente G;
mientras (resolvente = ) hacer
Q=f
s
(resolvente)
Si (existe clusula C de P cuya cabeza unifique con Q)
Entonces
resolvente resolvente_SLD de resolvente y C
con umg
G G
Sino SalirMientras
finsi
finMientras
Si (resolvente = ) Entonces (Devolver G)
Sino (Devolver fallo)
22
Dos elecciones
Regla de cmputo: literal sobre el que se resuelve, dado
por la funcin de seleccin.

Regla de bsqueda: criterio de seleccin de la clusula
que resuelve (reduce) la meta.
23
Efecto regla cmputo, bsqueda
Regla cmputo: arbitrario
No afecta a la terminacin
Quizs orden respuestas

Regla de bsqueda: no determinista
Afecta a la terminacin
Regla de bsqueda:
afecta a la terminacin
Regla de bsqueda: primera
clusula no utilizada
Regla de cmputo: primer literal a
la izquierda

G
0
: p(a, c) C
3

G
1
: p(a, y), p(y, c) C
1

G
2
: p(b, c) C
4

G
3
: p(c, b) C
2

G
4
:

C
1
: p(a, b)
C
2
: p(c, b)
C
3
: p(x, z) p(x, y), p(y, z)
C
4
: p(x, y) p(y, x)

24
Regla de bsqueda: bsqueda
primero en profundidad
Regla de cmputo: primer literal a
la izquierda

G
0
: p(a, c) C
3

G
1
: p(a, y), p(y, c) C
1

G
2
: p(b, c) C
3

G
3
: p(b, w), p(w, c) C
3

G
4
: p(b, t), p(t, w), p(w, c) .
. .
. .
25
Concepto de respuesta
Def. P programa definido, G meta definida

Una respuesta para P U {G} es
Una substitucin para las variables de G
no
Respuesta correcta
Def. Sean P programa definido,
G meta definida, G: a
1
, a
2
, .... a
k
,
una respuesta de P U {G}

es una respuesta correcta para P U {G} sii
P (a
1
, a
2
, .... a
k
)
(P G sii P U {G } inconsistente )

no es una respuesta correcta para P U {G} sii
P U {G} es satisfacible


26
Respuesta correcta
P={p(x) }

G= p(x) P{G} respuesta correcta:u=C (true)
G= p(y) P{G} respuesta correcta:u=C (true)
u={x/y} es solo una variante alfabtica y es equivalente a u=C
G= p(y) P{G} respuesta correcta:u={a/y} (true)
G= p(a) P{G} nica respuesta correcta: u=C (true)
G= p(b) P{G} nica respuesta correcta: u=C (true)
G= p(f(y)) P{G} respuesta correcta: u=C (true)



27
Respuesta correcta
P={p(x) }
G= p(f(x))
P{G} respuesta correcta: u=C (true)


PERO

P={p(x, x) }
G= p(x, f(x))
P{G} nica respuesta correcta: no


28
Respuesta computada
Def. Sean P programa definido,
G meta definida / P U {G} tiene una refutacin SLD,

1
,
2
,
3
,... ...
n
la secuencia de umgs utilizada en la
refutacin SLD

es una respuesta computada para P U {G} sii es la
substitucin obtenida seleccionando de
1

2

3
... ...
n
las
ligaduras de las variables que ocurren en G.
29
30
Respuesta computada
G
0
: abuelo(x,y) C
1
:

abuelo(u,v)
padre(u,w),padre(w, v)

1
={x/u, y/v}
G
1
: padre(x,w) , padre(w, y) C
2
: padre(luis, carlos)



2
={luis/x, carlos/w}
G
2
: padre(carlos, y) C
3
: padre(carlos, jorge)



3
={jorge/y}

G
3
:



padre(luis, carlos) ,
padre(carlos, jorge) ,
abuelo(x,y) padre(x,z),padre(z, y)
31
Respuesta computada

1

2

3
= {x/u, y/v} {luis/x, carlos/w} {jorge/y}

1

2

3
= {x/u, y/v} {luis/x, carlos/w, jorge/y}

1

2

3
= {luis/u, jorge/v, luis/x, carlos/w, jorge/y}

G= abuelo(x,y)
Variables que ocurren en la meta original: x, y

Respuesta computada de P{G}:

= {luis/x, jorge/y}


32
Teorema solidez resolucin SLD
Sea P un programa definido y G una meta definida.

Toda respuesta computada de P U {G} es una respuesta
correcta de P U {G}

Teorema complitud resolucin SLD
Sean P un programa definido, G una meta definida y una
respuesta correcta de P U {G}

- Respuesta computada o y substitucin / y o tienen
el mismo efecto sobre las variables de G

(La respuesta computada puede ser ms general que la
correcta)

33
Diferencias respuesta
correcta/computada (I)
P={q(x) }
G= q(y)

nica respuesta computada: u=C

Respuestas correctas: u
1
={a/y}, u
2
={b/y}, ya que
q(a), q(b) etc., son consecuencias lgicas de P


La respuesta computada es ms general



34
Diferencias respuesta
correcta/computada (II)
P={q(x) }
G= q(y)

nica respuesta computada: o=C
Una respuesta correcta: u={a/y}

-o=C y ={a/y} / o=u

Particularizando la respuesta computada, ms general, se
obtiene cualquier respuesta correcta.




35
36
Teorema independencia
de la regla de cmputo
Sean P programa definido, G meta definida / P U {G}
tiene una refutacin SLD con respuesta computada .

Para cualquier otra regla de computo, R, existe una
refutacin SLD de P U {G} va R con respuesta
computada / G es una variante alfabtica de G.

6. Programacin Lgica y Negacin.
37
38
Programacin lgica y negacin
Programa definido: conjunto de hechos y reglas que
describen explcitamente que es cierto, sin informacin
explicita sobre que es falso

Dado Programa P, meta G, definidos, slo podemos
obtener respuestas computadas, o, que tambin son
correctas: slo podemos derivar consecuencias lgicas

Programacin Lgica: solo podemos
derivar consecuencias lgicas
P={estudiante(juan) , profesor(luis) }
G= estudiante(luis)

nica respuesta (correcta y computada): no
Porque P estudiante(luis)

Incluso para la meta normal G= estudiante(luis), la
respuesta, en el mbito de programas definidos y
resolucin SLD sera no

Porque P estudiante(luis)

39
Suposicin de mundo cerrado (SMC)
Regla de inferencia:
Sean P programa definido y a tomo bsico.
Si Pa, inferir a

Observaciones:
SMC natural y efectiva en contexto de bases de datos
Regla de inferencia no-monotnica
Problemtica en el contexto de Programacin Lgica, pues
no se puede garantizar el cmputo de Pa
40
Suposicin de mundo cerrado (SMC)
Regla de inferencia:
Sean P programa definido y a tomo bsico.
Si Pa, inferir a

P={estudiante(juan) , profesor(luis) }
G= estudiante(luis)

Respuesta (correcta y computada): u=C
41
Necesidad negacin
Tericamente, innecesaria: Toda funcin computable
en el sentido de Turing se puede computar con un
programa definido (1977, Trlund)

En la prctica, su ausencia limita capacidad expresiva
Cmo definir que dos conjuntos son distintos sin la
negacin?
42
Negacin por fallo
Regla de inferencia
Sean P programa definido y a tomo bsico.
Si Pa tiene una prueba finita, inferir a

Prueba finita de Pa (informal)
Nmero finito de derivaciones SLD
Todas finitas
Ninguna permite derivar a
43
Prueba finita de Pa
P={estudiante_grado(juan) , estudiante_doctorado(luis) ,
estudiante(x) estudiante_grado(x),
estudiante(x) estudiante_doctorado(x),
profesor(x) estudiante_doctorado(x)}
G= profesor(juan)

profesor(juan)
profesor(y) estudiante_doctorado(y)

estudiante_doctorado(juan)

No hay ramas infinitas
Todas las ramas, finitas, son ramas fallo: no permiten derivar

44
Negacin por fallo
P={estudiante_grado(juan) , estudiante_doctorado (luis) ,
estudiante(x) estudiante_grado(x),
estudiante(x) estudiante_doctorado(x),
profesor(x) estudiante_doctorado(x)}
G= profesor(juan)

Respuesta: u=C
Porque existe una prueba finita de P profesor(juan)
45
Negacin por fallo
P={estudiante_grado(juan) , estudiante_doctorado (luis) ,
estudiante(x) estudiante_grado(x),
estudiante(x) estudiante_doctorado(x),
profesor(x) estudiante_doctorado(x)}
G= profesor(luis)

Respuesta?
46
No es una prueba finita de Pa
p(a, b)
{a/x, b/z} C
1

q(a, y), p(y, b)
{b/y} C
3

p(b, b)
C
1
C
2

q(b, u), p(u, b)

47
P: C
1
: p(x, z) q(x, y), p(y, z)
C
2
: p(x, x)
C
3
: q(a, b)
G= p(a, b)
Regla de cmputo: 1er literal a la
izquierda.
Finito, pero existe una rama xito que termina con ,
luego P p(a, b)
Negacin por fallo
P= {p(x, z) q(x, y), p(y, z),
p(x, x) ,
q(a, b) }
G= p(a, b)

Respuesta: no
Porque no existe una prueba finita de P p(a, b)

48
Prueba finita de Pa
p(c, b)

{c/x, b/z} C
1




q(c, y), p(y, b)

No hay ramas infinitas
Todas las ramas, finitas, son ramas fallo: no permiten derivar



49
P: C
1
: p(x, z) q(x, y), p(y, z)
C
2
: p(x, x)
C
3
: q(a, b)
G= p(c, b)
Regla de cmputo: 1er literal a la
izquierda.
Negacin por fallo
P= {p(x, z) q(x, y), p(y, z),
p(x, x) ,
q(a, b) }
G= p(c, b)

Respuesta?
50
SMC, Negacin por Fallo:
regla de inferencia no monotnica
P={estudiante(juan) , profesor(luis) }
G= estudiante(luis)

Respuesta (correcta y computada): u=C


Si aadimos a P la clusula estudiante(luis)
P={estudiante(juan) , profesor(luis) , estudiante(luis) }
G= estudiante(luis)

Respuesta (correcta y computada): no

51
Negacin por fallo y programas
definidos: Resolvente SLDNF
Sean P programa definido, G
i
meta normal,
l
s
=f
s
(G
i
) literal seleccionado

El resolvente SLDNF de P y G
i
sobre l
s
, G
i+1
, es:
a) l
s
literal positivo:
resolvente SLD de G
i
y C
i+1
, con C
i+1
clusula de programa
cuya cabeza unifique con l
s
b) l
s
literal negativo bsico y existe prueba finita Pl
s

meta resultante de eliminar l
s
de G
i
52
Negacin por fallo y programas
definidos: Resolvente SLDNF
P={estudiante_grado(juan) , estudiante_grado(luis) , estudiante(x)
estudiante_grado(x), estudiante(x) estudiante_doctorado(x),
profesor(x) estudiante_doctorado(x)}
G= estudiante(juan), profesor(juan)

estudiante(juan), profesor(juan)
{juan/y} estudiante(y) estudiante_grado(y)

estudiante_grado(juan), profesor(juan)
estudiante_grado(juan)

profesor(juan)
profesor(juan) tomo negativo, bsico
existe prueba finita Pprofesor(juan)

53
Programas normales
Clusulas Normales: admiten tomos negativos en el
cuerpo de las clusulas

Negacin: negacin por fallo

Regla de inferencia SLDNF
Similar a SLDNF con programas definidos y metas
normales
Tcnicamente, ms compleja
Admite literales negativos con variables
54
55
Principales resultados en programas
normales
No se mantiene el teorema de independencia de la regla
de cmputo

SLDNF no es slida
Ejemplo de programa normal
P={animal(snoopy) ,
animal(lamia) ,
serpiente(lamia) ,
gusta(elena, x) animal(x), serpiente(x)}
56
57
Programas normales: no se mantiene
el teorema de independencia de la
regla de cmputo
A) Regla de cmputo: 1
er
literal a la izquierda

G= gusta(elena, x)
{y/x} gusta(elena, y) animal(y), serpiente(y)

animal(y), serpiente(y)
{snoopy/y} animal(snoopy)

serpiente(snoopy)



58
Programas normales: no se mantiene
el teorema de independencia de la
regla de cmputo
B) Regla de cmputo: 1
er
literal a la derecha

G= gusta(elena, x)
{y/x} gusta(elena, y) animal(y), serpiente(y)

animal(y), serpiente(y)


No existe una prueba finita de P serpiente(y) u
Respuesta computada: no
SLNF no es slida
en programas normales
Ver ejemplo anterior

SLNF puede derivar una respuesta computada (no)
que no es respuesta correcta.
59
7. Una implementacin prctica:
Prolog Estndar
60
61
Prolog standar
Implementacin secuencial modelo de programacin
lgica
Programas normales
Regla de cmputo: primer literal a la izquierda
Regla de bsqueda: primero en profundidad
(implementacin: backtracking)

62
Dificultades: complitud
Prolog no es completo (por la regla de bsqueda)
Incluso en programas definidos puede no encontrar una
refutacin cuando esta existe.

63
Prolog no es completo
Por la regla de bsqueda
Incluso en programas definidos puede no encontrar una
refutacin cuando esta existe.

P={entero(X):- entero(Y), X is Y+1.
entero(0).}

?- entero(Z)


Dificultades: solidez
No es slido, pues SLDNF no lo es

Sugerencia: evitar variables libres en literales negativos
seleccionados
No incluyndolos
Forzando ligadura operacionalmente
64
Dificultades: solidez
No es slido, pues SLDNF no lo es

P={animal(snoopy).
animal(lamia).
serpiente(lamia).
gusta(elena, x) :- serpiente(x), animal(x).}

65
Mejor

P={animal(snoopy).
animal(lamia).
serpiente(lamia).
gusta(elena, x) :- animal(x), serpiente(x).

66
67
Desviaciones modelo lgico
Ausencia chequeo de ocurrencias

Respuestas computadas no correctas
P={p(X, f(X)). q(a):-p(X,X).}, G=?-q(a).

Bucles infinitos
P={q(a):-p(X,X), p(X, f(X)):-p(X,X).}, G=?-q(a).
68
Desviaciones modelo lgico
Corte: ! (cut)

rbol SLD (programa P definido, meta G definida): rbol
de derivaciones SLD para la meta G con el programa P

Efecto Corte: impide explorar algn subrbol

Afecta complitud programa definidos y normales

Afecta solidez programas normales(Prolog)


Anexo: rbol SLD

69
rbol SLD
Sean P un programa y G una meta definida.
Un rbol SLD para P U {G} es un rbol que cumple:
a) El nodo raz es G
b) Cada nodo del rbol es una meta definida (posiblemente
vaca)
c) Dado un nodo cualquiera con meta G
i
y a
s
=f
s
(G
i
) el literal
seleccionado por la funcin de seleccin, el nodo tiene un
hijo por cada clusula de programa cuya cabeza unifique
con a
s

d) Los nodos con clusulas vacas no tienen hijos.
70
Ejemplo rbol SLD (I)
p(x, b)
{b/z} C
1
C
2
{b/x}
q(x, y), p(y, b)
{a/x, b/y} C
3

p(b, b)
C
1
C
2

q(b, u), p(u, b)

71
P: C
1
: p(x, z) q(x, y), p(y, z)
C
2
: p(x, x)
C
3
: q(a, b)
G= p(x, b)
Regla de cmputo: 1er literal a la
izquierda.
Ejemplo rbol SLD (I) y
respuestas computadas
p(x, b)
{b/z} C
1
C
2
{b/x}
q(x, y), p(y, b)
{a/x, b/y} C
3

p(b, b)
C
1
C
2

q(b, u), p(u, b)

72
P: C
1
: p(x, z) q(x, y), p(y, z)
C
2
: p(x, x)
C
3
: q(a, b)
G= p(x, b)
Regla de cmputo: 1er literal a la
izquierda.
Respuesta
computada:
{b/x}
Respuesta
computada:
{a/x}
Rama fallo:
termina con
una meta no
vaca
Ejemplo rbol SLD (II)
p(x, b)
{b/z} C
1
C
2
{b/x}
q(x, y), p(y, b)
C
1
C
2

q(x, y), q(y, u), p(u, b) q(x, b)
C
1
C
2
C
3

q(x, y), q(y, u), q(u,v) p(v, b) q(x, y), q(y, b)
. C
3

. q(x, a)
.
73
P: C
1
: p(x, z) q(x, y), p(y, z)
C
2
: p(x, x)
C
3
: q(a, b)
G= p(x, b)
Regla de cmputo: 1er literal a la
derecha.
Ejemplo rbol SLD (II) y
respuestas computadas
p(x, b)
{b/z} C
1
C
2
{b/x}
q(x, y), p(y, b)
C
1
C
2

q(x, y), q(y, u), p(u, b) q(x, b)
C
1
C
2
C
3

q(x, y), q(y, u), q(u,v) p(v, b) q(x, y), q(y, b)
. C
3

. q(x, a)
.
74
P: C
1
: p(x, z) q(x, y), p(y, z)
C
2
: p(x, x)
C
3
: q(a, b)
G= p(x, b)
Regla de cmputo: 1er literal a la
derecha.
Respuesta
computada:
{b/x}
Respuesta
computada:
{a/x}
Rama fallo: termina
con una meta no vaca
Una rama infinita y
mltiples ramas fallo

Vous aimerez peut-être aussi