Thèse soutenue

Collaboration de solveurs pour la programmation logique à contraintes

FR  |  
EN
Auteur / Autrice : Éric Monfroy
Direction : Michaël Rusinowitch
Type : Thèse de doctorat
Discipline(s) : Sciences appliquées
Date : Soutenance en 1996
Etablissement(s) : Nancy 1
Partenaire(s) de recherche : autre partenaire : Université Henri Poincaré Nancy 1. Faculté des sciences et techniques

Résumé

FR

La programmation logique à contraintes (CLP) combine la déclarativité de la programmation logique à l'efficacité de la programmation à contraintes. Ainsi, les programmes CLP sont flexibles, et souvent plus efficaces que tout autre programme. Le solveur de contraintes (composant essentiel d'un systeme CLP) influence énormément la déclarativité et l'efficacité du système. Néanmoins, il n'est pas toujours possible d'obtenir un solveur suffisamment efficace pour un domaine donné. Jusqu'à maintenant, les travaux basés sur la coopération et la combinaison de solveurs (concepts visant à pallier ce problème) sont dédiés à des domaines spécifiques, et ne sont pas toujours faciles à implanter ni à adapter. Ainsi nous est venue l'idée de Bali, un environnement pour la construction de collaborations (concept unifiant coopération et combinaison) de solveurs. Il fournit d'abord un cadre formel, ainsi qu'un langage pour manipuler et faire collaborer les solveurs. Cette phase s'appuie sur des primitives de collaborations autorisant plusieurs paradigmes (tels que séquentialité, concurrence et parallélisme, adaptés à la notion de solveur), et des primitives de contrôle (telles que répétition, point-fixe, garde, conditionnelle) pour composer les collaborations. La deuxième spécificité de Bali est de créer automatiquement des serveurs ayant une architecture distribuée et réalisant les collaborations désirées. Ainsi, les expressions spécifiées avec le langage de collaborations de solveurs deviennent directement exécutables. Nous proposons également un langage d'accueil de type CLP(x), qui offre plusieurs stratégies de résolution et dont l'implantation est un client particulier des serveurs. De plus, ce langage est générique: la connexion à une collaboration instancié le paramètre x par le domaine de contraintes de cette dernière. Bali peut donc être considéré comme un environnement pour réaliser facilement et rapidement de nouveaux systèmes CLP fondés sur des collaborations de solveurs. Ceci modifie la méthodologie de programmation: ce n'est plus le programme qui est transformé si le solveur n'est pas assez puissant, mais la collaboration de solveurs qui est modifiée à un haut niveau. Une maquette a montré la faisabilité de notre approche ainsi que son intérêt en pratique.