Definición
Un marco de computación y especificación que integra la programación lógica con resolución de restricciones: los programas combinan reglas lógicas con dominios de restricciones y solvers, manteniendo un almacén de restricciones que se consulta y actualiza durante la búsqueda de prueba.

Principio

Principio
Separar el control lógico (reglas, búsqueda) del razonamiento de restricciones específico del dominio (aritmética, dominios finitos, cadenas) de modo que la unificación se reemplace o amplíe mediante resolución de restricciones y verificación de consistencia por una decisión del solver.

Demostración

Demostración
CLP(R) para aritmética lineal: reglas lógicas generan restricciones aritméticas como desigualdades lineales; el solver mantiene y simplifica el almacén de restricciones y poda ramas de búsqueda que violan la consistencia numérica en planificación o asignación de recursos.

Aplicación incorrecta

Aplicación incorrecta
Asumir la completitud del solver para dominios no decidibles, o tratar las restricciones como meros predicados sintácticos sin integrar la retroalimentación del solver, lo que conduce a suposiciones incorrectas sobre terminación o cobertura de soluciones.

Consecuencia

Consecuencia
La integración adecuada produce modelos más declarativos para problemas combinatorios y numéricos, un poda de búsqueda significativa mediante propagación de restricciones y uso modular de procedimientos de decisión eficientes para dominios especializados.

Inversión

Inversión
Invertir a programación por restricciones pura sin cláusulas lógicas, donde búsqueda y propagación se expresan sólo como procedimientos de resolución de restricciones, o a programación lógica pura donde las restricciones se reducen a predicados lógicos explícitos sin ayuda del solver.

Límite

Límite
Eficaz cuando los dominios de restricciones admiten solvers decidibles o prácticos (dominios finitos, aritmética lineal, restricciones booleanas); no se extiende automáticamente a teorías no decidibles sin pérdida de garantías o requiriendo aproximaciones.

Tensión semántica

Tensión semántica
Tensión entre CLP y la programación lógica pura o CP: CLP combina reglas declarativas con propagación dirigida por el solver, mientras que LP enfatiza la búsqueda de pruebas y CP la propagación centrada en el solver y las restricciones globales, generando compensaciones de modelado y control.

Síntesis

Síntesis
La Programación Lógica con Restricciones fusiona especificación basada en cláusulas con resolución de restricciones específica del dominio: utiliza un almacén de restricciones respaldado por un solver en lugar de una unificación pura para lograr modelos declarativos compactos y búsqueda eficiente mediante propagación.