Programación lógica

Programación lógica

La programación lógica es la declaración de una serie de hechos y reglas de deducción. La ejecución de un programa consiste en demostrar un teorema. El programa responde si el teorema se puede probar o no a partir de los enunciados hechos de antemano.

La programación lógica es diferente a la programación procedimental (C, JAVA, etc.), los cálculos se realizan en forma de pruebas lógicas. Hablamos de programación declarativa: el programa describe una situación correspondiente a un problema a resolver. La programación declarativa no es incompatible con la estructuración de objetos.

Las fórmulas expresadas en Prolog están restringidas a cláusulas de Horn y lógica de primer orden. Una cláusula de Horn es una cláusula con como máximo un literal positivo. Estos no serán explicados sino implícitos en las explicaciones del lenguaje Prolog.

Reglas, hechos y metas

Si la cláusula Horn tiene un literal positivo y al menos un literal negativo, son normas :
qqbe x, y, z, ¬hijo (x, y) ∨ ¬hijo (y, z) ∨ nieto_hijo (x, z) que es igual
hijo (x, y) ∧ hijo (y, z) ⇒ nieto_hijo (x, z)

está escrito en Prolog: nieto_de (X, Z): - hijo_de (X, Y), hijo_de (Y, Z)

Puede escribir cláusulas Horn sin un literal negativo (cláusulas Horn positivas), pero con solo un literal positivo. Esos son hechos : hijo_de ('Bernardo', 'Bernadette').

Podemos escribir cláusulas Horn sin literales positivos (cláusulas Horn negativas), pero solo con literales negativos. Esos son metas : ? -niño_pequeño_de (B, 'germaine'), sobrino (X, Y).

Por lo tanto, un programa es un conjunto de hechos y reglas, todo en forma de cláusulas Horn. El intérprete de Prolog utiliza esta base de conocimientos para alcanzar sus objetivos.

Sintaxis del prólogo

La sintaxis consta de:

  • Constantes : números enteros o de coma flotante, valores booleanos, identificadores y cadenas.
  • Variables : identificado por cadenas de caracteres que comienzan con una letra mayúscula o un guión bajo (si no se especifica, es decir, sin interés para el usuario). Variable es en el sentido matemático, siempre representa el mismo objeto y no cambia de valor en la misma rama de prueba.
  • Predicado : identificado por cadenas de caracteres que comienzan con una letra minúscula. Un predicado tiene aridad (el número de argumentos que requiere). Los parámetros están separados por una coma, equivalente a AND; el OR es un punto y coma.

Reglas y hechos:

  • un hecho es un predicado con constantes como parámetros: padre ('Bernard', 'Bernardo')
  • una regla consta de una cabeza (literal positivo) y una cola (conjunción de literales negativos que terminan con un punto: sobrino (X, Y): - hijo (X, Z), hermano_o_hermana (Y, Z).

Escribe un programa de Prolog

Un programa es una lista de hechos y reglas. Agrupamos las reglas que tienen el mismo predicado principal y los hechos que se relacionan con el mismo predicado. El orden en el que se declaran las reglas puede tener un impacto en los goles.

hijo_de ('roger', 'gertrude'). hijo_de ('gertrude', 'germaine'). hijo_de ('marcel', 'robert'). hermano_o_hermana ('gertrude', 'robert'). sobrino (X, Y): - hijo (X, Z), hermano_o_hermana (Y, Z). nieto_de (X, Y): - hijo_de (X, Z), hijo_de (Z, Y).

Una constante ('roger') cubre todo el programa mientras que una variable solo existe en la cláusula donde se encuentra. Entonces, la variable X de sobrino (X, Y) no es la misma que la de nieto_hijo_ de (X, Y). Por otro lado, es lo mismo que en la conjunción que se le asocia.

Una vez cargados los programas y, por tanto, constituida la base de hechos y reglas, es posible hacer preguntas. A esto se le llama demostración o resolución de preguntas. Surge una pregunta al reemplazar una regla o al hacer una constante o variable por un '?'. Para conocer todas las reglas de un tipo, escriba el nombre de la regla que contiene las variables seguido de un '?' : humano (H)? Se utiliza para conocer a todos los humanos de la base.

programmation logique algorithme paradigme prolog

Compartir, repartir
es_ESES
A los bloggers de %d les gusta esto: