
Précédent : Correction d'optimisations reposant Remonter
: Actions de
recherche Suivant : Actions industrielles
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 :
- le programmeur n'aura plus, pour structurer ses données, à
introduire un codage inélégant et source d'erreurs ;
- on pourra envisager une mise en oeuvre plus efficace de
Gamma exploitant les informations structurelles contenues dans
les programmes.
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.

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