Programación Lógica y Funcional
TRABAJO DE INVESTIGACIÓN N2
Programación lógica - Prolog
Estudiante: Matias Octavio Bonett Rodrigo U21210982
DOCENTE: JHONATHAN DERLIN JORDAN PEREDA
SECCIÓN: 21116
Lima
2024
Índice de contenido
1. Historia de Prolog
2. Introducción Prolog
3. Como Instalar Prolog
4. Entorno de desarrollo Prolog
5. Estructura de un programa Prolog
6. Construcción de un programa en Prolog
7. Consultas y reglas
8. Ejemplos
1. Historia de Prolog
A principios de la década de 1970, Prolog fue creado por el informático
Alain Colmerauer y su equipo en la Universidad de Marsella, en Francia,
con el apoyo teórico de Robert Kowalski, un lógico de la Universidad de
Edimburgo. Colmerauer, quien trabajaba en procesamiento de lenguaje
natural, quería un lenguaje que facilitara la representación de
reglas y relaciones para extraer inferencias lógicas a partir de
datos. Junto a Kowalski, quien investigaba cómo aplicar la lógica formal
a la computación, desarrollaron Prolog como un lenguaje declarativo que
permitiera expresar conocimientos mediante hechos y reglas
lógicas. El objetivo era facilitar el trabajo en inteligencia artificial, ya
que Prolog permitía especificar qué resolver en lugar de como hacerlo,
delegando el proceso de deducción al motor lógico del lenguaje.
Por lo tanto, con el paso de los años Prolog ganó rápidamente
reconocimiento como uno de los primeros lenguajes de programación
diseñados específicamente para la inteligencia artificial y la resolución
de problemas basados en lógica. Se consolidó como un referente en el
procesamiento de lenguaje natural y los sistemas expertos debido a su
enfoque en la lógica formal y la inferencia automática, que permitían
manejar grandes cantidades de datos y realizar deducciones complejas,
revolucionando la forma en que se abordan problemas en la IA y la
computación.
2. Introducción a Prolog
Prolog es un lenguaje declarativo, lo que significa que describe la lógica
computacional mediante hechos y relaciones lógicas, sin especificar una
serie de pasos para el control de flujo. Un programa en Prolog está
compuesto por cláusulas, que pueden ser hechos o reglas. Estas
cláusulas forman la base de conocimiento del programa, permitiendo
realizar consultas para inferir datos. Prolog se utiliza principalmente en
áreas como la inteligencia artificial, procesamiento de lenguaje natural y
sistemas expertos, donde la capacidad de manejar relaciones lógicas y
realizar inferencias es esencial.
3. Como Instalar Prolog
Descargar el Instalador:
Visita el sitio web oficial de SWI-Prolog:
Elegir la versión:
Instalación en Windows:
Descarga el archivo ejecutable .exe y ábrelo.
Abre el archivo descargado y sigue las instrucciones del asistente de
instalación.
4. Entorno de desarrollo Prolog
Visual Studio Code (VS Code): Servirá como el editor principal de
código, donde podrás escribir y organizar tanto los scripts de Prolog
como de Python. VS Code permite resaltar la sintaxis, autocompletar y
acceder a extensiones útiles para trabajar cómodamente con ambos
lenguajes.
SWI-Prolog: Es el intérprete de Prolog que usará para ejecutar, probar y
depurar tus programas en Prolog. SWI-Prolog también cuenta con una
consola interactiva, lo que facilita realizar consultas y ver resultados en
tiempo real, y un depurador integrado que te ayudará a rastrear la lógica
de tus programas.
Python: Te permitirá extender las capacidades de tus programas en
Prolog. Puedes utilizar Python para crear interfaces gráficas, gestionar
bases de datos, o realizar cálculos complejos, mientras Prolog maneja la
lógica y la inferencia. También puedes integrar ambos lenguajes en un
mismo proyecto, donde Python actúe como interfaz y Prolog como motor
lógico.
5. Estructura de un programa Prolog
Hechos – (Declaran datos básicos)
Los hechos representan información que se considera verdadera en el
programa. Se declaran con un nombre de predicado seguido de los
términos correspondientes entre paréntesis y un punto al final. Los
hechos pueden incluir objetos, relaciones o propiedades.
Reglas – (Definen relaciones lógicas basadas en hechos)
Las reglas permiten definir relaciones lógicas más complejas a partir de
hechos o de otras reglas. Se utilizan para expresar que algo es
verdadero si se cumplen ciertas condiciones.
Consultas – (Verifican condiciones o buscan respuestas en la
base de datos de hechos y reglas)
Las consultas se usan para hacer preguntas al programa sobre los
hechos y las reglas. Una consulta se formula escribiendo el predicado
deseado y sus argumentos, y finalizando con un punto (.). Prolog
intentará encontrar todas las soluciones posibles.
6. Construcción de un programa en Prolog
Definir hechos: Establecer relaciones y hechos básicos que
representen datos fijos sobre el dominio del problema.
Definir reglas: Crear reglas que permitan deducir información adicional
o más compleja a partir de los hechos definidos.
Realizar pruebas (consultas): Probar las reglas y hechos definidos
mediante consultas para verificar que el sistema responde
correctamente a las preguntas formuladas.
7. Consultas y reglas Ejemplo
Ejemplo de Consulta y Reglas:
Consultas:
sí "Pedro" es hermano de "Maria":
quién es el padre de "Ana":
sí "Luis" es un hombre:
8. Ejemplos
Sistema de Reglas de Inferencia
% Hechos
llueve.
suelo_mojado :- llueve.
% Regla
barro :- suelo_mojado.
% Consultas
?- barro.
% Resultado: true, ya que "llueve" implica "suelo_mojado" y eso
implica "barro".
?- suelo_mojado.
% Resultado: true, porque sabemos que "llueve".
Sistema de Biblioteca
% Hechos
% Definición de libros
libro('El Quijote').
libro('Cien años de soledad').
libro('Matar a un ruiseñor').
% Relación entre libros y disponibilidad (indica si un libro está
prestado o no)
prestado('El Quijote').
% "Cien años de soledad" no está prestado
% "Matar a un ruiseñor" no está prestado
% Reglas
% Verificar si un libro está disponible (no está prestado)
disponible(X) :- libro(X), \+ prestado(X).
% Consultas
% ¿Está disponible el libro "Matar a un ruiseñor"?
?- disponible('Matar a un ruiseñor').
% ¿Está disponible el libro "El Quijote"?
?- disponible('El Quijote').
% ¿Está disponible el libro "Cien años de soledad"?
?- disponible('Cien años de soledad').
Sistema de recomendación de películas
% Películas con su género
pelicula(titanic, drama).
pelicula(inception, ciencia_ficcion).
pelicula(godfather, crimen).
pelicula(pulp_fiction, crimen).
pelicula(the_matrix, ciencia_ficcion).
pelicula(shawshank_redemption, drama).
% Gustos de los usuarios por género
gusta(juan, drama).
gusta(maria, ciencia_ficcion).
gusta(luis, crimen).
% Regla para recomendar películas basadas en el género que le
gusta al usuario
recomendar(Pelicula, Usuario) :-
gusta(Usuario, Genero),
pelicula(Pelicula, Genero).
% Consultas y resultados esperados:
% 1. Consultar qué películas le gustan a Juan:
% ?- recomendar(Pelicula, juan).
% Resultado esperado:
% Pelicula = titanic ;
% Pelicula = shawshank_redemption ;
% false.
% 2. Consultar qué películas le gustan a Maria:
% ?- recomendar(Pelicula, maria).
% Resultado esperado:
% Pelicula = inception ;
% false.
% 3. Consultar qué películas le gustan a Luis:
% ?- recomendar(Pelicula, luis).
% Resultado esperado:
% Pelicula = godfather ;
% Pelicula = pulp_fiction ;
% Pelicula = the_matrix ;
% false.