Académique Documents
Professionnel Documents
Culture Documents
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