Projet Protheo

previous up next contents
Précédent : Fondements scientifiques Remonter : Projet PROTHEO, Contraintes, Déduction Automatique Suivant : Logiciels



Grands domaines d'application

Résumé : La vérification de logiciels est un domaine d'application majeur du projet. Dans le cadre d'un contrat avec le CNET, nous appliquons nos techniques de spécifications et de preuves à la vérification de logiciels de télécommunication.

La résolution de contraintes est un autre domaine d'application important. Au travers de la planification d'un service de transport porte-à-porte à la demande, nous abordons le problème plus général d'allocation de ressources.

Enfin des applications à plus long terme de nos recherches sont envisageables dans le domaine de la conception de langages de programmation combinant différents paradigmes.


Vérification de logiciels

Mots-clés : vérification, télécommunications


Les techniques de preuve automatique ont un fort potentiel pour la vérification de circuits, de protocoles, ou d'applications liées aux télécommunications. En effet la preuve de logiciel est actuellement dominée par les approches du type model checking qui ont l'avantage d'avoir été complètement automatisées. Cependant elles demeurent souvent restreintes à des preuves de systèmes ayant un nombre d'états fini et leur généralisation se heurte encore à des difficultés d'explosion combinatoire. Or typiquement circuits et protocoles sont paramétrés, i.e., définissent des familles infinies de systèmes. Par exemple, un circuit pour multiplier deux entiers est paramétré par la taille des données.

Nos techniques de preuve automatique implantées dans le système SPIKE (voir Section [*]) peuvent traiter par récurrence les systèmes infinis ou paramétrés. Par exemple, les circuits sont vérifiés en une passe pour toutes les tailles de vecteurs de bits possibles. Ces techniques peuvent se combiner avec des procédures de décisions sur des domaines spécifiques comme l'arithmétique, ce qui accroit leur efficacité (voir Section [*]).

Une voie prometteuse est la combinaison de techniques de preuves hétérogènes combinant model checking, preuve par récurrence et procédures de décision. L'étude de stratégies pour guider de telles preuves est également une application possible de nos travaux que nous commençons à explorer (voir Section [*]).

Problèmes d'allocation de ressources

Mots-clés : programmation par contraintes, programmation linéaire, recherche opérationnelle


Les problèmes d'allocation de ressources apparaissent dans des contextes variés et ont de nombreuses applications dans le domaine industriel ou du service public : emploi du temps, planification de tâches, etc.

La programmation linéaire fournit une première approche du problème. Son intérêt principal réside dans le fait que les contraintes sont considérées globalement lors de l'optimisation. Néanmoins, elle n'est pas bien adaptée à la nature discrète du problème d'allocation des ressources et ne donne pas des résultats très satisfaisants.

Des méthodes de propagation de contraintes par consistance locale ont également été explorées. Cette approche est bien adaptée aux problèmes discrets et le coût polynomial de la propagation locale des contraintes la rend intéressante, mais elle échoue à son tour à résoudre des problèmes de grande taille. Il lui manque le caractère global des méthodes classiques de recherche opérationnelle.

La solution semble résider dans une coopération judicieuse entre recherche opérationnelle, propagation de contraintes par consistance locale et manipulation symbolique des contraintes. Les techniques que nous développons dans le projet (voir Section [*]) appartiennent surtout à ces deux derniers domaines. Toutefois le problème de la planification de transport porte-à-porte que nous traitons pour le GIHP (voir Section [*]) est un bon exemple pour étudier leur combinaison avec des techniques de recherche opérationnelle.

Langages déclaratifs

Mots-clés : programmation logique, fonctionnelle, par contraintes, par règles


Les techniques de réécriture et déduction avec contraintes développées dans le projet trouvent naturellement une application dans la conception des nouveaux langages de programmation déclaratifs, combinant divers styles de programmation, fonctionnelle, logique, par contraintes, par règles, qui se complètent plus qu'ils ne s'excluent.

La programmation logico-fonctionnelle est fondée sur le $\lambda$-calcul, la réécriture, ainsi que sur un mécanisme de déduction non-déterministe lié à une généralisation de la réécriture. L'étude des stratégies de réécriture (voir Section [*]) et plus généralement des problèmes relatifs à la gestion du non-déterminisme sont donc essentiels dans le cadre du développement de langages logico-fonctionnels.

La programmation par contraintes consiste à déclarer des relations entre objets d'un certain domaine de calcul, appelés contraintes, puis à évaluer le programme correspondant grâce à l'utilisation d'un mécanisme de déduction basé sur un résolveur de contraintes pour ce domaine. Il est donc important de concevoir des méthodes de résolution de contraintes sur différents domaines de calculs fondamentaux (entiers, réels, termes, ...) et d'étudier leurs interactions avec des mécanismes de déduction plus généraux. Nos travaux sur la collaboration de résolveurs de contraintes et sur l'unification d'ordre supérieur (mentionnés dans la Section [*]) vont dans cette direction.

Des langages à base de règles sont utilisés dans les systèmes de contrôle de processus industriels, dans les systèmes experts ou en programmation par contraintes. Les techniques de réécriture conditionnelle ne s'appliquent pas directement, mais devraient aider à proposer une sémantique formelle et des techniques de vérification pour de tels systèmes de règles. Les recherches que nous menons autour du système ELAN (voir Section [*]) et du langage de spécification qu'il offre sont susceptibles de trouver là un domaine d'application.



previous up next contents Précédent : Fondements scientifiques Remonter : Projet PROTHEO, Contraintes, Déduction Automatique Suivant : Logiciels