Introducción a la Programación Lógica - · PDF fileIntroducción a...
Transcript of Introducción a la Programación Lógica - · PDF fileIntroducción a...
![Page 1: Introducción a la Programación Lógica - · PDF fileIntroducción a la Programación Lógica o Revisión histórica, ideas centrales, Prolog. o Aspectos centrales de un lenguaje](https://reader033.fdocuments.co/reader033/viewer/2022051405/5a7e6ccc7f8b9ae9398e71bb/html5/thumbnails/1.jpg)
Introducción a la
Programación Lógica
o Revisión histórica, ideas centrales, Prolog.
o Aspectos centrales de un lenguaje de programación lógica.
. Rasgos distintivos de Prolog respecto de otros lenguajes deprogramación.
Introducción a la Programación Lógica Luis Iraola
![Page 2: Introducción a la Programación Lógica - · PDF fileIntroducción a la Programación Lógica o Revisión histórica, ideas centrales, Prolog. o Aspectos centrales de un lenguaje](https://reader033.fdocuments.co/reader033/viewer/2022051405/5a7e6ccc7f8b9ae9398e71bb/html5/thumbnails/2.jpg)
Orígenes históricos
. Comienzos de los años 70, R. Kowalski y A. Colmerauer
o Dos usos de la Lógica:- representación rigurosa del conocimiento- demostración como algoritmo: Algoritmo = Lógica + Control
o Resultados anteriores de Herbrand, Horn y Robinson (demostraciónautomática de teoremas)
Prografirá = Algoritmos + Datos Programa = Reglas + Teoría
Instrucclón #1 1Inetrueción #Z 7
1vt a a
InstrueeLón #^ -l,
1groP I
Fó¡uula #1Fó¡su1a #2
Fórnula #n
Teoreun
II
I
I
Introducción a la Programación Lógica Luis Iraola
![Page 3: Introducción a la Programación Lógica - · PDF fileIntroducción a la Programación Lógica o Revisión histórica, ideas centrales, Prolog. o Aspectos centrales de un lenguaje](https://reader033.fdocuments.co/reader033/viewer/2022051405/5a7e6ccc7f8b9ae9398e71bb/html5/thumbnails/3.jpg)
HtH,l'@ffih"
TeoremaCanüdato Denogtración
o Desarrollo de implementaciones eficientes de Prolog a partir de la de Warren. Normalización de Prolog: ISO 95. Prolog como lenguaje de proposito general: Prolog puro e impuro.. Constraint Logic Programming, PARLOG, Datalog, ...
Introducción a la Programación Lógica Luis Iraola
![Page 4: Introducción a la Programación Lógica - · PDF fileIntroducción a la Programación Lógica o Revisión histórica, ideas centrales, Prolog. o Aspectos centrales de un lenguaje](https://reader033.fdocuments.co/reader033/viewer/2022051405/5a7e6ccc7f8b9ae9398e71bb/html5/thumbnails/4.jpg)
Ete¡upto No. 1
Conocimiento a representar:
1. Todos los hombres son mortales.2. Sócrates es un hombre.
A deducir:
Sócrates es mortal.
Representación PROLOG: Representación LPl:
m o r t a l ( X ) : - V x ( H xhombre (X )
h o m b r e ( s o c r a t . e s ) . H a
? - m o r t a f ( s o c r a t e s ) . F M a
lntroducción a la Programación Lógica Luis Iraola
![Page 5: Introducción a la Programación Lógica - · PDF fileIntroducción a la Programación Lógica o Revisión histórica, ideas centrales, Prolog. o Aspectos centrales de un lenguaje](https://reader033.fdocuments.co/reader033/viewer/2022051405/5a7e6ccc7f8b9ae9398e71bb/html5/thumbnails/5.jpg)
Eteupto lvo. 2
Conocimiento a representar:
Representación PROLOG:
1 . es t re l - 1a ( so l - )2 . o rb i t a (mercu r i o , so l_ ) .3 . o r b i t a ( v e n u s , s o l - )4 . o r b i t a ( l u n a , t i e r r a )5 . o r b i t a ( t i e r r a , s o l ) o6 . o r b i t a ( m a r t e , s o I )1 . o rb i t a ( f obos , mar te )B . o rb i t a (de imos , mar te ) .
e Pranetiif::rgiíl :
10 ' sar"::ilt!i", r, ,
p l a n e t a ( Y ) .
1 1 . p e r t e n e c e ( X , X ) : -es t re l - l a (X )
pe r tenece (X , Y ) : -o r b i t a ( X , Z ) ,pe r tenece ( Z , Y ) .
Representación LPl:
1 . E a ( a2 . O b a ( b3 . O c a ( c4 . O d e ( o5 . O e a ( e6 . O f a ( f1 . O g f ( sB . O h f ( h
1. El Sol es una estrella.2. Mercurio orbita en torno al Sol.3. Venus orbita en torno al Sol.4. La Luna orbita en torno a la Tierra.5. La Tierra orbita en torno al Sol.6. Marte orbita en torno al Sol.7. Fobos orbita en torno a Marte.8. Deimos orbita en torno a Marte.9. Son planetas aquellos cuerpos que orbitan en torno a una estrella.10. Todo cuerpo que orbita en torno a un planeta es un satélite.11. Pertenecen a un sistema solar la estrella misma y todo cuerpo queorbite en torno a otro que pertenezca.
S o I )Mercurio )Venus )Luna )T ie r ra )Marte )fobos )deimos )
9 . V *y (Oxy & Ey
10 . V *y (Oxy s , Py -> Sx )
1 1 . V x ( E x
Yxyz (Oxz & Tzy
Introducción a la Programación Lógica Luis Iraola
![Page 6: Introducción a la Programación Lógica - · PDF fileIntroducción a la Programación Lógica o Revisión histórica, ideas centrales, Prolog. o Aspectos centrales de un lenguaje](https://reader033.fdocuments.co/reader033/viewer/2022051405/5a7e6ccc7f8b9ae9398e71bb/html5/thumbnails/6.jpg)
Ete¡upto No. 3
Conocimiento a representar:
L. '0' es el numeral que representa al numero cero.2. La expresión 's(n)' es el numeral del numero sucesor al representadopor la expresión 'n'.
3. Cualquier numero sumado a cero es igual a ese mismo numero.4. La suma de dos numeros 'n'
I 's(m)' es igual a 's(j)', siendo 'j' el
resultado de sumar '^' y 'm'. I n + s(m) = s(n+m) ]
Representación Prolog: Representación LPl:
1 . n u m e r o ( O ) . 1 . N a ( a : c e r o )2 . n u m e r o ( s ( N ) ) : - 2 . V x ( N x
numero (N)
3 . s u m a ( N / 0 , N ) : - 3 . V x ( N xnumero (N) .
4 . s u m a ( N , s ( M ) , s ( J ) ) : - 4 . V x y z ( S x y zsuma (N, M, J )
Algunos usos de la teoría:
? - n u m e r o ( s ( s ( 0 ) ) ) .y e s .
? - numero (X )X _ 0X _ s ( 0 ) - >
T . : - s ( s ( o )
? * nume ro (2 ) .n o ,
? - s u m a ( 0 , 0 , 0 )y e s .
? - s u m a ( s ( 0 ) , s ( 0 ) , X )X _ s ( s ( 0 ) )y e s .
? - s u m a ( s ( 0 ) , X , s ( s ( 0 ) ) )X _ s ( 0 )y e s .
? - s u m a ( X , Y r s ( 0 ) )X _ s ( 0 ) , Y _ 0X _ 0 , Y _ s ( 0 ) - >n o .
Introducción a la Programación Lógica Luis Iraola
![Page 7: Introducción a la Programación Lógica - · PDF fileIntroducción a la Programación Lógica o Revisión histórica, ideas centrales, Prolog. o Aspectos centrales de un lenguaje](https://reader033.fdocuments.co/reader033/viewer/2022051405/5a7e6ccc7f8b9ae9398e71bb/html5/thumbnails/7.jpg)
Eteupto No. 4
mortal (X) : - hombre (X) . hombre(X) -> mortal(X)
?- mortal (socrates) . mortal(socrates) -> I{)(/socrates}
?- hombre (socrares) . hombre(socrates) -> tr
hombre (socrates) . I -> hombre(socrates)
?- hombre (socrates) . hombre(socrates) -> I{ }
y e s . I - > T
Dada la teoría (programa) T :
{ hombre(X)-> mortal(X), I -> hombre(socrates) }
y el candidato a teorema (objetivo) C :
mortal(socrates)-> I
ha sido demostrado que T u { C } F I -> I
Luego T l- -C
-( mortal(socrates)-> tr )mortal(socrates) n -¡mortal(socrates) n t
moftal(socrates)
Introducción a la Programación Lógica Luis Iraola
![Page 8: Introducción a la Programación Lógica - · PDF fileIntroducción a la Programación Lógica o Revisión histórica, ideas centrales, Prolog. o Aspectos centrales de un lenguaje](https://reader033.fdocuments.co/reader033/viewer/2022051405/5a7e6ccc7f8b9ae9398e71bb/html5/thumbnails/8.jpg)
Términos
Consrn rrEs
Nombran individuos (objetos) de la teorfa:
Venlnates
L2 mar te 'A l - e j and ro I g l es ias l
Toman como valor cualquier expresión:
X Val -or A1
Una sustitución 0 es un conjunto finito de pares:{ v,/t, , vrlI2, ... , vn/L }
donde cada vi es una variable distinta del resto, y cada I es untérmino en el que no aparece V.
Exp n e g o ¡t es F u u ct o¡t n¿Es
Nombran objetos mediante la composición de otros más simples
3+2 pad re ( 'A Ie j and ro I g l es ias | ) de r i vada (2 *x^2 + 3 *x )
En general, siendo'f 'un símbolo funcional n-ádico y siendo t. , . . .qtérminos, la expresión:
f(t.| ,. ..,tn)es un término.
Introducción a la Progranación Iógica Luis Iraola
![Page 9: Introducción a la Programación Lógica - · PDF fileIntroducción a la Programación Lógica o Revisión histórica, ideas centrales, Prolog. o Aspectos centrales de un lenguaje](https://reader033.fdocuments.co/reader033/viewer/2022051405/5a7e6ccc7f8b9ae9398e71bb/html5/thumbnails/9.jpg)
Cláusulas
Fórmulas compuestas a partir de fórmulas atómicas según el esquema:
VX,... xm ( (A.' A ... ̂ An) -> B)
donde B, A., ... Anson fórmulas atómicas y xr... xmson todas las variables queaparecen en ellas.
ReatesA r ^ . . . A A h - > BB : - A ' , . . . , , \ .
h e r m a n o ( X , Y ) : - p a d r e ( Z , X ' ) , p a d r e ( Z r y ) .
HecnosI - > B
p l a n e t a ( t j - e r r a ) . d i v i s i b l - e ( N , 1 ) . c a s a d o s ( b i l l - , h i l a r y ) .
Oa¿envosA r A . . . A A h - > t r
: - d i v i s i b l e ( 3 , 1 ) . ? - p l a n e t a ( X ) .
Introducción a la Programación I'ógca Luis Iraola
![Page 10: Introducción a la Programación Lógica - · PDF fileIntroducción a la Programación Lógica o Revisión histórica, ideas centrales, Prolog. o Aspectos centrales de un lenguaje](https://reader033.fdocuments.co/reader033/viewer/2022051405/5a7e6ccc7f8b9ae9398e71bb/html5/thumbnails/10.jpg)
Fórmulas atómicas
Reciben un valor de verdad
mayor (3 ,2 ) casados (b i l l , h i l a r y ) p l ane ta (mar te )
En general, siendo'p'un símbolo predicativo n-ádico y siendo t1...qtérminos, la expresión:
P(tr, . . . ' i l )es una fórmula atómica. Conviene incluir tambien como fórmulasatómicas los signos f y !, que reciben siempre los valores verdaderofalso respectivamente.
Unificación
Dos fórmulas atómicas A y B unifican si y sólo si hay una sustitución0 tal que (A)0 es idéntica a (B)0.
Ejemplos:
p(x) unifica con p(a) bajo 0 = { xla } : (p(X))O es idéntico a (p(a))O.
p(a) no unifica con p(b)
p(X,a) unifica con p(b,Y) bajo 0 = { )(/b, Ylal
p(X) unifica con p(Y) bajo 0 = { XAr }b a j o 0 ' = t X f )bajo 0" = { Xla, Y/a }bajo 0"' = { X/c, Y/b }
Introducqión a la Programación LóStca Luis Iraola
![Page 11: Introducción a la Programación Lógica - · PDF fileIntroducción a la Programación Lógica o Revisión histórica, ideas centrales, Prolog. o Aspectos centrales de un lenguaje](https://reader033.fdocuments.co/reader033/viewer/2022051405/5a7e6ccc7f8b9ae9398e71bb/html5/thumbnails/11.jpg)
Regla de Resolución
Unica regla deductiva empleada en una demostración / computación. En suforma general establece:
A r 4 . . . ' r A n - > B B ' A . . . A B ¡ - . , A B ¡ A B ¡ * , A . . . B r - > t r(B)0 = (B¡)0
( B' , l . . . ,r B¡-r ̂ Ar A .. . n An A Bi*r A .. . B,n )0-> n
tal y como la aplica Prolog:
A r A . . . A A n - > B B . , A B z A . . . A B r - > [
(B)0 = (81)0( A'' r., ... A An ̂ Bz ,r ... B, )0 -> n
casos pafticulares son:
I - > B B , ^ B z ^ . . . A B , ' , ' , - > [(B)0 = (B1)0
( B r A . . . B , n ) 0 - > t r
r - > B 8 1 - > t r(B)0 = (81)0
r - > n
Introducción a la Programación Llrgea Luis Iraola
![Page 12: Introducción a la Programación Lógica - · PDF fileIntroducción a la Programación Lógica o Revisión histórica, ideas centrales, Prolog. o Aspectos centrales de un lenguaje](https://reader033.fdocuments.co/reader033/viewer/2022051405/5a7e6ccc7f8b9ae9398e71bb/html5/thumbnails/12.jpg)
E¿eupto No. 5
p l a n e t a ( X ) : - o r b i t a ( X , Y ) , e s t r e t l a ( y )
? - p l a n e t a ( P ) .
orbita(X,Y) n estrella(Y) -> planeta(X)
planeta(P) -> trOUP}
? - o r b i t a ( P , Y ) , € s t r e t t a ( Y )
o r b i t a ( t i e r r a , s o l ) .
? - o r b i t a ( P , Y ) , € s t r e l l _ a ( y )
orbita(P,Y) ^ estella(Y) -> E
I -> orbita(tierra,sol)
orbita(P,Y) nVstrella(Y) -> [{P/tierra,Y/sol}
? - e s t r e l l a ( s o l )
e s t r e l - 1 a ( s o 1 ) .
? - e s t r e l l a ( s o l )
I n estrella(sol) -> n
I -> estrella(sol)
estrella(sol) -> n{ }
y e s .P : t i e r r a
r - > n
T = { orbita(X,Y) ^ estrella(Y) -> planeta(X), I -> orbita(tierra,sol), I -> estrella(sol) }
T u { planeta(P) -> n } l- I -> tr
T l- - vP ( planeta(P) -> n )T l- lP-( planeta(P) -> r )T l- lP( planeta(P) ,.. -fi )T l- 3P planeta(P)
Introd.ucción a la Programación Lógica Luis Iraola
![Page 13: Introducción a la Programación Lógica - · PDF fileIntroducción a la Programación Lógica o Revisión histórica, ideas centrales, Prolog. o Aspectos centrales de un lenguaje](https://reader033.fdocuments.co/reader033/viewer/2022051405/5a7e6ccc7f8b9ae9398e71bb/html5/thumbnails/13.jpg)
L . 2
L . 2
L . 2
L . 2
t . 2
L . 2
L , 2
L . 2
?- pe r t , enece { l una , so1 ) - - - . . . . )
? - o rb iE ,a ( l und ,Z t ) , pe r t , enec .e (Z t , so1 )sust l tución ¿ (Xt l luna , Ytf sol)
1 : ? - o r b i t a ( l u n d , Z t ) ' " " t
sustltución : { Ztl Elarra } <-
l- orbit ,a (1una, t ierra ) , .
a - . - . .
i orbita(tierra,sol): :1 . . ' .
i orbita(luna,tbrra).a
t . ' . t . ' .
i p"'A#ii, li' : ;;iñr r l'm'! pertenece(X,Y):- orbita(X,2),pertenece(Z,Y). i
f r a c a g o d e ! . 2 . 2 . L . . . . . ' . - . - " " : " . . ' ¿ o ¡ ¡ r r o r
II
2 . 2 : ? - o r b i t ' a ( E i e r r a , Z z | , p e r t ' e n e c e ( Z z , s o 1 ) €gust i tuclón ¿.{Xzl t Íerra , Yt l eol }
2 z ? - p e r t , e n e c e ( t i e r r a , s o l ) - - r
2 . L : ? - E . i e r r a = s o l
2 . 2 . L ? - o r b i E , a ( t i e r r a , Z z )sust l tuc ióa ¿ {Zt l ¡o1}
l- orbita ( t ierra , sol )
sí l-sí l-
2 .2 . 2 ? - pe r tenece ( so l , so1 ) - - - - rt .
l ' sol = sol
2 . 2 . 2 . L ? - e s t , r e l l a ( s o 1 )eugtl tucióu: ( )
l - es t re l la (so l )
ésErel,la ( sol ) entonces l- pert,.rr".. (sol , sol)
orb i t ,a ( t ierra, sol ) y l - per t " r r """ (so1 , sol )entonces l- pert,enece (Eierra, sol )
orb i t ,a ( Iuna, t ierra ) y l - perEenece ( i ierra, sol )entonces l- pert,enece ( Iuna, sol )
si ¡-
![Page 14: Introducción a la Programación Lógica - · PDF fileIntroducción a la Programación Lógica o Revisión histórica, ideas centrales, Prolog. o Aspectos centrales de un lenguaje](https://reader033.fdocuments.co/reader033/viewer/2022051405/5a7e6ccc7f8b9ae9398e71bb/html5/thumbnails/14.jpg)
Control
Algoritmo = Lógica + Control: exploración del árbol de prueba.
n u m e r o ( 0 ) . s u m a ( N r O r N ) : -numero (N)
n u m e r o ( s ( N ) ) : - s u m a ( N , s ( M ) , s ( J ) ) : -numero (N) . suma (N, M, J )
? - s u m a ( X , Y , s ( 0 ) ) .
guma (x,Y, Z)
Y-0, X-Y, nt¡mero (X) y-B (M) , Z-s (ü) , sr¡rrn (XrM, ü)
X=0 X=B (N) ,nrmero (N)
. Convenciones arr¡ba/abajo e izquierda/derecha.
. Busqueda en profundidad (extensión) por la izquierda.o Backtraking
Introdueción a la Programación Líglcri Luis Iraola
![Page 15: Introducción a la Programación Lógica - · PDF fileIntroducción a la Programación Lógica o Revisión histórica, ideas centrales, Prolog. o Aspectos centrales de un lenguaje](https://reader033.fdocuments.co/reader033/viewer/2022051405/5a7e6ccc7f8b9ae9398e71bb/html5/thumbnails/15.jpg)
Computación Lógica
Dado un programa lógico P y un objetivo G, la computación lógica de G en Pes una secuencia de aplicaciones de la regla de resolución, inicialmente sobreG y una de las cláusulas de P y continuando sobre los sucesivos G, resultantesde aplicar la regla sobre el objetivo anterior G,_,
Una computación finaliza cuando:
1. la regla de resolución rinde tr (I -> ¡). En este caso tiene éxito en laLefutación del objetivo inicialmente propuesto.
Si Pu{G} F t ren toncesP l - -G.
2. no puede aplicarse la regla de resolución entre ninguna de las cláusulasde P y el resultado de la anterior aplicación. En este caso fracasa el intentode refutar el objetivo inicial.
S ¡ P u { G } tr entonces P -Q.
No dándose 1 ni 2, la computación prosigue indefinidamente.
Validez y Completud
Aplicada a cláusulas de Horn, la Regla de Resolución produce siempre yúnicamente resultados correctos, por lo que es una regla válida.
Además, todo objetivo lógicamente deducible de un programa lógico puedeserfo aplicando la Regla de Resolución, por lo que es una regla completa.
Introducción a la Programación Lógica Luis Iraola
![Page 16: Introducción a la Programación Lógica - · PDF fileIntroducción a la Programación Lógica o Revisión histórica, ideas centrales, Prolog. o Aspectos centrales de un lenguaje](https://reader033.fdocuments.co/reader033/viewer/2022051405/5a7e6ccc7f8b9ae9398e71bb/html5/thumbnails/16.jpg)
Rasgos distintivos de Prolog
o l-a "crisis del sottware"- incremento de los costes de desarrollo del software- falta de fiabilidad
Dos aproximaciones al problema: POO y PL.o Simplicidad sintáctica.. Simplicidad en su ejecución, resolución como única regla.. Capacidad simbólica: el término como única estructura de datos.o recursivos.o (Casi) total ausencia de instrucciones de control.o Multiusoo Meta-programacióno Programación dinámica. Paralelización transparente.
Limitaciones
r [llecanismo de control del árbol de prueba.. Uso del procedimiento de corte.e \legación.
. ffectos laterales no cancelables bajo backtraking.o Qarencia de aritmética multiuso.
Introducción a la Progra:nación Lógica Luis Iraola