You are on page 1of 55

2.

Bsqueda de clusulas del programa:


deduccin versus induccin

Deduccin = razonamiento de lo general a lo especfico


Preserva la verdad
Siempre es correcto

Induccin = razonamiento desde lo especfico a lo general


el inverso de la deduccin
No preserva la verdad
Puede haber evidencia estadstica

DEDUCCIN
Todos los hombres son mortales
Scrates es un hombre
Scrates es mortal

Diciembre
2001

INDUCCIN
Scrates es mortal
Scrates es un hombre
Todos los hombres son mortales

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa:


inferencia y probabilidad
U

Probabilidad de seleccionar un elemento de U siendo de P


p(P)=|P| / |U|
Dado un elemento seleccionado de U que es de Q, probabilidad de que sea de
P
p(P/Q)=p(PQ) / p(Q)
Teorema de Bayes: p(P/Q)=p(P) * p(Q/P) / p(Q)

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa:


inferencia y probabilidad
Interpretacin probabilstica del clculo de predicados de
primer orden (Carnap)
P representa el conjunto de modelos de Herbrand de la
frmula P (resp. Q) y U es 2H(PQ).
p(P)=p(P) son las interpretaciones de P que son modelo de P
p(P/Q) son los modelos de Q que son modelo de P
p(False)=0
p(True)=1
p(PQ)= p(PQ)
p(PQ)= p(PQ)
p( P)=1- p(P)
p(P)p(Q) si P |= Q

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa:


inferencia y probabilidad
Dados B y E, hay ms de una hiptesis candidata.
H = T= p(x1,...,xn)
H = = E+

Teorema de Bayes: Sea E una evidencia de T. Entonces


p(T/E)=p(T) * p(E/T) / p(E)
Carnap: p(T) es la proporcin de interpretaciones que son
modelo de T PARADOJA
Solomonoff: p(P)= 2-(P), donde (P) es el contenido de
informacin de la frmula P (longitud en bits de la
codificacin mnima de P).
Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa:


inferencia y probabilidad
Teora de la informacin de Shannon:
I(P)=-log2p(P)
I(True) = 0
I(False) =
I(P Q) = I(P) + I(Q)

(p(True) = 1)
(p(False) = 0)
(p(PQ) = p(P) . p(Q))

Informacin de Bayes: I(T|E) = I (T) + I (E|T) - I (E)

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa:


inferencia y probabilidad
La teora debe ser una explicacin ms simple que la propia
evidencia
I(T|E) I(B E)
T comprime los ejemplos al tener menor contenido de
informacin.
p(T/E)=p(T) * p(E/T) / p(E) 1
p(T) * p(E/T) p(E)

0 I(E) I(T) + I(E/T)

I(T|E) I(T)0 + I(E/T) I(B E)

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa:


inferencia y probabilidad
Principio de la longitud de descripcin mnima de
Rissanen: minimizar I(T|E)
Principio de la navaja de Ockham: minimizar I(T)
Principio de la probabilidad mxima de Fisher:
maximizar I(E|T)
TEOREMA DE EQUIVALENCIA: Sea E una evidencia
para un conjunto de teoras (potenciales) elegidas desde
.
minT I(T|E) = - log2 maxT p(T|E)
Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa


Bsqueda en el espacio de las hiptesis
estados: hiptesis de LH
objetivo: encontrar una hiptesis que satisfaga el criterio de
calidad (ej. completitud y consistencia)

Algoritmo de generacin y prueba


para todo H LH hacer si H es completa y consistente entonces
output(H) computacionalmente caro

Restringir la bsqueda
lenguaje: reducir el espacio de hiptesis
bsqueda: reducir la bsqueda en el espacio de las hiptesis

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa


Estructura del espacio de hiptesis
basado en una relacin de generalidad
G es ms general que S iff covers(S) covers(G)

Podando el espacio de bsqueda


Si H no cubre un ejemplo e entonces tampoco cubrir ninguna
especializacin de e
usado con los ejemplos positivos para podar

Si H cubre un ejemplo e entonces tambin cubrir sus generalizaciones


usado con los ejemplos negativos para podar

Estas propiedades determinan el espacio de las soluciones


posibles

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa:


espacio de hiptesis
muy general

Cmo estructurar el espacio de las hiptesis?


-

Cmo movernos
una hiptesis a otra?
+ desde
+
+
+
muy especfico

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa:


espacio de hiptesis
Ms
general

Ms
especfic
o

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa:


espacio de hiptesis
Ms
general

e- cubierto

e- no cubierto

Ms
especfic
o

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa:


espacio de hiptesis
Ms
general

flies(X)

flies(X)bird(X)
flies(X)bird(X),
normal(X)

Ms
especfic
o

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa:


espacio de hiptesis
Ms
general

flies(X)

flies(X)bird(X)
flies(X)bird(X),
normal(X)
flies(oliver) bird(oliver)

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

Ms
especfic
o

2. Bsqueda de clusulas del programa:


nocin de generalidad
Nocin de generalidad
Cmo especializar las condiciones?
Cmo generalizar las condiciones?

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa:


nocin de generalidad
g(f(X),Y)
g(f(X),f(a))

g(f(X),X)

g(f(f(a)),X)

g(f(f(a)),f(a))

El conjunto de los trminos de primer orden es un


retculo
t1 es ms general que t2 iff para alguna sustitucin : t1 = t2
especializacin: aplicar una sustitucin
generalizacin: aplicar una sustitucin inversa

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa:


nocin de generalidad
m(X,Y)
m(X,X)

m([X|Y],Z)
m(X,[Y|Z])

m(X,[X|Z])

m(X,Y):-m(Y,X)

m(X,[Y|Z]):-m(X,Z)

El conjunto de las clusulas es un retculo


C1 es ms general que C2 iff para alguna sustitucin : C1 C2
especializacin: aplicar una sustitucin y/o aadir un literal
generalizacin: aplicar una sustitucin inversa y/o eliminar un
literal

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa:


nocin de generalidad
Una teora G es ms general que una teora S iff G = S
G = S: en cada interpretacin en la que G es cierto, S tambin
lo es
G implica lgicamente S
Todas las frutas saben bien = Todas las manzanas saben bien
(asumiendo que las manzanas son frutas)

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa:


deduccin versus induccin
Hay operadores deductivos - que implementan (o
aproximan) =
resolucin
Invertir estos operadores conduce a operadores inductivos
Tcnica bsica en muchos sistemas de programacin
lgica inductiva

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

2. Bsqueda de clusulas del programa:


varios marcos para la generalidad
Dependiendo de la forma de G y S
1 clusula / cjto de clusulas / cualquier teora de primer orden

Dependiendo en el mecanismo deductivo - a invertir


Theta-subsuncin
Resolucin
Implicacin

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: thetasubsuncin (Plotkin)


Subsuncin
Sustitucin: = {X1/t1,...,Xn/tn} es una asignacin de los
trminos ti a las variables Xi
Subsuncin: Sean C y D clusulas.
C (-)subsume D (C = D) iff existe tal que C D
Ejemplo: p(a,b) r(b,a) es subsumida por p(X,Y) r(Y,X)
p(X,Y) r(Y,X) subsume p(X,Y) r(Y,X),q(X)

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: thetasubsuncin (Plotkin)


Ejercicio: C1: father(X,Y) parent(X,Y).
C2: father(X,Y) parent(X,Y),male(X).
C3: father(luc,Y) parent(luc,Y).
C1 = C2 ( ={ })
C1 = C3 ( ={X/luc})
C2 =/ C3
C3 =/ C2
Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: thetasubsuncin (Plotkin)


C1: p(X,Y) q(X,Y).
C2: p(X,Y) q(X,Y),q(Y,X).
C3: p(Z,Z) q(Z,Z).
C4: p(a,a) q(a,a).

Ejercicio:

C1 = C2 ( ={ })
C1 = C3 ( ={X/Z,Y/Z})
C1 = C4 ( ={X/a,Y/a})
C3 = C4 ( ={Z/a})
Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: thetasubsuncin (Plotkin)


Ejercicio: C1: p(f(X),g(X))
C2: p(f(3),g(3))
C1 = C2 ( ={X/3})
Ejercicio: C1: p(f(X),g(X))
C2: p(f(3),g(Y))
C1 =/ C2 C2 =/ C1

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: thetasubsuncin (Plotkin)


Propiedades de la -subsuncin
Correcta: si C =< D entonces C |= D
Incompleta: puede que C |= D y sin embargo C =/< D

p(X)
D: p(f(f(X))) p(X)
C: p(f(X))

Reflexiva, transitiva y antisimtrica


relacin de semi-orden
clases de equivalencia con un orden parcial

c1c2siic1=<c2yc2=<c1
Sic[C]yd[D]c=<dd=<c(c=/<dyd=/<c)
Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: thetasubsuncin (Plotkin)


Las clases de equivalencia forman un retculo
p(X,Y):m(X,Y)
lgg
p(X,Y):m(X,Y),m(X,Z)
p(X,Y):m(X,Y),m(X,Z),m(X,U)
...

p(X,Y):m(X,Y),r(X)
p(X,Y):m(X,Y),m(X,Z),r(X)
...

p(X,Y):m(X,Y),s(X)
p(X,Y):m(X,Y),m(X,Z),s(X)
...

glb
Diciembre
2001

p(X,Y):m(X,Y),s(X),r(X)
p(X,Y):m(X,Y),m(X,Z),s(X),r(X)
...

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: generalizacin


menos general - lgg (Plotkin)
Generalizacin menos general (lgg)
C es la generalizacin menos general (lgg) de D bajo -subsuncin
si C = D y para cada E tal que E = D se cumple E = C.

Computacin de lgg
Cuando nos restringimos a tomos con el mismo signo y
el mismo smbolo de predicado (compatibles) la lgg es el
dual de la unificacin

lgg(f1(l1,...,ln),f2(m1,...,mn)
= v si f1 f2
= f1 (lgg(l1,m1),...,lgg(ln,mn)) si f1= f2

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: generalizacin


menos general - lgg (Plotkin)
Ejemplo:

l = member(3,cons(2,cons(3,nil)))
l = member(3,cons(4,cons(5,cons(6,nil))))
m = member(3,cons(v2,4,cons(v3,5,vnil,cons(6,nil))))
m = member(3,cons(x,cons(y,z)))

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: generalizacin


menos general - lgg (Plotkin)
Ejercicio

l: p(f(5,3),g(2,3))
l: p(f(1,2),g(3,2))
l: p(f(1,4),g(5,4))

lgg = p(f(X,W),g(Y,Z))

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: generalizacin


menos general - lgg (Plotkin)
Sean C y D dos clusulas. El lgg de C y D en el
orden de subsuncin es
lgg(C,D)= lgg(l,m) | lC y mD y
l y m son compatibles}
Dadas dos clusulas, el lgg es la clusula simple ms
especfica que es mas general que ambas.
Ejemplo: f(t,a) p(t,a), m(t),f(a)
f(j,p) p(j,p), m(j),m(p)

lgg = f(X,Y) p(X,Y),m(X),m(Z)


Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: generalizacin


menos general - lgg (Plotkin)
Ejemplo

rev([2,1],[3],[1,2,3]) rev([1],[2,3],[1,2,3])
AB C D E

B AC D E

rev([a],[ ],[a]) rev([ ],[a],[a])

lgg = rev([A,B],C,[D|E]) rev(B,[A|C]),[D|E])


Ejercicio

a([1,2],[3,4],[1,2,3,4]) a([2],[3,4],[2,3,4])
a([a],[ ],[a]) a([ ],[ ],[ ])

lgg = a([A|B],C,[A|D]) a(B,C,D)


Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: generalizacin


menos general - lgg (Plotkin)
Ejercicio

m(c,[a,b,c]) m(c,[b,c]), m(c,[c])


m([a],[a,b]) m(a,[a])

lgg = m(P,[a,b|Q]) m(P,[R|Q]),m(P,[P])

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: generalizacin


menos general relativa- rlgg (Plotkin)
Generalizacin menos general relativa (rlgg)
relativa a la teora de conocimiento B
rlgg(e1,e2)=lgg(e1B,e2B)

Ejemplo:

C1: uncle(X,Y):-brother(X,father(Y)).
C2: uncle(X,Y):-brother(X,mother(Y)).
B: parent(father(X),X).
parent(mother(X),X).
lgg(C1,C2) = uncle(X,Y):-brother(X,Z).
rlgg(C1,C2) = uncle(X,Y):-brother(X,U),parent(U,Y).

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: generalizacin


menos general relativa- rlgg (Plotkin)
Una clusula C es ms general que D con respecto a una
teora T si T C |- D.
Un tomo A es una lgg de un tomo B con respecto a
una teora T si existe un unificador tal que
T |- A B (A=T B).
Una clusula C es una lgg de una clusula D con
respecto a una teora T (rlgg) si T |- C D para
alguna sustitucin .
Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: generalizacin


menos general relativa- rlgg (Plotkin)
Problema: no siempre existe rlgg de un conjunto de
clusulas con respecto a una teora.
C1: q(f(a)).
C2: q(g(a)).
B: p(f(X),Y).
p(g(X),Y).
C : q(X):-p(X,g1(X)),,p(X,gn(X)) es una generalizacin

Excepcin: rlgg existe siempre si T es bsica (GOLEM).

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: generalizacin


de Buntine
rlgg puede conducir a conclusiones contraintuitivas.
EJEMPLO:
C: pequeo(X):-gato(X).
D: mueco_mascota(X):- de_peluche(X), gato(X).
P: mascota(X):- gato(X).
mueco_mascota(X):-pequeo(X),de_peluche(X),mascota (X).

C =P D
Si asumimos que una clusula C es ms general que
otra D si cualquier interpretacin de C permite obtener las
mismas conclusiones que con D.
En el ejemplo anterior C no es ms general que D.

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: generalizacin


de Buntine
Subsuncin generalizada (clusulas definidas)
Una clusula C es ms general que otra D w.r.t. un
programa P
C =BP D
si para cualquier interpretacin de Herbrand I modelo de
P,
entonces TD(I) TC(I).
En el ejemplo anterior C y D no pueden compararse
ya que tienen distintas cabezas.
Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: generalizacin


de Buntine
Visin operacional
Sean C y D clusulas con variables disjuntas y sea P un
programa lgico. Sea una sustitucin que asigna a las
variables de D nuevas constantes (que no aparecen en
C,D ni P).Entonces, C =BP D sii existe una sustitucin
tal que:
Chead = Dhead P Dbody (Cbody )

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: generalizacin


de Buntine
Procedimiento: C es ms general que D wrt P si C
puede convertirse en D aplicando repetidamente:
Transformar las variables en constantes o en otros trminos
Aadir tomos al cuerpo
Evaluar parcialmente el cuerpo resolviendo clusulas en P
contra un tomo del cuerpo.

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: generalizacin


de Buntine
Subsuncin
Plotkin.

generalizada

versus

generalizacin

C =B D sii C = D
Subsuncin generalizada versus generalizacin menos
general relativa.
C =BP D sii C aparece en la raz de una refutacin en
la demostracin de P (C D)
=BP un caso especial de rlgg
Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

de

3. Mtodos Bottom-up: resolucin


inversa
Resolucin
C1
1

C2
2

C
RESOLUCIN: C = C1 C2

l1 C1 l2 C2 | C1 y C2 variables disjuntas
= mgu(l1, l2) s.t. l1 = l2, = 1 2 l1 1 = l2 2
C=(C1-l1) 1 (C2-l2) 2

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: resolucin


inversa
Ejemplo:
p(X)q(X) y q(X) r(X,Y) conduce a p(X) r(X,Y)
p(X)q(X) y q(a) conduce a p(a)

Inversin de la resolucin: obtencin de C 1 (o C2) a partir

de C y C2 (C1). No hay una solucin nica


EJEMPLO:
C2 = B E,F
C = A E,F,C,D
C1 = A B,C,D
C1 = A B,C,D,E
C1 = A B,C,D,F
C1 = A B,C,D,E,F

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: resolucin


inversa
El problema es an ms agudo para clusulas de primer
orden
EJEMPLO:
C1 = mas_pesado(martillo,pluma)
C = mas_denso(martillo,pluma),mas_grande(martillo,pluma)
C2 = mas_pesado(martillo,pluma) mas_denso(martillo,pluma),
mas_grande(martillo,pluma)
C2 = mas_pesado(A,B) mas_denso(A,B), mas_grande(A,B)

Para generar C2 debemos decidir qu trminos se


convierten en variables y cmo
Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: resolucin


inversa
El operador V
C1
1

C2
2

C
OPERADOR V: Produce C2 a partir de C y C1

dadas dos clusulas C1 y C, el V-operador encuentra C 2


tal que C es una instancia de un resolvente de C 1 y C2.
Generaliza C1,C} a C1, C2}

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: resolucin


inversa
Absorcin
desde qA y p A,B
inferir p q,B

Identificacin
desde pq,B y p A,B
inferir q A

pq,B

q A
pA,B

pq,B

q A
pA,B

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: resolucin


inversa
Absorcin: el cuerpo de C1 es absorbido en el cuerpo de C
(despus de una unificacin) y reemplazado por su cabeza
EJEMPLO:
C:pajaro(tweety):-tiene_plumas(tweety),
tiene_alas(tweety),tiene_pico(tweety).
C1:vuela(X):- tiene_plumas(X),tiene_alas(X).
= X/tweety}

C2:pajaro(tweety):-vuela(tweety), tiene_pico(tweety).

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: resolucin


inversa
Ejemplo: P={animal(tiburon)
P|/=e
nadar(tiburon)}
e={pez(tiburon)}
Encontrar dos clusulas que tengan un resolvente del que
pez(tiburon) es una instancia
Clusula de entrada: una clusula de P
(nadar(tiburon))
Clusula central: Por ejemplo, la menos general
(pez(tiburon) nadar(tiburon))

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: resolucin


inversa
Clusula de entrada: una clusula de P
(animal(tiburon))
Clusula central: Por ejemplo, la menos general
(pez(X) animal)X),nadar(X)).
pez(x) animal(x), nadar(x)

animal(tiburon)

pez(tiburon) nadar(tiburon) nadar(tiburon)


pez(tiburon)

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: resolucin


inversa
Identificacin: identificar parte del cuerpo de C2 en el
cuerpo de C a travs de una sustitucin . Encontrar un
literal l en el cuerpo de C2 que no ocurre en el de C. La
identificacin construye C1 con cabeza l y cuerpo la parte
de C que no est en C2.
EJEMPLO: C:pajaro(tweety):-tiene_plumas(tweety),

tiene_alas(tweety),tiene_pico(tweety).
C2: pajaro(tweety):- vuela(tweety),tiene_pico(tweety).
l: vuela(tweety)
C-C2: { tiene_plumas(tweety), tiene_alas(tweety)}

C1: vuela(tweety):- tiene_plumas(tweety), tiene_alas(tweety).

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: resolucin


inversa
El operador W
C1

C1
B1

A,1

C2
A,2

C2

B2
OPERADOR W

Dadas dos clusulas B1,B2} encontrar C1,A,C2} tal que B1 es una instancia
de un resolvente de C1 y A, y B2 es una instancia de un resolvente de A y
C2 .

Generaliza B1, B2} a C1, A,C2}

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: resolucin


inversa
Intra-construccin
desde pA,B y p A,C
inferir q B y pA,q y qC

Inter-construccin
desde pA,B y q A,C
inferir p r,B y rA,q y qr,C

Diciembre
2001

qB

p A,q

pA,B

pr,B

Fundamentos Lgicos de la
Ingeniera del Software

pA,C

r A

pA,B

q C

q r,C

qA,C

3. Mtodos Bottom-up: resolucin


inversa
Cuando l no est ni en B1 ni en B2, el operador W se
inventa predicados.

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: implicacin


inversa
Sean dos clusulas C y D. decimos que C implica D
(C D) iff cada modelo de C es modelo de D (C D).
C es una generalizacin bajo implicacin de D.
la generalizacin bajo subsuncin es incompleta.
C D y C =/ D
Inversin implicacin es una forma completa de generalizacin.
indecidible
computacionalmente caro
clusulas recursivas

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: implicacin


inversa
Diferencia entre implicacin y subsuncin:
clusulas ambivalentes.
Una clusula es ambivalente sii contiene un
par (C, D) de literales ambivalentes, es decir,
C y D tienen el mismo smbolo de predicado y
signo.
p(X):-p(X).
q(a):-q(s(s(a))).

Sean C y D no ambivalentes. Entonces, C D


sii C = D.

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

3. Mtodos Bottom-up: implicacin


inversa
RELACIN ENTRE IMPLICACIN Y RESOLUCIN
CD
D es una tautologa
C = D
E = D y E se obtiene resolviendo C
consigo
misma.

Diciembre
2001

Fundamentos Lgicos de la
Ingeniera del Software

You might also like