A. Logiciels de calcul de bases de Gröbner 

A.1 Calcul du système

a. Avec Maple

Le fichier dessins.mp ci-dessous définit la procédure systeme qui calcule les équations du système III.3 à partir de la factorisation des polynômes P, Q et R.

La commande gbasis du package grobner résout ensuite ce système. La solution se présente sous la forme d'une liste dont chaque élément décrit une composante irréductible, sous forme triangulaire.

systeme := proc (Pv, Qv, Rv)
local v, P, Q, R, P0, Q0, R0, P1, Q1, R1,
      eq0, eq1, sys, i;
description `Calcul pour un dessin de genre 0`;
  P:=mul(Pv[i*2-1]^Pv[i*2],i=1..(nops(Pv)/2));
  Q:=mul(Qv[i*2-1]^Qv[i*2],i=1..(nops(Qv)/2));
  R:=mul(Rv[i*2-1]^Rv[i*2],i=1..(nops(Rv)/2));
  v:=degree(P);
  P0:=mul(Pv[i*2-1],i=1..(nops(Pv)/2));
  Q0:=mul(Qv[i*2-1],i=1..(nops(Qv)/2));
  R0:=mul(Rv[i*2-1],i=1..(nops(Rv)/2));
  P1:=factor(diff(P,x))*P0/P:
  Q1:=factor(diff(Q,x))*Q0/Q:
  R1:=factor(diff(R,x))*R0/R:
  eq0:=collect(P1*R0-P0*R1-v*Q/Q0,x):
  eq1:=collect(Q1*R0-Q0*R1-v*P/P0,x):
  sys:=[coeffs(eq0,x),coeffs(eq1,x)]:
end:

b. Avec MuPAD

La syntaxe est proche de celle de Maple. Le système est résolu avec la commande gbasis du package groebner. On demande une résolution pour l'ordre lexicographique (LexOrder) qui fournit un système triangulaire.

Dans le fichier dessins.mb ci-dessous, nous devons redéfinissons Factor qui est buggué dans la version 1.3 de MuPAD.

FFactor := proc (pol)
begin
  if (pol = 0) or (pol = 1) or (pol = -1)
  then pol:
  else Factor(pol):
  end_if:
end_proc:

MkPol := proc (v)
local p, q, i;
begin
  p := 1: q := 1: i := 1:
  while i < nops(v) do
    p := p * v[i]^v[i+1]:
    q := q * v[i]:
    i := i + 2:
  end_while:
  [p,q]:
end_proc:

systeme := proc (Pv, Qv, Rv)
local v, P, Q, R, P0, Q0, R0, P1, Q1, R1,
      eq0, eq1, sys, mk;
begin
  mk:=MkPol(Pv): P:=mk[1]: P0:=mk[2]:
  mk:=MkPol(Qv): Q:=mk[1]: Q0:=mk[2]:
  mk:=MkPol(Rv): R:=mk[1]: R0:=mk[2]:
  v:=degree(P):
  P1:=FFactor(diff(P,x))*P0/P:
  Q1:=FFactor(diff(Q,x))*Q0/Q:
  R1:=FFactor(diff(R,x))*R0/R:
  eq0:=P1*R0-P0*R1-v*Q/Q0:
  eq1:=Q1*R0-Q0*R1-v*P/P0:
  sys:=[coeff(eq0,[x]),coeff(eq1,[x])]:
end_proc:

c. Avec GB

Les équations du système sont calculées avec Maple par exemple. Dans la session GB, on calcule d'abord avec tgroebner une base pour l'ordre du degré, qui est ensuite transformée avec totolex en un système triangulaire.

A.2 Application aux arbres en Y de type B

a. Formalisation

Ce sont les dessins dont la liste des valences est [2n+4; 3 2n 1; 2n+1 12] (voir aussi § IV.3). Il y a 2n+5 inconnues qui sont les coefficients des polynômes P et Q.

P(x) = (x + pa)3 (x + pb) (xn + pc xn-1 + ...)2
Q(x) = (x2 + qa x + qb) (xn+1 + qc xn + ...)2

Pour fixer la position du dessin dans P1C, nous imposons la position de deux célibataires : le sommet o de valence 3 est en 0 et le sommet o de valence 1 est en 1. Nous fixons donc pa = 0 et pb = -1.

b. Calcul de B(5) avec MuPAD

Il y a 21 arbres ayant cette liste de valences. Le calcul montre que tous sont conjugués.

   *----*    MuPAD 1.3  ---  Multi Processing Algebra Data Tool
  /|   /|
 *----* |    Copyright (c) 1992-96 by B. Fuchssteiner, Automath
 | *--|-*    University of Paderborn.  All rights reserved.
 |/   |/
 *----*      Demo version, please register with                   
             MuPAD-distribution@uni-paderborn.de                  
>> read("dessins.mb"):
>> sys:=systeme(
&> [x,3, x-1,1, x^5+pc*x^4+pd*x^3+pe*x^2+pf*x+pg,2],
&> [x^2+qa*x+qb,1, x^6+qc*x^5+qd*x^4+qe*x^3+qf*x^2+qg*x+qh,2],
&> []):
>> time((sol:=groebner::gbasis(sys,LexOrder)));
                                   37000
>> degree(sol[2]);
                                    21

c. Calcul de B(5) avec Maple

    |\^/|     Maple V Release 4 (Ecole normale superieure)
._|\|   |/|_. Copyright (c) 1981-1996 by Waterloo Maple Inc. All rights
 \  MAPLE  /  reserved. Maple and Maple V are registered trademarks of
 <____ ____>  Waterloo Maple Inc.
      |       Type ? for help.
> read `dessins.mp`;
> sys:=systeme(
> [x,3, x-1,1, x^5+pc*x^4+pd*x^3+pe*x^2+pf*x+pg,2],
> [x^2+qa*x+qb,1, x^6+qc*x^5+qd*x^4+qe*x^3+qf*x^2+qg*x+qh,2],
> []):
bytes used=1000256, alloc=851812, time=0.66
> sol:=grobner[gsolve](sys):
bytes used=2001020, alloc=1179432, time=1.69
bytes used=3001316, alloc=1376004, time=3.17
(...)
bytes used=41264396, alloc=2948580, time=41.59
bytes used=42298668, alloc=2948580, time=41.99
> lprint(degree(sol[1][13]));
21

d. Calcul de B(8) avec GB

Il y a 45 arbres ayant cette liste de valences. L'un d'entre eux est le quintuple de B(0). Le calcul montre que les 44 autres sont conjugués.

On a calculé les équations du système avec Maple par exemple.

> read `dessins.mp`;
> sys:=systeme(
> [x,3, x-1,1, x^8+pa*x^7+pb*x^6+pc*x^5+pd*x^4+pe*x^3+pf*x^2+pg*x+ph,2],
> [x^2+qa*x+qb,1,
>    x^9+qc*x^8+qd*x^7+qe*x^6+qf*x^5+qg*x^4+qh*x^3+qi*x^2+qj*x+qk,2],
> []):

La session GB ressemble à ce qui suit.

Grobner Basis Computations (C++ version) (ASAP)
Author:Jean-Charles Faugere ***  CNRS & Universite Paris 6/LITP - IBP ***
Working directory /users/grecc/granboul
GB> S1:=-3*ph-20*qk;
GB> S2:=-20*qj-5*pg+4*ph;
GB> S3:=-19+18*pa-20*qc;
GB> S4:=16*pb-17*pa-20*qd;
GB> S5:=14*pc-20*qe-15*pb;
GB> S6:=-20*qf-13*pc+12*pd;
GB> S7:=-11*pd-20*qg+10*pe;
GB> S8:=-20*qh+8*pf-9*pe;
GB> S9:=-20*qi+6*pg-7*pf;
GB> S10:=2*qb*qj+qa*qk;
GB> S11:=4*qb*qi+3*qa*qj+2*qk;
GB> S12:=18*qb-20*pb+17*qa*qc+16*qd;
GB> S13:=-20*pc+15*qa*qd+14*qe+16*qb*qc;
GB> S14:=12*qf+13*qa*qe+14*qb*qd-20*pd;
GB> S15:=-20*pe+11*qa*qf+10*qg+12*qb*qe;
GB> S16:=8*qh-20*pf+9*qa*qg+10*qb*qf;
GB> S17:=8*qb*qg-20*pg+7*qa*qh+6*qi;
GB> S18:=5*qa*qi+6*qb*qh+4*qj-20*ph;
GB> S19:=19*qa-20*pa+18*qc;
GB> 
GB> D:=HDMP([qk,ph,qj,pg,qi,pf,qh,pe,qg,pd,qf,pc,qe,pb,qd,qa,pa,qc,qb],INT);
GB> S:List(D)
GB> S:=[S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15,S16,S17,S18,S19];
GB> 
GB> g:=tgroebner(S);
(...)
End of modular computation (5.75 sec)
(...)
End of gbasis computation (1.60 sec)!
End of minimal gbasis computation !
    a) done in 1.93 sec + 5.75 sec
b) Check that input polynomials are in gbasis ...done in 0.00 sec
c) Check that gbasis is a groebner basis
(...)
End of gbasis computation (17.24 sec)!
    c) done in 17.28 sec
GB> 
GB> dimension(g)
       45
                    Type: Integer
GB> 
GB> 
GB> h:=totolex(g);
(...) [94 minutes et 46 Mo]
GB> size(h)
       19
                    Type: Integer
GB> h.19
(...) [un polynôme de degré 45]

Ensuite, ce polynôme est factorisé en 6 minutes et 18 Mo avec Pari-GP. Ses facteurs sont de degré 1 et 44.