Saltar al contenido principal

Programación lógica

La programación lógica es un paradigma de programación basado en la lógica formal y en la deducción para resolver problemas. Este enfoque está centrado en expresar lo que se quiere lograr mediante reglas y hechos y permitir que el sistema deduzca las soluciones a partir de estas declaraciones.

Es fundamentalmente diferente de los paradigmas imperativos y orientados a objetos, ya que no especifica una secuencia explícita de pasos para resolver un problema, sino que define relaciones y deja que el sistema deduzca las respuestas.

Los conceptos clave de la programación lógica son:

  • Hechos: Declaraciones que describen información o verdaderos enunciados sobre el dominio del problema. Representan conocimientos básicos que se aceptan como verdaderos.
  • Reglas: Declaraciones que definen cómo derivar nuevos hechos a partir de hechos existentes. Las reglas consisten en una cabeza (el hecho derivado) y un cuerpo (condiciones necesarias para que la cabeza sea verdadera).
  • Consultas: Preguntas o consultas hechas al sistema para deducir información basada en hechos y reglas. El sistema usa un proceso de deducción para responder a las consultas.
  • Inferencia: El proceso mediante el cual el sistema deduce nueva información o respuestas basadas en hechos y reglas. La inferencia puede ser automática y está basada en algoritmos de resolución, como el algoritmo de resolución.
  • Unificación: El proceso de igualar términos y sustituir variables para que las reglas y hechos se apliquen correctamente durante la inferencia.
  • Resolución: El método de deducción usado para determinar si una consulta es verdadera o falsa al buscar una coincidencia entre la consulta y los hechos o reglas existentes.

Ejemplo

Ejemplo en Prolog:

% Hechos
hombre(juan).
mujer(maria).

% Regla
mortal(X) :- hombre(X).

% Pregunta
?- mortal(juan).
% Respuesta: true

En este código podemos ver que preguntamos a partir de unos hechos y unas reglas definidas previamente. Es decir, definimos qué es verdad en el problema, pero no los pasos exactos para resolverlo.

  • hombre(juan) y mujer(maria) son hechos.
  • mortal(X) :- hombre(X) es una regla: “X es mortal si X es hombre”.
  • La pregunta es si Juan es mortal. Prolog deduce automáticamente mediante inferencia que Juan es mortal.