You are on page 1of 10

Red de Revistas Cientficas de Amrica Latina, el Caribe, Espaa y Portugal

Sistema de Informacin Cientfica

Fernando Alonso Amo, Marco Villalobos Abarca


Programacin lgica: un enfoque para desarrollar aplicaciones
Conciencia Tecnolgica, nm. 14, agosto, 2000, pp. 3-11,
Instituto Tecnolgico de Aguascalientes
Mxico
Disponible en: http://www.redalyc.org/articulo.oa?id=94401402

Conciencia Tecnolgica,
ISSN (Versin impresa): 1405-5597
contec@correo.ita.mx
Instituto Tecnolgico de Aguascalientes
Mxico

Cmo citar?

Fascculo completo

Ms informacin del artculo

Pgina de la revista

www.redalyc.org
Proyecto acadmico sin fines de lucro, desarrollado bajo la iniciativa de acceso abierto

PROGRAMACIN LGICA: UN ENFOQUE PARA DESARROLLAR APLICACIONES


Fernando Alonso Amo
falonso@fi.upm.es

Marco Villalobos Abarca'


fd90 l 57@zipi.fi.upm.es
Depto. de Computacin e Informtica
Universidad de Tarapac
Anca - Chile

Facultad de Informtica
Universidad Politcnica de Madrid
Madrid - Espaa

RESUMEN

que normalmente se considera dentro del campo de la


Inteligencia Artificial. Esto es porque encontrar

No hay una frmula general para un buen uso de la

soluciones a problemas es todava una capacidad muy

programacin lgica en el desarrollo de aplicaciones.

dependiente de la intuicin humana, las cuales son

En este artculo se propone un enfoque metodolgico

muchas veces dificiles de desarrollar y formalizar. No

para abordar esta tarea.

hay una frmula general para un buen uso de la


programacin lgica en el desarrollo de aplicaciones

El enfoque metodolgico, usa una notacin formal

de este tipo, pero se intentar ilustrar en este trabajo

para representar los conceptos necesarios y consiste

una aproximacin para abordar esta tarea (ver otros

en cuatro fases fundamentales: Descripcin del

enfoques en Brewka et al. [4] y Gelfond et al. [7]). En

dominio de aplicacin, Diseo de una estrategia,

esta aproximacin se plantea un enfoque que parte

Traduccin a un lenguaje de programacin que

desde una descripcin del dominio de aplicacin en

soporte el paradigma lgico, como lo es Prolog, y

trminos de entidades y relaciones satisfechas por

finalmente, una Evaluacin. Se muestra su

estas entidades, que a su vez permiten representar al

aplicabilidad para desarrollar descripciones de

mundo en trminos de estados. Fundamentalmente, se

programas lgicos que manipulan conocimiento y

describen un estado inicial y otro final (objetivo). A

resuelven problemas en base a ese conocimiento.

continuacin, se desarrolla una estrategia que define


un conjunto de acciones que transforman el dominio

PALABRAS CLAVES: Programacin Lgica, Enfoque de


Desarrollo, Metodologa de Programacin.

descrito por el estado inicial en otros estados


intermedios hasta llegar al estado final. El problema

INTRODUCCION
se resuelve encontrando el camino que lleva desde el
La programacin lgica constituye una herramienta

estado inicial al estado final. Las entidades, sus

que tradicionalmente ha provisto de una slida

relaciones y la estrategia son traducidas a un lenguaje

estructura conceptual para representar conocimiento.

de programacin que soporte el paradigma lgico. Y

Puede ser usada para describir y recuperar

finalmente, se evala el producto en sus aspectos de

conocimiento sobre un dominio de aplicacin, para

correccin, validez y usabilidad.

describir nuestro conocimiento sobre tareas de clculo


tradicional, y para describir tareas menos triviales

CONCEPTOS PREVIOS

como la capacidad de encontrar solucin a problemas

Qu es un Paradigma de Programacin?

, Doctorando Universidad de Tarapac de Anca - Chile en la Universidad Politcnica de Madrid Espaa.

4fl^^^^W5 ^06A

Programacin Lgica: Un enfoque...


Fernando Alonso Am y Marco Villalobos Abarca

Alonso y Segovia [1] definen "un paradigma de

proposiciones), y de reglas lgicas previamente

programacin como un modelo bsico de diseo e

establecidas, que obtienen conclusiones en base a una

implementacin de programas... ". Ambler, Brunett y

serie de preguntas lgicas. El control es inherente al

Zimmerman [2J lo definen como 'una coleccin de

sistema, el que permite investigar las preguntas

modelos conceptuales que juntos modelan el proceso

lgicas. Esta capacidad es el concepto clave que

de diseo y determinan la estructura de un

subyace en la Programacin Lgica (descriptiva). Al

programa

separar el control y la lgica, el programa lgico se


transforma en un conjunto de declaraciones formales

Ambler et al. [2] proponen que el tipo de solucin que

de especificaciones que deben ser correctas por

aporta un paradigma para resolver un problema

definicin.

particular, define tres categoras de paradigmas:


Solucin procedimental u operacional, Solucin

Qu es un Sistema de Programacin Lgica?

demostrativa y Solucin declarativa. Para anlisis de

El conjunto de hechos y reglas constituye lo se

otra clasificacin de los paradigmas ver la propuesta

denomina una descripcin,

por Floyd [b]. Aqu interesa describir el paradigma

programa donde combinado con un procedimiento de

declarativo el cual es el centro de atencin de ste

inferencia independiente de la aplicacin hace posible

trabajo. La Programacin Lgica.

a la computadora sacar conclusiones acerca del rea

que llega a ser un

de aplicacin y responder preguntas an cuando estas


respuestas no estn explcitamente registradas en la

Qu es el Paradigma de Programacin Lgica?


"la

descripcin . Esta capacidad es la base de la tecnologa

programacin lgica es una programacin por

de la programacin lgica . La figura nmero 1 ilustra

descripcin. El programa se construye describiendo

la configuracin de un tpico sistema de programacin

el rea de aplicacin, esto es, se seala el qu se

lgica.

desea (mediante hechos que son verdaderos) pero no

procedimiento de inferencia, el cual acepta consultas

el cmo obtenerlo, esto est implcito". Asimismo,

del usuario, accede a los hechos y reglas en su base

Ambler et al. [2] sealaron que "el paradigma lgico

de conocimiento ( la descripcin), y saca conclusiones

asume la definicin de un conjunto de hechos... y un

apropiadas . Esto es, es capaz de responder preguntas

conjunto de reglas que permiten la deduccin de

del usuario . El funcionamiento de un Sistema de

otros hechos. As, la programacin lgica, desde la

Programacin Lgico se basa en los conceptos de

perspectiva del programador, es una tcnica que

Descripcin (semntica declarativa ),

consiste en expresar apropiadamente todos los

(procesos de inferencia , deduccin y resolucin) y

hechos y reglas necesarias que definen un problema".

Control (eficiencia). Para una descripcin detallada de

Genesereth y Ginsberg [8] sealaron que

En el corazn del sistema est su

Deduccin

stos, vase lo propuesto por Genesereth et al. [81.


Qu es un Programa Lgico?
En consecuencia, un programa lgico se configura
como un conjunto de hechos (asertos o

Qac^^oao6A ^

Programacin Lgica. Un enfoque...


Fernando Alonso Am y Marco Villalobos Abarca

soluciones basadas en el conocimiento. El enfoque


Usuario
R espuestas

usa una notacin formal para representar los


conceptos necesarios y consiste en cuatro fases

Preguntas

fundamentales :

Procedimiento de
Inferencia
independiente
de la aplicacin

Descripcin del dominio de

aplicacin, Diseo de una estrategia, Traduccin a un


lenguaje de programacin que soporte el paradigma

Hech os y Reglas

lgico, como lo es Prolog , y Evaluacin del producto.


Un esquema del enfoque es mostrado en la figura

Base de
Conocimiento

nmero 2.
Fig. N 2: Enfoque de desarrollo propuesto

Fig. N l: Sistema de Programacin Lgica


PROPUESTA

1. Descripcin del Dominio de Aplicacin

Hasta el momento se han descrito conceptos y


componentes de un sistema de programacin lgica.

Definicin del problema


El primer paso para desarrollar una Descripcin, es

Ahora se describir un enfoque sistemtico que nos


apoye en el desarrollo de aplicaciones en este

establecer una

definicin del problema.

Esta

definicin debera indicar lo que hay que hacer, y no


paradigma. Fundamentalmente, se trata de una
proposicin para construir una

Descripcin

apropiada, dado que los componentes de Deduccin y

como hay que hacerlo. Debe ser una exposicin de


nuestras necesidades, y no una propuesta de solucin.
Se debera indicar fundamentalmente qu aspectos

Control se suponen dados. Se presenta un conjunto de


son obligatorios, as como los opcionales. Adems,
fases, notacin y ejemplos que muestran cmo
sealar claramente las restricciones o limitaciones que
abordar la problemtica. El enfoque nos apoyar en el
existan. Todo esto se escribe en un documento que
desarrollo de programas lgicos que permitan
constituye la base para concretar la Descripcin del
representar conocimiento y sean capaces de encontrar
dominio de aplicacin.

t.l^eio

amiiioc
Aplicarn

Hncednieio
Inferenia

n:

l-biTsy
Pdacia^es

LlsebdeuB
I n1 a

c^laaiican

anian,

Qnomeno

fdns,
Pdaciaresy
1 a
Traciix n

Qac^ca^a^ ^a^A ^

Programacin Lgica: Un enfoque...


Fernando Alonso Am y Marco Villalobos Abarca

A partir del documento de definicin, se inicia una

tuplas para describir caractersticas o atributos de las

conceptualizacin de las entidades existentes o

entidades. Por ejemplo:

entidades necesarias y las relaciones satisfechas por


estas entidades, que permitan abstraer los aspectos

La entidad concreto persona "Juan" con sus atributos apellido.


peso, altura, edad. ciudad de nacimiento, puede ser representado
como la tupla: juan(tejada.80, 1 .85,35,via-del-mar).

esenciales del dominio de aplicacin. Estas entidades


y sus relaciones mostrarn una visin esttica del
mundo.

Los atributos deben ser identificados desde la


definicin del problema. Por otra parte, tambin

Identificacin de Entidades v sus Relaciones

debemos identificar las relaciones entre las entidades

Primero se identifican las entidades relevantes en el

del dominio. Toda dependencia entre dos o ms

dominio de aplicacin. Lo mejor es ir anotando ideas

entidades es una relacin. Una relacin es una

en papel antes de intentar organizarlas demasiado, an

conexin fsica o conceptual entre entidades. Por

cuando sean redundantes e incongruentes, para no

ejemplo:

perder detalles importantes. Es probable que la

Nuestra entidad "Juan Tejada Trabaja para la Compaa Axis".


Esto puede ser expresado como: trabaja(juan, axis)

descripcin inicial contenga defectos que debern de

La relacin entre un Pas v su Capital: capital(chile, santiago)

ser corregidos en iteracciones posteriores. No es


necesario construir uniformemente toda la

En consecuencia, de una forma ms general, se puede

descripcin. Algunos aspectos del problema se podrn

definir una relacin como una cualidad o propiedad

analizar con profundidad a lo largo de varias

de un grupo de entidades con respecto a otras. Las

iteraciones, mientras que habr otros que sigan siendo

entidades y sus relaciones pueden tambin ser

poco claros. Hay que comenzar por encontrar los

expresadas como variables. Adems, podemos

candidatos a entidades que se encuentren en la

expresar atributos de stos a travs de "variables", es

Definicin del problema. No hay que ser demasiado

decir, valores que no son conocidos. Por ejemplo,

selectivo. Con frecuencia, las entidades se

"todos", "algunos", "alguien", etc., pueden ser vistos

corresponden con nombres (sustantivo), que describen

como variables. La afirmacin, "Todos son parecidos

cosas concretos (por ejemplo: un circuito especfico,

a su madre" puede ser representado como:

una persona especfica, este artculo) o abstractos (por


Parecido( Madre(Y), X). Donde X seala una variable.

ejemplo el nmero dos, el conjunto de todos los


nmeros enteros, el concepto justicia, libertad); ellos

Hechos ms complejos pueden ser escritos utilizando

pueden ser primarios o compuestos (por ejemplo, un

clusulas con el operador ":-". La notacin q :- p

circuito que consiste de muchos componentes); ellos

indica que q es verdadero si p es verdadero; en otras

pueden ser hasta ficticios (por ejemplo, un unicornio).

palabras p implica q. Estos hechos ms generales son

El formalismo a utilizar para describir las entidades

conocidos como reglas. La siguiente sentencia declara

sern los trminos. El trmino ms simple es el tomo.

que si X es la madre de Y, entonces x es parecido a

Un tomo puede ser utilizado para describir una

Y:

entidad del dominio. Adems, es posible utilizar una

Parecido ( X, Y ) :- Madre( X, Y)

QQ^aod^o6a ^

Programacin Lgica: Un enfoque...


Fernando Alonso Am y Marco Villalobos Abarca

estado(X,Y,X,U). Expresa que el granjero esta en la


Ahora sabemos como identificar y declarar entidades,

orilla X, el lobo en la orilla Y, la cabra en la orilla Z.

sus relaciones y formas ms generales como lo son las

y el repollo en la orilla U (el orden de los argumentos

reglas. Con estos formalismos lo que se intenta al

es arbitrario, pero una vez elegido este debe ser

"Describir" una aplicacin es representar o expresar

respetado desde principio a fin). Claramente, los

un conjunto de estados que definen nuestro mundo en

posibles valores para cada variable son "norte" o

el dominio. En particular, interesar el estado inicial y

"sur" que son precisamente los valores del atributo

el final deseado.

posicin de cada individuo. Una vez establecida la


clusula que define nuestro mundo, debemos declarar
los estados inicial Al y final A2 deseado:

Ejemplo: La descripcin que se hace a continuacin


del problema del "Granjero y el Lobo" est basada en

A 1: estado( norte , norte, norte, norte)


A2: estado( sur, sur, sur, sur )

la Descripcin de Rolston[ 13] y Formulacin de


Dahal[5].

2. Diseo de una estrategia


Definicin del problema:

Se trata de disear una estrategia que defina un

"En la mitad de un viaje, un granjero conjuntamente

conjunto de acciones que transforman el dominio

con su cabra, un lobo y un repollo llegan a un ro que

descrito por el estado inicial en otro estado, hasta

deben cruzar. Hay un bote en la rivera del ro, pero

llegar al estado final, preservando adecuadamente las

solamente caven en l, el granjero y otro pasajero (la

eventuales restricciones impuestas. Para la cual, se

cabra, el lobo, o el repollo - presumiblemente grande

trata en esta etapa de definir las relaciones

y que cuenta como pasajero-). El granjero tiene que

identificadas en la etapa anterior. El problema estar

ingeniarse la secuencia de travesas del ro que d por

resuelto encontrando el camino, utilizando las

resultado un cruce seguro, reconociendo que si se deja

relaciones definidas, que nos llevan desde el estado

solo al lobo con la cabra, el lobo se comer la cabra y

inicial al estado final deseado.

a la vez si la cabra queda sola con el repollo, se


comer el repollo (Asumiremos que no se dar el caso

Para el ejemplo : Podemos cambiar el estado de

de que el lobo se coma al granjero y luego a la

nuestros individuos colocando al granjero junto a otro

cabra)".

viajero en una nueva posicin y que sea opuesta a la


actual. As:

Entidades y sus relaciones:


A3: estado( Y, Y, G, C ) :- estado( X, X, G, C ), opuesto( X, Y)

Hay cuatro entidades (individuos): granjero, lobo,


cabra y repollo. El atributo principal de cada uno es

Declara que si el granjero y el lobo estn en la misma

su posicin, que puede tomar valores "norte" o "sur"

orilla X mientras la cabra y el repollo estn en las

de la rivera del ro. La primera relacin es la que

orillas G y C, respectivamente, y si las orillas X e Y

define el estado de nuestro dominio; es decir, el

son opuestas, entonces esto hace posible alcanzar un

estado de cada individuo respecto de su posicin:

nuevo estado en que el granjero y el lobo estarn en el

Qmc^ca^a^^a^a^ ^

Programacin Lgica: Un enfoque...


Fernando Alonso Am y Marco Villalobos Abarca

lado de la rivera opuesta a la inicial, mientras la cabra

un estado "aceptable" para el lobo, cabra, repollo y

y el repollo permanecen donde ellos estaban. Esta

granjero. As, las reglas A3.i se transforman en:

regla representa el siguiente conjunto de transiciones.

A3.1: estado( Y, Y, G, C ):- estado( X, X, G, C),


opuesto( x, y ), aceptable( y, y, g, c)
A3.2: estado( Y, W, Y, C ):- estado( X, W, X, C),
opuesto( x, y), aceptable( y, w, y, c)
A3.3: estado( Y, W, G, Y ):- estado( X, W, G, X),
opuesto( x, y ), aceptable ( Y, W, G, Y)
A3.4: estado( Y, W, G, C ):- estado( X, W, G, C),
opuesto( x, y ), aceptable ( y, w, g, c)

Al1: estado( Y, Y, G, C ):- estado( X, X, G, C ), opuesto( X, Y)


(Define la accin en que el granjero cruza el ro junto al lobo.
La cabra y el repollo permanecen donde estn)
A3.2: estado( Y, W, Y, C ):- estado( X, W, X, C ), opuesto( X, Y)
A3.3: estado( Y, W, G, Y ):- estado( X, W, G, X ), opuesto( X, Y)
A3.4: estado( Y, W, G, C ):- estado( X, W, G, C ), opuesto( X, Y)

La estrategia nos permite cambiar el estado de

Hay un aspecto del diseo de la estrategia que no se

nuestros individuos y es recursiva La relacin

ha considerado hasta el momento, se trata del

"Opuesto" esta dada por:

mecanismo que permite generar el "movimiento"


entre los estados posibles y vlidos del mundo,

A4: opuesto( norte, sur)


AS. opuesto( sur, norte)

partiendo de un estado inicial hasta llegar al estado

Ahora se pueden definir las condiciones sobre las

final. Este punto lo analizaremos en base a un ejemplo

cuales un estado es vlido o seguro (segn las

que es tratado por Bratko [3] y Nilsson [1 1].

restricciones dadas ). Sabemos que la cabra y el lobo


lo cabra y repollo) estn en estado seguro, si ellos

Ejemplo Dos: Definicin del problema:

estn en la misma orilla con el granjero o si ellos

Hay un mono en la puerta de un cuarto. En el medio

estn en orillas opuestas . As, podramos definir la

del cuarto una banana esta colgada desde el techo. El

siguiente relacin : seguro(X,Y,Z), que nos permite

mono est hambriento y desea coger la banana, pero

declarar las posiciones x e y de dos individuos en

l no puede estirarse lo necesario a lo alto desde el

posible conflicto (cabra y el lobo o cabra y el repollo)

piso. En la ventana del cuarto hay una caja que mono

con respecto a la posicin z del granjero. As,

puede usar. El mono puede ejecutar las siguientes

podemos definir las restricciones:

acciones: Caminar sobre el piso, encaramarse sobre la


caja, empujar la caja cerca (si ste esta ya en la caja) y

A6: seguro( X, X, X)
A7. seguro( X, Y, Z ) :- opuesto( X, Y)

agarrar el pltano si la posicin en la caja da

Finalmente, podemos utilizar la clusula "Seguro"

directamente bajo la banana. Puede el mono coger la

para definir un estado "Aceptable". Tomemos f para

banana?.

la posicin del granjero, w para el lobo, g para la


Entidades y sus relaciones:

cabra y c para el repollo, y tendremos:

El "mundo del mono" puede ser representado


A8: aceptable ( F, W, G, C ):- seguro( G, W, F ), seguro( G, C, F)

mediante un estado que indica la posicin de los


Declara que si las posiciones de la cabra (g) y el lobo

individuos (entidades). El estado inicial del mundo

(w) son seguras respecto de la posicin del granjero

esta determinado por: el mono esta en la puerta, el

(O y las posiciones de la cabra (g) y el repollo (c) son

mono esta sobre el piso, la caja esta en la ventana y el

seguras respecto del granjero (f), entonces estamos en

mono no tiene la banana. As, el estado inicial es:

QQ6aodo6ra

Programacin Lgica: Un enfoque..


Fernando Alonso Am y Marco Villalobos Abarca

Estas relaciones muestran que despus de la movida el

Estado(en la puerta, sobre el piso , en la ventana, no la tiene)

mono tiene el pltano, y l tiene que permanecer


El estado inicial del mundo del mono puede ser

sobre la caja en el medio del cuarto. En una forma

interpretado como el estado de la posicin horizontal

similar podemos expresar el hecho que el mono sobre

del mono, la posicin vertical, la posicin de la caja, y

el piso puede caminar sobre el piso en una posicin

si el mono tiene o no el pltano, en este caso no la

horizontal Pos 1 a una posicin Pos2. El mono puede

tiene. El estado final es:

hacer esto prescindiendo de la posicin de la caja y si


EstadoL,_,_, tiene)

este tiene el pltano o no. Todos estos hechos pueden


ser definidos por:

Es decir, un estado en la cual el mono ha alcanzado el

Mover(Estado(Posl, sobre el piso, Caja, Tiene),


Caminar(Pos 1,Pos2), Estado(Pos2, sobre el piso, Caja, Tiene))

pltano. Hasta ahora no hemos agregado nada nuevo


en el diseo de la estrategia, pero la pregunta clave es:
Cules son los siguientes movimientos que cambian

Los otros dos tipos de movidas, empujar y

el estado del mundo desde un estado a otro?. Hay

encaramarse, pueden ser especificadas de forma

cuatro tipos de movidas: caminar cerca, empujar la

similar. La pregunta principal que nuestro programa

caja, encaramarse en la caja, agarrar el pltano. No

tiene que responder es: puede el mono en algn

todas las movidas son posibles en todos los estados

estado inicial coger el pltano?. Este puede

del mundo. Por ejemplo, la movida "agarrar" es

formalmente expresarse como:

posible nicamente si el mono esta en posicin sobre

PuedeCoger(Estado)
Donde, el argumento Estado es un estado del mundo del mono.

la caja directamente debajo del pltano (la cual esta


en la mitad del cuarto) y no la ha tomado ya. Tales

La estrategia para PuedeCoger esta basada en dos

reglas pueden ser formalizadas de la siguiente forma:

observaciones: (1) Para algn estado en al cual el

Mover(Estadol,Mover,Estado2)

mono ya tiene el pltano, la relacin PuedeCoger se


Los tres argumentos de la relacin especifican una

hace verdadero ; no es necesario mover en este caso.

movida de la siguiente forma:

Esto corresponde a: PuedeCoger (EstadoL,_,_,tiene)).

Estado 1

(2) En otros casos, ms movidas son necesarias. El

Estado2

Mover
Estado 1, es el estado antes de la movida, Mover es la

mono puede coger el pltano en algn Estado l si hay


alguna movida " Movida" desde el estado l a algn

movida ejecutada y estado2 es el estado despus de la

estado Estado2, tal como el mono puede coger el

movida. La movida "agarrar", con su pre - condicin

pltano en el estado Estado2 (en cero o ms movidas).

necesaria sobre el estado antes de la movida, puede

Este principio es ilustrado en la figura siguiente:

ser definida como:

Estado 1
Estadon

Mover(Estado(medio, sobre la caja, medio, no tiene ), Agarrar.


Estado(medio, sobre la caja, medio, tiene))

Mover
..o^.^i~nnnr

Estado2

Qa^m^db^oc^a^ ^

Programacin Lgica. Un enfoque...


Fernando Alonso Am y Marco Villalobos Abarca

Formulacin recursiva de PuedeCoger, puede ser


como : PuedeCoger(Estadol ):- Mover(Estadol , Mover,Estado2),

usabilidad (pragmtica). En la correccin debemos


confirmar que la solucin es correcta en sus

PuedeCoger(Estado2)

resultados y algoritmos. En la validez, debemos

Esto completa nuestra estrategia la cual se muestra a

confirmar que los requisitos exigidos se han

continuacin:

satisfecho plenamente. Y por ltimo en la usabilidad,


M l : mover(estado(medio, sobrecaja, medio, notiene),
agarrar, estado(medio, sobrecaja, medio, tiene)).
M2: mover(estado(P, sobrepiso, P, H), encaramarse,
estado(P, sobrecaja, P, H)).
M3: mover(estado(P1, sobrepiso, P1, H), empujar (P1, P2),
estado(P2, sobrepaso, P2, H)).
M4: mover(estado(P1, sobrepiso, B, H), caminar(P1, P2),
estado(P2, sobrepiso , B, H)).

debemos confirmar que el producto final es realmente


"usable " por el usuario . La correccin puede ser
evaluada analizando el cdigo fuente generado en la
traduccin y la ejecucin algortmica. El anlisis del

M5: puedecoger(estado,,tiene)).

cdigo fuente puede orientarse fundamentalmente ha

M6: puedecoger(Estado 1):- mover(Estado 1, Mover,


Estado2 ), puedecoger(Estado2).

verificar si ha sido documentado apropiadamente y si

? puedecoger(estado(enpuerta, sobrepiso, enventana, notiene).

su escritura ha seguido las normas impuestas en la


definicin del problema. Una tcnica que puede ser
empleada para evaluar la correccin algoritmica es el

3. Traduccin

anlisis mediante refutacin sinttica y analtica, para


Esta etapa tiene por objetivo transformar las

detalles de esta tcnica ver Kowalski [9] . La validez

relaciones definidas mediante clusulas de la etapa

puede ser evaluada mediante revisiones formales.

anterior en sentencias de un lenguaje de

Estas consisten en chequear el documento de la

programacin . Es decir, construir el programa lgico.

definicin contra los documentos generados en la

Una cuestin fundamental , relacionada con una buena

Descripcin, Diseo de la estrategia y Traduccin. La

programacin es: Qu es un buen programa? Las

usabilidad, fundamentalmente , debe estar orientada a

respuestas a esta pregunta no son triviales hay muchos

evaluar los aspectos de facilidades de uso que ofrece

criterios para juzgar cuando un programa es bueno.

el software . Dilogos con el usuario, orientacin

Generalmente son aceptados criterios como los

prestada, y que el lenguaje utilizado e interfaz sean

siguientes , ver Bratko [3]: Correccin, Eficiencia,


Transparencia,
Robustez,

Legibilidad ,

orientados al dominio de aplicacin . Estos aspectos

Modificabilidad,

Documentacin, entre otros .

del software son desarrollados en la etapa de Diseo

Algunos

de la estrategia . Sin embargo, se debe tener en cuenta

elementos que pueden guiamos hacia una buena

que los lenguajes de programacin lgica, como

prctica de la programacin lgica, junto a la tarea de


codificacin, estas son :

Prolog, no ofrecen facilidades para la construccin de

El correcto uso de la

interfaces, pero es posible presentar mensajes y

recursin, y el uso de la generalizacin o

dilogos apropiados para guiar al usuario. Otros

parametrizacin , ver Bratko [3].

enfoques de verificacin se puede ver en Pedreschi y


Ruggieri [12] y Le Charlier at al. [10].

4. Evaluacin
Se trata de evaluar el programa lgico en sus aspectos
de correccin (sintaxis), validez (semntica) y

10

Qac^aodo^a^

Programacin Lgica: Un enfoque...


Fernando Alonso Am y Marco Villalobos Abarca

[7]Gelfond M .;

CONCLUSION

Gabaldon A . ( 1997): "From

functional specifications to logic programs ", Logic

La programacin lgica con su amplio rango de

Programming. Proceedings of the 1997 International

aplicabilidad y especficamente en la representacin

Symposium . MIT Press, Cambridge, MA, USA; 425

de conocimiento y para implementar aplicaciones que

pp, p.355-69

sean capaces de encontrar soluciones a problemas en

[8]Genesereth , M. y Ginsberg , M. (1985 ): " Logic

base al conocimiento, resulta una aproximacin muy

Programming",

til. Sin embargo, existe carencia de formalismos

Communivations

Of The CM,

Septiembre, Volumen 28, Nmero 9.

metodolgicos para apoyar al programador lgico en

[9]Kowalski, R. (1986): "Lgica, Programacin e

el desarrollo de "Descripciones". La propuesta

Inteligencia Artificial", Daz de Santo , Espaa.

descrita presenta una serie de pasos, con una

[10]Le Charlier B.; Leclere C .; Rossi S .; Cortesi A.

anotacin y conceptos asociados a cada paso, que

(1999): "Automated verification of Prolog programs"

conforman un enfoque sistemtico para producir

mming, vol.39, no.1-3; AprilJournal of Lo ic Pros ra

aplicaciones lgicas. Se ha demostrado su

Jun; p.3-42

aplicabilidad para desarrollar descripciones de

[1 1]Nilsson N. (1987): "Principios de Inteligencia

programas lgicos que manipulan conocimiento y

ArtificiaP', Ediciones Daz de Santos, Espaa.

resuelven problemas en base a ese conocimiento.

[ 12]Pedreschi D. Ruggieri S . ( 1999): "Verification of


,. mming,
logic programs ", Journal of Logic Progra

REFERENCIAS

vo1.39, no. l -3; April-June; p.125-76


[l]Alonso, F.; Segovia, J. (1995):

"Entornos y
[13]Rolston, D. (1990): "Principios de Inteligencia

Metodologas de Programacin". Paraninfo, Espaa.


Artificial y
[2]Ambler, A.; Burnett, M. y Zimmerman, B. (1992):
Colombia.
"Operational Versus Definitional: A Perspective on
Programming Paradigms", Computer, Septiembre.
[3]Bratko, I. (1990): "PROLOG programming for
artificial intelligence", Addison Wesley
[4]Brewka G.; Dix J. (1998): "Knowledge
representation with logic programs",

Logic

Programming and Knowledge Representation. Third


International Workshop, LPKR'97. Selected Papers.
Springer-Verlag, Berlin, Germany; 246 pp. p.1-51
[5]Dahal, V. (1983): "Logic programming as a
Representation of Knowledge", Com rrter Octubre.
[6]Floyd, R. (1979): "The Paradigms of
Programming",

Communications Of The ACM,

Agosto, Volumen 22, nmero 8.

11

Sistemas Expertos" ,

McGraw-Hill,

You might also like