• Aucun résultat trouvé

Analyse de la complexité des programmes par interprétation sémantique

N/A
N/A
Protected

Academic year: 2021

Partager "Analyse de la complexité des programmes par interprétation sémantique"

Copied!
187
0
0

Texte intégral

(1)

HAL Id: tel-01752904

https://tel.archives-ouvertes.fr/tel-01752904v2

Submitted on 16 Sep 2008

HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci- entific research documents, whether they are pub-

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,

interprétation sémantique

Romain Pechoux

To cite this version:

Romain Pechoux. Analyse de la complexité des programmes par interprétation sémantique. In-

formatique [cs]. Institut National Polytechnique de Lorraine - INPL, 2007. Français. �NNT :

2007INPL084N�. �tel-01752904v2�

(2)

Ecole doctorale IAEM Lorraine ´

Analyse de la complexit´ e des programmes par interpr´ etation s´ emantique

TH` ESE

pr´ esent´ ee et soutenue publiquement le 14 novembre 2007

pour l’obtention du

Doctorat de l’Institut National Polytechnique de Lorraine

(sp´ ecialit´ e informatique)

par

Romain P´ echoux

Composition du jury

Rapporteurs : Roberto Amadio Professeur, Universit´ e Paris VII

Neil Jones Professeur, DIKU, University of Copenhagen

Examinateurs : Patrick Baillot Charg´ e de Recherche, CNRS Claude Kirchner Directeur de Recherche, INRIA

Jean-Yves Marion Professeur, ´ Ecole des Mines de Nancy, INPL Simona Ronchi Della Rocca Professeur, Universit` a di Torino

Paul Zimmermann Directeur de Recherche, INRIA

(3)
(4)

J’aimerais remercier de nombreuses personnes pour avoir contribu´ e, ` a titres divers, ` a l’´ elaboration de ce document. J’adresse donc des remerciements les plus chaleureux et sinc` eres :

– ` A Cl´ emence, mon ´ epouse, pour m’avoir soutenu pendant ces trois ann´ ees de th` ese.

– ` A mon directeur de th` ese, Jean-Yves Marion pour m’avoir encourag´ e et pour avoir su me donner de bonnes pistes et intuitions de recherche.

– ` A Roberto Amadio et ` a Neil Jones qui ont accept´ e d’ˆ etre les rapporteurs de mon manuscrit.

– Aux autres membres de mon jury de th` ese, Patrick Baillot, Claude Kirchner, Luigi Liquori, Simona Ronchi Della Rocca et Paul Zimmermann.

– ` A tous les membres de ma famille, mes parents et ma soeur.

– Aux membres de l’´ equipe CARTE avec lesquels j’ai pu ´ echanger des id´ ees, Guillaume Bonfante, Olivier Bournez, Johanne Cohen et Isabelle Gnaedig.

– Aux membres du projet ACI CRISS avec lesquels j’ai travaill´ e entre 2004 et 2006.

– Aux diff´ erents coll` egues de bureau, que j’ai cˆ otoy´ es pendant cette th` ese et qui ont toujours contribu´ e ` a maintenir une ambiance chaleureuse (et studieuse) sur notre lieu de travail. Dans l’ordre chronologique, Jean-Yves Moyen, Matthieu Kaczma- rek, Marco Gaboardi, Emmanuel Hainry, Daniel Gra¸ ca, Anne Bonfante et Octave Boussaton, ainsi qu’` a tous les coll` egues de l’´ equipe PROTHEO, Germain, Florent, Antoine, Colin et ` a S´ ebastien de l’´ equipe PAROLE.

– ` A tous mes autres amis dont la bande de l’ ´ Ecole des Mines, Charles (× 2), Blandine, Emeline, Fred, Domi, Fabrice et Nadim, et le gang des dentistes, Soph, Jul, S´ ´ eb, Nat, Gillou, Pat et Julie.

– ` A mes coll` egues enseignants, dont Azim Roussanaly, Antoine Tabbone et Odile

Thiery, qui m’ont encadr´ e et conseill´ e au cours des trois ann´ ees de monitorat que

j’ai effectu´ ees ` a l’UFR de Math´ ematiques et d’Informatique de l’Universit´ e de Nancy

2.

(5)
(6)

Remerciements i

Introduction 3

I Les quasi-interpr´ etations 11

I.1 D´ efinitions . . . . 14

I.1.1 Syntaxe des programmes fonctionnels au premier ordre . . . . 14

I.1.2 S´ emantique des programmes fonctionnels au premier ordre . . . . 15

I.1.3 Pr´ ec´ edence . . . . 17

I.1.4 Arbre des appels . . . . 17

I.1.5 Assignations partielles . . . . 18

I.1.6 Quasi-interpr´ etations . . . . 19

I.2 Propri´ et´ es des quasi-interpr´ etations . . . . 22

I.2.1 Machines de Turing et classes de complexit´ e polynomiales . . . . . 22

I.2.2 Lemme fondamental . . . . 23

I.2.3 Ordres r´ ecursifs sur les chemins . . . . 26

I.2.4 Une caract´ erisation de FPtime . . . . 28

I.2.5 Une caract´ erisation de FPspace . . . . 31

I.3 Synth` ese de quasi-interpr´ etations . . . . 34

I.3.1 D´ efinition . . . . 35

I.3.2 D´ ecidabilit´ e du probl` eme de la synth` ese sur Max-Poly { R + } . . . 37

I.3.3 Synth` ese de quasi-interpr´ etations Max-Plus . . . . 41

I.4 Modularit´ e des quasi-interpr´ etations . . . . 49

I.4.1 Union disjointe . . . . 50

I.4.2 Union ` a constructeurs partag´ es . . . . 52

I.4.3 Union hi´ erarchique . . . . 56

I.5 Application ` a d’autres langages de programmation . . . . 67

I.5.1 Application ` a la v´ erification de bytecode . . . . 67

I.5.2 Application ` a des syst` emes de threads concurrents et interactifs . . 68

I.5.3 Application ` a des programmes d’ordre sup´ erieur . . . . 69

I.6 Conclusion . . . . 72

II Les sup-interpr´ etations 73 II.1 D´ efinitions . . . . 76

II.1.1 Adjonction d’op´ erateurs . . . . 76

II.1.2 Fraternit´ es . . . . 77

II.1.3 Assignations partielles . . . . 78

(7)

II.1.4 Sup-interpr´ etations . . . . 79

II.1.5 Poids . . . . 81

II.2 Crit` eres permettant le contrˆ ole des ressources en espace . . . . 82

II.2.1 Crit` ere quasi-amical . . . . 82

II.2.2 Crit` ere pour les programmes non-terminants . . . . 90

II.2.3 Crit` ere pour les algorithmes de type « diviser pour r´ egner » . . . . 96

II.3 Application aux travaux pr´ ec´ edents . . . 100

II.3.1 Comparaison avec les quasi-interpr´ etations . . . 100

II.3.2 Application aux paires de d´ ependance . . . 103

II.3.3 Application au size-change principle . . . 107

II.4 Une caract´ erisation des classes de complexit´ e NC k . . . 110

II.4.1 Rappels sur ALogTime, NC k et NC . . . 110

II.4.2 Programmes arborescents et sympathiques . . . 114

II.4.3 Caract´ erisations de ALogTime, NC k et NC . . . 119

II.5 Synth` ese de sup-interpr´ etations . . . 130

II.5.1 Synth` ese avec propri´ et´ e sous-terme . . . 130

II.5.2 Synth` ese sans propri´ et´ e sous-terme . . . 130

II.6 Conclusion . . . 132

III Extension des sup-interpr´ etations ` a un langage orient´ e objet 135 III.1 Programmation orient´ ee objet . . . 137

III.1.1 Syntaxe des programmes . . . 137

III.1.2 S´ emantique . . . 140

III.2 Sup-interpr´ etations et poids . . . 142

III.2.1 Assignations . . . 142

III.2.2 Sup-interpr´ etations . . . 144

III.2.3 Poids . . . 147

III.3 Crit` ere fraternel . . . 148

III.3.1 D´ efinition . . . 148

III.3.2 Propri´ et´ es des programmes fraternels . . . 150

III.4 Synth` ese de sup-interpr´ etations . . . 153

III.4.1 Poids d’une m´ ethode . . . 153

III.4.2 M´ ethodes fraternelles . . . 153

III.5 Caract´ erisations de classes de complexit´ e . . . 155

III.5.1 Une caract´ erisation de FPspace . . . 155

III.5.2 Une caract´ erisation de FPtime . . . 157

III.6 Conclusion . . . 159

Conclusion 161

Bibliographie 163

Index 175

(8)

Je n’ai pas besoin de m’occuper de ce que je ferai plus tard. Je devais faire ce que j’ai fait. Je n’ai pas besoin de d´ ecouvrir quelles choses je d´ ecouvrirai plus tard. Dans la nouvelle science, chaque chose vient ` a son tour, telle est son excellence.

(Lautr´ eamont, Po´ esies II)

Le pr´ esent ouvrage ´ etudie l’analyse de la complexit´ e des programmes par interpr´ eta- tions s´ emantiques ; c’est-` a-dire le contrˆ ole des ressources utilis´ ees par des programmes

`

a l’aide d’un outil sp´ ecifique, les interpr´ etations s´ emantiques. Dans cette introduction, nous cherchons ` a motiver l’objet d’une telle ´ etude en partant de la notion tr` es g´ en´ erale de « besoins humains », puisque le contrˆ ole des ressources s’inscrit dans une volont´ e de satisfaire efficacement un besoin. Nous pr´ esenterons la notion de ressources infor- matiques qui permet de satisfaire tous les besoins humains li´ es ` a l’utilisation de l’outil informatique. Nous introduirons ensuite la th´ eorie de la complexit´ e qui permet la mise en place d’une ´ etude formelle des ressources informatiques. Puis, nous plongerons un peu plus dans les d´ etails en dressant un ´ eventail des diff´ erentes m´ ethodes permettant de contrˆ oler les ressources d’un programme. Enfin, nous pr´ esenterons notre d´ emarche sur l’´ etude des ressources ` a l’aide d’interpr´ etations s´ emantiques en donnant une trame narrative ` a laquelle le lecteur pourra se r´ ef´ erer.

Les besoins humains :

La notion de besoin r´ esulte de l’interaction entre un individu et son environnement.

Les sociologues ont pris l’habitude de classifier les besoins humains en deux cat´ egories principales :

– Les besoins primaires ou physiologiques qui repr´ esentent les besoins indispensables

`

a la survie de l’Homme comme la respiration ou encore la reproduction de l’esp` ece.

– Les besoins secondaires ou mat´ eriels qui rassemblent tous les besoins qui ne sont pas indispensables ` a la survie de l’Homme comme la programmation ou la recherche du minimum d’une fonction.

Cette classification reste cependant tr` es subjective, et, est donc sujette ` a controverses

puisqu’elle d´ epend fortement du contexte ´ economique et social des individus. En carica-

turant l´ eg` erement, on peut consid´ erer que l’acc` es ` a un ordinateur est en passe de devenir

un besoin primaire dans les soci´ et´ es occidentales tandis qu’il repr´ esente un besoin secon-

(9)

daire pour les indiens Pataxo ou les pygm´ ees Mbuti.

Le psychologue am´ ericain Abraham Maslow a affin´ e cette hi´ erarchie des besoins dans un diagramme pyramidal pr´ esent´ e dans la figure suivante :

physiologique s´ ecurit´ e amour, appartenance

estime des autres estime de soi accomplissement personnel

Pyramide des besoins de Maslow

D’apr` es lui, l’Homme cherche ` a satisfaire prioritairement les besoins d’un niveau inf´ e- rieur de la pyramide avant de s’int´ eresser aux niveaux sup´ erieurs. De bas en haut de la pyramide, on trouve :

– Les besoins physiologiques qui correspondent au maintien des fonctions vitales ap- pel´ e aussi hom´ eostasie. Claude Bernard la d´ efinit comme ´ etant « l’ ´ equilibre dyna- mique qui nous maintient en vie ».

– Le besoin de s´ ecurit´ e qui correspond ` a la n´ ecessit´ e pour l’individu d’assurer son int´ egrit´ e physique et son int´ egrit´ e morale.

– Le besoin d’appartenance qui s’inscrit dans la volont´ e de l’individu de communiquer et d’appartenir ` a un groupe social.

– Les besoins d’estime qui correspondent ` a une n´ ecessit´ e d’ˆ etre respect´ e, de se respec- ter et de respecter les autres. On peut constater que l’estime des autres l’emporte en g´ en´ eral sur l’estime de soi.

– Enfin, le dernier besoin est un besoin d’auto-r´ ealisation qui se traduit par un goˆ ut de l’apprentissage et la volont´ e de participer ` a des activit´ es totalement d´ esint´ eress´ ees.

Les besoins qui se cachent derri` ere l’usage de l’outil informatique sont, pour la plupart,

des besoins d’appartenance et de s´ ecurit´ e. Ils correspondent globalement aux utilisations

personnelle et professionnelle de l’informatique. Le d´ eveloppement des technologies de la

communication et de l’information et en particulier d’Internet, ` a la fin du si` ecle dernier,

est r´ ev´ elateur d’une tentative de satisfaction du besoin d’appartenance. Les internautes

ont pu communiquer par mail ou partager leurs opinions sur les forums et autres sites

de chat. Derri` ere leurs buts premiers, les blogs et les communaut´ es de d´ eveloppement de

logiciels (on peut penser ` a sourceforge.net) ou de jeux en ligne cachent une r´ eelle volont´ e

d’afficher son appartenance ` a un groupe social. Le besoin de s´ ecurit´ e en Informatique est,

quant ` a lui, intimement li´ e ` a la mise en application des outils informatiques ` a l’´ echelle

industrielle. Par exemple, l’utilisateur veut ´ eviter qu’un logiciel embarqu´ e bogue par

manque d’espace m´ emoire. Il veut ´ eviter toute intrusion d’un utilisateur anonyme dans

une base de donn´ ees confidentielle ou, encore, il veut crypter un message ` a envoyer afin

(10)

dans nos soci´ et´ es puisqu’il s’´ etend d´ esormais aux utilisations personnelle et familiale de l’ordinateur : Aujourd’hui, la grande majorit´ e des ordinateurs vendus dans le commerce est ´ equip´ ee d’un antivirus qui permet de se pr´ emunir d’´ eventuelles attaques du monde ext´ erieur.

Les ressources informatiques :

La notion de besoin est ´ etroitement li´ ee ` a celle de ressource. En ´ economie, la ressource correspond aux « moyens mat´ eriels dont dispose un pays, une r´ egion, une collectivit´ e ».

Ainsi, les ressources repr´ esentent les moyens qui vont permettre la satisfaction du be- soin. Cependant, la notion de ressource est plus restrictive que celle de besoin puis- qu’elle d´ enote en plus la finitude des moyens dont on dispose. Car les ressources sont limit´ ees, et l’Homme se doit de les exploiter convenablement pour satisfaire ses besoins et ainsi produire de la valeur. En informatique, les ressources repr´ esentent « l’ensemble des moyens dont dispose un ordinateur pour ex´ ecuter un ou plusieurs programmes ».

Les ressources informatiques sont diverses et d´ ependent en g´ en´ eral du mat´ eriel et de ses limites physiques. L’informatique th´ eorique a mod´ elis´ e l’ensemble de ces contraintes physiques comme des ressources de temps et d’espace. Ces deux ressources sch´ ematisent toutes les restrictions mat´ erielles ` a l’´ echelle humaine. La ressource en temps va cor- respondre ` a l’ex´ ecution en temps fini d’un programme. Par exemple, un utilisateur va vouloir que son programme termine en lui retournant un r´ esultat en un temps plus ou moins raisonnable. Cependant, elle n’est pas toujours pertinente. Par exemple, un sys- t` eme d’exploitation va s’ex´ ecuter en continu apr` es que l’ordinateur a ´ et´ e mis sous tension et il serait dommageable qu’il s’arrˆ ete au bout d’un temps donn´ e puisqu’il doit prendre en charge le bon fonctionnement de tous les autres programmes. De ce point de vue l` a, les ressources en espace sont beaucoup plus int´ eressantes que les ressources en temps puisque leur pertinence ne d´ epend pas du type de programme consid´ er´ e. L’ordinateur dispose de supports de m´ emorisation, comme le disque dur et la m´ emoire vive, et leur capacit´ e de stockage est physiquement limit´ ee. Ainsi il sera n´ ecessaire de contrˆ oler la m´ emoire de certaines applications afin d’´ eviter des bogues ou des attaques. Par exemple, si l’on int` egre un logiciel embarqu´ e dans une automobile, quelle garantie poss` ede-t-on sur le fait que le logiciel ne d´ epassera pas la quantit´ e m´ emoire maximale disponible lors de son ex´ ecution. De telles probl´ ematiques sont primordiales dans des domaines ` a forts enjeux strat´ egiques et financiers, comme l’a´ erospatial et l’armement, mais elles tendent aussi ` a le devenir dans notre quotidien. Que faire si ma voiture ne r´ epond plus ou si mon t´ el´ ephone portable bogue apr` es le t´ el´ echargement et l’ex´ ecution d’un jeu Java ?

La th´ eorie de la complexit´ e :

La th´ eorie de la complexit´ e a ´ et´ e introduite afin de proposer un cadre formel permet-

tant de r´ epondre ` a ce type de questions. Elle correspond ` a l’´ etude de la difficult´ e des

probl` emes informatiques en utilisant une notion de mesure de complexit´ e [Blu67] et se

doit de :

(11)

– d´ efinir clairement cette notion de mesure de complexit´ e qui va permettre de quan- tifier les ressources ` a maˆıtriser.

– permettre le calcul de la complexit´ e d’un programme relativement ` a la mesure de complexit´ e en consid´ eration.

– ´ etudier la complexit´ e des programmes ind´ ependamment du mod` ele de calcul en consid´ eration ; c’est-` a-dire ind´ ependamment de la machine utilis´ ee pour effectuer les calculs.

Car la richesse de l’informatique est intimement li´ ee ` a la diversit´ e des machines et des mod` eles de calcul ` a disposition. En g´ en´ eral, la th´ eorie de la complexit´ e utilise les machines de Turing [Tur36] comme mod` ele fondamental. Les ouvrages suivants [Jon97, Pap94]

comparent d’autres mod` eles aux machines de Turing tout en donnant une vision tr` es d´ etaill´ ee de la th´ eorie de la complexit´ e. Les machines de Turing demeurent n´ eanmoins le mod` ele de calcul le plus populaire pour des raisons scientifiques et historiques et seront d´ ecrites en d´ etail en section I.2. En substance, elles sont constitu´ ees de un ou plusieurs rubans 1 permettant de m´ emoriser les symboles d’un alphabet donn´ e dans diff´ erentes cases m´ emoire et d’un ´ etat permettant de mod´ eliser l’´ etat courant de la machine. Une

´ etape du calcul correspond ` a un changement d’´ etat courant et ` a l’´ ecriture d’un nouveau symbole, parfois identique, dans une case de chaque ruban. La complexit´ e en temps d’un calcul est d´ efini comme le nombre d’´ ecritures d’un symbole durant un calcul tandis que la complexit´ e en espace correspond au nombre maximal de cases m´ emoire utilis´ e pendant le calcul. Il est d’usage d’utiliser diff´ erentes classes de fonctions, par exemple l’ensemble des fonctions polynomiales ou l’ensemble des fonctions exponentielles, afin de hi´ erarchiser la complexit´ e de diff´ erents probl` emes dans ce que l’on nomme classe de complexit´ e. Par probl` eme, on sous-entend probl` eme de d´ ecision ; c’est-` a-dire une question math´ ematique que l’on peut r´ esoudre en r´ epondant par l’affirmative ou par la n´ egative.

L’ensemble des probl` emes pouvant ˆ etre r´ esolus par une Machine de Turing poss´ edant une complexit´ e en temps born´ ee par un polynˆ ome en les entr´ ees est appel´ e Ptime tandis que l’ensemble des probl` emes pouvant ˆ etre r´ esolus par une Machine de Turing poss´ edant une complexit´ e en espace born´ ee par un polynˆ ome en les entr´ ees est appel´ e Pspace . La diversit´ e des classes de complexit´ e ´ etudi´ ees dans la litt´ erature est impressionnante. Elle d´ epend des diff´ erentes notions de mesure de complexit´ e ´ etablies et de la multitude de mod` eles de calcul existants. Le calcul quantique est un exemple de mod` ele de calcul plus

´ esot´ erique que la simple Machine de Turing. Par ailleurs, les machines de Turing peuvent ˆ etre ´ etendues au non-d´ eterminisme ou ` a des mod` eles randomis´ es. Le non-d´ eterminisme correspond ` a la possibilit´ e pour la machine d’effectuer un choix ` a chaque ´ etape du calcul.

La machine calcule un probl` eme de mani` ere non-d´ eterministe si au moins une suite de choix permet de r´ esoudre le probl` eme. On d´ efinit de mani` ere analogue les classes NPtime et NPspace pour les machines de Turing non-d´ eterministes. Ces diff´ erentes classes de probl` emes permettent l’obtention d’une hi´ erarchie de probl` emes :

Ptime ⊆ NPtime ⊆ Pspace = NPspace

1

Le calcul d’une machine ` a plusieurs rubans diff` ere beaucoup du calcul effectu´ e par une machine ` a un

seul ruban.

(12)

plus petites ou plus grandes [Pap94], par exemple, en utilisant des machines de Turing alternantes. Elle permet aussi de dresser un comparatif entre le pouvoir de calcul de diff´ erents mod` eles de calcul. Des probl` emes particuli` erement int´ eressants de la th´ eorie de la complexit´ e, appel´ es probl` emes de s´ eparation, consistent ` a d´ eterminer si, pour deux classes de complexit´ e A et B donn´ ees, on peut d´ emontrer que A ⊂ B . Un tel r´ esultat d´ emontre que les probl` emes de la classe A sont strictement « plus faciles » que les pro- bl` emes de la classe B . De nombreux probl` emes de s´ eparation sont encore ouverts comme le fameux Ptime = ? NPtime pour ne citer que lui. Les probl` emes de d´ ecision ´ etant relativement limit´ es, on ´ etend la notion de classe de complexit´ e ` a la notion de probl` eme en g´ en´ eral (ou de fonctions), d´ efinissant de la sorte des classes de complexit´ e telles que FPtime , l’ensemble des fonctions calculables par par une Machine de Turing poss´ edant une complexit´ e en temps born´ ee par un polynˆ ome en les entr´ ees. On a l’inclusion ´ evi- dente suivante Ptime ⊆ FPtime puisque tout probl` eme de d´ ecision est une fonction particuli` ere. ´ Etant donn´ e un mod` ele de calcul raisonnable, on appelle caract´ erisation d’une classe de complexit´ e A une restriction d’un mod` ele de calcul de sorte qu’une fonc- tion est calcul´ ee dans A si et seulement si elle est calcul´ ee par la restriction du mod` ele de calcul. Parmi les plus c´ el` ebres, citons les travaux de Cobham [Cob62] qui caract´ e- risent FPtime ` a l’aide d’une alg` ebre de fonctions. On dit alors que la caract´ erisation est machine-ind´ ependante puisqu’elle ne d´ epend pas d’un mod` ele de calcul mais d’une al- g` ebre de fonctions. Soient F un ensemble de fonctions et O un ensemble d’op´ erations, une alg` ebre de fonctions se d´ efinit comme ´ etant le plus petit ensemble contenant les fonctions initiales de F et stable par les op´ erations de O. On la note [F; O]. Cobham a d´ emontr´ e que l’alg` ebre de fonctions h

0, S 0 , S 1 , π j k , #; COMP, BRN i

caract´ erise exactement FPtime , o` u 0 : N → N est la fonction constante v´ erifiant ∀y ∈ N , 0(y) = 0, S i : N → N est la fonction successeur v´ erifiant ∀y ∈ N , S i (y) = 2×y +i, π j k est la j-i` eme projection d’un k- uplet v´ erifiant π k j (y 1 , ..., y k ) = y j et # est la fonction v´ erifiant ∀x, y ∈ N , x#y = 2 |x|×|y|

et o` u les op´ erations COMP et BRN sont d´ efinies respectivement par :

COMP(g, h)(y 1 , · · · , y k ) = g(h 1 (y 1 , · · · , y k ), . . . , h n (y 1 , · · · , y k )) BRN(g 0 , g 1 , h 0 , h 1 , k)(0, y) = g 0 (y)

BRN(g 0 , g 1 , h 0 , h 1 , k)(1, y) = g 1 (y)

BRN(g 0 , g 1 , h 0 , h 1 , k)(S 0 (x), y) = h 0 (x, y, BRN(g 0 , g 1 , h 0 , h 1 , k)(x, y)) BRN(g 0 , g 1 , h 0 , h 1 , k)(S 1 (x), y) = h 1 (x, y, BRN(g 0 , g 1 , h 0 , h 1 , k)(x, y)) avec BRN(g 0 , g 1 , h 0 , h 1 , k)(x, y) ≤ k(x, y)

Etudes de la complexit´ ´ e des programmes :

Ce pr´ ec´ edent r´ esultat peut ˆ etre vu comme la pierre angulaire de nos travaux. S’il a le

m´ erite de d´ efinir une base solide pour l’´ etude de la complexit´ e des programmes, il limite

en pratique l’´ etude des programmes puisqu’il requiert la connaissance pr´ ealable d’une

borne sup´ erieure sur les ressources utilis´ ees, en l’occurrence la borne k dans le sch´ ema de

(13)

r´ ecurrence BRN. En d’autres termes, on d´ esire que l’analyse effectu´ ee soit d´ ecidable afin que l’on puisse l’automatiser. Une esquisse de r´ eponse ` a cet inconv´ enient est apport´ ee par les diff´ erents types d’analyse statique de la complexit´ e des programmes. L’analyse statique de la complexit´ e d’un programme permet d’´ etudier un programme avant son ex´ ecution et de garantir des propri´ et´ es sur les ressources qu’il va utiliser pendant son ex´ ecution. Afin d’´ eviter tout recours ` a une borne sup´ erieure comme dans les travaux pr´ esent´ es ci-dessus, des caract´ erisations syntactiques des classes de complexit´ e appel´ ees analyses pr´ edicatives de la r´ ecurrence ont ´ et´ e propos´ ees comme la safe recursion [BC92], comme dans le lambda-calcul [LM93] ou comme le data tiering [Lei94]. Le principe fon- damental de ces caract´ erisations est de remplacer la borne sup´ erieure sur les fonctions calcul´ ees par des sch´ emas de r´ ecurrence plus restrictifs. Cette restriction ´ etablit une hi´ e- rarchie entre les fonctions et porte sur les arguments des appels r´ ecursifs qui ne peuvent plus ˆ etre utilis´ es comme arguments de r´ ecurrence d’une fonction de niveau inf´ erieur.

De telles caract´ erisations sont tr` es ´ el´ egantes mais poss` edent l’inconv´ enient d’avoir une faible intensionnalit´ e, c’est-` a-dire de caract´ eriser un nombre assez faible d’algorithmes naturels. La notion d’intensionnalit´ e sera d´ etaill´ ee plus amplement dans l’introduction du chapitre I. Les travaux suivants permettent de combler en partie cette lacune tout en restant d´ ecidables :

– Des ´ etudes descendant de la Logique Lin´ eaire de Girard [Gir87] fournissent diff´ e- rentes caract´ erisations de Ptime , par Girard et al. [Laf04, Gir98, GSS92], par Baillot et Mogbil [BM04] ou par Gaboardi et Ronchi Della Rocca [GRDR07], en utilisant des logiques ou des r` egles de typage restreintes.

– Dans [Hof00], Hofmann a introduit un type de ressource atomique et utilise un syst` eme de types lin´ eaires. Leur combinaison permet de contrˆ oler les ressources des programmes ` a l’ordre sup´ erieur.

– Les travaux de Fagin [Fag73], Jones [Jon00], Goerdt [Goe92], Gurevich [Gur83]

et Sazonov [Saz80] permettent de caract´ eriser diff´ erentes classes de complexit´ e et d’´ etudier la complexit´ e des programmes ` a l’aide de mod` eles finis. Nous conseillons vivement au lecteur int´ eress´ e par ce domaine de recherche de lire l’ouvrage sui- vant [Imm99].

– Une autre approche concerne l’´ etude des langages imp´ eratifs soit ` a l’aide de restric- tions sur les boucles [Nig98, Nig00, KN04] par Niggl et al., soit ` a l’aide de conditions restrictives sur une alg` ebre de matrices [NW06, KJ06].

– Enfin la derni` ere approche concerne l’´ etude des programmes ` a l’aide d’interpr´ eta-

tions et, en particulier, de quasi-interpr´ etations et de sup-interpr´ etations. La no-

tion de quasi-interpr´ etation a ´ et´ e introduite par Bonfante [Bon00], Marion [Mar00,

Mar03] et Marion-Moyen [MM00] et s’inspire de la notion d’interpr´ etation poly-

nomiale utilis´ ee par Lankford [Lan79] pour prouver la terminaison de syst` emes de

r´ e´ ecriture. La notion de sup-interpr´ etation est une g´ en´ eralisation de la notion de

quasi-interpr´ etation introduite dans [MP06b, MP07c] qui peut ˆ etre ´ etendue ` a des

langages de programmation autres que les seuls langages fonctionnels.

(14)

L’usage de ces interpr´ etations et, en particulier, des interpr´ etations ` a valeur sur des polynˆ omes pour contrˆ oler les ressources en temps et en espace est l’objet principal de cette th` ese. La suite de ce travail sera donc focalis´ ee sur les diff´ erents r´ esultats obtenus lors de l’´ etude de ces outils :

1. Le chapitre I traite de la notion de quasi-interpr´ etation et fournit pour la premi` ere fois une vue d’ensemble des diff´ erents r´ esultats obtenus dans ce domaine de re- cherche. La quasi-interpr´ etation est une interpr´ etation s´ emantique d´ efinie sur les programmes fonctionnels au premier ordre et qui associe une fonction ` a chaque symbole d’un programme. Ces fonctions se doivent de v´ erifier certaines condi- tions sp´ ecifiques, comme les propri´ et´ es sous-terme et de monotonie, afin d’obtenir une borne correcte sur les ressources utilis´ ees et la quasi-interpr´ etation doit v´ eri- fier des in´ egalit´ es relatives au programme consid´ er´ e. Apr` es avoir red´ efini la syn- taxe et la s´ emantique des programmes consid´ er´ es, la notion de quasi-interpr´ etation est introduite dans la premi` ere section (I.1). La deuxi` eme section (I.2) introduit les premiers r´ esultats fondamentaux sur les quasi-interpr´ etations. ` A savoir, des bornes sur la taille des valeurs calcul´ ees par un programme utilisant des quasi- interpr´ etations ainsi que des caract´ erisations des ensembles de fonctions calculables en espace et en temps polynomiaux. La section I.3 traite d’un probl` eme crucial abord´ e dans [BMMP05, P´ ec05] concernant les quasi-interpr´ etations : la synth` ese.

Il consiste ` a d´ eterminer si un programme admet ou non une quasi-interpr´ etation et se r´ ev` ele indispensable dans une perspective d’automatisation de cette ´ etude.

On d´ emontre que ce probl` eme est d´ ecidable sur des ensembles de fonctions don- n´ es. La grande complexit´ e de ce probl` eme pour des classes restreintes de fonctions polynomiales nous pousse ` a ´ etudier la modularit´ e des quasi-interpr´ etations dans la section I.4. La modularit´ e consiste ` a d´ ecouper un programme en sous-programmes afin de diminuer la complexit´ e de la synth` ese de quasi-interpr´ etations. Ce probl` eme a ´ et´ e trait´ e dans [BMP07]. On d´ emontre qu’en plus de diminuer la complexit´ e de la synth` ese, on arrive ` a ´ etudier la complexit´ e d’un plus grand nombre d’algorithmes.

Enfin, dans la section I.5 de ce chapitre, nous mentionnons d’autres langages de programmation auxquels les quasi-interpr´ etations ont ´ et´ e ´ etendues.

2. Le chapitre II ´ etudie la notion de sup-interpr´ etation, introduite dans [MP06b, MP07c], qui g´ en´ eralise celle de quasi-interpr´ etation. L’introduction des sup-inter- pr´ etations a ´ et´ e motiv´ ee par une volont´ e de capturer un plus grand nombre d’algo- rithmes que ne le permettait l’usage des quasi-interpr´ etations. La section II.1 d´ efinit bri` evement les sup-interpr´ etations en ajoutant au langage une notion d’op´ erateurs qui correspond ` a des op´ erations primitives du langages. La section II.2 introduit diff´ erents crit` eres permettant d’analyser la complexit´ e des programmes du pre- mier ordre, dont, en particulier, le crit` ere quasi-amical introduit dans [MP06a].

Il est d´ emontr´ e dans la section II.3 que la notion de sup-interpr´ etation g´ en´ era-

(15)

lise strictement la notion de quasi-interpr´ etation. De plus, on montre qu’elle peut ˆ

etre appliqu´ ee efficacement ` a diff´ erents crit` eres de terminaison comme les paires de d´ ependance ou le size-change principle. Enfin, on s’int´ eresse au pouvoir de carac- t´ erisation des sup-interpr´ etations dans la section II.4 en g´ en´ eralisant des r´ esultats de [BMP06]. L’outil ´ etant plus performant que les quasi-interpr´ etations, il permet d’´ etudier des classes de complexit´ e plus petites que FPtime et FPspace comme les N C k . Enfin, la section II.5 s’int´ eresse elle-aussi au probl` eme de la synth` ese pour les sup-interpr´ etations. Ce probl` eme est encore plus compliqu´ e pour les sup- interpr´ etations que pour les quasi-interpr´ etations. Nonobstant cette difficult´ e, on y d´ emontre que l’on peut obtenir des heuristiques efficaces, propos´ ees dans [MP07b], permettant de synth´ etiser des sup-interpr´ etations.

3. Pour finir, le chapitre III ´ etend la notion de sup-interpr´ etation ` a des langages orient´ es objet et imp´ eratifs [MP07a](si l’on restreint le langage objet en consi- d´ eration), justifiant ainsi la pertinence des notions d’interpr´ etation consid´ er´ ees.

Nous commen¸ cons par d´ ecrire la syntaxe et la s´ emantique du langage objet consi-

d´ er´ e en section III.1. Puis, nous ´ etendons les sup-interpr´ etations et toutes les no-

tions qui en d´ ecoulent ` a ce type de programme dans la section III.2. Dans la

section III.3, nous d´ efinissons un crit` ere permettant de contrˆ oler les ressources des

programmes orient´ es-objet ` a l’aide des sup-interpr´ etations. Nous d´ emontrons que

les programmes v´ erifiant ce crit` ere calculent des objets dont la taille reste born´ ee

polynomialement en la taille des entr´ ees. Puis, nous ´ etendons ce crit` ere aux m´ e-

thodes dans la section III.4 de mani` ere ` a obtenir des heuristiques pour synth´ etiser

les sup-interpr´ etations des m´ ethodes. Enfin, dans la section III.5 nous montrons

que les sup-interpr´ etations permettent ` a nouveau de caract´ eriser les classes de

complexit´ e polynomiales ` a l’aide des programmes orient´ es-objet.

(16)

L’intelligence [...] repose moins sur l’espoir, qui nous soutient dans les moments de d´ etresse, que sur les pronostics plus sˆ urs qu’elle tire d’une juste estimation des ressources dont on dispose.

(Thucydide, La guerre du P´ elopon` ese)

Dans cette section, nous allons introduire la notion de quasi-interpr´ etation [Mar03, Moy03, MM00, BMM01, BMM07] ainsi que toutes les propri´ et´ es et tous les r´ esultats qui en d´ ecoulent. Une quasi-interpr´ etation est un outil permettant l’analyse statique de la complexit´ e des programmes fonctionnels au premier ordre. Ce type d’´ etude revˆ et une importance particuli` ere pour de nombreuses applications comme les technologies em- barqu´ ees telles que les cartes ` a puces ou la t´ el´ ephonie mobile et se r´ ev` ele d’un int´ erˆ et pr´ epond´ erant dans le domaine de la s´ ecurit´ e informatique. De nombreuses autres ap- proches essaient de r´ esoudre le mˆ eme type de probl´ ematique comme le monitoring qui consiste ` a ´ etudier l’´ evolution d’un syst` eme en temps r´ eel. Cependant, le monitoring ne permet pas l’obtention de l’espace m´ emoire n´ ecessaire ` a un programme avant son ex´ ecu- tion. Une approche compl´ ementaire repose sur une g´ en´ eration de tests. On obtient ainsi des bornes inf´ erieures sur la m´ emoire requise par un programme, sans que jamais aucune indication ne soit donn´ ee sur une ´ eventuelle borne sup´ erieure. Notre approche s’inscrit dans une vis´ ee diff´ erente. Nous cherchons ` a contrˆ oler les ressources en fournissant et en v´ erifiant des certificats. Un certificat doit garantir que les ressources n´ ecessaires ` a l’ex´ ecution d’un code compil´ e seront suffisantes. En d’autres termes, le programme doit ˆ

etre certifi´ e « sans d´ epassement de m´ emoire » avant ex´ ecution.

Les travaux sur les quasi-interpr´ etations s’inspirent, d’une part, de la notion d’inter- pr´ etation polynomiale introduite dans [MN70, Lan79] afin de prouver la terminaison des programmes et, d’autre part, de pr´ ec´ edents travaux sur la complexit´ e implicite des programmes comme la safe recursion [BC92], le lambda-calcul [LM93] ou le data tiering [Lei94]. Cependant, les quasi-interpr´ etations capturent plus d’algorithmes naturels que ces pr´ ec´ edents travaux bas´ es sur des sch´ emas de r´ ecurrence restrictifs. On dit alors que les quasi-interpr´ etations poss` edent une plus grande intensionnalit´ e.

L’intensionnalit´ e est un concept de logique et de linguistique qui d´ ecoule des travaux

de Frege [Fre92] et qui s’oppose ` a l’extensionnalit´ e. Frege distingue les notions de « sens »

et de « d´ enotation ». La d´ enotation est l’objet d´ esign´ e par un signe ou une expression,

c’est-` a-dire l’objet auquel on fait r´ ef´ erence, tandis que le sens repr´ esente la mani` ere dont

(17)

l’objet est sp´ ecifi´ e. Le sens est donc le mode de d´ eclaration de la d´ enotation. Ces deux notions sont reprises de mani` ere relative dans la th´ eorie de la philosophie du langage de Carnap [Car56] pour d´ esigner l’extension et l’intension. Ainsi, si l’on consid` ere l’ex- pression « un informaticien », son intension est le concept d’informaticien ainsi que ses propri´ et´ es tandis que son extension est l’ensemble de tous les informaticiens. Ce genre d’analyse se g´ en´ eralise aux propositions. La proposition « Bill croit que son butineur est bogu´ e » n’est pas ´ equivalente ` a « Bill croit que son navigateur est bogu´ e » pour peu que Bill ignore que les mots « butineur » et « navigateur » d´ esignent le mˆ eme objet. Ces propositions, de mˆ eme que la majorit´ e des propositions dans une langue naturelle, sont donc intensionnelles : leur valeur de v´ erit´ e est fonction de leur d´ enotation mais aussi de l’interpr´ etation que l’on en fait, et donc de leur sens. Ces notions se g´ en´ eralisent ais´ ement aux langages de programmation en consid´ erant que l’intension correspond ` a l’algorithme tandis que l’extension correspond ` a la fonction calcul´ ee par l’algorithme. Les ´ etudes suivantes [Jon00, Mar00, Hof02, Nig98, Ben01], bien qu’elles ne le mentionnent pas tou- jours explicitement, ont largement contribu´ e ` a bien distinguer les notions d’intension et d’extension en informatique. Par exemple, les algorithmes de tri par insertion, de tri par fusion et de tri rapide (Quicksort) pr´ esent´ es dans [CLR90] calculent tous la mˆ eme fonction et sont donc extensionnellement ´ equivalents. En revanche, les algorithmes leur correspondant diff` erent. Leur intension n’est donc pas la mˆ eme.

La pertinence d’un outil d’analyse de la complexit´ e d’un programme sera donc jug´ ee

`

a l’aune de sa compl´ etude intensionnelle, c’est-` a-dire de la quantit´ e d’algorithmes « na- turels » qu’il capture. De ce point de vue, la quasi-interpr´ etation repr´ esente un outil tr` es performant. En effet, comme nous l’avons fait remarquer au paragraphe pr´ ec´ edent, l’intensionnalit´ e d´ epend directement de l’interpr´ etation que l’on fait d’une expression donn´ ee. Il r´ esulte de cette remarque que les quasi-interpr´ etations sont intensionnelle- ment plus puissantes que les approches sus-mentionn´ ees. En particulier, des approches bas´ ees sur des sch´ emas de r´ ecurrence sont toutes d’ordre syntaxique tandis que les quasi- interpr´ etations combinent ´ el´ egamment analyses syntaxique et s´ emantique.

L’article [BMM07] fournit une introduction d´ etaill´ ee aux quasi-interpr´ etations. Une quasi-interpr´ etation est une assignation d’une fonction monotone et ayant la propri´ et´ e sous-terme (Cf. d´ efinition I.13) ` a l’ensemble des symboles apparaissant dans un pro- gramme. Ces assignations v´ erifient des syst` emes d’in´ egalit´ es qui fournissent une borne sup´ erieure sur la taille des calculs effectu´ es par les symboles d’un programme. En outre, la combinaison des quasi-interpr´ etations et d’ordres de terminaison r´ ecursifs sur les chemins (Recursive Path Orderings ou RPO) [KL80, Der82] permet de caract´ eriser diff´ erentes classes de complexit´ e telles que la classe des fonctions calculables en temps polynomial ou, encore, la classe des fonctions calculables en espace polynomial. Les principales ca- ract´ eristiques des quasi-interpr´ etations sont les suivantes :

1. L’analyse de programme par quasi-interpr´ etation capture une tr` es grande classe d’algorithmes, dont les algorithmes qui ont une longueur de d´ erivation exponentielle mais dont la fonction d´ enot´ ee peut ˆ etre calcul´ ee en temps polynomial ` a l’aide de techniques de programmation dynamique [MM00].

2. La notion de quasi-interpr´ etation est suffisamment souple pour pouvoir ˆ etre ´ eten-

(18)

fication des ressources s’´ etend au bytecode en commen¸ cant par compiler un pro- gramme fonctionnel du premier ordre qui admet une quasi-interpr´ etation. Enfin, la notion de quasi-interpr´ etation a aussi ´ et´ e ´ etendue ` a la programmation r´ eactive dans [ADZ04].

3. Dans [BMMP05, BMM07], il a ´ et´ e d´ emontr´ e que la synth` ese de quasi-interpr´ etation introduite dans [Ama05], qui consiste ` a trouver une quasi-interpr´ etation pour un programme donn´ e, est d´ ecidable en temps exponentiel pour peu que l’on consid` ere des max-polynˆ omes, c’est-` a-dire une alg` ebre de polynˆ omes munis de l’op´ eration max, de degr´ e born´ e sur les nombres r´ eels. Ainsi, la notion de quasi-interpr´ etation se r´ ev` ele automatisable lorsque l’on consid` ere que son codomaine est un ensemble de polynˆ omes sur les r´ eels. Le choix des nombres r´ eels est d’autant plus int´ eres- sant qu’il existe des programmes n’admettant que des quasi-interpr´ etations avec au moins un coefficient irrationnel. Enfin, lorsque l’on restreint notre ´ etude ` a des pe- tites classes de polynˆ omes ` a valeur sur les r´ eels, on peut d´ emontrer que le probl` eme de la synth` ese est NP -complet [Ama05, BMMP05].

4. La modularit´ e des quasi-interpr´ etations a ´ et´ e ´ etudi´ ee dans [BMP07]. La probl´ e- matique est de diviser un programme et de s’int´ eresser aux sous-programmes ainsi obtenus. Si les deux sous-programmes admettent une quasi-interpr´ etation, on peut se demander quelles sont les propri´ et´ es que nous pouvons en d´ eduire pour le pro- gramme initial. Par exemple, la quasi-interpr´ etation est-elle modulaire : Le pro- gramme principal admet-il, lui aussi, une quasi-interpr´ etation ? Il a ´ et´ e d´ emontr´ e que les quasi-interpr´ etations sont modulaires dans le cas particulier d’une union disjointe lorsqu’aucun symbole n’est partag´ e par les deux sous-programmes. En re- vanche, les quasi-interpr´ etations ne sont pas modulaires si on divise le programme de mani` ere arbitraire. Cependant, dans le cas d’une union ` a constructeurs partag´ es (constructor-sharing), o` u seuls les symboles de constructeur sont partag´ es entre les deux sous-programmes, on peut tout de mˆ eme en d´ eduire une borne polynomiale.

Et, dans le cas d’une union hi´ erarchique, lorsque certains symboles de constructeur d’un sous-programme sont des symboles de fonction de l’autre sous-programme, on peut en d´ eduire une borne polynomiale sous certaines restrictions d’ordre syn- taxique. De tels r´ esultats augmentent l’intensionnalit´ e de l’outil, puisque l’on peut d´ esormais analyser des algorithmes pour lesquelles la m´ ethode initiale des quasi- interpr´ etation ´ echouait. Ces algorithmes sont pour la plupart des algorithmes de codage et de d´ ecodage d’un alphabet vers un autre. Le principal int´ erˆ et d’un d´ ecou- page en sous-programme r´ eside donc dans la possibilit´ e de diminuer la complexit´ e de la synth` ese de quasi-interpr´ etations en utilisant des techniques dites « diviser pour r´ egner ».

5. Enfin, il est possible d’appliquer les quasi-interpr´ etations ` a des programmes d’ordre

sup´ erieur en utilisant des techniques de d´ efonctionnalisation. Tout programme ` a

l’ordre sup´ erieur est sp´ ecialis´ e, dans un premier temps, en un programme au pre-

mier ordre extensionnellement ´ equivalent, puis, dans un deuxi` eme temps, on ap-

plique nos outils d’analyse au programme ainsi obtenu.

(19)

I.1 D´ efinitions

I.1.1 Syntaxe des programmes fonctionnels au premier ordre

Nous d´ ecrivons ici la syntaxe d’un langage de programmation g´ en´ erique au premier ordre. Le vocabulaire Σ = hVar, Cns, Fcti se compose de trois ensembles disjoints de symboles qui repr´ esentent respectivement l’ensemble des variables, l’ensemble des sym- boles de constructeur et l’ensemble des symboles de fonction. L’arit´ e d’un symbole est le nombre de ses arguments. Un programme p de notre langage se compose d’une s´ equence de d´ efinitions def 1 , · · · , def m qui d´ ecrivent des symboles de fonction et qui sont d´ efinies par la grammaire de la figure I.1. Nous utiliserons parfois la notation hVar, Cns, Fct, Ri o` u R = {def 1 , · · · , def m } afin de d´ esigner un tel programme p.

D´ efinition 3 def ::= f(x 1 , · · · , x n ) = e f

Expression 3 e ::= x | c(e 1 , · · · , e n ) | f(e 1 , · · · , e n )

| Case x 1 , · · · , x n of p 1 → e 1 . . . p ` → e ` Motif 3 p ::= x | c(p 1 , · · · , p n )

o` u x, x 1 , . . . , x n ∈ Var sont des variables, c ∈ Cns est un symbole de constructeur, f ∈ Fct est un symbole de fonction et p i est une s´ equence de n motifs. La notation e d´ esigne toute s´ equence d’expressions e 1 , . . . , e n , lorsque n est clairement d´ etermin´ e par le contexte.

Fig. I.1: Syntaxe d’un programme p

L’op´ erateur Case est un symbole dont le rˆ ole est de permettre le filtrage de motifs et dont l’usage est strictement limit´ e ` a une position « outermost ». On ne trouve donc ce symbole qu’` a la racine d’une expression. En d’autres termes, une expression e j ou e i ne contient aucun Case dans la grammaire de la figure I.1. Cette restriction n’est pas drastique puisqu’un programme ne la v´ erifiant pas, c’est-` a-dire contenant un Case imbriqu´ e, peut ˆ etre transform´ e en temps lin´ eaire en un programme de taille ´ equivalente qui la satisfait.

Une variable du corps e f d’une d´ efinition est soit une variable apparaissant dans la

liste des attributs x 1 , · · · , x n de la d´ efinition de f, lorsque l’op´ erateur Case n’est pas

utilis´ e, soit une variable apparaissant dans un motif. Lorsque l’op´ erateur Case apparaˆıt

dans une expression, on suppose que les motifs ne se chevauchent pas et que les variables

de ces motifs sont utilis´ ees de mani` ere lin´ eaire. De telles restrictions garantissent que les

programmes consid´ er´ es sont confluents [Hue80]. Les programmes ainsi d´ efinis sont tr` es

proches des syst` emes de r´ e´ ecriture ´ etudi´ es dans [KK, BN98, DJ90, Klo92] et peuvent

ˆ etre transform´ es de mani` ere lin´ eaire en syst` emes de r´ e´ ecriture en ´ eliminant l’op´ erateur

Case.

(20)

I.1.2 S´ emantique des programmes fonctionnels au premier ordre

Le domaine de calcul d’un programme p est l’ensemble V = V ∪ {Err} o` u l’en- semble des valeurs V repr´ esente l’alg` ebre de termes constructeurs T (Cns), d´ efini par T (Cns) 3 v ::= b | b(v 1 , · · · , v n ) avec b ∈ Cns, et Err est un symbole s´ emantique d’arit´ e nulle retourn´ e comme sortie par un programme lorsqu’une erreur advient, comme lors- qu’aucune d´ efinition ne peut ˆ etre appliqu´ ee.

Une substitution σ est une fonction partielle de Var dans V. L’application d’une sub- stitution σ ` a une expression e est not´ ee eσ. ´ Etant donn´ ees une substitution σ et une expression e, la signification du jugement eσ ↓ w est la suivante : l’expression eσ s’´ evalue en la valeur w appartenant ` a V . Si aucune d´ efinition n’est applicable, alors une erreur survient et eσ ↓ Err.

Notre langage poss` ede une s´ emantique d’appel par valeur d´ efinie comme ´ etant la clˆ o- ture des r` egles de la figure I.2.

t 1 ↓ w 1 . . . t n ↓ w n

c ∈ Cns et ∀i, w i 6= Err c(t 1 , · · · , t n ) ↓ c(w 1 , · · · , w n )

e ↓ u ∃σ, i : p i σ = u e i σ ↓ w

Case et u 6= Err Case x of p 1 → e 1 . . . p ` → e ` ↓ w

e 1 ↓ w 1 . . . e n ↓ w n f(x 1 , · · · , x n ) = e f e f σ ↓ w

o` u x i σ = w i

f(e 1 , · · · , e n ) ↓ w

6= Err et w 6= Err

Fig. I.2: S´ emantique par appel par valeur d’un programme p

D´ efinition I.1. Un symbole de fonction f d’arit´ e n appartenant ` a un programme p cal- cule une fonction partielle J f K : V n → V d´ efinie par : Pour tout v i ∈ V , J f K (v 1 , · · · , v n ) = w si et seulement si f(v 1 , · · · , v n ) ↓ w.

On g´ en´ eralise la notation J − K aux termes clos, c’est-` a-dire aux expressions sans va-

riable. ´ Etant donn´ e un terme clos t, on note J t K = u si et seulement si t ↓ u.

(21)

Exemple 1 (Division). Consid´ erons le programme suivant qui calcule la division : minus(x, y) = Case x, y of

0, z → 0 S(z), 0 → S(z)

S(u), S(v) → minus(u, v) q(x, y) = Case x, y of

0, S(z) → 0

S(z), S(u) → S(q(minus(z, u), S(u)))

En utilisant la notation n pour repr´ esenter S(. . . S(0) . . .)

| {z }

n fois S

, nous obtenons :

J q K (n, m) = dn/me for m > 0

D´ efinition I.2 (Contexte). Un contexte est une expression C[ 1 , · · · , r ] contenant une unique occurrence de chaque i o` u les symboles i sont de nouvelles variables qui n’ap- paraissent pas dans Σ. La substitution de chaque i par une expression d i est not´ ee C[d 1 , · · · , d r ].

Exemple 2. Dans le programme de l’exemple 1, la substitution de par minus(z, u) dans le contexte C[] = S(q(, S(u))) est ´ egale ` a C[minus(z, u)] = S(q(minus(z, u), S(u))).

D´ efinition I.3 (Expression activ´ ee). Supposons qu’un programme p poss` ede une d´ efini- tion de la forme f(x 1 , · · · , x n ) = e f . Une expression d est activ´ ee par f(p 1 , · · · , p n ), o` u les p i sont des motifs, s’il existe un contexte ` a un trou C[] tel que :

– Si e f est une expression compositionnelle (i.e. o` u l’op´ erateur Case n’apparaˆıt pas), alors e f = C[d], et, on a p 1 = x 1 . . . p n = x n .

– Sinon, e f = Case x 1 , · · · , x n of q 1 → e 1 . . . q ` → e ` , il existe une position j telle que e j = C[d]. Dans ce dernier cas, p i correspond au i-` eme ´ el´ ement de la s´ equence q j , pour i ∈ {1, . . . , n}.

Exemple 3. L’expression q(minus(z, u), S(u)) est activ´ ee par q(S(z), S(u)) dans l’ex- emple 1.

Cette d´ efinition est utilis´ ee afin de contrˆ oler le flot de donn´ ees pendant un calcul. En effet, une expression est activ´ ee par f(p 1 , · · · , p n ) lorsque l’on a un appel de la forme f(v 1 , · · · , v n ) et que chaque v i est filtr´ e par le motif p i .

D´ efinition I.4 (Expression maximale). Une expression d activ´ ee par f(p 1 , · · · , p n ) est

maximale s’il n’y a aucun contexte C[] 6= , tel que l’expression C[d] soit activ´ ee par

f(p 1 , · · · , p n ).

(22)

Exemple 4. Dans l’exemple 1, l’expression S(q(minus(z, u), S(u))) est une expression maximale activ´ ee par q(S(z), S(u)).

I.1.3 Pr´ ec´ edence

Etant donn´ ´ e un programme, nous d´ efinissons une pr´ ec´ edence sur les symboles de fonction. Cette pr´ ec´ edence sera utilis´ ee tout au long de cette ´ etude.

D´ efinition I.5 (Pr´ ec´ edence). Etant donn´ ´ e un programme hVar, Cns, Fct, Ri, une pr´ e- c´ edence ≥ Fct sur les symboles de fonction d´ ecoule de la notion d’expression activ´ ee. En effet, posons f ≥ Fct g s’il existe une s´ equence d’expressions e et une s´ equence de motifs p telles que g(e) est activ´ ee par f(p). La clˆ oture r´ eflexive et transitive de ≥ Fct est aussi not´ ee ≥ Fct . ` A pr´ esent, nous d´ efinissons f ≈ Fct g si f ≥ Fct g et g ≥ Fct f sont v´ erifi´ ees.

Enfin, f > Fct g si f ≥ Fct g est v´ erifi´ ee et g ≥ Fct f n’est pas v´ erifi´ ee.

Intuitivement, f ≥ Fct g signifie que le symbole de fonction f appelle le symbole de fonction g au cours d’une ex´ ecution du programme et f ≈ Fct g signifie que f et g s’appellent de mani` ere r´ ecursive.

I.1.4 Arbre des appels

D´ esormais, nous allons d´ efinir la notion d’arbre des appels (ou call-tree) d’un pro- gramme. Un arbre des appels est un arbre dont les noeuds correspondent aux appels de fonctions effectu´ es durant une ex´ ecution du programme.

Un ´ etat est un n-uplet hf, u 1 , · · · , u n i o` u f repr´ esente un symbole de fonction d’arit´ e n et u 1 , . . . , u n sont des valeurs. ´ Etant donn´ es deux ´ etats, η 1 = h f, u 1 , · · · , u n i et η 2 = hg, v 1 , · · · , v k i, et une expression C[g(e 1 , · · · , e k )] activ´ ee par f(p 1 , · · · , p n ), il y a une transition entre les deux ´ etats η 1 et η 2 , not´ ee η 1 η 2 , s’il existe une substitution σ telle que :

1. p i σ = u i pour i = 1, . . . , n 2. et J e j σ K = v j pour j = 1, . . . , k.

L’ensemble des transitions apparaissant durant l’ex´ ecution d’un programme constitue un arbre, dont les noeuds sont les ´ etats, et que l’on appelle arbre des appels de f pour les valeurs u 1 , . . . , u n si hf, u 1 , · · · , u n i est sa racine. La notion d’´ etat est confondue avec celle de stack frame puisqu’elle contient un appel de fonction ainsi que les valeurs qui lui sont pass´ ees comme arguments. Un arbre des appels de racine h f, u 1 , · · · , u n i repr´ esente tous les stack frames qui seront empil´ es sur la pile pendant le calcul de f(u 1 , . . . , u n ).

Nous utiliserons parfois la notation pour d´ esigner la clˆ oture r´ eflexive et transitive de et la notation + pour d´ esigner la clˆ oture transitive de .

Exemple 5. Un arbre des appels correspondant au programme de l’exemple 1 est fourni

dans la figure I.3.

(23)

< q, S(S(S(S(0)))), S(S(0)) >

< q, S(S(S(0))), S(S(0)) >

< minus, S(S(S(0))), S(0) >

< minus, S(S(0)), 0 > < minus, S(0), 0 >

< minus, 0, 0 >

< q, 0, S(S(0)) >

Fig. I.3: Arbre des appels correspondant ` a l’´ evaluation de q(S(S(S(S(0)))), S(S(0))) I.1.5 Assignations partielles

D´ efinition I.6. Etant donn´ ´ e un ensemble K , une assignation I est une application par- tielle de domaine dom(I ) inclus dans le vocabulaire Σ qui associe une fonction partielle I(b) de K n dans K ` a chaque symbole b d’arit´ e n appartenant au domaine dom(I). Afin de simplifier le pr´ esent discours, nous supposerons d´ esormais qu’une assignation partielle est toujours d´ efinie pour les symboles de constructeur (i.e. Cns ⊆ dom(I )).

Une assignation I est d´ efinie sur une expression e si chaque symbole de Cns ∪ Fct apparaissant dans l’expression e appartient au domaine dom(I ). Si l’assignation I est d´ efinie sur une expression e ayant m variables alors l’assignation partielle de e par rapport ` a I, que nous notons I (e), est l’extension canonique de l’assignation I. Elle d´ enote une fonction de K m dans K et est d´ efinie comme suit :

1. Si x i appartient ` a Var, alors I (x i ) = X i avec X 1 , . . . , X m une s´ equence de nou- velles variables ` a valeur dans K.

2. Si b est un symbole d’arit´ e nulle, alors I (b) = I(b).

3. Si b est un symbole d’arit´ e n > 0 et si e 1 , · · · , e n sont des expressions, alors I (b(e 1 , · · · , e n )) = I (b)(I (e 1 ), . . . , I (e n ))

Si e est une s´ equence d’expressions e 1 , · · · , e k alors I (e) = I (e 1 ), . . . , I (e k ).

Etant donn´ ´ e un contexte C[ 1 , · · · , l ], I (C) est d´ efini comme la fonction de K l → K

qui satisfait, pour toute s´ equence d’expressions e 1 , · · · , e l , I (C)(θ (e 1 ), . . . , θ (e l )) =

I (C[e 1 , · · · , e l ]).

(24)

D´ efinition I.7. Etant donn´ ´ e un mono¨ıde ( K , +), l’ensemble Max-Plus { K } est d´ efini comme ´ etant la clˆ oture par composition de l’ensemble des fonctions constantes dans K , des projections et des op´ erations max, +. Une assignation I est dite max-plus dans K si pour tout symbole b appartenant ` a dom(I ), I(b) est une fonction de Max-Plus { K }.

D´ efinition I.8. Etant donn´ ´ e un semi-anneau ( K , +, ×), l’ensemble Max-Poly { K } est d´ efini comme ´ etant la clˆ oture par composition de l’ensemble des fonctions constantes dans K , des projections et des op´ erations max, +, ×. Une assignation I est dite max- polynomiale dans K si pour tout symbole b appartenant ` a dom(I), I (b) est une fonction de Max-Poly { K }.

D´ efinition I.9 (Assignation polynomiale). Une assignation partielle I est polynomiale si pour tout symbole b appartenant ` a dom(I ), I(b) est une fonction de Max-poly { R + }.

D´ efinition I.10 (Assignation additive). L’assignation I d’un symbole de constructeur c d’arit´ e n est additive si :

I (c)(X 1 , · · · , X n ) =

n

X

i=1

X i + α c o` u α c ≥ 1 lorsque n > 0

I(c) = 0 sinon.

Si l’assignation de chaque symbole de constructeur d’arit´ e strictement positive est addi- tive alors l’assignation est additive.

D´ efinition I.11. La taille d’une expression e, not´ ee |e|, est d´ efinie par |e| = 0 si e est un symbole d’arit´ e nulle et |b(e 1 , . . . , e n )| = 1 + P

i |e i | si e = b(e 1 , . . . , e n ) avec n > 0.

Lemme I.12. Etant donn´ ´ ee une assignation additive I, il existe une constante α telle que pour toute valeur v de V , les in´ egalit´ es suivantes sont satisfaites :

|v| ≤ I (v) ≤ α × |v|

D´ emonstration. Posons α = max c∈Cns (β c ) o` u la constante β c est choisie comme ´ etant

´

egale ` a la constante α c de la d´ efinition I.10, si c est d’arit´ e strictement positive, et comme

´

etant ´ egale ` a I (c) dans le cas contraire. Les in´ egalit´ es sont obtenues directement par induction sur la taille d’une valeur.

I.1.6 Quasi-interpr´ etations

D´ efinition I.13. Etant donn´ ´ e un programme p, une quasi-interpr´ etation est une assi-

gnation totale L − M (i.e. d´ efinie pour chaque symbole du programme) qui est monotone et

poss` ede la propri´ et´ e sous-terme. En d’autres termes, pour tout symbole b d’arit´ e n, on

a :

(25)

– ∀i ∈ {1, . . . , n} , X i ≥ Y i ⇒ L b M (X 1 , · · · , X n ) ≥ L b M (Y 1 , · · · , Y n ) (Monotonie) – ∀i ∈ {1, . . . , n} , L b M (. . . , X i , . . .) ≥ X i (Sous-terme)

De plus, cette assignation doit v´ erifier pour toute expression maximale e activ´ ee par f(p 1 , · · · , p n ) :

L f(p 1 , · · · , p n ) M

∗ ≥ L e M

Une quasi-interpr´ etation est dite polynomiale ou additive si l’assignation correspondante est polynomiale, respectivement, additive.

Exemple 6. Le programme suivant calcule un logarithme en base deux : half(x) = Case x of 0 → 0

S(0) → 0

S(S(y)) → S(half(y)) log(x) = Case x of 0 → 0

S(0) → 0

S(S(y)) → S(log(S(half(y))))

Il admet la quasi-interpr´ etation additive et polynomiale suivante :

L 0 M = 0 L S M (X) = X + 1

L log M (X) = L half M (X) = X

En effet, on v´ erifie ais´ ement que cette assignation est monotone, sous-terme et additive.

Il reste ` a v´ erifier les in´ egalit´ es pour chaque expression activ´ ee :

L half(0) M

∗ = 0

≥ L 0 M

L half(S(0)) M

∗ = L S(0) M

= 1 + L 0 M

≥ L 0 M

(26)

L half(S(S(y))) M

∗ = Y + 2

≥ Y + 1

= L S(half(y)) M

L log(0) M

∗ = 0

≥ L 0 M

L log(S(0)) M

∗ = 1

≥ L 0 M

L log(S(S(y))) M

∗ = Y + 2

≥ L S(log(S(half(y)))) M

Exemple 7. Le programme suivant correspond ` a l’algorithme du tri par insertion sur des entiers unaires :

if (x, y, z) = Case x, y, z of True, v, w → v False, v, w → w le(x, y) = Case x, y of 0, S(v) → True

w, 0 → False insert(x, y) = Case x, y of u, nil → c(u, nil)

u, c(v, l) → if(le(u, v), c(u, c(v, l)), c(v, insert(u, l)) sort(x) = Case x of nil → nil

c(u, l) → insert(u, sort(l))

Il admet la quasi-interpr´ etation additive et polynomiale suivante :

L 0 M = L nil M = L True M = L False M = 0 L if M (X, Y, Z) = max(X, Y, Z )

L ≤ M (X, Y ) = max(X, Y ) L S M (X) = X + 1

L c M (X, Y ) = L insert M (X, Y ) = X + Y + 1 L sort M (X) = X

Il suffit de v´ erifier que les in´ egalit´ es des quasi-interpr´ etations sont bien satisfaites.

(27)

I.2 Propri´ et´ es des quasi-interpr´ etations

Nous commencerons par donner quelques rappels de complexit´ e sur les Machines de Turing [Tur36]. Puis, nous d´ emontrons une s´ erie de lemmes utilis´ es afin de prouver le lemme fondamental. Ce lemme peut ˆ etre interpr´ et´ e de la mani` ere suivante « Tout pro- gramme admettant une quasi-interpr´ etation additive et polynomiale poss` ede une borne sup´ erieure polynomiale sur la taille des valeurs qu’il calcule en fonction de la taille de ses entr´ ees ». Combin´ e ` a des ordres r´ ecursifs sur les chemins, ce lemme va permettre de caract´ eriser la classe FPtime des fonctions calculables en temps polynomial ainsi que la classe FPspace des fonctions calculables en espace polynomial.

I.2.1 Machines de Turing et classes de complexit´ e polynomiales

Nous rappelons bri` evement les notions de fonctions calculables en temps polynomial et en espace polynomial en introduisant le mod` ele de calcul discret qu’est la Machine de Turing. Pour plus d’informations sur les Machines de Turing, nous invitons le lecteur ` a consulter l’ouvrage suivant [Sip96] ainsi que la r´ ef´ erence historique [Tur36]. Une Machine de Turing est constitu´ ee d’un alphabet, d’un ou plusieurs rubans infinis, de tˆ etes de lecture et d’´ ecriture ainsi que d’un dispositif de contrˆ ole. Au d´ ebut d’un calcul, l’entr´ ee est plac´ ee sur le premier ruban tandis que tous les autres rubans sont vierges. L’un de ces rubans est appel´ e ruban de sortie. La tˆ ete de lecture transmet le symbole en cours de lecture sur le ruban au dispositif de contrˆ ole qui choisit alors les op´ erations ` a effectuer.

Ces op´ erations consistent ` a ´ ecrire un nouveau symbole en lieu et place du symbole qui est en cours de lecture ou encore ` a d´ eplacer, si n´ ecessaire, la tˆ ete de lecture sur la gauche ou sur la droite du ruban. Enfin, le dispositif de contrˆ ole peut choisir d’acc´ eder ` a un ´ etat particulier qui indique la fin du calcul. Dans cette configuration, les symboles stock´ es sur le ruban de sortie correspondent au calcul de la machine. On dit alors que la machine s’arrˆ ete. Cette description se traduit formellement par :

D´ efinition I.14 (Machine de Turing). Une Machine de Turing est un sextuplet (Q, Σ, Γ, δ, q i , q f )

Q, Σ, Γ sont des ensembles finis qui repr´ esentent respectivement les ´ etats du dispositif de contrˆ ole, l’alphabet d’entr´ ee et l’alphabet de travail. On a Σ ∪ {B} ⊆ Γ, o` u B est un symbole blanc n’appartenant pas ` a Σ.

– δ est une fonction de transition de Q × Γ dans Q × Γ × {G, D, 0} qui a l’´ etat en

cours et ` a un symbole en cours de lecture associe un nouvel ´ etat, un symbole ` a ´ ecrire

(28)

ainsi qu’un d´ eplacement sur le ruban (G code un d´ eplacement ` a gauche, D code un d´ eplacement ` a droite et 0 indique qu’il n’y a aucun d´ eplcament) .

– q i est l’´ etat initial.

– q f est l’´ etat final.

D´ efinition I.15 (Configuration). Une configuration d’une Machine de Turing ` a k ru- bans est donn´ ee par le k + 1 uplet (q, w 1 #v 1 , . . . w k #v k ) o` u q est l’´ etat en cours, # est un symbole sp´ ecial n’appartenant pas ` a l’alphabet de travail et les w i correspondent aux symboles du i-` eme ruban situ´ es ` a gauche de la tˆ ete de lecture tandis que les v i corres- pondent aux symboles du i-` eme ruban situ´ es ` a droite de la tˆ ete de lecture en incluant le symbole en cours de lecture. La taille |C| d’une configuration C = (q, w 1 #v 1 , . . . w k #v k ) est d´ efinie comme le nombre maximal de symboles contenus sur l’un des rubans, i.e.

|C| = max i∈{1,k} (|v i | + |w i |), o` u la taille d’un mot |w| est d´ efinie comme ´ etant ´ egale au nombre de symboles de l’alphabet le composant.

D´ efinition I.16 (Turing calculabilit´ e). Une fonction f de Σ dans Γ est Turing calcu- lable s’il existe une Machine de Turing (Q, Σ, Γ, δ, q i , q f ) qui s’arrˆ ete sur l’entr´ ee s ∈ Σ si et seulement si f(s) est d´ efinie, et dans ce cas, la valeur f(s) est stock´ ee sur le ruban de sortie,.i.e. il existe t configurations C 1 , · · · , C t telles que C 1 = (q i , #s, , . . . , ) → . . . → C t = (q f , w 1 #v 1 , . . . w k #v k ), o` u repr´ esente le mot vide, o` u → d´ esigne une application de la fonction de transition δ et o` u w i v i = f(s) si le i-` eme ruban est le ruban de sortie.

D´ efinition I.17 ( FPtime ). Une fonction totale f de Σ dans Γ est calculable en temps polynomial s’il existe un polynˆ ome P et une Machine de Turing M tels que, pour tout s ∈ Σ , M calcule f(s) en utilisant un nombre de configurations t born´ e par P (|s|). FPtime est d´ efini comme l’union des ensembles de fonctions calculables en temps polynomial pour tout polynˆ ome P .

D´ efinition I.18 ( FPspace ). Une fonction totale f de Σ dans Γ est calculable en espace polynomial s’il existe un polynˆ ome P et une Machine de Turing M tels que, pour tout s ∈ Σ , M calcule f(s) en utilisant des configurations dont la taille est born´ ee par P (|s|) ; c’est-` a-dire pour chaque configuration C on a |C| ≤ P (|s|). FPspace est d´ efini comme l’union des ensembles de fonctions calculables en espace polynomial pour tout polynˆ ome P.

I.2.2 Lemme fondamental

Soit p un programme admettant une quasi-interpr´ etation, on commence par montrer

que toute valeur u calcul´ ee ` a partir d’un terme clos t poss` ede une quasi-interpr´ etation

inf´ erieure ` a celle de t.

(29)

Proposition I.19. Soit p un programme admettant une quasi-interpr´ etation L − M , alors pour tout terme clos t tel que t ↓ u, on a :

L t M

∗ ≥ L u M

D´ emonstration. On montre ce r´ esultat par induction sur la longueur de l’´ evaluation.

Supposons que le terme clos e soit de la forme b(e 1 , · · · , e n ). Par hypoth` ese d’induction (H.I.), si e i ↓ u i alors L e i M

∗ ≥ L u i M

∗ . De plus, supposons que b(u 1 , · · · , u n ) ↓ u alors, par hypoth` ese d’induction, on a L b(u 1 , · · · , u n ) M

∗ ≥ L u M

∗ . Ainsi, on obtient : L e M

∗ = L b(e 1 , · · · , e n ) M

∗ Puisque e = b(e 1 , · · · , e n )

= L b M ( L e 1 M

∗ , . . . , L e n M

∗ ) Par d´ efinition de L − M

≥ L b M ( L u 1 M

∗ , . . . , L u n M

∗ ) Par H.I.et monotonie

= L b(u 1 , · · · , u n ) M

∗ Par d´ efinition de L − M

≥ L u M

∗ Par H.I.

Puis, on montre, comme dans [BMM01, BMM07, MM00], que la quasi-interpr´ etation borne la taille des valeurs calcul´ ees :

Proposition I.20. Soit p un programme admettant une quasi-interpr´ etation additive L − M , alors pour tout terme clos t tel que t ↓ u, on a :

L t M

∗ ≥ |u|

D´ emonstration. Ce r´ esultat s’obtient directement en combinant le lemme I.12 et la pro- position I.19.

En particulier, on obtient le r´ esultat suivant lorsque l’on consid` ere un symbole de fonction ainsi qu’une quasi-interpr´ etation additive :

Corollaire I.21. Etant donn´ ´ e un programme p admettant une quasi-interpr´ etation ad- ditive L − M , pour tout symbole de fonction f de p et pour toutes valeurs v 1 , · · · , v n ∈ V , si J f(v 1 , · · · , v n ) K est d´ efini, i.e. J f(v 1 , · · · , v n ) K ∈ V , alors on a :

L f M ( L v 1 M

∗ , . . . , L v n M

∗ ) ≥ | J f(v 1 , · · · , v n ) K |

Lemme I.22. Etant donn´ ´ e un programme p admettant une quasi-interpr´ etation additive et polynomiale L − M , alors pour tout symbole de fonction f, il existe un polynˆ ome P f tel que, pour toutes valeurs v 1 , · · · , v n ∈ V , si J f(v 1 , · · · , v n ) K est d´ efini, i.e. J f(v 1 , · · · , v n ) K ∈ V, alors on a :

P f (max(|v 1 |, . . . , |v n |)) ≥ | J f(v 1 , · · · , v n ) K |

Références

Documents relatifs

Incertitude et impr´ ecision en traitement et interpr´ etation d’images. Elles sont

D´eterminer les ´equations r´eduites des droites (AB) et

On admet que la propri´et´e ci-dessus peut se g´en´eraliser au cas d’un intervalle I quelconque

On suppose par l’absurde qu’il existe un tiangle ´equilat´eral ABC dont les coordonn´ees des sommets dans un rep`ere orthonorm´e direct du plan sont des entiers. Conclure en

Notons B l’ensemble des valeurs de n &gt; 1 pour lesquelles l’in´egalit´e de Cauchy

Pour terminer il suffit de noter que si uv 6= C alors une telle arˆ ete f

Dans la pr´ epublication ´ electronique arXiv math.AG/0609381, Pragacz, Srinivas et Pati ´ etudient ce qu’ils appellent la « propri´ et´ e de la diagonale » (not´ ee (D)) pour

Pour avoir des chances de pouvoir établir une correspondance précise entre les nombres d'opérât ions et le temps d'exécution il semble nécessaire de suivre la démarche proposée