vector-bundles-sagemath/demo.ipynb

6.4 KiB

A demo of the vector_bundle package.

In [2]:
from vector_bundle import *
F.<x> = FunctionField(GF(101))

Constructing an indecomposable bundle on an elliptic curve

We construct an indecomposable vector bundle of rank 5 and degree 3 on a function field of genus 1.
This construction may be done automatically using the atiyah_bundle function but we break it down step by step.

In [5]:
R.<y> = F[]
K.<y> = F.extension(y^2 - x^3 - x)
deg_1_bundle = VectorBundle(K, K.places_infinite()[0].divisor())
E = deg_1_bundle
print(E.coefficient_ideals())
print(E.basis_finite())
print(E.basis_infinite())
[Ideal (1) of Maximal order of Function field in y defined by y^2 + 100*x^3 + 100*x]
[(1)]
[((x/(x^2 + 1))*y)]
In [7]:
E = E.extension_by_global_sections()
print(E.coefficient_ideals())
print(E.basis_finite())
print(E.basis_infinite())
[Ideal (x^2/(x^2 + 3)) of Maximal order of Function field in y defined by y^2 + 100*x^3 + 100*x, Ideal (1) of Maximal order of Function field in y defined by y^2 + 100*x^3 + 100*x]
[(1, 0), (0, 1)]
[(1, 0), (100*x^3/(x^2 + 1), (x/(x^2 + 1))*y)]
In [8]:
E = E.tensor_product(deg_1_bundle)
print(E.coefficient_ideals())
print(E.basis_finite())
print(E.basis_infinite())
[Ideal (x^2/(x^2 + 3)) of Maximal order of Function field in y defined by y^2 + 100*x^3 + 100*x, Ideal (1) of Maximal order of Function field in y defined by y^2 + 100*x^3 + 100*x]
[(1, 0), (0, 1)]
[((x/(x^2 + 1))*y, 0), ((100*x^4/(x^4 + 2*x^2 + 1))*y, x^3/(x^2 + 1))]
In [9]:
E = E.extension_by_global_sections()
print(E.coefficient_ideals())
print(E.basis_finite())
print(E.basis_infinite())
[Ideal (x^2/(x^2 + 3)) of Maximal order of Function field in y defined by y^2 + 100*x^3 + 100*x, Ideal (x^2/(x^2 + 3)) of Maximal order of Function field in y defined by y^2 + 100*x^3 + 100*x, Ideal (x^2/(x^2 + 3)) of Maximal order of Function field in y defined by y^2 + 100*x^3 + 100*x, Ideal (x^2/(x^2 + 3)) of Maximal order of Function field in y defined by y^2 + 100*x^3 + 100*x, Ideal (1) of Maximal order of Function field in y defined by y^2 + 100*x^3 + 100*x]
[(1, 0, 0, 0, 0), (0, 1, 0, 0, 0), (0, 0, 1, 0, 0), (0, 0, 0, 1, 0), (0, 0, 0, 0, 1)]
[(1, 0, 0, 0, 0), (0, 1, 0, 0, 0), (0, 0, 1, 0, 0), (100*x^3/(x^2 + 1), 0, 100/x^2*y, (x/(x^2 + 1))*y, 0), (x^6/(x^4 + 2*x^2 + 1), (100*x^4/(x^4 + 2*x^2 + 1))*y, (x/(x^2 + 1))*y, (100*x^4/(x^4 + 2*x^2 + 1))*y, x^3/(x^2 + 1))]
In [10]:
print(E.rank())
print(E.degree())
5
3

We check the algebra of global endomorphisms of E to ensure that it is indecomposable.

In [11]:
E.end().h0()
Out[11]:
[
[1 0 0 0 0]
[0 1 0 0 0]
[0 0 1 0 0]
[0 0 0 1 0]
[0 0 0 0 1]
]

Constructing a weakly stable vector bundle following Savin's method

We construct a weakly stable vector bundle of rank 3 and degree 5 by successive extensions by line bundles.
See [Sav07] in the references for details.
This, again, may be achieved directly using the savin_bundle function.

In [12]:
F = VectorBundle(K, 2*K.places_infinite()[0].divisor())
F1 = VectorBundle(K, K.places_finite()[0].divisor())
E1 = F1
E2 = F.non_trivial_extension(E1)
E3 = F.non_trivial_extension(E2)
print(E3.rank())
print(E3.degree())
print(E3.coefficient_ideals())
print(E3.basis_finite())
print(E3.basis_infinite())
3
5
[Ideal (1, 1/x*y) of Maximal order of Function field in y defined by y^2 + 100*x^3 + 100*x, Ideal (1) of Maximal order of Function field in y defined by y^2 + 100*x^3 + 100*x, Ideal (1) of Maximal order of Function field in y defined by y^2 + 100*x^3 + 100*x]
[(1, 0, 0), (0, 1, 0), (0, 0, 1)]
[(1, 0, 0), ((100*x/(x^2 + 1))*y, x^3/(x^2 + 1), 0), (0, (100*x^4/(x^4 + 2*x^2 + 1))*y, x^3/(x^2 + 1))]