You are on page 1of 10

Tema #1: El paradigma de la Programacin Lgica (PL).

Conferencia #1: Programacin Lgica y PROLOG: introduccin.


1.1 Relacin entre Inteligencia Artificial, Programacin Lgica y
Prolog
1.2 Caractersticas y beneficios del Prolog.
1.3 Programas lgicos y sus constructores bsicos:
1.3.1 Trminos (constantes, variables de la PL, trminos
compuestos)
1.3.2 Sentencias (hechos, preguntas o interrogantes)
1.4 Interrogantes existenciales y hechos universales.
Objetivos:
Diferenciar las caractersticas generales de la Programacin Lgica
(PL) con respecto a la programacin procedimental.
Enumerar los constructores bsicos de la programacin lgica.
1.1. Relacin entre Inteligencia Artificial, Programacin
Lgica y Prolog
Programacin Lgica es la primera de las asignaturas que se
imparten en la disciplina de Inteligencia Artificial. Como
asignatura tiene el objetivo de introducir al estudiante en una
nueva concepcin de programacin.

Temas de la Inteligencia
Artificial a tratar:

Programacin
Lgica

Sistemas Basados en
Conocimiento

La estrategia no es ensear un nuevo lenguaje de programacin


sino ensear los fundamentos de nuevos modelos de
programacin.

1.2 Caractersticas y beneficios del PROLOG.


EL nombre PROLOG es derivado de la expresin PROgramming in
LOGIC. Constituye una implementacin de los procesos y procedimientos
involucrados en el clculo de predicados de primer orden. PROLOG no es
exactamente la lgica de predicado en s misma. Su forma, gramtica o
sintaxis es de la lgica, pero su semntica o significado es diferente.
PROLOG es esencialmente un lenguaje declarativo puesto que la mayora de
los enunciados de un programa PROLOG tpico son aserciones o
afirmaciones.
Cundo surge el PROLOG?.
En 1970 Colmerauer y su grupo de la Universidad de Marsella (Francia),
desarrollan un probador de teoremas especializado, escrito en FORTRAN, el
cual utilizaron para implementar sistemas de procesamiento del lenguaje
natural.
Un programa PROLOG consta de un conjunto de aserciones, los cuales se
consideran que constituyen los axiomas propios de una teora junto con un
conjunto de clusulas objetivos, a los que se consideran teoremas que hay que
probar.
Beneficios:
Permite crear programas de la Inteligencia Artificial (lA) mucho ms
rpido y ms fcil.
Es ideal para implementar sistemas expertos y procesamiento del lenguaje
natural.
Los mecanismos de inferencias y los procedimientos son partes de l
(built-in)
Vase la figura que se muestra a continuacin donde se compara Prolog con
otros lenguajes en cuanto al tamao de programas para ciertas aplicaciones.

1.3 Programas lgicos (PL) y sus constructores bsicos:


Un programa lgico es un conjunto de axiomas, o reglas, definiendo
relaciones entre objetos.
Un clculo de un programa lgico es una deduccin de consecuencias del
programa.
Un programa define un conjunto de consecuencias el cual es su significado.
El arte de la programacin lgica es construir programas elegantes y concisos
que tengan el significado deseado.
Los trminos y sentencias son los constructores bsicos de la PL y son
inherentes de la Lgica. Hay tres sentencias bsicas: Hechos, reglas y
preguntas.
1.3.1 Trminos (constantes, variables de la PL, trminos compuestos)
Un trmino constituye un dato simple de un programa lgico.
Constantes y variables son trminos. Tambin los trminos compuestos y
estructuras son trminos.
Un trmino compuesto incluye un functor y una secuencia de uno o ms
argumentos los cuales son trminos.
Un functor es caracterizado por su nombre, el cual es un tomo y por el
nmero de argumentos. Sintcticamente tiene la forma:
(t1, t2, ... , tn)
donde f es el nombre y n su cantidad de argumentos.
Ejemplo de trminos compuestos:
suma(0,0,0)
padre(manolo,rene)
arbol(arbol(nil,3,nil),5,R)
Las variables de la Programacin Lgica sern analizadas posteriormente en
esta conferencia.
1.3.2 Sentencias (hechos, preguntas o interrogantes).
Las sentencias de la Programacin Lgica incluyen solo hechos, preguntas o
interrogantes y reglas, estas ltimas se analizarn en la conferencia #2.
Hechos:
La clase ms simple de sentencia es denominada un hecho. Los hechos son un
medio de establecer una relacin entre objetos.
Un ejemplo:

padre(felix, manuel)
Este hecho expresa que Flix es el padre de Manuel, o que la relacin padre se
establece entre los individuos nombrados Flix y Manuel.
A la relacin se le denomina predicado. Los nombres de los individuos son
constantes.
Cmo usted puede expresar la relacin de que 2 ms 1 es 3?.

La familiar relacin suma puede ser expresada a travs de un conjunto de


hechos que define la tabla de adicin. Un fragmento de esta tabla se muestra a
continuacin:
Fragmento 1:
suma(0,0,0).
suma(1,0,1).
suma(0,1,1).

suma(9,9,18).
Un conjunto finito de hechos constituye un programa. Esta es la forma
ms simple de un programa lgico.
Un conjunto de hechos es tambin una descripcin de una situacin.
Interrogantes:
Constituyen un medio de recuperar informacin desde un programa
lgico. Una interrogante averigua si cierta relacin est establecida entre
objetos. Por ejemplo, la interrogante :

?padre (felix, manuel)


averigua si la relacin padre se establece entre Flix y Manuel.
Si el fragmento 1 slo contiene los cuatro predicados que se escriben
explcitamente y se pregunta:

? suma (0, 0, 0)
la pregunta a esta interrogante es s.
Sintcticamente las interrogantes y los hechos son similares, pero
pueden ser distinguidos por el contexto.
Un hecho P

establece que el objetivo P es verdadero, una interrogante

?P pregunta si P es verdadero.
Otro ejemplo de programa es el que establece las relaciones binarias
entre dos personas: padre y madre, y las relaciones unarias: femenino y
masculino
Programa II:
padre(manolo, hugo).
padre(manolo, enrique).
padre(manolo, rene).
padre(hugo, grisel).
padre(rene, omara).

padre(rene, alfredo).
padre(rene, renecito).
madre(dalida, grisel).
femenino(grisel).
femenino(omara).
masculino(manolo).
masculino(hugo).
masculino(enrique).
masculino(alfredo).
masculino(rene).
Otro ejemplo es el siguiente:
Buscar a Handi.

Oficina

Sala
Cocina

Stano

Comedor

Se tiene un apartamento como el que se muestra en la figura, dividido por


habitaciones, las cuales se comunican por las puertas establecidas en la figura.
Se necesita hacer un programa para describir las habitaciones que se tienen,
los objetos que tiene cada habitacin, teniendo en cuenta que un objeto puede
ser propietario de otro objeto, como sigue:
Bur -> oficina.
Lmpara-> bur
Lavadora-> stano
Handi-> lavadora
Manzana-> cocina
Galletas-> cocina
Computadora-> oficina
Platanos ->cocina

Dentro de estos objetos existen objetos comestibles y lo que se necesita es


encontrar a Handi, partiendo de una habitacin, se podr observar objetos,
comer los objetos comestibles, abrir los que puedan ser abiertos y tomar los
que sean portables. El juego termina cuando se encuentra a Handi.
Para definir las habitaciones escribiremos lo siguiente:

.
habitacion(cocina).
habitacion(sala).
habitacion(oficina)

habitacion(comedor)
habitacion(sotano)

Y las localizaciones de los objetos se definen como:


localizacion(buro,oficina).
localizacion(manzana,cocina).
localizacion(lampara,buro).
localizacion(lavadora,sotano).
localizacion(handi,lavadora).
localizacion(galletas,cocina).
localizacion(platanos,cocina).

localizacion(computadoras,oficina).
Variables de la Programacin Lgica.
Una variable de la Programacin Lgica es til para indicar un
objeto no especificado. Consideremos su uso en interrogantes.
Supongamos que nosotros deseamos conocer de quin Hugo es
el padre.
Una va es:
?padre(hugo,omara).
?padre(hugo,alfredo).
Hasta encontrar la respuesta afirmativa con la interrogante
?padre(hugo,grisel).
Una variable en la interrogante evita el tanteo.
?padre(hugo,X). , para la cual la respuesta es X=
grisel.
Las variables usadas de esta forma resumen algunas interrogantes.
Una interrogante que contiene una variable pregunta si existe un
valor de la variable que haga que la interrogante sea una
consecuencia lgica del programa.
Las variables en los programas lgicos se comportan diferentes
que las variables en lenguajes de programacin convencionales.

Ellas son tiles para representar objetos no especficos en vez de


representar una localizacin de memoria.
1. 4 Interrogantes existenciales y hechos universales.
Interrogantes existenciales:
Lgicamente hablando las variables en interrogantes son
cuantificadas existencialmente. Intuitivamente esto es:

?padre(hugo, X)
Se lee:
X tal que hugo es padre de X?.
Generalizando:
La interrogante ?p(t1,t2,...,tn)
X2,..., Xk se lee:

la cual contiene las variables X1,

X1, X2,..., Xk tal que p(t1,t2,...,tn)?


Por conveniencia, el cuantificador existencial es omitido de la
interrogante.
En general una interrogante existencial puede tener varias
soluciones. El programa II muestra que rene tiene tres hijos de
modo que la interrogante ?padre(rene, X). tiene las soluciones:
{X = omara}, {X = alfredo}, {X = rene}
Otra interrogante con mltiples soluciones es suma (X, Y, 4)?
Soluciones son:
{X = 0, Y = 4}, {X = 1, Y = 3}, {X = 2, Y = 2} ,etc.
Diferentes variables X y Y se corresponden con posibles objetos
diferentes, incluyendo tambin objetos iguales.
Cmo interrogar para especificar que nos interesa que los dos
nmeros que se suman sean iguales ?
suma (X, X, 4)?
Esta interrogante tiene una nica respuesta {X = 2}.
Suponga que en el ejemplo de Buscar a Handi queremos saber
cules son las habitaciones que existen:

? habitacion (X)
O se quiere saber qu objetos hay en la oficina, se escribe:
?localizacion(X,oficina).
Hechos universales.
Las variables son tiles tambin en los hechos.
Ejemplo: Supongamos que todas las personas que constituyen la
familia descrita en el programa II les gusta la guayaba:
gusta (manolo,guayaba).

gusta (hugo,guayaba).

Cmo escribir lo anterior de una manera ms resumida?.


gusta (X,guayaba).
Cmo expresar que todo nmero multiplicado por 0 es 0?.
producto (X,0,0).
producto (0,X,0).
Las variables en hechos son cuantificadas universalmente, lo cual
significa intuitivamente lo siguiente, volvamos al ejemplo.
gusta (X, guayaba).
Este hecho establece que:
X, a X le gusta la guayaba.

En general un hecho p(t1,t2,...,tn) se lee: X1, X2, ,, , Xk el hecho


p(t1,t2,...,tn) es verdadero. Observe que los Xi (i = 1,...,K) son
variables que aparecen en el hecho.
1.5 Sustituciones, instancias.
Definicin 1:
Una sustitucin es un conjunto finito (puede ser vaco), de pares
de la forma Xi = ti donde Xi es una variable y t es un trmino y Xi
Xj para cualquier ij y Xi no aparece en ti para cualquier i.
Un ejemplo de sustitucin es:
{X = grisel}
Las sustituciones pueden ser aplicadas a trminos. El resultado de
aplicar una sustitucin a un trmino A, denotado por A, es el
trmino obtenido por reemplazar cualquier aparicin de X por t en
A, para cualquier par X = t en .
Ejemplo: El resultado de aplicar la sustitucin {X = grisel} al
trmino padre (hugo,X) se obtiene el trmino padre(hugo,grisel) ,
para este ejemplo
= {X = grisel}, el trmino A es padre(hugo,X) y el trmino A es
padre(hugo,grisel).
Definicin 2:
Sean A y B trminos, A es una instancia de B si existe una
sustitucin tal que A = B.
El objetivo padre(hugo,grisel) es una instancia de padre (hugo,X)
por esta definicin.

Otro ejemplo madre(dalida,grisel) es una instancia de madre(X,Y)


bajo la sustitucin {X = dalida, Y = grisel}. Observe que en este
ejemplo el conjunto sustitucin tiene ms de un elemento.
Desde un hecho cuantificado universalmente se puede deducir una
instancia de ste, por ejemplo de:

gusta(X,guayaba).
Se deduce:
gusta (enrique,guayaba).
De este modo estamos introduciendo una regla de deduccin, la
instanciacin:
Desde una sentencia P cuantificada universalmente se deduce una
instancia de sta P, para cualquier sustitucin .
Cmo expresar la existencia del elemento neutro para la suma?.
suma(0,X,X).
Y se lee: X, 0 ms X es X.
La interrogante suma(0, 2, 2)? Provoca que se busque un hecho
para el cual la interrogante es una instancia.
Teniendo en cuenta el hecho anterior la respuesta es afirmativa.
Cul es la instancia de los objetivos siguientes?:
suma (0,3,Y)?
aplicando la sustitucin {Y = 3} se
tiene la instancia
suma (0, 3, 3)
suma (0,X,X)?

aplicando la sustitucin {X = 3} se
tiene la instancia suma (0, 3, 3)

Ambas interrogantes tienen una instancia comn: suma (0, 3, 3).


Qu diferencia existe entre sustitucin e instancia? Sustitucin es
un conjunto finito e instancia es un trmino.
Definicin 3:
C es una instancia comn de A y B si C es una instancia de A y C
es una instancia de B. En otras palabras existen las sustituciones 1
y 2 tales que C = A1 es sintcticamente idntica a B2.
Contestar una interrogante existencial con un hecho universal,
usando una instancia comn involucra dos deducciones lgicas:
La instancia es deducida desde el hecho por la regla de
instanciacin y la interrogante es deducida desde la instancia por
la regla de generalizacin.
Resumiendo, hemos visto que contestar a una interrogante con
respecto a un programa provoca determinar si la interrogante es
una consecuencia lgica del programa. Las consecuencias lgicas
se obtienen al aplicar reglas de deduccin.

1.6 Las reglas de deduccin para la obtencin de consecuencias


lgicas a partir de un programa.

Identidad: Desde un hecho P se deduce P

Generalizacin: Una interrogante existencial ?P es una


consecuencia lgica de una instancia de sta (P), para
cualquier sustitucin .
Ejemplo: El hecho padre(manolo,enrique). implica que existe una
variable X tal que padre(manolo,X) es verdadero para la
sustitucin {X=enrique}

Instanciacin: Desde una sentencia P cuantificada


universalmente se deduce una instancia de sta P para
cualquier sustitucin .

Ejemplo: a partir de gusta(X,guayaba)


se deduce
gusta(zenaida,guayaba) donde la sustitucin es el conjunto
{X = zenaida}
Bibliografa:
1. Prolog: Programming for Artificial Intelligence de Ivan
Bratko (Libro del mdulo en copia dura y formato digital,
ver carpeta de la asignatura).
2. Introduccin a la Inteligencia Artificial.
Colectivo de autores.
De este libro, que aparece tambin en la red, estudiar los
aspectos tratados en la conferencia en Captulo 5: Paradigma
de la Programacin Lgica.
3. Documento nombrado PrologIntroduc-Historia.
Leer sobre Caractersticas del lenguaje de programacin PROLOG, algo
de su historia y algunas Aplicaciones del Prolog.

You might also like