Prolog

Prolog es un lenguaje de programación lógica en el que se expresan relaciones mediante hechos y reglas. Una consulta pregunta si puede demostrarse una meta a partir del programa y, si hay variables, qué sustituciones la hacen verdadera. El nombre procede de * programmation en logique*.

flowchart LR
  F["Hechos"] --> P["Programa Prolog"]
  R["Reglas definidas"] --> P
  Q["Consulta / metas"] --> E["Motor de resolución SLD"]
  P --> E
  E --> U["Unificación y sustituciones"]
  U --> A["Éxito: metas agotadas"]
  U --> B["Fallo o búsqueda de alternativas"]
  B -. retroceso .-> E

Hechos, reglas y consultas

humano(socrates).
mortal(X) :- humano(X).
 
?- mortal(socrates).

humano(socrates). es un hecho. mortal(X) :- humano(X). dice que mortal(X) se cumple si se cumple humano(X). La consulta mortal(socrates) se resuelve unificando con la cabeza de la regla (X = socrates) y reemplazándola por el cuerpo humano(socrates), que coincide con el hecho.

Conexión lógica

El núcleo de los programas Prolog tradicionales usa cláusulas definidas y responde consultas mediante resolución SLD, una forma de resolución de primer orden guiada por metas. La unificación calcula las sustituciones necesarias. La lectura de hechos y reglas expresa conocimiento de manera declarativa, aunque la estrategia concreta de búsqueda también influye en el comportamiento.

La estrategia Prolog habitual selecciona la meta de más a la izquierda, intenta cláusulas en el orden del programa y explora en profundidad; si falla, retrocede a alternativas. Así, el orden puede cambiar el rendimiento o la terminación aun cuando el conjunto de cláusulas tenga el mismo significado lógico.

Procedencia y referencias