Précédent : Démonstration automatique
Remonter : Contraintes, Déduction automatique et Preuves
Suivant : Logiciels
Mots clés : Modélisation, prototypage et vérification de systèmes complexes ou critiques .
Un langage à base de règles contrôlées par des stratégies (voir module 5.2) a l'avantage de s'appuyer sur une logique exécutable qui se prête bien au prototypage des applications (par interprétation ou compilation des programmes) et qui exprime naturellement la concurrence et le non déterminisme. Il est suffisamment puissant pour modéliser des règles de calcul, de résolution de contraintes, de déduction d'un démonstrateur, de transformation de programmes, de transition d'états... Un tel langage se prête bien à la vérification de certaines propriétés de programmes: la terminaison (le programme termine pour certaines valeurs), le déterminisme (le programme donne un résultat unique ou toujours des résultats d'un certain type), la couverture (le programme est bien défini pour toutes les données possibles) ou la conformité (le programme vérifie une assertion donnée) (voir les modules 5.3 et < 5.1). La programmation par contraintes offre une technique de modélisation complémentaire bien adaptée à certains domaines de calcul (booléens, entiers, réels) et à certains types de problèmes de nature ensembliste ou combinatoire (voir le module 7.1).
Les domaines d'application visés sont la spécification et la vérification de logiciels de télécommunication (protocoles et services) dans le cadre d'un contrat avec le CNET (voir module 7.2) et les logiciels de planification, comme ROUTEUR (voir module 7.1). A plus long terme, nous voulons appliquer nos techniques à la modélisation de systèmes réactifs et de systèmes physiques hybrides, c'est-à-dire ayant des comportements discrets et continus.