El documento habla sobre programación lógica y el lenguaje Prolog. Explica que Prolog es un lenguaje de programación lógica e interpretado usado en investigaciones de inteligencia artificial. También describe elementos básicos del lenguaje como variables lógicas, términos, unificación, predicados, cláusulas y el uso del shell de Prolog.
investigación de Comandos, Sentencias y/o Paquetes del Lenguaje de Programaci...
Prolog cinthya
1. El prolog proviene del francés
Programmation en LOgique es un
Hablamos de programación lógica
lenguaje de programación lógica e
relacional porque existe toda una gama
interpretado bastante conocido en el
de lenguajes que siguen este paradigma.
medio de investigaciones en
La familia más importante de estos
lenguajes sean los denominados CLP. Inteligencia Artificial.
Constraint Logic Programming, que son
exactamente iguales a prolog pero con la
capacidad adicional de resolver sistemas
de ecuaciones.
PROLOG
Escasa utilidad práctica de prolog Requisitos
Generación CGI`S Para hacer unos primeros pinitos en prolog
Acceso a bases de datos desde página web. se necesita únicamente dos cosas: un
Paralelizarían automática de programas. editor de texto y un entorno de desarrollo
Programación distribuida y multiagente. prolog. Como editor de texto resulta
Sistemas expertos e inteligencia artificial. altamente recomendable el uso de Emacs.
Validación automática de programas.
CIAO PRLOG.
Procesamiento de lenguaje natural.
SWI PROLOG.
Prototipo rápido de aplicaciones.
2. Prolog es un lenguaje de programación seminterpretado. Su funcionamiento es muy similar a java.
Un compilador transforma el código fuente en código de bytes. A diferencia de java no existe un
estándar al respecto.
ENTORNO DE DESARROLLO
Un intérprete ejecuta el código de bytes.
Un Shell o top-level se trata de una utilidad que permite probar los programas, depurarlos.
Una biblioteca de utilidades en general, muy amplias
COMPATIBILIDAD ISO- PROLOG Existe un estándar ISO que dicta las típicas normas con respecto a la sintaxis del lenguaje y a las
bibliotecas básicas que se deben ofrecer. Por eso programas que funcionan en unos entornos podrían
no funcionar en otros o lo que es peor funcionar de forma diferente.
En esta lección explicaremos como reconocer los diferentes elementos que componen un
ELEMENTO DEL LENGUAJE programa fuente en prolog, carece de declaraciones en el sentido imperativo; secciones,
declaraciones de tipo declaraciones de variables declaraciones de procedimiento.
En el prolog se escriben comenzando la línea con un símbolo de porcentajes.
COMENTARIO
% hola, estos es un comentario
% y esto también
3. Variables Lógicas Variable Anónima Términos Operadores
Las variables en prolog Todas las variables anónimas Un término se compone de Algunos functores pueden estar declarados
no son variables en el se escribe igual son todas un functor seguido de cero a como operadores, bien de manera
sentido habitual por eso distintas, es decir mientras N argumentos entre predefinida o bien por el programador. Los
llamamos variables que dos apariciones de la paréntesis y separados por operadores simplemente sirven para
lógicas. secuencias de caracteres comas. Los números enteros escribir términos unarios o binarios de una
o decimales sin restricciones manera mas cómoda
de tamaño son términos.
Ejemplo:
Variabale Culturilla
-hola
-. Es posible escribir términos sin argumento,
Ejemplo:
No son variables en tal caso no se escribe los paréntesis.
% hola Termino_cero_ario
p- 123788837345.125645555555
5
T (1)
`mi functor`(17, hola,`otro
termino`)
F (variable)
Muchos_argumentos
(_`_`_`variable,232,f,g,a)
Termino_anidados(f(g),
h(i,j(7)), p (a(b)), j(1,2,3_))
+(3.4)
$(a,b)
@(12)
4. Dando valor a las variables
Mecanismo de unificación
La unificación es el mecanismo Padre (geronimo,leoncio)
Padre(luisa,geronimo).
mediante el cual las variables lógicas
%ahora defino las condiciones para que
toman valor en prolog. El valor que %dos individuos sean hermanos
puede tomar una variable consiste %hermano (A,B) significa que A es hermano
en cualquier término. B…..
Hermano (A,B): -
Padre (A,P),
Padre (B,P),
Dos términos unifican A/==B.
% ahora defino el parentesco abuelo-nieto.
* Una variable siempre unifica con un %nieto (A,B) significa que A es nieto B……
término.
* Dos variables unifican entre sí. Nieto (A,P)
* Para dos términos unifiquen deben Padre (P,B)
tener el mismo functor.
5. Ejecutando cosas
Predicados y objetivos Secuencias de objetivos Back tracking Predicados predefinidos ()built-in)
Los predicados son los
En prolog los objetivos se pueden Esto consiste en recordar los
elementos ejecutables en Esisten algunos predicados
cambiar mediante conectivas momentos de la ejecución
prolog. predefinidos en el sistema y que
propias de la lógica de primer donde un objetivo tenía varias
disponibles en todo momento el
En muchos sentidos se asemejan orden: la conjunción, la soluciones para posteriormente
más importante es la igualdad: =/2.
a los procedimientos o funciones disyunción y la negación. dar marcha atrás y seguir la
Este predicado tiene éxito si sus
típicos de los lenguajes ejecución utilizando otra
La disyunción se utiliza bien poco dos argumentos unifican entre si .
imperativos. solución.
y la negoción requiere todo.
PREDICADO SIGNIFICADO
EJEMPLO EJEMPLO
< Menor que
El caso mas básico es aquel que no
El oprador de conjunto es la Mayor que
contiene variables:
coma: edad(luis, Y), edad (juan,
son_hermano(`juan`, `maria`). =< menor o igual
Z), X>Z.
Este objetivo solomaente puede >= mayor o igual
tener una solución (verdadera o =:= igualdad
=/= desigualdad
falsa).
6. CLAUSULA SIN CUERPO
si no existen condiciones para
que una clausula sea cierta
podemos omitir el cuerpo. En tal
caso solamente escribimos la
cabeza terminada en punto .
EJEMPLO SIMPLE EJEMPLO MENOS SIMPLE
veamos un predicado ahora vemos como las ligadurad
compuesto por una simple que se producen en el cuerpo de
clausula: la clausula falla.
es_viejo(individuo) :- el codigo mayor_que (fulano,mengano) :-
edad(idividuo, valor), edad(mengano,edadmengano),
valor >60. edad(fulano,edadfulano),
edadfulano>edadmengano
CLAUSULAS
hasta ahora sabemos como
ejecutar objetivos, pero no
sabemos como escribir el
codigo de los predicados .
clausula 1
clausula 2
7. Es una aplicación que
permite ejecutar
objetivos y ver las
ligaduras de las variables
EJECUTANDO EL SHELL de manera interactiva.
COMPILANDO Y CARGANDO CODIGO
El Shell es una aplicación más que
podemos ejecutar en nuestro sistema En el Shell solamente podemos ejecutar
operativo. En nuestro caso, la aplicación objetivos, la forma de compilar y cargar
se denomina ciaosh. código es ejecutando un objetivo. Esto puede
variar de un Shell a otro.
SHELL DE
PROLOG
Quiere irme de aquí
?- t (x , 3 ) = t (4, z).
Cuando nos cansamos de jugar con el X= 4,
Shell, podemos terminar la aplicación Z= 3 ? ;
ejecutando el predicado halt/0, o bien
pulsando Ctrl-D: No
?-
MI PRIMER OBJETIVO
Los únicos objetivos que
podemos ejecutar
corresponden a predicados
predefinidos en el sistema.
8. Mi primer programa en prolog
% este es mi primer programa en prolog
%
% se trata de un árbol genealógico muy simple
%
%
% primero defino los parentescos básicos
% de la familia.
%padre(A, B) significa que B es el padre A…………
Padre (juan,alberto).
Padre (luis,alberto).
Padre (Alberto,leoncio).
Padre (geronimo,leoncio).
Padre (luisa,geronimo).
%ahora defino las condiciones para que
% dos individuos sean hermanos
%hermano (A,B) significa que A es hermano de B…….
Hermano (A,B) :-
Padre(A,p),
Padre (B,P),
A/== B.
% ahora defino el parentesco abuelo-nieto.
%nieto(A,B) significa que A es nieto de B …..
Nieto (A,B) :-
Padre(A,B),
Padre (P,B).