HAL Id: tel-00005007
https://tel.archives-ouvertes.fr/tel-00005007
Submitted on 23 Feb 2004
HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.
colimites finies, diagrammes, isomorphismes
Catherine OriatTo cite this version:
Catherine Oriat. Etude des spécifications modulaires : constructions de colimites finies, diagrammes, isomorphismes. Autre [cs.OH]. Institut National Polytechnique de Grenoble - INPG, 1996. Français. �tel-00005007�
THESE
presentee par
Catherine ORIAT
pour obtenir le grade de DOCTEUR
de l'INSTITUT NATIONAL POLYTECHNIQUE DE GRENOBLE
(Arr^ete ministeriel du 30 mars 1992)
Specialite: Informatique
Etude des specications modulaires: constructions
de colimites nies, diagrammes, isomorphismes
These soutenue le 16 janvier 1996
Composition du jury:
President:
M. Jean-Pierre VERJUS
Rapporteurs: M. Michel BIDOIT
M. Christian LAIR
Examinateurs: M. Michel SINTZOFF
M. Didier BERT
Remerciements
Je remercie tout d'abord mon directeur de these, M. Didier Bert, pour son soutien et pour la conance qu'il m'a accordee dans la preparation de cette these.
Je remercie M. Jean-Pierre Verjus qui a accepte de presider ce jury.
Je remercie M. Michel Bidoit pour l'inter^et qu'il a porte a mon travail et pour avoir accepte d'^etre rapporteur de ma these.
Je remercie M. Christian Lair pour les ameliorations qu'il m'a suggerees et pour les erreurs qu'il m'a signalees avec beaucoup d'indulgence et de gentillesse. Je suis particulierement honoree qu'un categoricien de sa competence ait accepte de faire partie de mon jury en qualite de rapporteur.
Je remercie M. Michel Sintzo pour m'avoir fait l'honneur de participer a ce jury.
Ce travail doit beaucoup a M. Jean-Claude Reynaud. Je le remercie d'une part pour le temps qu'il a consacre a suivre mon travail, et d'autre part pour toutes les suggestions qu'il m'a faites. Si, par hasard, ce travail contient quelques idees interessantes, c'est probablement lui qui me les a souees (mais, en paraphrasant Mac Lane, je suis evidemment responsable des erreurs qui pourraient rester).
Je remercie enn les membres de l'equipe SCOP, auxquels j'associe les occupants presents ou passes du b^atimentD, pour leur accueil et leur soutien tout au long de ce travail.
\Le departement [:::] epousait l'opinion traditionnelle qui voulait que la recherche f^ut une occupation soli-taire et eremitique, une mise a l'epreuve du caractere plus que de l'erudition, qu'un abus de contact humain pouvait vicier."
Resume
La composition de specications modulaires peut ^etre modelisee, dans le for-malisme des categories, par des colimites de diagrammes. La somme amalgamee permet en particulier d'assembler deux specications en precisant les parties com-munes. Notre travail poursuit cette idee classique selon trois axes.
D'un point de vue syntaxique, nous denissons un langage pour representer les specications modulaires construites a partir d'une categorie de specications et de morphismes de specications de base. Ce langage est caracterise formellement par une categorie de termes niment cocomplete.
D'un point de vue semantique, nous proposons d'associer a tout terme un dia-gramme. Cette interpretation permet de faire abstraction de certains choix eectues lors de la construction de la specication modulaire. Pour cela, nous denissons une categorie de diagrammes \concrete", c'est-a-dire dont les eches peuvent ^etre mani-pulees eectivement. En considerant le quotient par une certaine congruence, nous obtenons une completion de la categorie de base par colimites nies. Nous montrons que le calcul du diagramme associe a un terme denit une equivalence entre la cate-gorie des termes et la catecate-gorie des diagrammes, ce qui prouve la correction de cette interpretation.
Enn, nous proposons un algorithme pour decider si deux diagrammes sont iso-morphes, dans le cas particulier ou la categorie de base est nie et sans cycle. Cela permet de detecter des isomorphismes \de construction" entre specications mo-dulaires, c'est-a-dire des isomorphismes qui ne dependent pas des specications de base, mais seulement de la maniere dont celles-ci sont assemblees.
Abstract
The composition of modular specications can be modeled, in a category theo-retic framework, by means of colimits of diagrams. Pushouts in particular allow us to gather two specications sharing a common part. Our work extends this classic idea along three lines.
From a syntactic point of view, we dene a language to represent modular speci-cations built from a category of base specispeci-cations and base specication morphisms. This language is formally characterized by a nitely cocomplete category of terms.
From a semantic point of view, we propose to associate with each term a diagram. This interpretation allows us to abstract some choices made while constructing a modular specication. We thus dene a \concrete" category of diagrams, in which arrows can actually be handled. Considering the quotient by a certain congruence relation, we get a completion of the base category with nite colimits. We prove that this calculus denes an equivalence between the category of terms and the category of diagrams, which shows the soundness of this interpretation.
At last, we propose an algorithm to decide whether two diagrams are isomorphic, when the base category is nite and cycle free. This allows us to detect \construc-tion isomorphisms" between modular specica\construc-tions, i.e. isomorphisms which do not depend on the base specications, but only on their combination.
Table des matieres
Resume
7
Introduction
13
1 Specications algebriques . . . 13
2 Theorie des categories . . . 14
3 Modularite . . . 15
4 Notre travail . . . 16
5 Comparaisons avec d'autres travaux . . . 18
6 Plan de ce memoire . . . 20
1 Motivation
23
1.1 Preliminaires . . . 23 1.2 Specications . . . 29 1.3 Composition de specications en LPG . . . 33 1.4 Sommes amalgamees . . . 351.4.1 Somme amalgamee de deux ensembles . . . 36
1.4.2 Somme amalgamee de deux signatures . . . 39
1.4.3 Somme amalgamee de deux specications . . . 40
1.4.4 Syntaxe abstraite pour les constructions modulaires . . . 42
1.4.5 Somme disjointe de deux specications . . . 43
1.5 Specications modulaires d'anneaux . . . 44
1.6 Isomorphisme de construction . . . 50
1.7 Cadre general . . . 51
1.7.1 Institutions . . . 51
1.7.2 Terminologie et hypotheses . . . 53
2 Graphes, categories et diagrammes
55
2.1 Graphes . . . 55 2.2 Categories, foncteurs ::: . . . 57 2.2.1 Categories . . . 58 2.2.2 Foncteurs . . . 59 2.2.3 Transformations naturelles . . . 60 2.2.4 Adjonctions . . . 63 2.3 Diagrammes . . . 652.3.1 Categorie des diagrammes DIAGR(C) . . . 65
2.3.3 Exemples de colimites . . . 76 2.3.4 Adjonction (ColimC aI C) . . . 79 2.3.5 Conservation de colimites . . . 81 2.3.6 Aplatissement . . . 87 2.3.7 Categorie diagr(C) . . . 93
2.3.8 La categorie diagr(C) est niment cocomplete . . . 103
2.3.9 La categorie diagr(C) est une completion de C par colimites nies . . . 109
2.4 Conclusion . . . 115
3 Syntaxe : categorie des termes
117
3.1 Precategories, prefoncteurs et pre-colimites . . . 1193.2 Probleme de circularite termes { congruences . . . 124
3.3 Precategories C i . . . 125
3.4 Simplication des eches . . . 130
3.5 Extensions conservatrices . . . 135 3.6 Precategorie TERME(C 0) . . . 137 3.7 Categorie Terme(C 0) . . . 140 3.8 Categorie libreL(C 0) . . . 142 3.9 Conclusion . . . 149
4 Semantique: des termes aux diagrammes
151
4.1 Semantique . . . 151 4.1.1 Precategorie DIAGR(C 0) . . . 151 4.1.2 Prefoncteur D: TERME(C 0) !DIAGR(C 0) . . . 1544.2 Exemple des anneaux . . . 155
4.2.1 Diagramme associe a la specicationA 2 . . . 155
4.2.2 Diagramme associe a la specicationA 0 2 . . . 157
4.2.3 Diagramme associe a la specicationA 3 . . . 158
4.2.4 Diagramme associe a la specicationA 4 . . . 160
4.3 Equivalence entre les categories Terme(C 0) et diagr( C 0) . . . 164
4.3.1 Equivalence entre categories, equivalence entre precategories . 164 4.3.2 Equivalence entre les precategories DIAGR(C 0) et TERME( C 0) 165 4.3.3 Correction du calcul de diagrammes . . . 170
4.4 Conclusion . . . 171
5 Isomorphismes entre diagrammes
173
5.1 Transformations de diagrammes . . . 1735.1.1 Substitution par objet isomorphe . . . 174
5.1.2 Suppression d'un arc . . . 176
5.1.3 Ajout d'un arc etiquete . . . 180
5.1.4 Contraction d'un arc identite . . . 183
5.2 Categorie C 0 nie et sans cycle . . . 186
5.2.1 Hypotheses . . . 186
5.2.2 Fonction de completion . . . 187
TABLE DESMATIERES 11
5.2.4 Forme minimale . . . 194
5.2.5 Algorithme . . . 196
5.3 Cas general . . . 196
5.3.1 Zigzags . . . 197
5.3.2 Categorie de base comportant des cycles . . . 198
5.3.3 Categorie de base innie . . . 198
Conclusion 201 1 Bilan . . . 201
2 Perspectives . . . 203
A Preuves sur la syntaxe 207 A.1 Preuve du theoreme de forme normale (2) . . . 207
A.2 Preuve du theoreme de forme normale (3) . . . 208
A.3 Preuve du theoreme d'\unicite" de la forme normale . . . 209
A.4 Preuve du theoreme 3.9 . . . 217
References bibliographiques 225
Specier un probleme consiste a le decrire sans decider prematurement de la facon dont il sera resolu. En informatique, une specication de programme est une description des fonctionnalites attendues du programme independante des choix de mise en uvre.
Il existe plusieurs manieres de specier un programme. On peut utiliser une langue naturelle, par exemple en ecrivant un cahier des charges. Certaines activites, comme la validation de programme, la construction automatique d'un prototype, ou la production systematique de jeux de tests, necessitent des specications formelles, qui possedent une semantique precise, en particulier non ambigue.
Nous nous interessons ici aux specications algebriques, qui font partie des spe-cications orientees proprietes1. Les specications orientees proprietes sont basees sur un systeme logique, qui denit l'ensemble des proprietes que doit satisfaire tout modele de la specication.
1 Specications algebriques
Une specication algebrique est composee d'une signature et d'un ensemble d'axiomes. La signature contient les symboles utilises pour former des expressions, et les axiomes denissent certaines proprietes de ces expressions. La logique sous-jacente decrit l'ensemble des theoremes que l'on peut deduire des axiomes. De plus, la semantique des specications algebriques associe a toute specication une classe de modeles, c'est-a-dire une classe d'algebres multi-sortes qui satisfont les axiomes.
Historiquement, les specications algebriques sont issues de deux courants dis-tincts : l'algebre universelle en mathematiques [Coh65] et les types abstraits en genie logiciel. L'origine des types abstraits gure dans le concept de classe du langage de programmation Simula [DN66, BDMN73]. Un type abstrait, compose d'un ensemble de domaines de valeurs accompagne d'un ensemble d'operations sur ces domaines de valeurs, permet de structurer les donnees. L'idee de base en specication alge-brique consiste a modeliser un type abstrait par une algebre. Cette idee est motivee par l'analogie entre un type abstrait et une algebre multi-sortes sur une signature. L'interpretation des sortes de la signature correspond en eet aux domaines de va-leurs, et l'interpretation des operateurs de la signature correspond aux operations sur ces domaines de valeurs.
Les premiers travaux sur les specications algebriques datent du milieu des an-nees 1970, avec les travaux de B. Liskov et S. Zilles [LZ74], de J. Guttag [Gut75,
1
Gut77] et du groupe ADJ (compose de J. Goguen, J. Thatcher, E. Wagner et J. Wright) [GTWW75, GTWW77, GTW78]. Au depart, les specications alge-briques etaient basees sur la logique equationnelle. Puis ont ete introduites d'autres logiques, comme les clauses de Horn, la logique du premier ordre ou encore les specications avec contraintes [EM90]. D'autres extensions ont permis de prendre en compte la notion d'erreur [BBC86, BL93]. J. Goguen et R. Burstall ont pro-pose la theorie des institutions, qui ore un cadre general pour etudier les die-rents formalismes de specication algebrique [GB84, GB90]. Il existe beaucoup de references sur les specications algebriques, parmi les bonnes syntheses, citons [EM85, MG85, Wir90].
Ces travaux ont donne naissance a de nombreux langages de specication alge-brique, comme Clear [BG77, BG80], ACT ONE et ACT TWO [EM85, EM90], ASL [SW83, Wir86], OBJ2 et OBJ3 [FGJM85, GKK+87], PLUSS [Gau84, Bid89], LPG [Ber83, BE86, B+90], GLIDER [Huf92]. On trouve un bon panorama des dierents langages de specication algebrique existants dans [Wir94].
2 Theorie des categories
La theorie des categories repose sur deux notions: l'objet et la eche, contrai-rement a la theorie des ensembles qui repose sur le seul concept d'ensemble. En theorie des ensembles, un ensemble est caracterise de facon interne par ses elements, alors qu'en theorie des categories, un objet est caracterise de facon externe par les relations entretenues par l'intermediaire des eches avec les autres objets. Pour cette raison, un grand nombre de concepts de theorie des categories sont denis a un isomorphisme pres.
La theorie des categories a ete inventee au debut des annees 1940 par S. Mac Lane et S. Eilenberg. Bien que certains mathematiciens aient doute de l'inter^et des categories, ce formalisme a joue un r^ole unicateur en mathematiques, en particulier en algebre et en topologie. Cette theorie denit les dierents concepts de facon generale et abstraite, independamment de tout modele. (C'est pour cette raison que ses detracteurs l'on surnommee \non-sens abstrait2".) La theorie des categories a commence a interesser les informaticiens au debut des annees 1970. Par exemple, la decouverte de l'equivalence entre le -calcul type et les categories cartesiennes fermees a permis de donner des solutions elegantes au probleme des modeles du -calcul, lie a celui de la resolution des equations de domaines [SP77, Wan79, LS86]. Il existe de facon generale des liens tres etroits entre la theorie des types et la theorie des categories (cf. par exemple [See84, Poi92]).
L'ouvrage de reference sur les categories est le livre de S. Mac Lane [McL71], plut^ot destine aux mathematiciens. Pour les informaticiens, le livre de M. Barr et C. Wells [BW90] est plus accessible, car les dierents concepts sont presentes de facon assez elementaire et les exemples sont tires de l'informatique. Il existe beaucoup d'autres ouvrages qui traitent des categories, par exemple [MB70, AM75, Gol79, AL91].
Le formalisme des specications algebriques s'appuie largement sur la theorie 2
des categories. Historiquement, le developpement des specications algebriques (en particulier les travaux du groupe ADJ) a ete in uence par les theories algebriques de Lawvere. Les theories algebriques de Lawvere permettent de modeliser les categories d'algebres en faisant abstraction de la syntaxe, c'est-a-dire independamment de la notion de signature [Law63, BW85, WBT85].
D'autre part, d'un point de vue pratique, on peut justier l'utilisation des cate-gories par l'importance des morphismes de specications, qui jouent un r^ole essentiel en specication algebrique. Intuitivement, un morphisme de specications exprime une relation entre deux specications. Pour prendre un exemple mathematique, tout anneau peut ^etre considere comme un groupe, ce qui signie qu'il existe un morphisme de specications entre la specication des groupes et la specication des anneaux. Il peut exister plusieurs morphismes de specications entre deux speci-cations. Par exemple, on peut considerer tout anneau comme un monode de deux facons dierentes, en considerant soit l'operateur additif, soit l'operateur multiplica-tif de l'anneau comme l'operateur du monode. Preciser quel operateur de l'anneau sera l'operateur du monode consiste exactement a denir un morphisme de speci-cations entre la specication des monodes et la specication des anneaux.
3 Modularite
Le developpement de specications de grande taille necessite un decoupage des specications en plusieurs specications plus simples, appelees modules. Chaque mo-dule correspond a un probleme plus simple a resoudre. Cette methode, qui consiste a \diviser pour mieux regner" est classique en genie logiciel [LCW85]. De facon generale, la modularite permet d'une part le developpement independant des die-rents modules, et d'autre part une meilleure comprehension de chaque module, ce qui facilite la maintenance.
Cette vision de la modularite correspond a une approche descendante de reso-lution de probleme, puisque l'accent est mis sur la decomposition du probleme en plusieurs sous-problemes plus simples. Dans notre travail, notre conception de la modularite est au contraire ascendante. Nous nous interessons en eet a la compo-sitiondes modules, c'est-a-dire a l'assemblage de modules elementaires permettant de construire des modules plus complexes. Ces modules elementaires sont regroupes dans une bibliotheque, la bibliotheque des modules de base. L'inter^et de la composi-tion est de permettre la reutilisacomposi-tion des modules de base, preconisee en genie logiciel pour reduire les erreurs et les co^uts de developpement (cf. par exemple [Ber90]).
Un aspect de la modularite est la possibilite de denir des specications gene-riques, c'est-a-dire parametrees [SST92]. En eet, une specication parametree peut ^etre instanciee de dierentes manieres par d'autres specications, ce qui evite de re-ecrire une nouvelle specication pour chaque variation d'un m^eme probleme. Le but est alors de denir des specications generiques susamment generales pour per-mettre de specier le maximum de problemes par une simple instanciation [Mar95]. Le developpement modulaire des specications est assiste dans les langages de specication algebrique par des operateurs de construction3 comme le renommage,
3
l'enrichissement ou l'abstraction [ST88, Wir90]. Ces primitives permettent de cons-truire de nouvelles specications a partir de specications deja denies. La composi-tion de modules est un cas particulier d'operateur de construccomposi-tion de specicacomposi-tions, qui peut ^etre modelise par des colimites de diagrammes. Intuitivement, en theorie des categories, un diagramme permet de decrire un assemblage de plusieurs objets en precisant des partages entre certains objets a l'aide de eches. La colimite du diagramme permet de considerer le resultat de cette composition. Cette utilisation generale des colimites pour modeliser l'interconnexion de systemes a ete proposee par J. Goguen [Gog73, Gog92].
Un cas particulier de colimite est la somme amalgamee4, qui correspond a l'as-semblage de deux objets B et C, en speciant une partie commune entre ces deux objets par un objet partage A et deux eches f : A ! B et g : A ! C. En speci-cation algebrique, la somme amalgamee peut modeliser d'une part la composition de deux specications qui ont une partie commune, et d'autre part l'instanciation d'une specication generique.
4 Notre travail
Nous etudions la composition des specications algebriques modulaires. Nous supposons que nous disposons d'une bibliotheque de specications et de morphismes de specications de base, qui forment une categorie de base, en general appelee C
0 dans ce memoire. Les specications de base sont monolithiques, c'est-a-dire non decomposees. Notre travail repose sur une idee classique en specication algebrique: la composition des specications peut ^etre modelisee par des colimites de diagrammes nis. Nous proposons donc de considerer une specication modulaire comme une specication obtenue a partir de specications et morphismes de specications de base par une suite de constructions de colimites.
Notre travail est independant de la logique sous-jacente du langage de speci-cation algebrique. Nous pouvons donc nous placer dans le cadre general des ins-titutions. Nous devons uniquement supposer que la categorie des specications est niment cocomplete, c'est-a-dire que tout diagramme ni a une colimite.
D'un point de vue syntaxique, c'est-a-dire en ce qui concerne le langage utilise pour decrire ces constructions, nous ne considerons pas toutes les colimites nies, mais uniquement les sommes amalgamees. En eet, avec la specication vide, objet initial de la categorie des specications, les sommes amalgamees permettent de si-muler la construction de toute colimite nie. Nous proposons la construction d'une categorie de termes, appelee Terme(C
0), pour representer la composition de speci-cations modulaires en utilisant les sommes amalgamees.
En theorie des categories, on travaille le plus souvent a un isomorphisme pres. C'est une consequence de la caracterisation externe des objets dans ce formalisme. Les colimites, par exemple, sont denies au depart a un isomorphisme pres. La denition d'une syntaxe est au contraire un probleme typiquement informatique, qui necessite de faire des choix de representation. C'est la raison pour laquelle nous devons utiliser des sommes amalgamees choisies au moment de la denition
4En anglais,
du langage d'expression pour les specications modulaires. Ces choix de sommes amalgamees correspondent a des choix de codage.
Un terme correspond donc a une specication modulaire construite par une suc-cession de sommes amalgamees. Dans une seconde etape, nous proposons d'inter-preter un terme par un diagramme dont la colimite est la specication modulaire denotees par ce terme. Nous considerons les diagrammes comme une semantique pour les specications modulaires, par opposition aux termes qui constituent la syn-taxe.
L'interpretation des termes par des diagrammes necessite de denir une categorie de diagrammes puisqu'il faut non seulement associer a toute specication modulaire un diagramme, mais aussi associer a tout morphisme de specications modulaires un morphisme de diagrammes. La denition d'un diagramme est relativement stan-dard en theorie des categories, bien qu'il existe quelques nuances. La denition de morphisme de diagrammes est moins connue, en particulier dans la litterature in-formatique ou sont utilisees des denitions moins generales que celle dont nous nous servons ici.
Nous presentons deux categories de diagrammes, DIAGR(C
0) et diagr( C
0). Les objets de DIAGR(C
0) sont des diagrammes, et les eches de DIAGR( C
0) des mor-phismes de diagrammes. La categorie diagr(C
0) est obtenue a partir de DIAGR( C
0) par un quotient par une relation de congruence sur les eches de DIAGR(C
0). C'est la categorie diagr(C
0) qui possede les proprietes theoriques interessantes. Il s'agit en eet d'une categorie niment cocomplete, c'est-a-dire que tout diagramme ni sur diagr(C
0) a une colimite nie dans diagr( C
0). D'autre part, diagr( C
0) est une completion par colimites nies de la categorie C
0. Sur le plan pratique, comme les eches de diagr(C
0) sont des classes d'equivalence de morphismes de diagram-mes, on travaille en realite avec des representants, c'est-a-dire avec des eches de DIAGR(C
0). La categorie DIAGR( C
0) permet donc la manipulation eective des eches de diagr(C
0).
La representation des termes par des diagrammes est denie par un foncteur D: Terme(C
0)
!diagr(C 0) entre les categories Terme(C
0) et diagr( C
0). Nous montrons que ce foncteur denit une equivalence de categories entre Terme(C
0) et diagr( C
0), ce qui signie que bien qu'elles ne soient pas isomorphes, ces categories ont neanmoins essentiellement la m^eme structure.
Apres avoir represente les specications modulaires par des diagrammes, nous nous interessons au probleme de l'equivalence entre deux specications modulaires. Deux specications modulaires sont considerees comme equivalentes lorsque celles-ci sont isomorphes en tant que colimites de diagramme. Detecter cet isomorphisme consiste en fait a detecter un isomorphisme entre deux diagrammes dans la categorie diagr(C
0). Nous appelons cet isomorphisme un isomorphisme de construction, parce qu'il ne depend pas de la denition eective des specications de base, mais seule-ment de la maniere dont celles-ci sont combinees pour construire les specications modulaires. Dans l'hypothese ou la categorieC
0est nie et ne comporte pas de cycle, nous proposons un algorithme pour detecter si deux diagrammes sont isomorphes.
Des resultats partiels concernant l'interpretation des termes par des diagrammes et la detection d'isomorphismes de construction ont ete presentes dans [Ori94, Ori95].
5 Comparaisons avec d'autres travaux
Categories de diagrammes
La denition de diagramme est, a quelques nuances pres, standard. Chez S. Mac Lane [McL71], un diagramme sur une categorie C est un foncteur d'une categorie J vers C. La denition de M. Barr et C. Wells [BW90], est moins generale, puisqu'un diagramme est un morphisme de graphes d'un graphe vers le graphe sous-jacent de C. Nous utilisons une denition \intermediaire": pour nous, un diagramme est un foncteur d'une categorie librement engendree sur un graphe vers C. Partir d'un graphe nous permet de rester proche de l'informatique. Par contre, nous ne souhaitons pas nous restreindre a une petite categorie C.
La denition de morphisme de diagrammes est beaucoup moins standard. Par exemple dans Clear, un morphisme de diagrammes, appele morphisme base, corres-pond uniquement a une inclusion entre deux diagrammes.
La denition proposee par A. Tarlecki, R. Burstall et J. Goguen dans [TBG91], bien que plus generale que celle utilisee dans la semantique du langage Clear, n'est pas encore susamment generale pour notre travail. En eet, cette denition ne permet pas de representer tout morphisme de specications modulaires par un mor-phisme de diagrammes.
La denition de morphisme de diagrammes que nous utilisons n'est pas nouvelle en theorie des categories. Une version duale de la categorie diagr(C
0) est par exemple utilisee par M. Barr et C. Wells dans [BW94]. Neanmoins, la reformulation de la denition de categorie de diagrammes que nous proposons dans le chapitre 2 presente un inter^et en informatique, d'une part parce que la categorie DIAGR(C
0) permet de manipuler eectivement les morphismes de diagrammes, et d'autre part parce que les categories DIAGR(C
0) et diagr( C
0) sont peu connues dans cette discipline.
Calculs de colimites
R. Burstall et D. Rydeheard proposent des algorithmes pour calculer certains concepts de theorie des categories [Bur80, BR86], en particulier les colimites de diagrammes. Le calcul general de colimite est parametre par certaines colimites, en l'occurrence un objet initial, des sommes et des coegalisateurs, qui permettent d'evaluer la colimite d'un diagramme quelconque. Ainsi, ayant deni l'objet initial, la somme et le coegalisateur par exemple dans la categorie des ensembles
Set
, on en deduit un moyen de calculer la colimite d'un diagramme quelconque dansSet
. Cet algorithme est en fait base sur une preuve du resultat suivant: si une categorie a un objet initial, des sommes et des coegalisateurs, alors celle-ci est niment cocomplete. Notre travail est base sur un theoreme similaire: si une categorie a un objet initial et des sommes amalgamees alors celle-ci est niment cocomplete. Notre travail est dierent, dans la mesure ou nous ne cherchons pas a calculer des colimites dans une categorie xee. En particulier, nous nous interessons au probleme general de l'isomorphisme entre deux diagrammes, qui correspond a un isomorphisme entreleurs colimites respectives. Cet isomorphisme est independant de la categorie sur laquelle ces diagrammes sont construits.
Utilisation des colimites en specication algebrique
L'utilisation des colimites pour representer l'assemblage de specications est loin d'^etre nouvelle. R. Burstall et J. Goguen ont presente cette idee dans la semantique du langage de specication Clear [BG80]. Dans Clear, la composition de plusieurs specications qui partagent un environnement commun, appelees theories basees, est en eet formalisee par la colimite d'un diagramme.
Les colimites ont ensuite ete assez intensivement utilisees en specication alge-brique. La somme amalgamee en particulier permet de modeliser l'instanciation de specications generiques [TWW82, EM85]. H. Ehrig, R. Jimenez et F. Orejas [EJO93] ont egalement presente une forme plus generale d'instanciation a l'aide de sommes amalgamees multiples5, nouvel exemple de colimite.
Syntaxe pour les constructions modulaires
J. Bergstra, J. Heering et R. Klint [BHK90] d'une part, et G. Renardel de Lava-lette [Ren91] d'autre part, ont propose de structurer les operateurs de construction de specications sous forme d'algebres de modules. Une algebre de modules est un langage permettant d'ecrire des expressions de composition des specications al-gebriques. Cette approche est voisine de notre travail sur le langage Terme(C
0), puisque le probleme de la composition des specications algebriques est aborde d'un point de vue syntaxique, et permet de comparer dierentes specications modulaires. Par contre, nous ne nous interessons pas aux m^emes operateurs de constructions de specications, puisque nous ne considerons que les constructions de colimites.
Notre syntaxe pour representer les specications algebriques modulaires est large-ment inspiree des travaux de J.-C. Reynaud, qui a propose un systeme de types pour representer les constructions de colimites [Rey90a, Rey90b, Rey93]. Ce systeme est fonde sur les theories algebriques generalisees de Cartmell [Car86] qui permettent de specier des types dependants, c'est-a-dire des types parametres par des termes. Les types dependants ont ete egalement utilises par T. Streicher et M. Wirsing [SW91] pour modeliser la composition de specications algebriques modulaires. D'autre part, H. Ehrig, R. Jimenez et F. Orejas ont egalement propose une syntaxe pour les specications algebriques modulaires dans [EJO93]. Cette syntaxe est en partie basee sur des constructions de sommes amalgamees.
La principale diculte en ce qui concerne la denition d'une syntaxe pour les constructions de colimites est le probleme de circularite entre la denition d'une part des objets et des eches de Terme(C
0) et d'autre part de l'egalite entre deux eches de Terme(C
0). En eet, il existe une eche, que nous appelons
up dans ce memoire, entre une somme amalgamee et un objet a condition qu'une egalite entre deux eches deTerme(C
0) soit veriee. La denition des eches
updepend donc de la denition de l'egalite des eches dans Terme(C
0), qui elle-m^eme presuppose que les eches ont ete denies.
5
J.-C. Reynaud contourne le probleme en proposant une denition concrete, c'est-a-dire semantique, d'une categorie librement engendree par objet initial choisi et sommes amalgamees choisies [Rey93]. H. Ehrig, R. Jimenez et F. Orejas [EJO93] ne denissent pas de syntaxe pour les eches up. La syntaxe qu'ils proposent ne permet donc pas d'obtenir une categorie niment cocomplete.
Une solution pour specier une categorie niment cocomplete sans utiliser d'ega-lites pour denir les eches a ete presentee par F. Cury dans [Cur91]. F. Cury propose de dedoubler les eches upen deux eches dont la denition ne depend pas d'une egalite. Ces deux eches, qui sont des exemples particuliers de eches up, permettent de reconstruire a posteriori toutes les echesup.
La solution que nous proposons consiste a stratier la construction de Terme(C 0) en une suite de categoriesC
i. L'existence d'une eche
updans la categorieC
i depend uniquement d'egalites dans la categorie C
i,1. Nous evitons ainsi le probleme de circularite entre la denition des eches et la denition des egalites.
Notre categorie Terme(C
0) peut ^etre comparee au type d'une esquisse, introduit par C. Ehresmann [Ehr68]. Dans les travaux de D. Duval et J.-C. Reynaud [DR94a, DR94b], le type d'une esquisse est une categorie librement engendree a partir d'un graphe par sommes et produits. Par consequent, la construction du type d'une esquisse est basee sur les categories a sommes et produits alors que la construction de Terme(C
0) est basee sur les categories a colimites nies. D'autre part, une esquisse contient des c^ones et coc^ones distingues, qui specient certaines limites ou colimites. Par contre, dans la construction de Terme(C
0) que nous proposons, il n'est pas possible de specier des sommes amalgamees distinguees dans la categorie de base C
0.
6 Plan de ce memoire
Le plan de ce memoire est le suivant. Le chapitre 1 introduit les specications algebriques modulaires, presente le probleme de la composition des specications et pose le cadre general de notre travail. Apres quelques rappels sur les specica-tions algebriques, nous proposons plusieurs exemples de specicaspecica-tions modulaires d'anneaux, en utilisant quelques specications et morphismes de specications de base. Cet exemple academique presente d'une part la syntaxe pour les construc-tions modulaires, et d'autre part le probleme de l'isomorphisme de construction entre deux specications modulaires.
Le chapitre 2 contient les bases theoriques de notre travail. Nous eectuons quelques rappels de theorie des graphes en section 2.1, puis de theorie des categories en section 2.2. Enn, en section 2.3, nous presentons les notions de diagrammes, de colimites nies ainsi que les categories de diagrammes DIAGR(C
0) et diagr( C
0). Nous montrons que la categorie diagr(C
0) est niment cocomplete, et que diagr( C
0) est une completion par colimites nies deC
0.
Le chapitre 3 est consacre a la syntaxe des specications modulaires. Dans ce chapitre, nous proposons une construction stratiee de la categorie Terme(C
0) des termes, qui fournit un langage pour representer les specications et morphismes de specications modulaires. Nous montrons d'une part que Terme(C
0) est une cate-gorie niment cocomplete, et d'autre part que Terme(C
conser-vatrice de C
0. Enn, nous construisons, a partir de Terme( C
0), une categorie L(C
0) librement engendree par objet initial choisi et sommes amalgamees choisies surC
0. Dans le chapitre 4, nous interpretons les termes denotant des specications modu-laires par des diagrammes. Cette interpretation permet d'obtenir une representation plus abstraite des specications modulaires que celle donnee par les termes, parce que certaines etapes speciques de la construction sont eliminees. Nous montrons que l'interpretation des termes par les diagrammes denit une equivalence entre les categories Terme(C
0) et diagr( C
0). Ce resultat nous permet de deduire que toute specication modulaire est isomorphe a la colimite du diagramme qui la represente. Le chapitre 5 est une application de cette representation des specications mo-dulaires par des diagrammes. Nous proposons de detecter un isomorphisme de cons-truction entre deux specications modulaires en detectant un isomorphisme entre leurs diagrammes correspondants. Nous presentons un algorithme qui permet, dans l'hypothese ou la categorie de base C
0 est nie et ne comporte pas de cycle, de detecter si deux diagrammes sont isomorphes.
Motivation
Le but de ce chapitre est de presenter le probleme de la composition des spe-cications modulaires. Nous etudions dierentes spespe-cications modulaires des an-neaux, construites a partir de quelques specications de base. Cet exemple est decrit en utilisant le langage de specication LPG (Langage pour la Programmation Ge-nerique) developpe par D. Bert et R. Echahed [BE86, B+90]. Nous introduisons informellement une syntaxe pour representer les specications modulaires, et expli-quons | egalement de facon informelle | qu'une specication modulaire peut ^etre consideree comme la colimite d'un diagramme. Nous motivons ensuite l'inter^et des isomorphismes de construction. Enn, nous posons le cadre general de notre travail.
1.1 Preliminaires
Dans cette partie, nous rappelons quelques notions elementaires de specication algebrique, en particulier les denitions de signature, morphisme de signatures, al-gebre, morphisme d'algebres, equation et algebre satisfaisant une equation. Cette presentation, loin d'^etre exhaustive, est inspiree de [GB90] et de [EM85].
Denition 1.1 (S-ensemble etS-application) Soit un ensemble S. Un S-ensembleA est une famille indicee parS d'ensembles disjoints (A
s)s2S. Une S-application f entre deux S-ensembles A et B, notee f : A ! B, est une famille indicee parS d'applications (f
s: A
s !B
s)s2S.
Denition 1.2 (Ensemble des cha^nes nies) Soit un ensembleA. L'ensemble des cha^nes nies surA est l'ensemble
A = 1 [ n=0 A n : Notations:
La cha^ne vide est notee".
La cha^ne composee des elements s 1 ;s 2 ;:::;s nest notee s 1 s 2 :::s n.
L'ensemble des cha^nes nies non vides surA est A += A A= 1 [ n=1 A n :
Les operations + et s'etendent aux applications entre deux ensembles. Soit une application f : A!B. On denit les applicationsf
: A ! B et f +: A + ! B + de la facon suivante. f ( ") ="; f ( a 1 :::a n) = f(a 1) :::f(a n) (pour n1); f +( a 1 :::a n) = f(a 1) :::f(a n) (pour n1): On verie facilement que pour tout ensembleA, on a
(id A) = id A (id A) + = id A +
et pour toutes applicationsf :A!B et g:B !C, on a (gf) = g f (gf) += g + f + :
Ces deux proprietes signient que et + sont des foncteurs :
Set
!
Set
et +:Set
!
Set
dans la categorie des ensemblesSet
.Une signature comprend les symboles utilises pour former des expressions. Plus precisement, une signature est composee d'un ensemble de symboles de sortes, qui representent des types de donnees, et d'un ensemble de symboles d'operateurs, qui representent des operations sur ces donnees. A chaque symbole d'operateur est associe un prol, qui represente le type des donnees d'entree et de sortie.
Denition 1.3
(Signature multi-sortes) Une signature multi-sortes, ou plus simple-ment signature, est un triplet (S;;$) ouS est un ensemble ni, dont les elements sont appeles sortes; est un ensemble ni, dont les elements sont appeles operateurs ; $ est une application$ : !S
+, qui a chaque operateur
! de associe une cha^ne non vide sur S, appelee prol de!.
Notation: si$(!) = s 1 :::s n s (n0), on note ! :s 1 ;:::s n ! s. Sin= 0, on dit que! est une constante, et on note! : !s.
Remarque 1.1
Une signature est souvent denie comme un ensemble de sortes S accompagne d'une famille indicee parS
S d'ensembles d'operateurs. Nous avons prefere considerer ici un unique ensemble aplati d'operateurs, le prol etant decrit par l'application $ : ! S
+. Nous avons choisi cette denition parce qu'elle permet de denir facilement la somme amalgamee de deux signatures a partir de la denition de la somme amalgamee de deux ensembles (cf. section 1.4).
1.1. PRELIMINAIRES 25
Exemple 1.1
(Exemples de signatures)La signature la plus simple est la signature vide, notee
?, telle que l'ensemble des sortes et l'ensemble des operateurs sont vides.
Un exemple classique de signature est la signature
Nat = (SNat;Nat;$Nat) des entiers naturels ouSNat et Nat et $Nat sont denis de la facon suivante:
SNat =
fnatg; Nat =
f0;succ;+g; $Nat(0) = nat ; $Nat(succ) = nat nat ; $Nat(+) = nat nat nat:
Dans le langage de specication LPG, les noms de sortes sont introduits par le mot clesorts et les operateurs par le mot cleoperators. La signature
Nat est donc denie en LPG par:
sorts nat
operators 0 : -> nat
succ : nat -> nat + : nat, nat -> nat
Voici un autre exemple de signature, la signature
M des monodes. Dans cette signature, on a une seule sorte s, une constante 1 et un operateur binaire . En LPG, on peut denir la signature M de la facon suivante:
sorts s
operators 1 : -> s * : s, s -> s
Un morphisme de signatures entre deux signatures et 0 associe a toute sorte de une sorte de 0 et a tout operateur de un operateur de 0, en conservant les prols des operateurs.
Denition 1.4
(Morphisme de signatures) Soit deux signatures = (S;;$) et 0 = (S0;0;$0). Un morphisme de signaturesm de vers 0, notem:! 0 est un couple (mS;m) ou
m
S est une applicationmS :S !S
0; m
est une applicationm :
! 0; tel que$0 m =mS+ $. Detaillons un peu la condition$0
m
=mS+
$. Considerons un operateur !:s1;:::;sn
$0(m(!)) = mS+($(!)) = mS+(s 1:::sns) = mS(s 1):::m S(s n)m S(s) L'operateur m(!) de 0 a donc pour prolm(!) :mS(s
1);:::;m S(s
n) !m
S(s). On peut composer les morphismes de signatures. Soit trois signatures
= (S;;$) 0= (S0;0;$0) 00= (S00;00;$00) et deux morphismes de signatures
m= (mS;m) : ! 0 n= (nS;n) : 0 ! 00:
Pour composer m et n, il sut de composer les applications sur les sortes et les applications sur les operateurs. Autrement dit,
nm= (n S m S;n m ): Cela denit bien un morphisme de signatures car
$00 n m = nS+ $ 0 m (n: 0 ! 00 morphisme de signatures) = nS+ m S+ $ (m: ! 0 morphisme de signatures) = (nS m S)+ $ ( + est un foncteur)
On a une categorie des signatures, notee
Sig
, dont les objets sont les signatures, et les eches sont les morphismes de signatures.Exemple 1.2
(Exemples de morphismes de signatures)Pour toute signature = (S;;$), il existe un morphisme de signatures de la signature vide ? vers . Ce morphisme, notej = (j
S ;j
), est constitue de l'application vide de l'ensemble vide des sortes versS, et de l'application vide de l'ensemble vide des operateurs vers . De plus, ce morphisme est unique. Dans la categorie des signatures
Sig
, ? est unobjet initial puisqu'il existe une unique eche de ? vers tout autre objet de
Sig
.On a un morphisme de signatures de la signature des monodes vers la signature des entiers naturelsm: M
!
Nat, qui associe la sortesde M a la sorte nat de Nat, la constante 1 a la constante 0, et l'operateur binaire
a l'operateur binaire +. mS(s) = nat; m(1) = 0; m( ) = +:
1.1. PRELIMINAIRES 27
Soit une signature . Denir une algebre sur , ou -algebre, consiste a inter-preter les sortes de par des ensembles, et les operateurs de par des applications entre ces ensembles. Une -algebre est egalement appelee modele ou interpretation de la signature .
Denition 1.5 (-algebre) Soit une signature = (S;;$). Une -algebre A est denie par:
un S-ensembleA;
pour tout operateur !:s 1 ;s 2 ;:::;s n !s2, une application ! A: A s1 A s2 A sn !A s : Si! est une constante !: !s, !
A est un element de A
s.
Denition 1.6 (Morphisme d'algebres) Soit une signature = (S;;$) et deux algebres A et B. Un morphisme d'algebresh de A vers B, note h :A !B est une S-application (h
s: A
s !B
s)s2S telle que pour tout operateur ! :s 1 ;s 2 ;:::;s n !s de , pour tout n-uplet (a
1 ;a 2 ;:::;a n) de A s 1 A s 2 A sn, h s( ! A( a 1 ;a 2 ;:::a n)) = ! B( h s 1( a 1) ;h s 2( a 2) ;:::;h s n( a n)) :
Etant donne une signature , on a une categorie de -algebres, notee Alg(), dont les objets sont les -algebres et les eches sont les morphismes de -algebres.
Une algebre importante est l'algebre des termes, qui permet de former des ex-pressions a partir des symboles de la signature. Nous devons d'abord denir la notion de variable sur une signature.
Denition 1.7 (Ensemble de variables sur une signature)
Soit une signature = (S;;$). Un ensemble X de variables sur la signature est unS-ensemble ni, tel que pour tout elements2S,X
s est distinct de l'ensemble des operateurs .
Denition 1.8 (Algebre des termes) Soit une signature = (S;;$) et un en-semble de variables X sur . L'algebre des termes T
(
X) est denie de la facon suivante.
Pour toute sorte s2S, T (
X)
s est le plus petit ensemble tel que: { x2X s ) x2T ( X) s; { !:s 1 ;s 2 ;:::;s n !s2; t i 2T ( X) s i ( i= 1;:::;n) ) !(t 1 ;t 2 ;:::;t n) 2T ( X) s : Les elements deT ( X)
s sont appeles termes de sorte s. L'interpretation d'un operateur !:s
1 ;s 2 ;:::;s n !s2 est l'application ! T (X) : T ( X) s 1 :::T ( X) sn ! T ( X) s (t 1 ;:::;t n) 7! !(t 1 ;:::;t n) :
Lorsque l'ensemble des variablesX est vide, on obtient l'algebre des termes fermes T=T(
?).
Une aectation d'un ensemble de variables X dans une -algebre A associe a toute variable de Xs un element de As. Autrement dit, une aectation a de X
dansA est une S-application a :X !A.
L'algebre des termes a une propriete importante: c'est une algebre libre dans la classe des -algebres. Cela signie que toute aectation de X dans une algebre A s'etend de facon unique en un morphisme d'algebres deT(X) vers A.
Theoreme 1.1
(L'algebre T(X) est libre dans Alg()) Notons i : X ! T(X) l'inclusion de X dans T(X). Soit une -algebre A. Pour toute aectation a : X ! A, il existe un unique morphisme d'algebres a :T(X)
!A tel que a i= a .
Une equation est tout simplement composee d'un ensemble de variables et de deux termes.
Denition 1.9
(-equation) Soit une signature = (S;;$) et un ensemble de variablesX sur . Une -equation sur de sorte s est un triplet (X;t1;t2) ou t1 et t2 sont des elements deT(X)s.En LPG, une signature peut ^etre accompagnee d'un ensemble d'equations. Toutes ces equations ont le m^eme ensemble de variables, qui sont introduites une seule fois par le mot clevariables. Ensuite, les -equations (X;t
1;t2) sont introduites par le mot cleequationset notees t
1 ==t2.
Denition 1.10
(Algebre satisfaisant une equation, -E-algebre)Soit une signature = (S;;$). On dit qu'une -algebre A satisfait une equation (X;t1;t2) si et seulement si pour toute aectation a :X
!A, a (t
1) = a (t2). Etant donne un ensemble d'equations E sur , une -E-algebreest une -algebre qui satisfait toutes les equations deE.
Denition 1.11
(Fermeture semantique d'un ensemble d'equations)Soit une signature et un ensemble d'equationsE. La fermeture semantique E de E est l'ensemble des equations sur qui sont satisfaites par toute -E-algebre.
Denition 1.12
(Extension aux termes d'un morphisme de signatures)Soit deux signatures = (S;;$) et 0 = (S0;0;$0), ainsi qu'un morphisme de signatures m : !
0. Soit un ensemble de variables X sur , dont les elements sont distincts des constantes de 0.
La traduction de X par le morphisme de signaturesm : !
0 est leS0-ensemble X# tel que pour toute sortes0 deS0,
X# s0 = [ s0 =m S (s) Xs:
1.2. SPECIFICATIONS 29
L'extension du morphisme de signatures m : !
0 est une famille indicee par S d'applications m# = (m # s : T(X)s ! T 0(X #) mS (s))s
2S. Pour toute sorte s2S, l'applicationm # s : T(X)s ! T 0(X #) mS
(s) est denie inductivement sur la structure des elements deT(X)s de la facon suivante.
8x2Xs; m # s(x) =x(x2X # mS (s)); 8!:s 1;s2;:::sn !s; 8ti2T (X)s i (i= 1;:::;n), m# s(!(t1;t2;:::;tn)) =m (!)(m # s1(t 1);m # s2(t 2);:::;m # sn(tn)): Etant donne un termet2T
(X)s, m
#(t) =m #
s(t) est appele traduction detpar m.
Exemple 1.3
Considerons le morphisme de signaturesm: M !Nat et le terme 1x deT
M(X). La traduction du terme 1
xsur M parm est le terme sur Nat m#(1
x) =m
#(1) +m#(x) = 0 +x:
Denition 1.13
(Traduction d'une equation par un morphisme de signatures) Soit deux signatures = (S;;$) et 0 = (S0;0;$0), ainsi qu'un morphisme de si-gnaturesm: !0. Soit une equation (X;t
1;t2) sur . La traduction de l'equation (X;t1;t2) par le morphisme de signaturesmest l'equation (X
#;m#(t 1);m
#(t 2)) sur la signature 0.
Exemple 1.4
Considerons par exemple l'equation (fxg;1x;x) sur la signature M. La traduction de cette equation par le morphisme de signaturesm: M !Nat est l'equation (fxg;0 +x;x) sur
Nat.
1.2 Specications
Dans ce paragraphe, nous presentons les specications algebriques, qui consistent en une signature et un ensemble de formules. Dans l'exemple des anneaux developpe dans ce chapitre, les formules que nous considerons sont uniquement des equations. Pour cette raison, nous nous contentons de denir des specications equationnelles. Nous verrons en section 1.7 que cette hypothese peut ^etre aaiblie en se placant dans le cadre general des institutions.
Denition 1.14
(Specication equationnelle) Une specication equationnelle est un couple (;E), ou est une signature et E est un ensemble de -equations.Denition 1.15
(Morphisme de specications) Un morphisme de specications entre deux specications (;E) et (0;E0) est un morphisme de signaturesm:! 0 tel que pour toute equatione
2E, m #(e)
2E
0. Rappelons que m
#(e) est la traduction de l'equationepar le morphisme de signatures m; E
0 est la fermeture semantique deE
0, c'est-a-dire l'ensemble des equations sur 0 qui sont satisfaites dans toute 0-E0-algebre.
Une autre facon de denir un morphisme de specications est d'imposer que la traduction par m# de toute equation de E appartienne a la theorie equationnelle de E0, c'est-a-dire peut ^etre deduite des equations de E0 par deduction en logique equationnelle. Il s'agit d'une denition plus syntaxique de la notion de specication. Nous avons choisi de suivre la denition donnee pour les institutions par J. Goguen et R. Burstall dans [GB90]. Dans le cadre des specications algebriques equationnelles, les deux denitions sont equivalentes puisque le systeme de deduction equationnel est complet. En eet, une equation e est satisfaite dans toute -E-algebre si et seulement si on peut deduireedes equations de E par raisonnement equationnel.
On a une categorie des specications equationnelles, notee
Spec
, dont les objets sont les specications (equationnelles) et les eches sont les morphismes de speci-cations.Exemple 1.5
La specication la plus simple est la specication vide ( ?;
?), construite sur la signature vide ?, et dont l'ensemble des equations est vide. Cette specica-tion est initiale dans la categorie des specicaspecica-tions, car pour toute specicaspecica-tion Sp, il existe un unique morphisme de specications de la specication vide vers Sp.
Voici un exemple de specication des entiers ecrit en LPG:
type Nat
sorts nat
operators 0 : -> nat
succ : nat -> nat + : nat, nat -> nat variables x, y : nat
equations 0 + y == y
s(x) + y == s(x + y)
Le langage LPG permet de specier a la fois des types, comme le type Nat, qui ont pour interpretation une algebre initiale (ou pour les types generiques une algebre libre), et des proprietes, qui ont pour interpretation une classe d'algebres satisfaisant les equations de la specication. On peut consulter [Rey87] pour avoir une descrip-tion plus detaillee de la semantique de LPG. Dans l'exemple developpe ici, nous utiliserons uniquement les proprietes, sans importation de type, ce qui signie qu'un modele ou une interpretation d'une specication est tout simplement une algebre qui satisfait les equations de la specication. Le langage LPG permet egalement de declarer des morphismes de specications. Un morphisme d'une specication Sp vers une specicationSp0 est deni au moment de la declaration du codomaine Sp0 par une instruction commencant par le mot cle
satisfies ou par le mot cle inherits. Le langage LPG permet egalement de considerer les compositions des morphismes de specications declares. Les regles de composition de ces morphismes et leur semantique associee ont ete decrits dans [BO95].
1.2. SPECIFICATIONS 31
Nous allons maintenant presenter les specications equationnelles et les mor-phismes de specications qui nous permettront de denir plusieurs specications modulaires des anneaux. Rappelons qu'un ensemble A, muni de deux operations binaires + et est un anneau si et seulement si A muni de l'operation + est un groupe commutatif, A muni de l'operation est un monode, et l'operation est distributive par rapport a l'operation +.
Nous commencons par denir deux specications Set B qui comportent unique-ment une signature et aucune equation. La specicationScontient une sorte unique s. Un modele deS est donc un ensemble quelconque.
S=
property UNE-SORTE
sorts s
La specicationB contient une sorteset un operateur binaireop. Un modele de Bconsiste donc en un ensemble muni d'une operation binaire. Nous avons egalement specie un morphisme de specications s : S ! B par la proposition satisfies UNE-SORTE[s]dans B. Le morphisme de specications s associe la sorte s de S a la sortesde B. B= property OP-BIN sorts s operators op : s, s -> s satisfies UNE-SORTE[s]
Nous denissons maintenant une specication M pour les monodes. La signa-ture de la specication M comporte une sorte s, une operation binaire *, et une constante 1. La specication M comporte egalement trois equations qui indiquent que 1 est element neutre pour *, et que * est associative. Un modele de M est donc un ensemble muni d'une operation binaire associative et d'un element neutre. Il s'agit donc bien d'un monode.
Nous avons egalement un morphisme de specications b : B ! M. Le mor-phisme b associe a la sorte s de B la sorte s de M et a l'operateur op de B l'operateur * de M. Ce morphisme de signatures est bien un morphisme de spe-cications, puisque la specication de l'operateur binaire B ne comporte aucune equation. M = property MONOIDE sorts s operators * : s, s -> s 1 : -> s variables x, y, z : s equations 1 * x == x x * 1 == x (x * y) * z == x * (y * z) satisfies OP-BIN[s,*]
Pour obtenir un groupe commutatif, nous devons ajouter une operation inverse i, et la commutativite de l'operateur binaire. Cela nous donne la specicationG.
G= property GROUPE-COMM sorts s operators + : s, s -> s 0 : -> s i : s -> s variables x, y : s equations x + y == y + x i(x) + x == 0 inherits MONOIDE[s,+,0]
Nous specions egalement un morphisme de signatures de la signature de M vers la signature de G, m : M
!
G, par la proposition
inherits MONOIDE[s,+,0]. Ce morphisme de signatures associe la sorte s de M a la sorte s de G, l'operateur * de M a l'operateur + de G, et la constante 1 de M a la constante 0 de G. Le mot cleinheritssignie que l'on \recopie" les equations de la specicationM dans la specication G via le morphisme de signatures m#. Autrement dit, G contient implicitement les equations
variables x, y, z : s equations 0 + x == x
x + 0 == x
(x + y) + z == x + (y + z) Par consequent, le morphisme de signatures m : M
!
G est un morphisme de specicationsm:M !G.
Enn, la proprieteD specie deux operateurs+et *tels que*est distributif par rapport a+, ainsi que deux morphismes de specicationsm
+;m :B !D. D = property DISTRIBUTIVITE sorts s operators +, * : s, s -> s variables x, y, z : s equations x * (y + z) == (x * y) + (x * z) satisfies OP-BIN[s,+], OP-BIN[s,*]
Les deux morphismesm+;m: B
!D sont denis par: m+( s) = s; m+( op) = +; m( s) = s; m( op) = *:
Finalement, pour resumer, nous avons declare cinq specicationsS, B,M,G,D, et cinq morphismes de specications s, b, m, m+, m. Nous pouvons evidemment
1.3. COMPOSITION DESPECIFICATIONS ENLPG 33
considerer egalement les morphismes de specications identites idS, idB, idM, idG et idD sur ces cinq specications, ainsi que toutes les compositions possibles pour les morphismes de specications. On verie facilement que l'on obtient ainsi quinze morphismes de specications dierents. Autrement dit, nous considerons une cate-gorie de specications, appeleeC
0, qui comporte ces cinq specications et ces quinze morphismes de specications. S B M G D -s b - m -?? m+ m Squelette de la categorieC 0
Nous avons deni les specications equationnelles, qui forment une categorie Spec, ainsi qu'une sous-categorie nieC
0de
Spec, que nous appellerons categorie des speci-cations de base. La categorieC
0represente l'ensemble des specications disponibles en bibliotheque. Nous nous interessons ensuite uniquement aux specications que l'on peut construire en assemblant des specications de base.
1.3 Composition de specications en LPG
Une specication modulaire est soit une specication de base, soit une speci-cation obtenue par un assemblage de plusieurs specispeci-cations modulaires. Nous parlerons de composition de specications pour decrire l'assemblage de plusieurs specications permettant de construire une specication plus complexe.
La composition de specications en LPG est realisee par ce qu'on appelle une combinaisonde specications. Pour realiser cette operation, il faut denir une signa-ture | la signasigna-ture de la specication resultat | et des morphismes de specications des specications combinees vers la specication resultat.
Nous pouvons par exemple ecrire une specication des anneaux en combinant les proprietes MONOIDE, DISTRIBUTIVITEet GROUP-COMMde la facon suivante.
A1= property ANNEAU sorts s operators +, * : s, s -> s 0, 1 : -> s i : s -> s combines MONOIDE[s,*,1], DISTRIBUTIVITE[s,+,*], GROUPE-COMM[s,+,0,i]
Semantiquement, cette combinaison signie que chaque fois qu'on a un modele de
MONOIDE, un modele de DISTRIBUTIVITEet un modele deGROUPE-COMM, tels que ces
trois modeles ont la m^eme interpretation pour la sortes, que l'operateur du monode est le second operateur de la distributivite et l'operateur du groupe commutatif est le premier operateur de la distributivite, alors on a un modele de la specication
ANNEAU. Ces partages de sorte et d'operateurs sont evidemment cruciaux. Il ne sut
pas d'avoir un monode, un groupe commutatif et deux operateurs distributifs l'un par rapport a l'autre pour avoir un anneau. Par exemple, si nous avions ecrit
combines ... DISTRIBUTIVITE[s,*,+]
a la place de
combines ... DISTRIBUTIVITE[s,+,*]
nous n'aurions pas specie un anneau. (La multiplication est distributive par rapport a l'addition, et non l'inverse.)
En LPG, les partages entre specications, en particulier lors de la construction de combinaisons de proprietes, sont exprimes de facon \implicite", par des morphismes de specications. En pratique, on voit que la sorte s est partagee par les trois
specications par l'apparition de sdans la denition des trois morphismes. combines MONOIDE[s,*,1],
DISTRIBUTIVITE[s,+,*], GROUPE-COMM[s,+,0,i]
Dans notre travail, ces partages eectues lors de la composition des specications sont exprimes par des colimites de diagrammes. La colimite est un concept de theorie des categories qui sera presente dans le chapitre 2. Cette construction permet, en particulier dans le cadre des specications algebriques, de modeliser l'assemblage de plusieurs objets en rendant explicites certains partages entre ces objets.
Dans l'exemple ci-dessus, la specication modulaireA
1 correspond a la colimite du diagramme 1. G D M B S B -mb , , , , , m+ @ @ @ @ @ R mbs -m s , , , , , bs @ @ @ @ @ R m -b 1 Voici l'interpretation intuitive de ce diagramme:
1.4. SOMMES AMALGAMEES 35
Les trois nuds etiquetes par les specications M, D et G, qui apparaissent comme des puits du graphe (aucun arc n'a pour source un nud etiquete par M, D ou G) sont les specications que l'on assemble.
Les trois nuds etiquetes par B, S et B indiquent les partages.
{ La sortesest partagee par les trois specicationsM,D etG. Ce partage est modelise par les morphismes bs : S ! M, m
s : S ! D et mbs: S!G.
{ L'operateur binaire* est partage par les specicationsM et D. Ce par-tage est modelise par les morphismesb:B!M et m
:B !D.
{ L'operateur binaire+est partage par les specicationsGetD. Ce partage est modelise par les morphismesmb:B !Get m
+:B !D.
Par la suite, nous privilegions une construction particuliere de colimite: la somme amalgamee. La somme amalgamee correspond a la colimite d'un diagramme qui ne comporte que trois specications SpA, SpB et SpC, liees par deux morphismes de specicationsf :SpA !Sp B et g:SpA !Sp C. Sp C Sp B SpA @ @ @ @ @ R g , , , , , f
La colimite de ce diagramme correspond a la composition des specicationsSpB et SpC ou les partages entre ces deux specications sont indiques par les deux mor-phismesf et g.
1.4 Sommes amalgamees
Dans cette section, nous denissons la somme amalgamee de deux ensembles, puis de deux signatures, et enn de deux specications. Autrement dit, nous presentons la somme amalgamee dans trois categories particulieres: Set(categorie des ensembles), Sig (categorie des signatures) et Spec (categorie des specications). La denition generale sera revue dans le chapitre 2.
1.4.1 Somme amalgamee de deux ensembles
Considerons trois ensemblesA, B, et C, ainsi que deux applicationsf : A!B et g:A!C. Intuitivement, faire la somme amalgamee de B et C par rapport a f et g consiste a faire l'union disjointe de B et C et a fusionner les elements qui sont images par f et g d'un m^eme element ade A.
Plus formellement, on peut denir la somme disjointe deB et C par l'ensemble B+C = (f1gB)[(f2gC):
Il y a evidemment un choix de codage dans cette denition. L'idee est de faire la reunion des deux ensembles B et C apres avoir renomme les elements communs aux deux ensembles. Nous avons egalement deux applications i
1 : B ! B+C et i 2: C !B+C denies par i 1 : B ! B+C b 7! (1;b) i 2 : C ! B+C c 7! (2;c) Puis on denit une relationR sur l'ensembleB+C:
R=f((1;f(a));(2;g(a))) ; 8a2Ag:
On considere ensuite la relation d'equivalence R engendree par R et l'ensemble quotientP = (B+C)=R. On a une application de projectionp:B+C!P, qui a tout element de B+C associe sa classe d'equivalence moduloR.
C B A @ @ @ @ R g , , , , f B+C , , , , i 1 @ @ @ @ R i 2 P -p P P P P P P P P P P P P P P P P q 1 & 1( P) & 2( P) Notations
L'ensembleP est notepush(A;B;C ;f;g). L'applicationpi
1:
B !P est notee & 1(
A;B;C ;f;g). L'applicationpi
2:
C !P est notee & 2(
A;B;C ;f;g).
Pour alleger un peu les notations, siP push(A;B;C ;f;g), nous ecrirons { &
1(
P) a la place de& 1(
1.4. SOMMES AMALGAMEES 37 { & 2( P) a la place de & 2( A;B;C ;f;g). Denition 1.16 (Somme amalgamee dansSet)
La somme amalgamee de B et C par rapport af et g est le triplet (push(A;B;C ;f;g);&
1(
A;B;C ;f;g);& 2(
A;B;C ;f;g)):
Par abus de langage, l'ensemble push(A;B;C ;f;g) sera egalement appele somme amalgamee. Il ne faut pas oublier qu'en realite les deux applications&
1(
A;B;C ;f;g) et &
2(
A;B;C ;f;g) font partie de la denition d'une somme amalgamee.
Nous formulons maintenant la propriete generale des sommes amalgamees en theorie des categories. Nous reverrons cette propriete dans le chapitre 2.
Propriete1.1 (Propriete caracteristique des sommes amalgamees) Une somme amalgamee
(push(A;B;C ;f;g);& 1(
A;B;C ;f;g);& 2(
A;B;C ;f;g)) satisfait les proprietes suivantes.
1. & 1(
A;B;C ;f;g)f =& 2(
A;B;C ;f;g)g; 2. pour tout objet D et eches f
0 : B !D, g 0 : C !D telles que f 0 f =g 0 g, il existe une eche unique u:push(A;B;C ;f;g) !D telle que
u& 1( A;B;C ;f;g) =f 0 u& 2( A;B;C ;f;g) =g 0 : C B A @ @ @ @ R g , , , , f P , , , , & 1( P) @ @ @ @ R & 2( P) D -u P P P P P P P P P P P P P P P P q 1 f 0 g 0
Dans la categorie des ensemblesSet, les objets sont les ensembles, et les eches sont les applications entre deux ensembles. La propriete 1.1 se reformule donc de la facon suivante:
1. & 1(
A;B;C ;f;g)f =& 2(
A;B;C ;f;g)g
(Il s'agit d'une egalite entre deux applications deA vers push(A;B;C ;f;g).) 2. Pour tout ensemble D et applications f
0 : B ! D, g 0 : C ! D telles que f 0 f =g 0
g, il existe une application uniqueu:push(A;B;C ;f;g) !D telle que u& 1( A;B;C ;f;g) =f 0 u& 2( A;B;C ;f;g) =g 0 :
Exemple 1.6
SoitA=fa 1 ;a 2 g, B =fx;y;zg et C =fxg. Soit f =f(a 1 ;x);(a 2 ;y)g et g=f(a 1 ;x);(a 2 ;x)g. B+C =f(1;x);(1;y);(1;z);(2;x)g P =push(A;B;C ;f;g) =ff(1;x);(1;y);(2;x)g ;f(1;z)g g & 1( P)(x) =& 1( P)(y) =f(1;x);(1;y);(2;x)g & 1( P)(z) =f(1;z)g & 2( P)(x) =f(1;x);(1;y);(2;x)g A C B P @ @ @ @ @ @ @ @ R Q Q Q Q Q Q Q Q s g , , , , , , , , , , , , , , , , f , , , , , , , , @ @ @ @ @ @ @ @ R & 1( P) @ @ @ @ @ @ @ @ R Q Q Q Q Q Q Q Q s & 2( P)Remarque 1.2
Nous avons en realite deni ici un codage de la somme amalgamee pour les ensembles. Dans la theorie des categories, la somme amalgamee est de-nie a un isomorphisme pres. Dans l'exemple 1.6, en prenant pour P un ensemble quelconque a deux elements, la propriete 1.1 est encore veriee.1.4. SOMMES AMALGAMEES 39
1.4.2 Somme amalgamee de deux signatures
Nous denissons la somme amalgamee de deux signatures a partir de la denition de la somme amalgamee de deux ensembles. Soit trois signatures
A= ( S A ; A ;$ A) B= ( S B ; B ;$ B) C = ( S C ; C ;$ C) et deux morphismes de signatures
f = (f S ;f ) : A ! B g= (g S ;g ) : A ! C : On denit la signature P = ( S P ; P ;$
P), somme amalgamee des signatures B et C par rapport aux morphismes
f : A ! B et g: A ! C de la facon suivante. L'ensemble S
P est la somme amalgamee des ensembles S B et S C par rapport a f S et g S. Autrement dit, S P = push(S A ;S B ;S C ;f S ;g S) :
L'ensemble P est la somme amalgamee des ensembles B et C par rapport a f et g . Autrement dit, P = push( A ; B ; C ;f ;g ) : Il reste a denir$ P : P !S +
P pour obtenir la signature
P. On a l'egalite & 1( S P) + $ B f = & 2( S P) + $ C g : En eet, & 1( S P) + $ B f = & 1( S P) + f S+ $ A ( f : A ! B morphisme de signatures) = (& 1( S P) f S)+ $ A ( + foncteur) = (& 2( S P) g S)+ $
A (propriete des sommes amalgamees) = & 2( S P) + g S+ $ A ( + foncteur) = & 2( S P) + $ C g ( g: A ! C morphisme de signatures) donc, comme P = push( A ; B ; C ;f ;g
) et d'apres la propriete caracteristique des sommes amalgamees, il existe une unique application$
P : P !S + P telle que $ P & 1(P) = & 1( S P) + $ B (1) $ P & 2(P) = & 2( S P) + $ C (2) On pose push( A ; B ; C ;f;g) = P; & 1(P) = & 1(A ; B ; C ;f;g) = (& 1( S P) ;& 1(P)); & 2(P) = & 2(A ; B ; C ;f;g) = (& 2( S P) ;& 2(P)) : D'apres les egalites (1) et (2) ci-dessus,&
1(P) et &
2(P) sont bien des morphismes de signatures.
Theoreme 1.2
Le triplet (push( A;B;C;f;g); & 1(A;B;C;f;g); & 2(A;B;C;f;g)) est une somme amalgamee dans la categorie des signaturesSig
.Preuve. On verie facilement que la propriete 1.1 est satisfaite. 2
Exemple 1.7
Considerons les signatures S, M et G correspondant respective-ment aux specicationsS,M etG(proprietesUNESORTE,MONOIDEetGROUPE COMM). Nous avons egalement deux morphismes de signaturesbs:S ! M et m bs: S ! G.
Une somme amalgamee de M et G par rapport ab
set mbsest la signature P suivante: sorts s operators +, * : s, s -> s 0, 1 : -> s i : s -> s On doit fusionner la sorte s de
M avec la sorte
s de
G. Remarquons que nous n'avons pas ete obliges de renommer certaines sortes ou operateurs. En eet, les deux sortes a fusionner ont le m^eme nom dans les deux signatures M et G, et les operateurs que l'on doit distinguer ont des noms distincts dans les deux signatures. Finalement comme la signature partagee S est l'intersection des signatures M et G, et comme les deux morphismes de signatures sont les inclusions correspondantes, la somme amalgamee P est la reunion de M et G.
1.4.3 Somme amalgamee de deux specications
On denit la somme amalgamee de deux specications de facon similaire: la signature de la specication resultat est la somme amalgamee des signatures, et l'ensemble des equations de la specication resultat est \l'union" (apres traduction) des equations des deux specications.
Soit trois specications
SpA= (A;EA) SpB = (B;EB) SpC = (C;EC) et deux morphismes de specications
f :SpA !Sp B g:SpA !Sp C:
On denit la specicationSpP = (P;EP) somme amalgamee des specicationsSpB et SpC par rapport aux morphismes de specications f et g de la facon suivante. La signature P est la somme amalgamee des signatures:
P =
push(