Introducción a la ProgramaciónLógica o Revisiónhistórica, ideascentrales, Prolog. o Aspectoscentralesde un lenguajede programación lógica. . Rasgosdistintivos de Prologrespectode otroslenguajes de programación. Introducción a la Programación Lógica Luis Iraola Orígeneshistóricos . Comienzos de los años70, R. Kowalskiy A. Colmerauer o Dos usosde la Lógica: - representación rigurosadel conocimiento - demostración Algoritmo= Lógica+ Control comoalgoritmo: o Resultados anterioresde Herbrand,Horny Robinson(demostración automática de teoremas) Prografirá= Algoritmos+ Datos Instrucclón Inetrueción t a Programa= Reglas+ Teoría #1 1 #Z 7 Fó¡uula #1 Fó¡su1a #2 I I #^ -l , Fórnula #n I 1 v a InstrueeLón groP 1 I Introducción a la Programación Lógica Teoreun I Luis Iraola HtH,l'@ffih" Teorema Canüdato Denogtración o Desarrollo de implementaciones eficientes de Prologa partirde la de Warren . Normalización de Prolog:ISO95 . Prologcomolenguajede proposito general:Prologpuroe impuro. . Constraint LogicProgramming, PARLOG,Datalog,... Introducción a la Programación Lógica Luis Iraola Ete¡upto No. 1 Conocimiento a representar: 1. Todos los hombres son mortales. 2. Sócrateses un hombre. A deducir: Sócrateses mortal. Representación PROLOG: mortal (X) : hombre (X) hombre(socrat.es) Representación LPl: Vx (Hx . ?- mortaf (socrates) Ha . lntroducción a la Programación Lógica F Ma Luis Iraola Eteupto lvo.2 Conocimiento a representar: 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 planetasaquelloscuerposque orbitan en torno a una estrella. 10. Todo cuerpo que orbita en torno a un planeta es un satélite. 11. Pertenecena un sistemasolar la estrellamisma y todo cuerpo que orbite en torno a otro que pertenezca. Representación PROLOG: 1. 2. 3. 4. 5. 6. 1. B. e s t r e l - 1 a ( s o l -) o r b i t a ( m e r c u r i o , s o l _ ). orbita (venus,sol-) orbita (luna, tierra) orbita (tierra, sol) o orbita (marte, soI) orbita (fobos, marte) o r b i t a ( d e i m o s ,m a r t e ) . e Pranetiif::rgiíl : 10' sar"::ilt!i", r, , Representación LPl: 1. 2. 3. 4. 5. 6. 1. B. Ea Oba Oca Ode Oea Ofa Ogf Ohf (a (b (c (o (e (f (s (h SoI ) Mercurio ) Venus ) Luna ) Tierra ) Marte ) fobos ) deimos ) 9. V*y (Oxy & Ey 10. V*y (Oxy s, Py-> Sx) planeta (Y) . 1 1 . p e r t e n e c e ( X ,X ) : estrel-la (X) pertenece (X,Y) : orbita (X,Z) , pertenece (Z, Y) . Introducción a la Programación Lógica 11. Vx (Ex Yxyz (Oxz & Tzy Luis Iraola Ete¡upto No.3 Conocimientoa representar: L. '0' es el numeralque representa al numerocero. 's(n)' 2. La expresión es el numeraldel numerosucesor al representado 'n'. por la expresión 3. Cualquiernumerosumado a ceroes igual a esemismonumero. 4. La sumade dos numeros'n' I 's(m)'es igual a 's(j)',siendo'j' el resultadode sumar'^' y 'm'. I n + s(m)= s(n+m)] Representación Prolog: Representación LPl: 1. numero(O). 2 . n u m e r o ( s ( N)): numero(N) (a: cero) 1. Na 2. Vx(Nx 3 . s u m a( N / 0 , N ) : numero(N) . 4 . s u m a( N , s ( M ), s ( J ) ) : s u m a( N , M , J ) 3. Vx (Nx 4. Vxyz (Sxyz Algunos usos de la teoría: ? - n u m e r o( s ( s ( 0 ) ) ) . yes. ? - s u m a( 0 , 0 , 0 ) yes. ? - n u m e r o( X ) X _ 0 X_ s(0) -> ?- suma(s(0),s(0),X) X_ s(s(0)) yes. s ( s( o ) T.:- ?* n u m er o ( 2 ) . no, ? - s u m a ( s( 0 ) , X , s ( s ( 0 ) ) ) X _ s (0) yes. ?- suma(X,Yrs(0)) X _ s ( 0 ) ,Y _ 0 X_ 0, Y _ s(0) -> no. Introducción a la Programación Lógica Luis Iraola Eteupto No.4 mortal (X) : - hombre(X) . hombre(X)-> mortal(X) ?- mortal (socrates) . -> I mortal(socrates) {)(/socrates} ?- hombre(socrares) . -> tr hombre(socrates) hombre(socrates) . I -> hombre(socrates) ?- hombre(socrates) . -> I hombre(socrates) { } yes. I->T Dadala teoría(programa) T: mortal(X),I -> hombre(socrates) { hombre(X)-> } y el candidatoa teorema(objetivo)C : mortal(socrates)-> I ha sido demostrado que T u { C } F I -> I LuegoT l- -C -( mortal(socrates)-> tr ) mortal(socrates) n -¡ mortal(socrates) nt moftal(socrates) Introducción a la Programación Lógica Luis Iraola Términos ConsrnrrEs (objetos) Nombran individuos de la teorfa: L2 ' A l - ej a n d r o I g l e s i a s l marte Venlnates Tomancomovalorcualquierexpresión: X Val-or A1 Una sustitución0 es un conjuntofinitode pares: { v,/t,, vrlI2,... , vn/L} dondecadavies una variabledistintadel resto,y cadaI es un términoen el que no apareceV. Expneg o¡tes Fuucto¡tn¿Es Nombranobjetosmediantela composición de otrosmássimples 3+2 padre ('AIe jandro Iglesias | ) derivada (2*x^2 + 3*x) En general, y siendot.,...q siendo'f'unsímbolo funcional n-ádico términos,la expresión: f(t.|,...,tn) es un término. Introducción a la Progranación Iógica Luis Iraola Cláusulas Fórmulascompuestas a partirde fórmulasatómicassegúnel esquema: VX,... xm ( (A.' A ... ^ An) -> B) dondeB, A.,... Ansonfórmulasatómicasy xr...xmsontodaslas variables que aparecenen ellas. Reates Ar^...AAh->B B:-A',...,,\. hermano (X, Y) : - padre (Z,X'), padre (Zry) . Hecnos I->B planeta (t j-erra) . divisibl-e (N, 1) . casados (bill-, hilary) . Oa¿envos ArA...AAh->tr : - divisible (3, 1) . Introducción a la Programación I'ógca ?- planeta (X) . Luis Iraola Fórmulasatómicas Recibenun valorde verdad mayor (3,2) casados (bill, hilary) planeta (marte) En general,siendo'p'unsímbolopredicativo n-ádicoy siendot1...q términos,la expresión: P(tr,...'il) es unafórmulaatómica.Convieneincluirtambiencomofórmulas atómicaslos signosf y !, que recibensiemprelos valoresverdadero falso respectivamente. Unificación DosfórmulasatómicasA y B unificansi y sólosi hay unasustitución 0 tal que (A)0es idénticaa (B)0. Ejemplos: p(x) unificaconp(a)bajo0 = { xla } : (p(X))O es idéntico a (p(a))O. p(a)no unificaconp(b) p(X,a)unificaconp(b,Y)bajo0 = { )(/b,Ylal p(X)unificaconp(Y)bajo0 = { XAr} b a j o 0 ' = t Xf ) bajo0" = { Xla,Y/a} bajo0"' = { X/c,Y/b} Introducqión a la Programación LóStca Luis Iraola Reglade Resolución Unicaregladeductivaempleadaen unademostración / computación. En su formageneralestablece: Ar 4... 'rAn-> 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*rA ... B,n)0-> n tal y comola aplicaProlog: Ar A... AAn-> B B . ,A B z A . . . A B r - > [ (B)0= (81)0 ( A'' r.,... A An ^ Bz ,r ... B, )0 -> n casospafticulares son: I->B B,^Bz^...AB,',',->[ (B)0= (B1)0 (BrA...B,n)0->tr r->B 81->tr (B)0= (81)0 r->n Introducción a la Programación Llrgea Luis Iraola E¿eupto No.5 planeta (X) : -orbita ( X ,Y ) , e s t r e t l a orbita(X,Y) n estrella(Y)-> planeta(X) (y) planeta(P)-> tr ? - p l a n e t a ( P) . OUP} ?- orbita (P,Y),€stretta (Y) orbita (tierra, sol) . ?- orbita (P,Y) , €strell_a (y) ?- estrella (sol) estrel-1a (so1) . ?- estrella (sol) -> E orbita(P,Y) ^ estella(Y) I -> orbita(tierra,sol) orbita(P,Y) nVstrella(Y)-> [ {P/tierra,Y/sol} -> n I n estrella(sol) I -> estrella(sol) -> n estrella(sol) { } yes. P : tierra r->n -> planeta(X), T = { orbita(X,Y) ^ estrella(Y) I -> orbita(tierra,sol), I -> estrella(sol) } -> n } l- I -> tr T u { planeta(P) T T T T llll- -> n ) - vP ( planeta(P) -> r ) lP-( planeta(P) lP( planeta(P),..-fi ) 3P planeta(P) Introd.ucción a la Programación Lógica Luis Iraola ?- pert,enece { luna, so1 ) -- -....) L . 2 ? - o r b i E , a ( l u n d , Z t ) , p e r t , e n e c . e( Z t , s o 1 ) sustltución ¿ (Xtl luna , Ytf sol) ' L . 2 1: ?- orbita(lund,Zt) sustltución : { Ztl Elarra } <- l- orbit,a (1una, tierra ) ""t a - 1..'. ,. a L . 2 2z ?- pert,enece(tierra,sol )--r ?- E.ierra = sol fracago de !.2.2.L - . . i orbita(luna,tbrra). t L . 2 2.L: . i orbita(tierra,sol): : .'.t .'. p"'A#ii, li' :;;iñrrl'm' i pertenece(X,Y):- orbita(X,2),pertenece(Z,Y). i ! . . . . . ' .- . - " " :"..' ¿o¡¡rror t.2 2.2:?-orbit'a(Eierra,Zz|,pert'enece(Zz,so1)€ gustituclón ¿.{XzltÍerra , Ytl eol } L . 2 2.2.L ?- orbiE,a(tierra,Zz ) s u s t l t u c i ó a ¿{ Z t l ¡ o 1 } l- orbita ( t ierra , sol ) L , 2 2 . 2 . 2 ?- p e r t e n e c e ( s o l , s o 1 ) - - - - r l' sol = sol t . L . 2 2 . 2 . 2 . L ?- e s t , r e l l a ( s o 1) eugtltucióu: ( ) l- estrella (sol ) sí l- ésErel,la ( sol ) sí l- o r b i t , a ( t i e r r a , entonces l- pert,.rr".. (sol , sol) s o l ) y l - p e r t " r r " " " ( s o 1, s o l ) entonces l- pert,enece (Eierra, sol ) si ¡- o r b i t , a ( I u n a , t i e r r a ) y l - p e r E e n e c e( i i e r r a , s o l ) entonces l- pert,enece ( Iuna, sol ) II Control Algoritmo= Lógica+ Control:exploración del árbolde prueba. n u m e r o ( 0 ). s u m a ( N r O r N: -) n u m e r o( N ) n u m e r o( s ( N ) ) : numero(N) . s u m a( N , s ( M ), s ( J ) ) : s u m a( N , M , J ) ?- suma(X,Y,s(0)). guma(x,Y, Z) Y-0, X-Y, nt¡mero(X) X=0 y-B (M), Z-s (ü) , sr¡rrn(XrM,ü) X=B(N) ,nrmero (N) . Convenciones arr¡ba/abajo e izquierda/derecha. . Busquedaen profundidad (extensión) por la izquierda. o Backtraking Introdueción a la Programación Líglcri Luis Iraola Computación Lógica Dadoun programalógicoP y un objetivoG, la computación lógicade G en P es una secuencia de aplicaciones de la reglade resolución, inicialmente sobre G y una de las cláusulasde P y continuando sobrelos sucesivosG, resultantes de aplicarla reglasobreel objetivoanteriorG,_, Una computaciónfinalizacuando: 1. la reglade resoluciónrindetr (I -> ¡). En estecasotieneéxitoen la del objetivoinicialmente propuesto. Lefutación S i P u { G } F t r e n t o n c e sl -P- G . 2. no puedeaplicarsela reglade resolución entreningunade las cláusulas de P y el resultadode la anterioraplicación. En estecaso fracasael intento de refutarel objetivoinicial. S ¡P u { G } tr entonces P -Q. No dándose1 ni 2, la computación prosigueindefinidamente. Validezy Completud Aplicadaa cláusulas de Horn,la Reglade Resolución producesiemprey únicamenteresultadoscorrectos,por lo que es una reglaválida. Además,todo objetivológicamente deduciblede un programalógicopuede serfoaplicandola Reglade Resolución, por lo que es una reglacompleta. Introducción a la Programación Lógica Luis Iraola Rasgosdistintivosde Prolog o l-a "crisisdel sottware" - incrementode los costesde desarrollodel software - faltade fiabilidad Dos aproximaciones al problema:POOy PL. o Simplicidad sintáctica. . Simplicidad en su ejecución, resolución comoúnicaregla. . Capacidad simbólica: el términocomoúnicaestructura de datos. o recursivos. o (Casi)totalausenciade instrucciones de control. o Multiuso o Meta-programación o Programación dinámica . Paralelización transparente. Limitaciones r [llecanismode controldel árbolde prueba. . Uso del procedimiento de corte. e \legación. . ffectos lateralesno cancelables bajobacktraking. o Qarenciade aritmética multiuso. Introducción a la Progra:nación Lógica Luis Iraola