Construct sheaves on toric varieties

A toric vector bundle (on a toric variety) is a vector bundle that is equivariant with respect to the algebraic torus action.

sage.schemes.toric.sheaf.constructor.CotangentBundle(X)[source]

Construct the cotangent bundle of a toric variety.

INPUT:

  • X – a toric variety; the base space of the bundle

OUTPUT: the cotangent bundle as a Klyachko bundle

EXAMPLES:

sage: dP7 = toric_varieties.dP7()
sage: from sage.schemes.toric.sheaf.constructor import CotangentBundle
sage: CotangentBundle(dP7)
Rank 2 bundle on 2-d CPR-Fano toric variety covered by 5 affine patches.
>>> from sage.all import *
>>> dP7 = toric_varieties.dP7()
>>> from sage.schemes.toric.sheaf.constructor import CotangentBundle
>>> CotangentBundle(dP7)
Rank 2 bundle on 2-d CPR-Fano toric variety covered by 5 affine patches.
sage.schemes.toric.sheaf.constructor.LineBundle(X, D)[source]

Construct the rank-1 bundle \(O(D)\).

INPUT:

  • X – a toric variety; the base space of the bundle

  • D – a toric divisor

OUTPUT:

The line bundle \(O(D)\) as a Klyachko bundle of rank 1.

EXAMPLES:

sage: X = toric_varieties.dP8()
sage: D = X.divisor(0)
sage: from sage.schemes.toric.sheaf.constructor import LineBundle
sage: O_D = LineBundle(X, D)
sage: O_D.cohomology(dim=True, weight=(0,0))
(1, 0, 0)
>>> from sage.all import *
>>> X = toric_varieties.dP8()
>>> D = X.divisor(Integer(0))
>>> from sage.schemes.toric.sheaf.constructor import LineBundle
>>> O_D = LineBundle(X, D)
>>> O_D.cohomology(dim=True, weight=(Integer(0),Integer(0)))
(1, 0, 0)
class sage.schemes.toric.sheaf.constructor.SheafLibrary(toric_variety)[source]

Bases: object

Utility object to construct sheaves on toric varieties.

Warning

You should never construct instances manually. Can be accessed from a toric variety via the sage.schemes.toric.variety.ToricVariety_field.sheaves attribute.

EXAMPLES:

sage: type(toric_varieties.P2().sheaves)
<class 'sage.schemes.toric.sheaf.constructor.SheafLibrary'>
>>> from sage.all import *
>>> type(toric_varieties.P2().sheaves)
<class 'sage.schemes.toric.sheaf.constructor.SheafLibrary'>
Klyachko(multi_filtration)[source]

Construct a Klyachko bundle (sheaf) from filtration data.

INPUT:

  • multi_filtration – a multi-filtered vectors space with multiple filtrations being indexed by the rays of the fan. Either an instance of MultiFilteredVectorSpace() or something (like a dictionary of ordinary filtered vector spaces).

OUTPUT:

The Klyachko bundle defined by the filtrations, one for each ray, of a vector space.

EXAMPLES:

sage: P1 = toric_varieties.P1()
sage: v1, v2, v3 = [(1,0,0), (0,1,0), (0,0,1)]
sage: F1 = FilteredVectorSpace({1: [v1, v2, v3], 3: [v1]})
sage: F2 = FilteredVectorSpace({0: [v1, v2, v3], 2: [v2, v3]})
sage: P1 = toric_varieties.P1()
sage: r1, r2 = P1.fan().rays()
sage: F = MultiFilteredVectorSpace({r1:F1, r2:F2});  F
Filtrations
    N(-1): QQ^3 >= QQ^2 >= QQ^2 >=  0   >= 0
     N(1): QQ^3 >= QQ^3 >= QQ^1 >= QQ^1 >= 0
sage: P1.sheaves.Klyachko(F)
Rank 3 bundle on 1-d CPR-Fano toric variety covered by 2 affine patches.
>>> from sage.all import *
>>> P1 = toric_varieties.P1()
>>> v1, v2, v3 = [(Integer(1),Integer(0),Integer(0)), (Integer(0),Integer(1),Integer(0)), (Integer(0),Integer(0),Integer(1))]
>>> F1 = FilteredVectorSpace({Integer(1): [v1, v2, v3], Integer(3): [v1]})
>>> F2 = FilteredVectorSpace({Integer(0): [v1, v2, v3], Integer(2): [v2, v3]})
>>> P1 = toric_varieties.P1()
>>> r1, r2 = P1.fan().rays()
>>> F = MultiFilteredVectorSpace({r1:F1, r2:F2});  F
Filtrations
    N(-1): QQ^3 >= QQ^2 >= QQ^2 >=  0   >= 0
     N(1): QQ^3 >= QQ^3 >= QQ^1 >= QQ^1 >= 0
>>> P1.sheaves.Klyachko(F)
Rank 3 bundle on 1-d CPR-Fano toric variety covered by 2 affine patches.
cotangent_bundle()[source]

Return the cotangent bundle of the toric variety.

OUTPUT: the cotangent bundle as a Klyachko bundle

EXAMPLES:

sage: dP6 = toric_varieties.dP6()
sage: TX = dP6.sheaves.tangent_bundle()
sage: TXdual = dP6.sheaves.cotangent_bundle()
sage: TXdual == TX.dual()
True
>>> from sage.all import *
>>> dP6 = toric_varieties.dP6()
>>> TX = dP6.sheaves.tangent_bundle()
>>> TXdual = dP6.sheaves.cotangent_bundle()
>>> TXdual == TX.dual()
True
divisor(*args, **kwds)[source]

Return a toric divisor.

INPUT:

This is just an alias for sage.schemes.toric.variety.ToricVariety_field.divisor(), see there for details.

By abuse of notation, you can usually use the divisor \(D\) interchangeably with the line bundle \(O(D)\).

OUTPUT: a toric divisor

EXAMPLES:

sage: dP6 = toric_varieties.dP6()
sage: dP6.inject_variables()
Defining x, u, y, v, z, w
sage: D = dP6.sheaves.divisor(x*u^3);  D
V(x) + 3*V(u)
sage: D == dP6.divisor(x*u^3)
True
>>> from sage.all import *
>>> dP6 = toric_varieties.dP6()
>>> dP6.inject_variables()
Defining x, u, y, v, z, w
>>> D = dP6.sheaves.divisor(x*u**Integer(3));  D
V(x) + 3*V(u)
>>> D == dP6.divisor(x*u**Integer(3))
True
line_bundle(divisor)[source]

Construct the rank-1 bundle \(O(D)\).

INPUT:

  • divisor – a toric divisor

OUTPUT:

The line bundle \(O(D)\) for the given divisor as a Klyachko bundle of rank 1.

EXAMPLES:

sage: X = toric_varieties.dP8()
sage: D = X.divisor(0)
sage: O_D = X.sheaves.line_bundle(D)
sage: O_D.cohomology(dim=True, weight=(0,0))
(1, 0, 0)
>>> from sage.all import *
>>> X = toric_varieties.dP8()
>>> D = X.divisor(Integer(0))
>>> O_D = X.sheaves.line_bundle(D)
>>> O_D.cohomology(dim=True, weight=(Integer(0),Integer(0)))
(1, 0, 0)
tangent_bundle()[source]

Return the tangent bundle of the toric variety.

OUTPUT: the tangent bundle as a Klyachko bundle

EXAMPLES:

sage: toric_varieties.dP6().sheaves.tangent_bundle()
Rank 2 bundle on 2-d CPR-Fano toric variety covered by 6 affine patches.
>>> from sage.all import *
>>> toric_varieties.dP6().sheaves.tangent_bundle()
Rank 2 bundle on 2-d CPR-Fano toric variety covered by 6 affine patches.
trivial_bundle(rank=1)[source]

Return the trivial bundle of rank r.

INPUT:

  • rank – integer (default: \(1\)); the rank of the bundle

OUTPUT: the trivial bundle as a Klyachko bundle

EXAMPLES:

sage: P2 = toric_varieties.P2()
sage: I3 = P2.sheaves.trivial_bundle(3);  I3
Rank 3 bundle on 2-d CPR-Fano toric variety covered by 3 affine patches.
sage: I3.cohomology(weight=(0,0), dim=True)
(3, 0, 0)
>>> from sage.all import *
>>> P2 = toric_varieties.P2()
>>> I3 = P2.sheaves.trivial_bundle(Integer(3));  I3
Rank 3 bundle on 2-d CPR-Fano toric variety covered by 3 affine patches.
>>> I3.cohomology(weight=(Integer(0),Integer(0)), dim=True)
(3, 0, 0)
sage.schemes.toric.sheaf.constructor.TangentBundle(X)[source]

Construct the tangent bundle of a toric variety.

INPUT:

  • X – a toric variety; the base space of the bundle

OUTPUT: the tangent bundle as a Klyachko bundle

EXAMPLES:

sage: dP7 = toric_varieties.dP7()
sage: from sage.schemes.toric.sheaf.constructor import TangentBundle
sage: TangentBundle(dP7)
Rank 2 bundle on 2-d CPR-Fano toric variety covered by 5 affine patches.
>>> from sage.all import *
>>> dP7 = toric_varieties.dP7()
>>> from sage.schemes.toric.sheaf.constructor import TangentBundle
>>> TangentBundle(dP7)
Rank 2 bundle on 2-d CPR-Fano toric variety covered by 5 affine patches.
sage.schemes.toric.sheaf.constructor.TrivialBundle(X, rank=1)[source]

Return the trivial bundle of rank r.

INPUT:

  • X – a toric variety; the base space of the bundle

  • rank – the rank of the bundle

OUTPUT: the trivial bundle as a Klyachko bundle

EXAMPLES:

sage: P2 = toric_varieties.P2()
sage: from sage.schemes.toric.sheaf.constructor import TrivialBundle
sage: I3 = TrivialBundle(P2, 3);  I3
Rank 3 bundle on 2-d CPR-Fano toric variety covered by 3 affine patches.
sage: I3.cohomology(weight=(0,0), dim=True)
(3, 0, 0)
>>> from sage.all import *
>>> P2 = toric_varieties.P2()
>>> from sage.schemes.toric.sheaf.constructor import TrivialBundle
>>> I3 = TrivialBundle(P2, Integer(3));  I3
Rank 3 bundle on 2-d CPR-Fano toric variety covered by 3 affine patches.
>>> I3.cohomology(weight=(Integer(0),Integer(0)), dim=True)
(3, 0, 0)