"Programmer par contraintes consiste à formuler un problème en termes d'inconnues soumises à une contrainte" (définie comme un
énoncé du premier ordre faisant intervenir des opérations et des relations du domaine de calcul).
"Résoudre la contrainte, et par là même le problème posé, consiste à trouver les valeurs à attribuer aux variables libres
de la formule pour la rendre vraie."
La programmation logique et la programmation mathématique s'unifient dans cette vision. La technologie des contraintes permet de glisser naturellement de l'inférence à l'optimisation.