previous up next contents
Précédent : Correction d'optimisations reposant Remonter : Actions de recherche Suivant : Actions industrielles

Le formalisme Gamma

Participants : Pascal Fradet, Daniel Le Métayer

Gamma est un formalisme que nous avons proposé il y a quelques années et qui a depuis servi de base à différentes recherches. Gamma permet une description abstraite des programmes, sans contraintes d'ordonnancement inutiles. On peut illustrer le comportement des programmes Gamma à l'aide de la métaphore de la réaction chimique : l'exécution est une succession de réactions chimiques consommant les éléments d'un multi-ensemble pour produire de nouveaux éléments selon certaines règles.

Nous poursuivons cet effort dans le cadre du projet BRA Coordination avec pour objectif d'intégrer dans le langage un moyen de définir des données plus structurées. Le bénéfice escompté est double :

La difficulté est qu'on ne peut recourir à la méthode habituelle pour définir des structures de données (types récursifs) car ceci induirait un style de programmation récursive incompatible avec les principes de Gamma. Nous avons proposé pour résoudre ce dilemme une description des structures de données de nature ``topologique'', sous forme de relations entre les valeurs du multi-ensemble [8]. Une notion de type structuré a été définie en terme de récritures sur des relations. On peut ainsi décrire des structures comme les listes simplement ou doublement chaînées, les listes circulaires, ... Ces types peuvent être vus comme des invariants sur les multi-ensembles, le point crucial étant que ces invariants peuvent être prouvés automatiquement. On obtient ainsi une vérification de types pour Gamma. Il faut noter cependant que ces types ne contraignent pas les valeurs du multi-ensemble, mais les relations qui les relient. Cette notion de type structuré semble avoir un intérêt au delà de Gamma, notamment pour qualifier des états de mémoire dans un langage impératif. Nous étudions actuellement ces prolongements.
previous up next contents
Précédent : Correction d'optimisations reposant Remonter : Actions de recherche Suivant : Actions industrielles