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)ymujer(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.