Conceptos esenciales de PROLOG

En esta ocasión veremos los conceptos esenciales del lenguaje PROLOG.

Los conceptos esenciales de PROLOG

  1. Lógica Declarativa: Se define "qué" se quiere resolver, no "cómo". Se basa en hechos, reglas y consultas. 
  2. Hechos: Afirmaciones básicas sobre el mundo (e.g., padre(juan, maria).). 
  3. Reglas: Relaciones lógicas definidas mediante cláusulas (e.g., abuelo(X, Y) :- padre(X, Z), padre(Z, Y).). 
  4. Consultas: Preguntas al sistema para inferir información (e.g., ?- padre(juan, maria).). 
  5. Unificación: Proceso para hacer coincidir términos y variables en consultas y reglas. 
  6. Backtracking: Búsqueda automática de soluciones probando diferentes combinaciones si una falla. 
  7. Listas y Recursión: Estructuras de datos fundamentales y método principal para iterar. 
  8. Base de Conocimiento: Conjunto de hechos y reglas que el programa usa para razonar.


Explicando brevemente cada uno de los puntos esenciales

La lógica declarativa es un paradigma poderoso que permite expresar la lógica de un programa de forma más abstracta y concisa, delegando la ejecución al sistema y promoviendo un código más legible y mantenible.

Enfatiza qué es lo que se quiere resolver, pero no el cómo. Describe el estado final del programa o sistema. Donde el sistema (compilador, intérprete, etc.) se encarga de ejecutar la lógica necesaria para lograr el estado deseado.

Ventajas de la programación lógica declarativa:

  • Mayor abstracción, lo cual facilita la comprensión y mantenimiento del código. 
  • Código más legible, instrucciones sencillas de entender. 
  • Reducción de errores al abstraer los detalles de implementación. 
  • Mayor flexibilidad, ya que no está atado a una secuencia de pasos específica.
Ahora hablemos de los hechos. Un hecho es una afirmación que se considera verdadera, como las siguientes:
María es matemática.
Hoy lloverá hasta las 9 PM.
Prolog es un lenguaje de programación lógica y declarativa.
Juan Jacobo Rosseau fue un intelectual francés.
 

Describen relaciones entre objetos o propiedades de objetos. Rosseau es un filósofo lo veríamos así en lenguaje Prolog:

filosofo(rosseau).

Los hechos en Prolog son la forma más básica de representar información y constituyen el fundamento de cualquier programa Prolog.

Veamos más ejemplos. Como las relaciones familiares. Definimos los hechos:

familia.pl

% Ejemplo: Relaciones familiares
padre(juan, maria).
padre(juan, pedro).
madre(ana, maria).

Definimos sus relaciones:

% Ejemplo: Definir quién es abuelo
abuelo(X, Y) :- padre(X, Z), padre(Z, Y).

Definimos las consultas (preguntas que se hacen al sistema para obtener información):

?- padre(juan, maria).
% Respuesta: true

?- abuelo(juan, carlos).
% Respuesta: false (si no hay hechos que lo soporten)

Definimos sus unificaciones (proceso de hacer coincidir términos o variables):

% Hechos
padre(juan, maria).

% Consulta
?- padre(juan, X).
% Respuesta: X = maria

Probamos diferentes soluciones automáticamente si una falla, lo que se conoce como backtracking:

% Hechos
padre(juan, maria).
padre(juan, pedro).
padre(pedro, carlos).

% Consulta
?- padre(juan, X).
% Respuesta: X = maria (primera solución)
% Al pulsar ; (siguiente solución): X = pedro

Crear listas:

% Hecho con una lista
frutas([manzana, banana, naranja]).

% Consulta
?- frutas(X).
% Respuesta: X = [manzana, banana, naranja]

Y procesar listas con recursión:

% Regla para contar elementos en una lista
longitud([], 0). % Caso base: lista vacía tiene longitud 0
longitud([_|T], N) :- longitud(T, N1), N is N1 + 1. % Caso recursivo

% Consulta
?- longitud([manzana, banana, naranja], N).
% Respuesta: N = 3

PROLOG es ideal para problemas de lógica, como sistemas expertos e inteligencia artificial. Continuaremos con temas como:

  • Lógica proposicional (operadores booleanos, proposiciones lógicas, reglas de inferencia, etc.).
  • Lógica de primer orden (sintaxis y semántica, oraciones atómicas, etc.).
  • Inferencia.
  • Recursividad.
  • Módulos.
  • Etc.

Enlaces:

https://www.swi-prolog.org/

https://alquimistadecodigo.blogspot.com/2024/04/mas-sobre-prolog-el-lenguaje-de.html

Comentarios