Introducción a la Programación Lógica

Anuncio
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
Descargar