Constructions

This module provides functions for various interesting constructions of vector bundles.

AUTHORS:

_Mickaël Montessinos: initial implementation

vector_bundle.constructions.atiyah_bundle(field, rank, degree, base=None)

Return \alpha_{r,d}(F_r \otimes base) in the notation of Theorem 6 [At57] , where r is rank and d is degree.

INPUT:

  • field - FunctionField; of genus 1 with an infinite place of degree 1

  • rank - integer

  • degree - integer

  • base - line bundle of degree 0 over field ; (default = trivial_bundle(field))

EXAMPLES

sage: from vector_bundle import atiyah_bundle
sage: from vector_bundle import VectorBundle
sage: F.<x> = FunctionField(GF(11))
sage: R.<y> = F[]
sage: K.<y> = F.extension(y^2 - x^3 - x)
sage: base = VectorBundle(
....:       K,
....:       K.places_finite()[0].divisor()
....:       - K.places_infinite()[0].divisor())
sage: E = atiyah_bundle(K, 5, 3, base)
sage: E.rank()
5
sage: E.degree()
3
sage: E.hom(E).h0()
[
[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]
]
vector_bundle.constructions.canonical_bundle(K)

Return a canonical line bundle over K suitable for explicit Serre duality.

EXAMPLES

sage: from vector_bundle import canonical_bundle, trivial_bundle
sage: F.<x> = FunctionField(GF(3))
sage: canonical_bundle(F).degree()
-2
sage: R.<y> = F[]
sage: K.<y> = F.extension(y^2 - x^3 - x)
sage: L = canonical_bundle(K); L
Vector bundle of rank 1 over Function field in y defined by y^2 + 2*x^3 + 2*x
sage: L == trivial_bundle(K)
True
vector_bundle.constructions.rank_2_trivial_determinant_semistable_bundle(ksi, ext=None)

Construct the semi-stable vector bundle of rank 2 and trivial determinant defined by the extension of ksi by ksi.dual() and nonzero extension class ext.

The fact that this vector bundle is semi-stable is Lemma 5.1 in [NR69]. If ext is None, we default to a default nonzero extension class.

INPUT:

  • ksi – a degree 1 line bundle over a function field of genus at least 2

  • ext – an object representing a class of extensions of ksi by ksi.dual(). (Default: None)

EXAMPLES

sage: from vector_bundle import VectorBundle, trivial_bundle, rank_2_trivial_determinant_semistable_bundle
sage: F.<x> = FunctionField(GF(11))
sage: R.<y> = F[]
sage: K.<y> = F.extension(y^2 - x^5 - 1)
sage: ksi = VectorBundle(K, K.places_finite()[0].divisor())
sage: V = rank_2_trivial_determinant_semistable_bundle(ksi)
sage: V.rank()
2
sage: V.determinant() == trivial_bundle(K)
True
vector_bundle.constructions.savin_bundle(field, rank, degree, line, line_1, line_2)

Return a weakly stable bundle over field of rank rank and degree degree

ALGORITHM:

Section V of [Sav08]

INPUT:

  • field – FunctionField: the base of the bundle. Must have genus at least 2.

  • rank – Integer: the rank of the output bundle

  • degree – Integer: the degree of the output bundle

  • line – VectorBundle: line bundle of degree degree//rank + 1 plays the role of F in the algorithm

  • line_1 – VectorBundle: line bundle of degree degree // rank plays the role of F_1 in the algorithm

  • line_2 – VectorBundle: line bundle of degree degree // rank plays the role of F_2 in the algorithm

EXAMPLE

sage: from vector_bundle import VectorBundle, savin_bundle
sage: F.<x> = FunctionField(GF(11))
sage: R.<y> = F[]
sage: K.<y> = F.extension(y^2 - x^5 + x)
sage: line = VectorBundle(K, 3 * K.places_infinite()[0].divisor())
sage: line_1 = VectorBundle(K, 2 * K.places_finite()[0].divisor())
sage: line_2 = VectorBundle(K, 2 * K.places_finite()[1].divisor())
sage: E = savin_bundle(K, 3, 7, line, line_1, line_2)
sage: E.rank()
3
sage: E.degree()
7
vector_bundle.constructions.trivial_bundle(K)

Return the structure sheaf of the algebraic curve with function field K.

EXAMPLES

sage: from vector_bundle import trivial_bundle
sage: F.<x> = FunctionField(GF(3))
sage: R.<y> = F[]
sage: K.<y> = F.extension(y^2 + x + 2)
sage: O = K.maximal_order()
sage: V = trivial_bundle(K)
sage: V._ideals
[Ideal (1) of Maximal order of Function field in y defined by y^2 + x + 2]
sage: V._g_finite
[1]
sage: V._g_infinite
[1]