ChowSchemes¶
A ChowScheme is thought about as a smooth algebraic variety having a given Chow ring. A morphism between ChowSchemes is thought about as a morphism between these varieties represented by the induced morphism on the level of Chow rings.
As an example, consider \(\mathbb{P}^2\) and \(\mathbb{P}^5\) and the morphism \(f:\mathbb{P}^2\longrightarrow\mathbb{P}^5\) given by the Veronese embedding \([x:y:z]\mapsto [x^2:y^2:z^2:yz:xz:xy]\) which we encode as follows:
sage: P2 = ChowScheme(2, 'h', 1, 'h^3')
sage: P5 = ChowScheme(5, 'k', 1, 'k^6')
sage: f = P2.hom(['2*h'], P5)
In the first two lines, we define \(\mathbb{P}^2\) and \(\mathbb{P}^5\) by their (rational) Chow rings respectively \(A^*(\mathbb{P}^2)=\QQ[h]/(h^3)\) and \(A^*(\mathbb{P}^5)=\QQ[k]/(k^6)\). The Veronese embedding \(f\) induced on the level of Chow rings
is given by sending the generator \(k\) to \(2*h\) which explains the third line.
Actually the projective space is already defined in the libraries and one might code as follows:
sage: P2 = Proj(2)
sage: P5 = Proj(5, hyperplane_class='k')
sage: f = P2.hom(['2*h'], P5)
AUTHORS:
- Manfred Lehn (2013)
- Christoph Sorger (2013)
-
sage.schemes.chow.scheme.
ChowScheme
(dimension, generators=None, degrees=None, relations=None, point_class=None, names=None, name=None, latex_name=None)¶ Returns a ChowScheme, given its dimension and (optional) generators, degrees, relations, point_class, names, name, latex_name.
INPUT:
dimension
– The dimension of the ChowSchemegenerators
– An optional (list of) strings, the generatorsdegrees
– An optional (list of) integers, the degrees of the generatorsrelations
– An optional (list of) strings, the relations between the generatorspoint_class
– An optional point_class of the ChowScheme.names
– An optional (list of) strings, names of the generators in the ChowSchemename
– An optional string, the name of the ChowSchemelatex_name
– An optional string, the latex representation of the ChowScheme
OUTPUT:
- A ChowScheme
EXAMPLES:
sage: P2.<h> = ChowScheme(2, 'h', 1, 'h^3') sage: h^3 0
Note that the optional name is not the unique string representation of the ChowScheme (as given by python’s \(:meth:repr()\)) but is rather used in the string representations of other objects as morphisms or bundles on the ChowScheme in order to simplify the output.
EXAMPLES:
sage: P2.<h> = ChowScheme(2, 'h', 1, 'h^3', 'h^2', name='P2'); P2 ChowScheme(2, 'h', 1, 'h^3', 'h^2') sage: str(P2) 'P2' sage: P2.<h> = Proj(2, name='P2'); P2 ChowScheme(2, 'h', 1, 'h^3', 'h^2') sage: P2.o(-1) # The Hopf bundle on P2 Bundle(P2, 1, [1, -h])
-
class
sage.schemes.chow.scheme.
ChowScheme_generic
(R=None, name=None, latex_name=None)¶ Bases:
sage.structure.parent.Parent
The base class for all ChowSchemes.
-
base
()¶ - Return the base ChowScheme of this ChowScheme. Synonym for
- \(meth:base_chowscheme()\)
OUTPUT :
A ChowScheme.
Examples:
sage: G = Grass(4, 2) sage: G.base() PointChowScheme sage: Q = G.sheaves["universal_quotient"] sage: ProjQ = ProjBundle(Q.symm(2).dual()) # Proj(Q)->G sage: ProjQ.base() ChowScheme(4, ['c1', 'c2'], [1, 2], ['c2^3', 'c1*c2^2', 'c1^2*c2 - c2^2', 'c1^3 - 2*c1*c2'], 'c2^2')
-
base_change
(f)¶ Return this ChowScheme with base changes to f.codomain().
INPUT:
f
– a morphism from this ChowScheme to another ChowScheme
OUTPUT:
This ChowScheme based changed to f.codomain()
EXAMPLES:
sage: P4 = ChowScheme(4, 'w', 1, 'w^5') # P4 sage: X = ChowScheme(6, ['e1', 'e2', 'w'], [1, 2, 1], ['w^5']) sage: X.base() PointChowScheme sage: X = X.base_change(X.hom('w', P4)) sage: X.base() ChowScheme(4, 'w', 1, 'w^5')
-
base_chowring
()¶ Return the Chow Ring of the Base Chow Scheme of this ChowScheme.
EXAMPLES:
sage: P1 = ChowScheme(1, 'h', 1, 'h^2', 'h') sage: P1.base_chowring() Quotient of Multivariate Polynomial Ring in no variables over Rational Field by the ideal (0)
-
base_chowring_morphism
()¶ Return the Chow Ring morphism from the Base Chow Ring to the Chow Ring
EXAMPLES:
sage: P1 = ChowScheme(1, 'h', 1, 'h^2', 'h') sage: f = P1.base_chowring_morphism()
-
base_chowscheme
()¶ Return the base ChowScheme of this ChowScheme.
OUTPUT:
A chowscheme.
EXAMPLES:
sage: P2 = Proj(2) sage: P2.base_chowscheme() PointChowScheme
-
base_morphism
()¶ Return the structure morphism from
self
to its base chow scheme.OUTPUT:
A ChowScheme morphism.
EXAMPLES:
sage: G = Grass(4, 3) sage: Q = G.sheaves["universal_quotient"] sage: PG = ProjBundle(Q.symm(2).dual()) sage: PG.base_morphism() ChowScheme morphism: From: Proj(Bundle(Grass(4, 3), 6, [1, -4*c, 10*c^2, -20*c^3])) To: Grass(4, 3) Defn: Structure map
-
base_ring
()¶ Return the Chow ring of the base of this ChowScheme. Synonym of \(:meth:base_chowring()\).
EXAMPLES:
sage: P1 = ChowScheme(1, 'h', 1, 'h^2', 'h') sage: P1.base_ring() Quotient of Multivariate Polynomial Ring in no variables over Rational Field by the ideal (0)
-
betti_numbers
()¶ Return the Betti number of this ChowScheme.
EXAMPLES:
sage: P2 = Proj(2) sage: P = PointChowScheme sage: f = P.hom([0], P2) sage: B = Blowup(f).codomain() # P2 blown up in a point sage: B.betti_numbers() [1, 2, 1]
-
canonical_class
()¶ Return the canonical class of this ChowScheme.
EXAMPLES:
sage: P2 = Proj(2) sage: P2.canonical_class() -3*h
-
chowring
()¶ Return the Chow Ring of this ChowScheme.
EXAMPLES:
sage: P1 = ChowScheme(1, 'h', 1, 'h^2', 'h') sage: P1.chowring() Quotient of Multivariate Polynomial Ring in h over Rational Field by the ideal (h^2)
-
deg
(i=0)¶ Return the degree of the i-th generator of the Chow ring of this ChowScheme. If i is unspecified the degree of the first generator (eg i=0) is returned if exists.
INPUT:
i
– an (optional) integer.
OUTPUT:
The degree of the i-th generator.
EXAMPLES:
sage: X = ChowScheme(1, 'h', 1, 'h^2', 'h') # ChowScheme of P1 sage: X.deg() 1 sage: X = ChowScheme(2, ['c1', 'c2'], [1, 2]) sage: X.deg() 1 sage: X.deg(1) 2
CORNER CASE:
sage: X = PointChowScheme sage: X.deg() Traceback (most recent call last): ... IndexError: tuple index out of range
-
degs
()¶ Return the degrees of the generators of the Chow ring of this ChowScheme.
OUTPUT:
A tuple of integers representing the degrees of the generators.
EXAMPLES:
sage: X = ChowScheme(1, 'h', 1, 'h^2', 'h') # ChowScheme of P1 sage: X.degs() (1,) sage: X = ChowScheme(2, ['c1', 'c2'], [1, 2]) sage: X.degs() (1, 2)
CORNER CASE:
sage: X = PointChowScheme sage: X.degs() ()
-
dimension
()¶ Return the dimension of this ChowScheme.
OUTPUT:
An integer, the dimension of this ChowScheme
EXAMPLES:
sage: X = ChowScheme(2, ['c1', 'c2'], [1, 2]) sage: X.dimension() 2
-
euler_number
()¶ Return the Euler number of this ChowScheme.
EXAMPLES:
sage: G = Proj(2) sage: G.euler_number() 3
-
gen
(i=0)¶ Return the i-th generator for the Chow ring of this ChowScheme.
INPUT:
i
– an (optional) integer
OUTPUT:
The element of the Chow ring of this ChowScheme corresponding to the i-th generator.
EXAMPLES:
sage: X = ChowScheme(2, [‘c1’, ‘c2’], [1, 2]) sage: X.gen(1) c2
-
gens
()¶ Return the generators for the Chow ring of this ChowScheme.
EXAMPLES:
sage: X = ChowScheme(2, [‘c1’, ‘c2’], [1, 2]) sage: X.gens() (c1, c2)
-
gens_dict
()¶ Return the dictionary variable_name – generator of the Chow ring of this ChowScheme.
EXAMPLES:
sage: X = ChowScheme(2, ['c1', 'c2'], [1, 2]) sage: gens = X.gens_dict() sage: [(key, gens[key]) for key in sorted(gens)] [('c1', c1), ('c2', c2)]
-
gens_dict_recursive
()¶ Return recursively the dictionary variable_name – generator of the Chow ring of this ChowScheme.
EXAMPLES:
sage: X = ChowScheme(2, ['c1', 'c2'], [1, 2]) sage: gens = X.gens_dict_recursive() sage: [(key, gens[key]) for key in sorted(gens)] [('c1', c1), ('c2', c2)]
-
hom
(x, Y=None, check=True)¶ Return the ChowScheme morphism from
self
toY
defined byx
.INPUT:
x
– anything hat determines a ChowScheme morphism, typically the images of the generators of the ChowRing of Y in the ChowRing of X. Ifx
is a scheme, try to determine a natural map tox
.Y
– the codomain scheme (optional). IfY
is not given, try to determineY
from context.check
– boolean (optional, default=``True``). Whether to check the defining data for consistency.
OUTPUT:
The ChowScheme morphism from
self
toY
defined byx
.EXAMPLES:
sage: P1.<h> = ChowScheme(1, 'h', 1, 'h^2', 'h') sage: P3.<k> = ChowScheme(3, 'k', 1, 'k^4', 'k^3') sage: f = P1.hom([3*h], P3) # Twisted cubic sage: f(k) 3*h
-
identity_morphism
()¶ Return the identity morphism.
OUTPUT:
The identity morphism of the ChowScheme
self
.EXAMPLES:
sage: X = ChowScheme(1, 'h', 1, 'h^2', name='P1') sage: X.identity_morphism() ChowScheme endomorphism of P1 Defn: Identity map
-
is_point
()¶ Return True if this ChowScheme corresponds to a point.
EXAMPLES:
sage: P2 = Proj(2) sage: P2.base().is_point() True
-
is_point_chowscheme
()¶ Return True if this ChowScheme is the instance PointChowScheme
EXAMPLES:
sage: P2 = Proj(2) sage: P2.is_point_chowscheme() False sage: P2.base().is_point_chowscheme() True
-
ngens
()¶ Return the number of generators for the Chow ring of this ChowScheme.
EXAMPLES:
sage: X = ChowScheme(2, [‘c1’, ‘c2’], [1, 2]) sage: X.ngens() 2
-
nrels
()¶ Return the number of relations of the Chow ring of this ChowScheme.
OUTPUT:
An integer, the number of relations.
EXAMPLES:
sage: X = ChowScheme(1, 'h', 1, 'h^2', 'h') sage: X.nrels() 1 sage: X = ChowScheme(2, ['c1', 'c2'], [1, 2]) sage: X.nrels() 0
-
o
(n=0)¶ Return \(\mathcal{O}(n)\) for this ChowScheme.
INPUT:
n
– an integer
EXAMPLES:
sage: G = Grass(4,3) sage: G.o(1) Bundle(Grass(4, 3), 1, [1, c]) sage: G.sheaves["universal_quotient"].determinant() Bundle(Grass(4, 3), 1, [1, c])
-
point_class
()¶ Return the point_class of this ChowScheme
OUTPUT:
The point_class of this ChowScheme.
EXAMPLES:
sage: X = ChowScheme(3, 'h', 1, 'h^4', 'h^3') # ChowScheme of P3 sage: X.point_class() h^3 sage: X = ChowScheme(1, 'h', 1, 'h^2') # P1, no point_class sage: X.point_class()
-
rel
(i=0)¶ Return the i-th relation of the Chow ring of this ChowScheme. If i is unspecified the first relation (eg i=0) is returned if exists.
INPUT:
i
– an (optional) integer.
OUTPUT:
The i-th relation.
EXAMPLES:
sage: X = ChowScheme(1, 'h', 1, 'h^2', 'h') # P1 sage: X.rel() h^2
-
relative_dimension
()¶ Return the relative dimension of this ChowScheme.
EXAMPLES:
sage: G = Grass(4, 3) sage: Q = G.sheaves["universal_quotient"] sage: Q.symm(2).dual().rank() 6 sage: ProjG = ProjBundle(Q.symm(2).dual()) sage: ProjG.relative_dimension() 5
-
rels
()¶ Return the relations of Chow ring of this ChowScheme.
OUTPUT:
A list of ring elements representing the relations.
EXAMPLES:
sage: X = ChowScheme(1, 'h', 1, 'h^2', 'h') sage: X.rels() [h^2] sage: X = ChowScheme(2, ['c1', 'c2'], [1, 2]) sage: X.rels() []
-
set_point_class
(value)¶ Set the point_class of this ChowScheme.
INPUT:
v
– an element (or its string representation) of the point_class
EXAMPLES:
sage: X = ChowScheme(3, 'h', 1, 'h^4') # ChowScheme of P3 sage: h = X.gen() sage: X.set_point_class(h^3) sage: X = ChowScheme(3, 'h', 1, 'h^4') # ChowScheme of P3 sage: X.set_point_class('h^3')
-
sheaves
¶ Return a dictionary with sheaves on this ChowScheme. The naming convention is to suppress the word “bundle” in the keys. For instance, the tangent bundle has the key ‘tangent’, the universal sub bundle the key ‘universal_sub’ and the universal quotient bundle the key ‘universal_quotient’.
EXAMPLES:
sage: P4 = Proj(4, name='P4') # P4 in the sens of Grothendieck sage: P4.sheaves["tangent"] Bundle(P4, 4, [1, 5*h, 10*h^2, 10*h^3, 5*h^4]) sage: P4.sheaves["universal_sub"] Bundle(P4, 4, [1, -h, h^2, -h^3, h^4]) sage: P4.sheaves["universal_quotient"] Bundle(P4, 1, [1, h])
-
tangent_bundle
()¶ Return the tangent bundle of this ChowScheme if defined.
EXAMPLES:
sage: G = Grass(4,2) sage: G.tangent_bundle() Bundle(Grass(4, 2), 4, [1, 4*c1, 7*c1^2, 12*c1*c2, 6*c2^2])
-
todd_class
()¶ Return the todd class of this ChowScheme.
EXAMPLES:
sage: Proj(3).todd_class() h^3 + 11/6*h^2 + 2*h + 1
-
variable_name
()¶ Return the (first) variable name of the Chow ring of this ChowScheme.
EXAMPLES:
sage: X = ChowScheme(2, ['c1', 'c2'], [1, 2]) sage: X.variable_name() 'c1'
-
variable_names
()¶ Return the variable names of the Chow ring of this ChowScheme.
EXAMPLES:
sage: X = ChowScheme(2, ['c1', 'c2'], [1, 2]) sage: X.variable_names() ('c1', 'c2')
-
-
sage.schemes.chow.scheme.
is_chowScheme
(x)¶ Test whether
x
is a chow scheme.INPUT:
x
– anything.
OUTPUT:
Boolean. Whether
x
derives fromChowScheme_generic
.