 ##  [Programación Lógica](/es/node/60986) 

 Definición

Un paradigma de programación y razonamiento en el que los programas se expresan como conjuntos de cláusulas lógicas y la computación procede mediante búsqueda dirigida de pruebas, utilizando típicamente unificación y retroceso para encontrar derivaciones que satisfacen metas.

 

 

 

 

 

 





## Principio

Principio

Escribir especificaciones como hechos y reglas; interpretar la computación como intento de demostrar una meta a partir de esas reglas mediante resolución o SLD-resolución, con unificación que instancia variables y retroceso que explora alternativas.

 

 

 

 

 





## Demostración

Demostración

Programa estilo Prolog para un árbol genealógico: hechos describen relaciones de parentesco y reglas definen ancestro como clausura transitiva; la consulta ancestor(X,Y) inicia una búsqueda que unifica variables y hace retroceso para enumerar soluciones.

 

 

 

 

## Aplicación incorrecta

Aplicación incorrecta

Tratar un programa lógico puramente como código imperativo y depender de predicados con efectos secundarios u orden-dependientes socava la semántica declarativa y dificulta razonar sobre la corrección.

 

 

 

 

 





## Consecuencia

Consecuencia

Un uso adecuado produce programas concisos y declarativos, control de búsqueda inherente mediante retroceso y potentes capacidades de metaprogramación y razonamiento simbólico; también facilita el prototipado rápido de aplicaciones orientadas a búsqueda.

 

 

 

 

## Inversión

Inversión

Cambiar a programación funcional o imperativa donde la computación se da por evaluación determinista de funciones o comandos ordenados en lugar de búsqueda de pruebas; esto enfatiza el flujo de control en lugar de la especificación lógica.

 

 

 

 

 





## Límite

Límite

Suele ocuparse de fragmentos de cláusulas de Horn y de semánticas operacionales dirigidas por metas; excluye teorías arbitrarias del primer orden con comportamiento de resolución no interpretado, y la terminación y completitud no están garantizadas sin restricciones.

 

 

 

 

 





## Tensión semántica

Tensión semántica

Tensión entre lecturas modelo-teóricas (declarativas) y operacionales (procedurales): el mismo programa puede verse como especificación de consecuencias lógicas o como receta operativa cuyo comportamiento depende de la estrategia de evaluación.

 

 

 

 

 





## Síntesis

Síntesis

La programación lógica trata los programas como teorías lógicas y la computación como prueba automatizada: codificando conocimiento en cláusulas se usa unificación y retroceso para realizar especificaciones declarativas mediante búsqueda dirigida por metas.