Está en la página 1de 16

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

. de los años70, R. Kowalskiy A. Colmerauer


Comienzos
o Dos usosde la Lógica:
- representaciónrigurosadel conocimiento
- demostracióncomoalgoritmo: Algoritmo= Lógica+ Control
o Resultados anterioresde Herbrand,Horny Robinson(demostración
automáticade teoremas)

Prografirá= Algoritmos+ Datos Programa= Reglas+ Teoría

Instrucclón #1 1 Fó¡uula #1
Inetrueción #Z 7 Fó¡su1a #2 I
t a a
1
v I
InstrueeLón #^ -l Fórnula #n
, I
groP
1
I Teoreun I

Introducción a la Programación Lógica Luis Iraola


HtH,l'@ffih"
Teorema Denogtración
Canüdato

o Desarrollo
de implementaciones de Prologa partirde la de Warren
eficientes
. Normalizaciónde 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: Representación
LPl:

mortal (X) : - Vx (Hx


hombre (X)

hombre(socrat.es) . Ha

?- mortaf (socrates) . F Ma

lntroducción a la Programación Lógica 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: Representación
LPl:
1. e s t r e l - 1 a ( s o l -) 1. Ea (a SoI )
2. o r b i t a ( m e r c u r i o , s o l _ ). 2. Oba (b Mercurio )
3. orbita (venus,sol-) 3. Oca (c Venus )
4. orbita (luna, tierra) 4. Ode (o Luna )
5. orbita (tierra, sol) o 5. Oea (e Tierra )
6. orbita (marte, soI) 6. Ofa (f Marte )
1. orbita (fobos, marte) 1. Ogf (s fobos )
B. o r b i t a ( d e i m o s ,m a r t e ) . B. Ohf (h deimos )

e Pranetiif::rgiíl 9. V*y (Oxy & Ey

:
10' sar"::ilt!i", 10. V*y (Oxy s, Py-> Sx)
r, ,
planeta (Y) .

1 1 . p e r t e n e c e ( X ,X ) : - 11. Vx (Ex
estrel-la (X)

pertenece (X,Y) : - Yxyz (Oxz & Tzy


orbita (X,Z) ,
pertenece (Z, Y) .

Introducción a la Programación Lógica Luis Iraola


Ete¡upto No.3

Conocimientoa representar:

L. '0' es el numeralque representa al numerocero.


2. La expresión 's(n)'es el numeraldel numerosucesor al representado
por la expresión '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). 1. Na (a: cero)


2 . n u m e r o ( s ( N)): - 2. Vx(Nx
numero(N)

3 . s u m a( N / 0 , N ) : - 3. Vx (Nx
numero(N) .
4 . s u m a( N , s ( M ), s ( J ) ) : - 4. Vxyz (Sxyz
s u m a( N , M , J )

Algunos usos de la teoría:


? - n u m e r o( s ( s ( 0 ) ) ) . ? - s u m a( 0 , 0 , 0 )
yes. yes.

? - n u m e r o( X ) ?- suma(s(0),s(0),X)
X _ 0 X_ s(s(0))
X_ s(0) -> yes.
s ( s( o )
T.:- ? - s u m a ( s( 0 ) , X , s ( s ( 0 ) ) )
X _ s (0)
?* n u m er o ( 2 ) . yes.
no,
?- 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

que T u { C } F I -> I
ha sido demostrado

LuegoT l- -C

-( mortal(socrates)->
tr )
n -¡
mortal(socrates)
mortal(socrates)
nt

moftal(socrates)

Introducción a la Programación Lógica Luis Iraola


Términos

ConsrnrrEs
Nombran (objetos)
individuos de la teorfa:
L2 marte ' A l - ej a n d r o I g l e s i a s l

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, siendo'f'unsímbolo
funcional y siendot.,...q
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) . ?- planeta (X) .

Introducción a la Programación I'ógca Luis Iraola


Fórmulasatómicas
Recibenun valorde verdad

mayor (3,2) casados (bill, hilary) planeta (marte)

En general,siendo'p'unsímbolopredicativon-á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 (y) n estrella(Y)-> planeta(X)


orbita(X,Y)
? - p l a n e t a ( P) . planeta(P)-> tr
OUP}
?- orbita (P,Y),€stretta (Y) orbita(P,Y) -> E
^ estella(Y)

orbita (tierra, sol) . I -> orbita(tierra,sol)

?- orbita (P,Y) , €strell_a (y) nVstrella(Y)-> [


orbita(P,Y)
{P/tierra,Y/sol}
?- estrella (sol) -> n
I n estrella(sol)

estrel-1a (so1) . I -> estrella(sol)

?- estrella (sol) -> n


estrella(sol)
{ }

yes. r->n
P : tierra

T = { orbita(X,Y) -> planeta(X),


^ estrella(Y) I -> orbita(tierra,sol),
I -> estrella(sol)
}
-> n } l- I -> tr
T u { planeta(P)

T - vP ( planeta(P) -> n )
l-
T lP-( planeta(P) -> r )
l-
T l- lP( planeta(P),..-fi )
T l- 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) ' ""t a -


. - . .

sustltución : { Ztl Elarra } <- i orbita(tierra,sol): :


1..'.

l- orbit,a (1una, tierra ) ,. i orbita(luna,tbrra).


a

t
.'.t .'.

L . 2 2z ?- pert,enece(tierra,sol )--r
p"'A#ii, li' :;;iñrrl'm'
i pertenece(X,Y):-
L . 2 2.L: ?- E.ierra = sol ! orbita(X,2),pertenece(Z,Y).
i
fracago de !.2.2.L . . . . . ' .- . - " " :"..' ¿o¡¡rror
II
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 ) entonces l- pert,.rr".. (sol , sol)

sí l- o r b i t , a ( t i e r r a ,
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 )
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 ) ) : - s u m a( N , s ( M ), s ( J ) ) : -
numero(N) . s u m a( N , M , J )

?- suma(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.
. 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


Lefutación del objetivoinicialmente
propuesto.

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
al problema:POOy PL.
Dos aproximaciones
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