login
english version rss feed
Detailed view PhD thesis
Université Claude Bernard - Lyon I (28/10/1996), Bert Didier (Dir.)
Attached file list to this document: 
PDF
tel-00004992.pdf(1.3 MB)
Dérivation de programmes impératifs à partir de spécifications algébriques
Yves Guerte1

Ce document présente une méthode de dérivation automatique des spécifications algébriques vers un langage impératif. Par langage impératif nous désignons un langage de programmation ``traditionnel'' avec déclarations des variables (état) et dont les programmes sont des suites d'instructions qui modifient l'état. L'instruction caractéristique est l'affectation destructrice d'une valeur à une variable. Une spécification algébrique est composée de sortes, de constructeurs qui définissent l'ensemble des valeurs atteignables (que l'on peut dénoter), et d'opérateurs axiomatisés par des équations conditionnelles orientées. Nous définissons un lien d'implémentation entre les objets du domaine abstrait des spécifications algébriques et ceux du domaine concret des programmes impératifs. Ce lien permet de paramétrer la dérivation d'une spécification. L'implémentation des opérateurs respecte le choix de la forme de dérivation et celui de la bibliothèque importée. Elle résout les conflits d'accès aux variables et minimise les coûts en recopies de valeurs engendrées par le passage du fonctionnel à l'impératif. De manière analogue au lien d'implémentation entre une spécification algébrique et un programme impératif, nous définissons un lien d'implémentation dite abstraite entre les sortes et constructeurs de deux spécifications algébriques. Nous proposons pour les constructeurs, soit d'effectuer une dérivation systématique en un type de donnée impératif, soit de calculer les liens d'implémentation abstraite potentiels vers les sortes dont les implémentations des constructeurs sont réutilisables. Une méthode de transformation de la spécification algébrique est enfin proposée, qui favorise les modifications ``en-place'' de données, dans une variante de la méthode de dérivation précédente.
1:  LSR - IMAG - Laboratoire Logiciels Systèmes Réseaux
Spécifications algébriques – dérivation de programmes – réutilisation d'implémentation – optimisation d'implémentation – transformation fonctionnel-impératif

Derivation of imperative programs from algebraic specifications
This document presents a method to automatically derive programs in an imperative language from algebraic specifications. The imperative language is a standard one i.e. programs contain declarations of variables (the state) and sequence of statements which modify the program state. A characteristic feature is the destructive assignment of a value to a variable. An algebraic specification is composed of sorts, constructors which define the set of the possible values (which can be denoted), and operators which are axiomatized using conditional rewrite rules. An implementation link is defined between the objects of the algebraic specification domain, called the abstract domain, and the imperative program domain, called the concrete domain. The formalization of this implementation link allows one to parametrize the derivation of a specification. The implementation of the operators respects the form of the derivation and the contraints of the imported library. It also solves the access conflicts to the variables, and minimizes the cost involved by the duplications generated by the transformation from the functional to the imperative style. Similarly, we define an implementation link, called abstract link. It maps sorts to sorts and constructors to constructors from an algebraic specifications to another one. We propose two kinds of derivation for the constructors : either we use a systematic derivation to an imperative data type, or we compute all the possible abstract implementation links to the sorts whose implementations can be re-used. Finally, a method which enhances the partial modifications of the data is proposed. It relies upon the same principles as the ones developed previously.
Algebraic specifications – program derivation – implementation reuse – optimisation of implementation – fonctional-to-imperative transformations

all articles on CCSd database...
all articles on CCSd database...
all articles on CCSd database...
all articles on CCSd database...
all articles on CCSd database...