Logo Université de Nantes

Christoph Sorger

Professeur de mathématiques à Nantes Université

Logo Centre national de la recherche scientifique

Chow - Une bibliothèque SAGE pour des calculs en théorie d'intersection

Description

Chow est une bibliothèque SAGE pour faciliter des calculs en théorie d’intersection, écrit en collaboration avec Manfred Lehn. Elle est inspirée et basée sur Schubert, une bibliothèque Maple de Sheldon Katz et Stein Arild Strømme.

Chow est écrit en python et utilise de manière essentielle Singular via son interface de SAGE. Travailler avec Singular et Sage au lieu de Maple simplifie de beaucoup les algorithmes et permet notamment de calculer l’anneau de Chow d’un éclatement par générateurs et relations.

Nous avons écrit cette bibliothèque pour calculer le nombre d’Euler de la variété compacte holomorphiquement symplectique de dimension huit construite dans Twisted cubics on cubic fourfolds.

Les détails du calcul se trouvent ici.

Même si inspiré par Schubert, cette bibliothèque à été écrit from scratch. Bien que nous soyons relativement sûr que le calcul du nombre d’Euler ci-dessous est correct que nous ayons vérifiés soigneusement les méthodes de la bibliothèque, il est bien entendu possible et même probable qu’il reste des bogues. Si vous en voyez, contactez les auteurs. Bref: use at your own risk !

Pour ceux qui préfèrent Macaulay2, utilisez le paquet Schubert2!

Exemple d’utilisation

Un exemple classique est le calcul du nombre des coniques lisses planes tangentes à cinque coniques générales (c’était une question de Steiner en 1848). Chaque tangence est une condition de degré \(6\) sur le \(\mathbb{P}^5\) de toutes les coniques. Pour gérer les droites doubles, on éclate la surface de Veronese dans ce \(\mathbb{P}^5\), puis on détermine l’intégrale de \((6H-2E)^5\)\(E\) est le diviseur exceptionnel. Avec Chow, on calcule comme suit:

sage: P2 = Proj(2, 'k')
sage: P5 = Proj(5, 'h')
sage: f = P2.hom(['2*k'], P5)
sage: g = Blowup(f)
sage: B = g.codomain()
sage: (e, h) = B.chowring().gens()
sage: ((6*h - 2*e)^5).integral()
3264

Notons que \(g\) est le morphisme correspondant à l’éclatement et que l’éclaté \(B\) est donc son codomain.

\[\begin{array}{ccc} E&\xrightarrow{g}&B\\ \downarrow&&\downarrow\scriptstyle{\sigma}{}\\ \mathbb{P}^2 & \xrightarrow{f} & \mathbb{P}^5 \end{array} \]

Par ailleurs, les générateurs et relations de l’anneau de Chow ainsi que le fibré tangent ou le nombre de Betti s’affichent comme suit:

sage: B.chowring().gens()
(e, h)
sage: B.chowring().rels()
[h^6, e*h^3, e^3 - 9/2*e^2*h + 15/2*e*h^2 - 4*h^3]
sage: B.tangent_bundle().chern_classes()
[1, -2*e + 6*h, -15/2*e*h + 15*h^2, 9/2*e^2*h - 93/4*e*h^2 + 28*h^3, 27/4*e^2*h^2 + 27*h^4, 12*h^5]
sage: B.betti_numbers()
[1, 2, 3, 3, 2, 1]
sage: B.tangent_bundle().chern_classes()[5].integral()  # The Euler number
12

Cubiques gauches sur les quintiques de dimension 3

Suivant une conjecture de Clemens en 1981, le nombre \(n_d\) des courbes rationnelles de degré \(d\) sur une quintique générale \(Y\subset\mathbb{P}^4\) est fini. Cette conjecture a été montré par S. Katz pour \(d\leq 7\) [K], Johnson et Kleiman for \(d\leq 9\) [JK] et Cotteril pour \(d=10\) [C1] et \(d=11\) [C2]. D’après ce que je comprends elle est toujours ouverte en général.

Le nombre \(n_1=2875\) est classique mais déjà le calcul de \(n_2=609250\) est délicat et a été fait par Katz dans [K]. En 1991, Candelas et al. [COGP] ont proposé la valeur virtuelle de \(n_d\) pour tout \(d\). Givental l’a montré en 1996 [G] via les invariants de Gromov-Witten (la valeur virtuelle et \(n_d\) coincident pour les degrés pour lesquels la conjecture de Clemens est vrai).

Le nombre des cubiques gauches (généralisées) sur une quintique générale \(Y\subset\mathbb{P}^4\) a été calculé par Ellingsrud et Strømme et avait confirmé la prédiction de Candelas et al. En Chow, il se calcule ainsi (voir la page anglaise pour des explications détaillées):

sage: P = Grass(1, 5, 'w')
sage: W = P.sheaves["universal_quotient"]
sage: f = map_incidence_to_nets_of_quadrics(W)

sage: g = Blowup(f)
sage: Exc, H = g.domain(), g.codomain()
sage: I, X = Exc.base_chowscheme(), H.base_chowscheme()

sage: K1, K2 = I.sheaves["K1"], I.sheaves["K2"]
sage: L1, L2 = I.sheaves["L1"], I.sheaves["L2"]
sage: Q = L1 + K2.dual()
sage: Exc_Q = Exc.base_morphism().upperstar(Q)
sage: Exc_K1 = Exc.base_morphism().upperstar(K1)
sage: AExc = Exc_Q.symm(2) * Exc_K1.determinant() * Exc.o(-1)
sage: AExcH = g.lowerstar(AExc, normal_bundle=Exc.o(-1))

sage: E, F = X.sheaves["E"], X.sheaves["F"]
sage: XW = X.base_morphism().upperstar(W)
sage: AX = (F * XW.symm(2)) - (E * XW.symm(3)) + XW.symm(5)
sage: AXH = H.base_morphism().upperstar(AX)

sage: (AXH - AExcH).chern_classes()[H.dimension()].integral()
317206375

Installation

Chow est maintenant une branche dans le code source de sage. Pour l’installer, on peut procéder ainsi :

$ git clone https://github.com/sagemath/sage.git
Cloning into ...
$ cd sage
$ git remote add trac git://trac.sagemath.org/sage.git
$ git trac checkout 27228

[Optionnel] Vous serez sure la branche t/27228/public/ticket-chow. Pour retourner sur la branche par défaut de sage, develop:

$ git checkout develop
$ git merge t/27228/public/ticket-chow

Si git merge dans la commande ci-dessus ne fonctionne pas pour une raison ou une autre, envoyez moi un e-mail !

Maintenant il faut compiler sage. Si votre machine est préparée, c’est aussi simple que cela :

$ make configure
$ ./configure
$ make -s V=0
$ ./sage

Si votre machine n’est pas préparée, vous pouvez consulter la page des pre-requis de la documentation de sage.

Pour tester ensuite que chow fonctionne, lancer l’ensemble de ses tests :

$ ./sage -t src/sage/schemes/chow
[Running tests...]

Si vous rencontrez une difficulté, envoyez moi un e-mail !

Documentation

Comme la documentation est générée automatiquement via les docstrings de python, les fichiers html et pdf sont générées au même temps. Surtout le fichier pdf devient ainsi assez long (environ 100 pages) alors que le cœur de la documentation est bien plus courte. Désolé.

Par ailleurs, comme tout sous Sage, la bibliothèque est modulaire et il est facile d’ajouter ses variétés préférées ou des extensions. Envoyer moi un mot pour les intégrer par la suite.

Logo Laboratoire de mathématiques Jean Leray
LMJL
UMR n° 6629
Logo Centre de mathématiques Henri Lebesgue
Logo Institut Universitaire de France