Définition
Un cadre de calcul et de spécification qui intègre la programmation logique et la résolution de contraintes : les programmes combinent règles logiques et domaines de contraintes avec solveurs, en maintenant un magasin de contraintes consulté et mis à jour lors de la recherche de preuves.

Principe

Principe
Séparer le contrôle logique (règles, recherche) du raisonnement sur contraintes spécifique au domaine (arithmétique, domaines finis, chaînes) de sorte que l'unification soit remplacée ou étendue par la résolution de contraintes et la vérification de cohérence par une procédure de décision du solveur.

Démonstration

Démonstration
CLP(R) pour l'arithmétique linéaire : des règles logiques génèrent des contraintes arithmétiques comme des inégalités linéaires ; le solveur de contraintes maintient et simplifie le magasin de contraintes et écarte les branches de recherche qui violent la cohérence numérique dans la planification ou l'allocation de ressources.

Mauvaise application

Mauvaise application
Supposer la complétude du solveur pour des domaines indécidables, ou traiter les contraintes comme de simples prédicats syntaxiques sans intégrer le retour du solveur, ce qui conduit à des erreurs sur la terminaison ou la couverture des solutions.

Conséquence

Conséquence
Une intégration correcte produit des modèles plus déclaratifs pour des problèmes combinatoires et numériques, un élagage important de la recherche via la propagation de contraintes, et l'utilisation modulaire de procédures de décision efficaces pour des domaines spécialisés.

Inversion

Inversion
Inverser vers la programmation par contraintes pure sans clauses logiques, où recherche et propagation s'expriment uniquement par procédures de résolution de contraintes, ou vers la programmation logique pure où les contraintes sont réduites à des prédicats logiques explicites sans aide de solveur.

Limite

Limite
Efficace lorsque les domaines de contraintes admettent des solveurs décidables ou pratiques (domaines finis, arithmétique linéaire, contraintes booléennes) ; il ne s'étend pas automatiquement à des théories indécidables sans perte de garanties ou sans approximations.

Tension sémantique

Tension sémantique
Tension entre CLP, la programmation logique pure et la CP : CLP mêle règles déclaratives et propagation pilotée par le solveur, tandis que la PL met l'accent sur la recherche de preuves et la CP sur la propagation centrée sur le solveur et les contraintes globales, entraînant des compromis de modélisation et de contrôle.

Synthèse

Synthèse
La Programmation Logique par Contraintes combine spécification par clauses et résolution de contraintes spécifique au domaine : elle utilise un magasin de contraintes soutenu par un solveur en lieu et place d'une unification pure pour obtenir des modèles déclaratifs compacts et une recherche efficace via propagation.