Sei sulla pagina 1di 16

Programacin Lgica

Laprogramacinlgica,juntoconlafuncional,formapartede
loqueseconocecomoprogramacindeclarativa.
Elparadigmalgicosefundamentaenlasteorasdelalgica
proposicional (Clusulas de Horn), manejando lgica de
predicados con una sola conclusin en cada clusula y un
conjunto de premisas de cuyo valor de verdad se deduce el
valordeverdaddelaconclusin:
una conclusin es cierta si lo son simultneamente todas
suspremisas.

1 de 16

Programacin Lgica
En los lenguajes tradicionales, la programacin consiste en
indicarcmoresolverunproblemamediantesentencias;enla
programacin lgica al ser un paradigma de la rama
declarativa, un programa no tiene un algoritmo que indique
lospasosquedetallenlamaneradellegaraunresultado,sino
que es el sistema internamente el que proporciona la
secuencia de control, se trabaja de una forma descriptiva,
estableciendo relaciones entre entidades, indicando no cmo,
sinoquhacer.

2 de 16

Programacin Lgica
La ecuacin de Robert Kowalski (Universidad de Edimburgo)
establecelaideaesencialdelaprogramacinlgica:
algoritmos=lgica+control
Esdecir,unalgoritmoseconstruyeespecificandoconocimiento
enunlenguajeformal(lgicadeprimerorden),yelproblema
seresuelvemedianteunmecanismodeinferencia(control)que
actasobreaqul.

3 de 16

Programacin Lgica
Enelparadigmalgiconoexisteelconceptodeasignacinde
variables, sino el de unificacin. No hay un estado de las
variablesquesevayamodificandoporsucesivasasignaciones,
generalmenteasociadasaposicionesdememoria,sinoquelas
variables asumen valores al unificarse o ligarse con valores
particulares temporalmente y se van sustituyendo durante la
ejecucindelprograma.

4 de 16

Programacin Lgica

Un programa lgico contiene una base de conocimiento sobre


la que se hacen consultas. La base de conocimiento est
formada por hechos, que representan la informacin del
sistema expresada como relaciones entre datos, y por reglas
lgicas que permiten deducir consecuencias a partir de
combinacionesentreloshechosy,engeneral,otrasreglas.

5 de 16

Programacin Lgica
Unprogramalgicoseconstruyeespecificandolainformacin
delproblemarealenunabasedeconocimientoenunlenguaje
formal y el problema se resuelve mediante un mecanismo de
inferenciaqueactasobreella.
Una clave de la programacin lgica es poder expresar
apropiadamente todos los hechos y reglas necesarios que
defineneldominiodeunproblema.

6 de 16

Programacin Lgica
En otros paradigmas, las salidas son funcionalmente
dependientes de las entradas, por lo que el programa puede
verse abstractamente como la implementacin de una
transformacin de entradas en salidas. En cambio, la
programacin lgica est basada en la nocin de que el
programa implementa una relacin, en vez de una
transformacin.

7 de 16

Programacin Lgica
Lospredicadossonrelaciones,quealnotenerpredefinidouna
direccin entre sus componentes, permiten que sus
argumentos acten indistintamente como argumentos de
entrada y salida. Esta caracterstica se denomina
inversibilidad.
A diferencia de las funciones donde est la restriccin de la
unicidad de la imagen para un elemento determinado del
dominio, una relacin permite vincular a cada elemento con
muchosotroselementos,permitiendosolucionesalternativas.

8 de 16

Programacin Lgica
Dado que las relaciones son ms generales que las
transformaciones,laprogramacinlgicaespotencialmentede
msaltonivelqueladeotrosparadigmas.
Internamente, existe un mecanismo, un motor, que acta
como control de secuencia. Durante la ejecucin de un
programa va evaluando y combinando las reglas lgicas de la
basedeconocimientoparalograrlosresultadosesperados.
Se debe garantizar que se agoten todas las combinaciones
lgicas posibles para ofrecer el conjunto completo de
respuestasalternativasposiblesacadaconsultaefectuada.
9 de 16

Programacin Lgica
Dos caractersticas tpicas de los programas lgicos son la
recursividad como estrategia lgica para encontrar soluciones
ylautilizacindelistaspararepresentarconjuntosdevalores.
Los lenguajes del paradigma lgico, en general incluyen
herramientaspararealizarsolucionespolimrficasymanejar
elconceptodeordensuperior,entendidocomolacapacidadde
un lenguaje para manejar su propio cdigo como una
estructuradedatosms.

10 de 16

Programacin Lgica
El lenguaje Prolog,principalrepresentantedelparadigma,se
basaenunsubconjuntodelalgicadeprimerorden.Philippe
RousselyAlainColmerauer(UniversidaddeAixMarseille)lo
crearonen1972.
EnPROLOGdeclaramosconocimientodelasiguientemanera:
mortal(X):humano(X).
humano(socrates).

Regla
Hecho

11 de 16

Programacin Lgica

Que podemos hacer con PROLOG y las declaraciones de


conocimientosiguientes:
mortal(X):humano(X).
humano(socrates).

Regla
Hecho

Scrates,esmortal?

?mortal(socrates).
Yes

Maradona,esmortal?

?mortal(maradona).
No

Qumortalesconoce?

?mortal(X).
X=socrates
Yes

Hayalgnmortalenlasala?

?mortal(_).
Yes
12 de 16

Programacin Lgica
Esquemadeunaaplicacinenprogramacinlgica

13 de 16

Programacin Lgica
Variableannima
Latraduccinparalaconsultalgica:
Hayalgnmortalenlasala?

?mortal(_).
Yes

existextalquepdexsecumple,dondep(x)significaquexes
mortal

14 de 16

Programacin Lgica
PrincipiodeUniversocerrado
cuandopreguntamos:
Maradona,esmortal?

?mortal(maradona).
No

Bueno,esoesloquesellamaPrincipiodeUniversoCerradoo
Negacin por falla (Closed World assumption): todo lo que no
estenlabasedeconocimientosnosepuedeinferirsiescierto
ono,porlotantoseasumefalso.

15 de 16

Programacin Lgica
Ejemplo
padrede('juan','maria').
padrede('pablo','juan').
padrede('pablo','marcela').
padrede('carlos','debora').
hijode(A,B):padre(B,A).
abuelode(A,B):padrede(A,C),padrede(C,B).
hermanode(A,B):padrede(C,A),padrede(C,B),A\==B.
familiarde(A,B):padrede(A,B).
familiarde(A,B):abuelode(A,B).
familiarde(A,B):hermanode(A,B).

16 de 16

Potrebbero piacerti anche