• Aucun résultat trouvé

Produit des polynômes de Grothendieck

5.3 Applications avancées

5.3.3 Produit des polynômes de Grothendieck

Notre implantation peut être utilisée pour effectuer les calculs nécessaires au chapitre 4. Elle permet de vérifier le théorème4.0.4 sur des exemples.

Tout d’abord, vérifions sur un exemple le théorème 4.0.2. On a besoin d’ef- fectuer un produit de polynôme et donc de convertir depuis la base des monômes vers la base Grothendieck. Dans notre implantation, cela ne peut se faire que sur les polynômes de Grothendieck simples. On calcule Gσ(1−x1)(1−x2)(1−x3)(1−x4)

(le changement de variable remplace x−1

i par 1−xi). Par ailleurs, on travaille dans

un espace quotienté par un idéal et on supprime donc les termes inutiles.

def apply _ o p e r a t o r s ( perm , k ) : perm = P e r m u t a t i o n ( perm ) code = perm . to _ lehmer _ code () A = A b s t r a c t P o l y n o m i a l R i n g ( QQ )

Groth = A . g r o t h e n d i e c k _ p o s i t i v e _ basis _ on _ vectors () pol = Groth ( code )

factor = prod ( [ A . one () - A . var ( i +1) for i in xrange ( k ) ] )

pol = pol * factor

# s u p p r e s s i o n des termes i n u t i l e s res = pol . parent () . zero ()

for (k , c ) in pol :

m = pol . nb _ v a r i a b l e s () - 1

for i in xrange ( pol . nb _ v a r i a b l e s () ) : if ( k [ i ] > m ) : break

m = m -1 else :

res += pol . parent () . term (k , c ) return res

Pour σ = 136254, on obtient

sage : perm = P e r m u t a t i o n ([1 ,3 ,6 ,2 ,5 ,4]) sage : res 1 = apply _ o p e r a t o r s ( perm , 4) sage : res 1 -G (0 , 1 , 3 , 1 , 1 , 0) - G (0 , 1 , 3 , 2 , 0 , 0) + G (0 , 1 , 3 , 2 , 1 , 0) + G (0 , 1 , 3 , 0 , 1 , 0) + G (0 , 2 , 3 , 1 , 1 , 0) + G (0 , 2 , 3 , 2 , 0 , 0) - G (0 , 2 , 3 , 2 , 1 , 0) - G (0 , 2 , 3 , 0 , 1 , 0) - G (0 , 3 , 3 , 0 , 0 , 0) + G (0 , 3 , 3 , 1 , 0 , 0) - G (0 , 3 , 3 , 1 , 1 , 0) - G (0 , 3 , 3 , 2 , 0 , 0) + G (0 , 3 , 3 , 2 , 1 , 0) + G (0 , 3 , 3 , 0 , 1 , 0)

Soit en terme de permutations

from sage . c o m b i n a t import p e r m u t a t i o n

sage : perms = [ p e r m u t a t i o n . from _ lehmer _ code ( key ) for ( key , c ) in res 1. e l e m e n t s () ]

sage : perms

110 Chapitre 5 — Implantation des bases des polynômes en Sage [1 , 4 , 6 , 5 , 3 , 2] , [1 , 3 , 6 , 2 , 5 , 4] , [1 , 5 , 6 , 2 , 4 , 3] , [1 , 5 , 6 , 3 , 2 , 4] , [1 , 5 , 6 , 4 , 3 , 2] , [1 , 3 , 6 , 5 , 2 , 4] , [1 , 3 , 6 , 4 , 5 , 2] , [1 , 4 , 6 , 5 , 2 , 3] , [1 , 4 , 6 , 2 , 5 , 3] , [1 , 5 , 6 , 2 , 3 , 4] , [1 , 5 , 6 , 4 , 2 , 3] , [1 , 4 , 6 , 3 , 5 , 2] , [1 , 3 , 6 , 5 , 4 , 2]]

On peut vérifier que ce sont bien les mêmes qui apparaissent dans le calcul suivant où l’on utilise le résultat du théorème 4.0.2.

sage : A = A b s t r a c t P o l y n o m i a l R i n g ( QQ ) sage : K = A . d e m a z u r e _ basis _ on _ vectors () sage : pol = K [6 ,5 ,4 ,3 ,2 ,1]

sage : res 2 = pol . apply _ reduced _ word ([3 ,4 ,5 ,2 ,3 ,4] , method =" hatpi ") sage : res 2 = res 2. apply _ reduced _ word ([3 ,2 ,1 ,2] , method =" pi ")

sage : res 2 K (1 , 3 , 6 , 2 , 5 , 4) - K (1 , 3 , 6 , 4 , 5 , 2) - K (1 , 3 , 6 , 5 , 2 , 4) + K (1 , 3 , 6 , 5 , 4 , 2) - K (1 , 4 , 6 , 2 , 5 , 3) + K (1 , 4 , 6 , 3 , 5 , 2) + K (1 , 4 , 6 , 5 , 2 , 3) - K (1 , 4 , 6 , 5 , 3 , 2) - K (1 , 5 , 6 , 2 , 3 , 4) + K (1 , 5 , 6 , 2 , 4 , 3) + K (1 , 5 , 6 , 3 , 2 , 4) - K (1 , 5 , 6 , 3 , 4 , 2) - K (1 , 5 , 6 , 4 , 2 , 3) + K (1 , 5 , 6 , 4 , 3 , 2)

On généralise ce second calcul dans une fonction.

def product _ p e r m u t a t i o n s ( perm , k ) : # Initial d e f i n i t i o n s

A = A b s t r a c t P o l y n o m i a l R i n g ( QQ ) K = A . d e m a z u r e _ basis _ on _ vectors () n = len ( perm )

# p e r m u t a t i o n s

omega = P e r m u t a t i o n ([ n - i for i in xrange ( n ) ]) zeta = [ perm [ i ] for i in xrange ( k ) ]

zeta . sort () zeta . reverse ()

zeta 2 = [ perm [ i ] for i in xrange (k , n ) ] zeta 2. sort ()

zeta 2. reverse () zeta . extend ( zeta 2)

zeta = P e r m u t a t i o n ( zeta ) # paths

hatpis = ( zeta * omega ) . reduced _ word ()

pis = ( perm * zeta . inverse () ) . reduced _ word () # c o m p u t a t i o n

§ 5.3 — Applications avancées 111

pol = K ( list ( omega ) ) if ( len ( hatpis ) !=0) :

pol = pol . apply _ reduced _ word ( hatpis , method =" hatpi ") if ( len ( pis ) !=0) :

pol = pol . apply _ reduced _ word ( pis , method =" pi ") # perm set from p o l y n o m i a l

perms = [ P e r m u t a t i o n ( key ) for ( key , c ) in pol . e l e m e n t s () ] return perms

Sur l’exemple, cela donne

sage : perm = P e r m u t a t i o n ([1 ,3 ,6 ,2 ,5 ,4]) sage : perms = product _ p e r m u t a t i o n s ( perm , 4) sage : perms [[1 , 5 , 6 , 2 , 4 , 3] , [1 , 4 , 6 , 3 , 5 , 2] , [1 , 5 , 6 , 4 , 3 , 2] , [1 , 3 , 6 , 5 , 4 , 2] , [1 , 4 , 6 , 5 , 2 , 3] , [1 , 4 , 6 , 2 , 5 , 3] , [1 , 5 , 6 , 3 , 2 , 4] , [1 , 5 , 6 , 2 , 3 , 4] , [1 , 5 , 6 , 4 , 2 , 3] , [1 , 4 , 6 , 5 , 3 , 2] , [1 , 3 , 6 , 4 , 5 , 2] , [1 , 3 , 6 , 2 , 5 , 4] , [1 , 5 , 6 , 3 , 4 , 2] , [1 , 3 , 6 , 5 , 2 , 4]]

L’application des opérateurs est une opération formelle sur les vecteurs. Dans notre implantation, elle est directement définie au niveau des polynômes clés : aucun changement de base n’est nécessaire. Ce second calcul est donc beaucoup plus rapide que le premier : on passe de 10 secondes à un dixième de seconde.

sage : time ( apply _ o p e r a t o r s ( perm , 4) )

CPU times : user 10.60 s , sys : 0.02 s , total : 10.62 s Wall time : 10.73 s -G (0 , 1 , 3 , 1 , 1 , 0) - G (0 , 1 , 3 , 2 , 0 , 0) + G (0 , 1 , 3 , 2 , 1 , 0) + G (0 , 1 , 3 , 0 , 1 , 0) + G (0 , 2 , 3 , 1 , 1 , 0) + G (0 , 2 , 3 , 2 , 0 , 0) - G (0 , 2 , 3 , 2 , 1 , 0) - G (0 , 2 , 3 , 0 , 1 , 0) - G (0 , 3 , 3 , 0 , 0 , 0) + G (0 , 3 , 3 , 1 , 0 , 0) - G (0 , 3 , 3 , 1 , 1 , 0) - G (0 , 3 , 3 , 2 , 0 , 0) + G (0 , 3 , 3 , 2 , 1 , 0) + G (0 , 3 , 3 , 0 , 1 , 0) sage : time ( product _ p e r m u t a t i o n s ( perm ,4) )

CPU times : user 0.09 s , sys : 0.00 s , total : 0.09 s Wall time : 0.09 s [[1 , 5 , 6 , 2 , 4 , 3] , [1 , 4 , 6 , 3 , 5 , 2] , [1 , 5 , 6 , 4 , 3 , 2] , [1 , 3 , 6 , 5 , 4 , 2] , [1 , 4 , 6 , 5 , 2 , 3] , [1 , 4 , 6 , 2 , 5 , 3] , [1 , 5 , 6 , 3 , 2 , 4] , [1 , 5 , 6 , 2 , 3 , 4] ,

112 Chapitre 5 — Implantation des bases des polynômes en Sage [1 , 5 , 6 , 4 , 2 , 3] , [1 , 4 , 6 , 5 , 3 , 2] , [1 , 3 , 6 , 4 , 5 , 2] , [1 , 3 , 6 , 2 , 5 , 4] , [1 , 5 , 6 , 3 , 4 , 2] , [1 , 3 , 6 , 5 , 2 , 4]]

À présent, vérifions le résultat du théorème 4.0.4. La fonction suivante génère l’intervalle de Bruhat entre deux permutations.

def bruhat _ i n t e r v a l ( p 1 , p 2 , res = None ) : if res is None :

res = []

if ( p 1. bruhat _ lequal ( p 2) ) : res . append ( p 1)

if ( p 1. length () < p 2. length () ) : succs = p 1. bruhat _ succ () for p in succs : if p not in res : bruhat _ i n t e r v a l (p , p 2 , res ) return res else : return None

On teste que l’ensemble obtenu par l’application des opérateurs est bien un inter- valle de l’ordre de Bruhat.

def is _ result _ i n t e r v a l ( perm , k ) :

perms = product _ p e r m u t a t i o n s ( perm , k ) # get 1 max p e r m u t a t i o n

pmax = perm for p in perms :

if ( pmax . bruhat _ lequal ( p ) ) : pmax = p

i n t e r v a l = bruhat _ i n t e r v a l ( perm , pmax ) return set ( i n t e r v a l ) == set ( perms )

Sur l’exemple précédent, cela donne :

sage : perm = P e r m u t a t i o n ([1 ,3 ,6 ,2 ,5 ,4]) sage : is _ result _ i n t e r v a l ( perm ,4)

True

On peut tester sur l’ensemble des permutations de taille 4 et 5.

def test _ all _ perms ( size ) :

for p in P e r m u t a t i o n s ( size ) : for k in xrange (1 , size ) :

if not is _ result _ i n t e r v a l (p , k ) : print p , k

return False return True

sage : test _ all _ perms (4) True

§ 5.3 — Applications avancées 113

sage : test _ all _ perms (5) True

Troisième partie

Treillis de (m-)Tamari et algèbres

Chapitre

6

Treillis sur les arbres binaires et algèbres

de Hopf

La troisième partie de ce mémoire est dédiée à l’étude d’un ordre sur les arbres binaires appelé treillis de Tamari qui peut se décrire comme un quotient de l’ordre faible sur les permutations. Il apparaît en 1962 dans le travail de Tamari [Tam62] sous forme de structure d’ordre sur les parenthésages formels d’une expression. Tamari prouve plus tard que cet ordre est en fait un treillis [HT72]. Par ailleurs, son diagramme de Hasse correspond à un polytope connu sous le nom d’associaè- dre ou polytope de Stasheff. Le nombre de parenthésages formels d’une expression est compté par les nombres de Catalan et il existe donc de multiples objets com- binatoires sur lesquels on peut décrire ce treillis [Sta99]. Dans ce chapitre, nous en rappelons deux : les chemins de Dyck et les arbres binaires. Dans les deux cas, la relation de couverture se décrit par une opération très simple (cf. figures6.1 et

6.4).

Les relations entre l’associaèdre et le permutoèdre sont souvent étudiées d’un point de vue géométrique. L’approche algébrique permet de démontrer un résultat très fort : l’ordre de Tamari est un quotient de l’ordre faible sur les permutations. Ce résultat apparaît déjà en filigrane dans les travaux de Björner et Wachs [BW91]. On en trouve une généralisation dans la théorie des treillis cambriens de Read- ing [Rea06]. Une explication directe est donnée dans [HNT05]. Ce dernier article ainsi qu’un précédent de Loday et Ronco [LR98] font le lien avec une structure importante en combinatoire algébrique : les algèbres de Hopf.

Le principe d’une structure d’algèbre est la composition des objets. C’est-à-dire que si A est un espace vectoriel d’objets combinatoires, on définit une application

A ⊗ A → A. Si maintenant on définit une opération dite de coproduit : A →

A ⊗ A et qu’elle vérifie une certaine compatibilité avec le produit, on obtient

une structure de bigèbre. En termes combinatoires, cela revient à décomposer les objets. Dans le cadre de la topologie algébrique du milieu du XXème siècle, Heinz Hopf étudia certaines bigèbres possédant une opération appelée antipode qui généralise la notion de passage à l’inverse des groupes. C’est ce qu’on appelle

118 Chapitre 6 — Treillis sur les arbres binaires et algèbres de Hopf

les Algèbres de Hopf [Swe69, Car07].

En combinatoire, c’est surtout la structure de bigèbre qui est intéressante. Comme on travaille dans des espaces de dimension finie graduellement, l’existence de l’antipode est toujours vérifiée et on appelle donc ces espaces des algèbres

de Hopf combinatoires. Cette double structure de produit et coproduit est déjà

implicitement présente dans le travail de MacMahon sur les fonctions symétriques [Mac60]. Puis dans les années 1970, Rota fait le lien avec la structure étudiée par les topologues et insiste sur l’importance des algèbres de Hopf en combinatoire [JR79, Rot78]. On pourra lire [Hiv07] pour une bonne introduction sur le sujet.

La théorie des algèbres de Hopf combinatoires prend une nouvelle direction avec l’apparition en 1995 des fonctions symétriques non-commutatives qui fer- ont l’objet d’une série d’articles sur plus de dix ans [GKL+95, KLT97, DKKT97,

KT97,KT99,DHT02,DHNT11]. C’est en fait une nouvelle méthode de calcul qui est décrite : à un objet combinatoire, on associe une somme de mots sur un alpha- bet non commutatif. Le produit et le coproduit ne se définissent plus sur les objets mais sur les mots ce qui en fait des opérations triviales. La difficulté réside alors dans la fonction qui à chaque objet associe une somme. C’est ce qu’on appelle la

réalisation polynomiale. Elle permet souvent de trivialiser des preuves jusqu’alors

complexes et de donner le cadre pour des résultats plus importants. En parti- culier, dans [DHT02, DHNT11] les auteurs introduisent l’algèbre des fonctions quasi-symétriques libres FQSym dont les bases sont indexées par les permuta- tions. Cette algèbre se révèle isomorphe à une algèbre de Hopf déjà connue sur les permutations, celle introduite par Malvenuto et Reutenauer [MR95].

Le lien avec le treillis de Tamari apparaît en 1998 lorsque Loday et Ronco décrivent une algèbre de Hopf sur les arbres binaires comme un quotient de l’al- gèbre de Malvenuto-Reutenauer [LR98]. Le produit dans cette algèbre s’interprète comme un intervalle du treillis de Tamari. De leurs résultats sur FQSym, Hivert, Novelli et Thibon tirent alors une nouvelle interprétation de l’algèbre de Loday et Ronco comme un quotient de FQSym [HNT05]. On la nomme PBT. Un élément de la base de PBT est indexé par un arbre binaire. Il correspond à une somme sur un intervalle de l’ordre faible dans l’algèbre FQSym. Les auteurs prouvent alors que l’ordre entre les intervalles à l’intérieur de l’ordre faible correspond en fait au treillis de Tamari sur les arbres binaires. On retrouve ainsi que le treillis de Tamari est un quotient et un sous-treillis de l’ordre faible. Dans le chapitre 7, nous utiliserons cette propriété pour prouver un nouveau résultat sur le treillis de Tamari.

Plus généralement, la troisième partie de ce mémoire est dédiée à l’étude de l’ordre de Tamari, à ses généralisations et aux structures algébriques qui lui sont liées. Ce premier chapitre sert d’introduction et nous rappelons en détail les ré- sultats que nous venons d’évoquer. Dans le paragraphe6.1, nous commençons par définir l’ordre de Tamari sur les chemins de Dyck et les arbres binaires. Nous expliquons aussi en quoi il est un quotient et un sous-treillis de l’ordre faible. Le paragraphe 6.2 nous sert à définir les algèbres de Hopf dans le cadre combina-

§ 6.1 — Treillis de Tamari et ordre faible 119

toire où nous les utilisons. Nous donnons le principe de la réalisation polynomiale à travers l’exemple de l’algèbre FQSym. Enfin, dans le paragraphe 6.3, nous décrivons l’algèbre PBT sur les arbres binaires en nous basant sur les résultats de [HNT05].

6.1 Treillis de Tamari et ordre faible