Chapitre 1
Introduction
Pendant les dernières décennies, les contraintes sont entrées dans beaucoup de domaines
de l’informatique. Le principe d’un formalisme calculatoire fondé sur les contraintes est de
calculer avec des relations entre données au lieu de calculer avec des données. La notion d’une
relation entre données, ou autrement dit d’un ensemble de n-uplets de valeurs, est centrale
pour beaucoup de formalismes calculatoires comme nous détaillerons dans le chapitre 2. Dans
certains formalismes, comme dans les bases de données, la notion d’une relation est aujour-
d’hui généralement acceptée comme étant essentielle pour les fondements du domaine. En
programmation logique, en revanche, les relations n’étaient pendant longtemps présentes que
pour un cas très particulier. Ce n’est que 15 ans après la première formulation des principes de
la programmation logique que les relations ad-hoc de la définition originale étaient remplacées
par le concept général de relations sur des domaines quelconques.
Un système de contraintes est un langage formel basé sur la logique du premier ordre
qui permet de dénoter des relations. Afin de pouvoir calculer avec les contraintes nous avons
besoin d’une réalisation d’un système de contraintes qui fournit tous les services calculatoires
requis. La question des services demandés dépend de l’utilisation du système de contraintes.
Toutefois, les opérations les plus utiles sont le calcul de l’intersection de deux relations (ou plus
exactement, de l’opération join connue du domaine des bases de donnés, opération qui corres-
pond à la conjonction logique) et la satisfaisabilité d’une contrainte. Selon le cas d’utilisation
d’autres opérations sur les contraintes peuvent être souhaitables. Ces opérations s’expriment
souvent comme des formules de la logique du premier ordre avec une certaine structure de
quantificateurs. Une question naturelle, pour un système de contraintes donné, est alors de
savoir si sa théorie du premier ordre entière est décidable. Quand nous avons commencé à
nous intéresser à des théories du premier ordre de systèmes de contraintes il y avait dans la
communauté l’espérance que les théories du premier ordre au moins pour des structures de
contraintes assez simple soient décidables. Au fil des années il s’est avéré que ce n’est malheu-
reusement pas le cas : dans la plupart des cas on n’obtient des résultats de décidabilité que
pour des classes restreintes de formules.
Ce document est organisé selon les méthodes utilisées pour résoudre des problèmes concer-
nants les contraintes. Par conséquent, les différents résultats publiés dans un même article
peuvent se retrouver dans des chapitres différentes de cette thèse.
Le chapitre 2 introduit la notion de contraintes et leur utilisation dans plusieurs domaines
de l’informatique. À la fin de ce chapitre nous introduisons en particulier le modèle des arbres
de traits qui sert de base sémantique pour plusieurs systèmes de contraintes dont nous parle-
5