Methods for calculations with elements of a ChowRing¶
Provide methods for calculations with elements of a ChowRing. For example, suppose we work with the ChowRing of the projective plane blown up in a point \(\widehat{\mathbb{P}^2}\) and consider the special element \(x = (2*H - E)^2 + E\):
sage: A.<H,E> = ChowRing(['H', 'E'], [1, 1], ['E*H', 'E^2+H^2'])
sage: x = (2 * H - E)^2 + E; x
-3*E^2 + E
Compute the decomposition of x in the graded ring A and return its part in degree equal to the dimension:
sage: x.by_degrees()
[0, E, -3*E^2]
The codimension is the top degree of an element:
sage: x.codimension()
2
sage: (E + H).codimension()
1
Compute the integral of x with respect to the point class \(H^2\):
sage: A.set_point_class(H^2) # Need to set the point class first.
sage: x.integral()
3
The other methods are related to the elements defined as the Chern character of a vector bundle. Recall that if \(X\) is a smooth algebraic variety, then the Chern character gives an isomorphism
In our example if \(T\) is the tangent bundle on \(\mathbb{P}^2\) then \(T\) is of rank \(2\) with Chern classes \([1, 3*H - E, 4*H^2]\) and its Chern character is \(t = 2 - E + 3 * H\):
sage: A.set_dimension(2) # Need to set the dimension first.
sage: t = 2 - E + 3 * H
sage: t._expp()
-4*E^2 + 3*H - E + 1
sage: t.wedge(2)._expp()
3*H - E + 1
sage: t.symm(2)._expp()
-32*E^2 + 9*H - 3*E + 1
AUTHORS:
- Manfred Lehn (2013)
- Christoph Sorger (2013)
-
class
sage.schemes.chow.ring_element.
ChowRingElement
(parent, rep)¶ Bases:
sage.rings.quotient_ring_element.QuotientRingElement
Class representing the elements of a ChowRing.
-
adams
(k)¶ Return the result of the k-th Adams operator applied to this Chow ring element.
INPUT :
k
– an integer
EXAMPLE:
sage: A.<c1, c2, c3> = ChowRing(['c1', 'c2', 'c3'], [1, 2, 3]) sage: (1 + c1 + c2).adams(2) 4*c2 + 2*c1 + 1
-
by_degrees
()¶ Returns this Chow ring element as a list \([e_0,\dots,e_{d}]\) where \(e_k\) has degree \(k\).
EXAMPLES:
sage: A.<H,E> = ChowRing(['H', 'E'], [1, 1], ['E*H', 'E^2+H^2']) sage: (-2 - E + 3*H - 4*H^2).by_degrees() [-2, 3*H - E, 4*E^2] sage: (-E + 3*H - 4*H^2).by_degrees() [0, 3*H - E, 4*E^2] sage: (-2 - E + 3*H).by_degrees() [-2, 3*H - E]
-
codimension
()¶ Return the codimension of this Chow ring element.
EXAMPLES:
sage: A.<H> = ChowRing('H', 1, 'H^5') sage: H.codimension() 1 sage: (H + H^2).codimension() 2
-
integral
()¶ Return the integral of this Chow ring element with respect to the parents point_class.
EXAMPLES:
sage: A.<H,E> = ChowRing(['H', 'E'], [1, 1], ['E*H', 'E^2+H^2']) sage: A.set_point_class('H^2') sage: x = (2*H-E)^2; x.integral() 3
-
symm
(p)¶ Return the p-th symmetric power of this Chow ring element. Truncate above degree d.
INPUT:
p
– an integerd
– an integer
OUTPUT:
- A Chow ring element.
EXAMPLES:
sage: A.<h> = ChowRing('h', 1, 'h^3') # P2 sage: A.set_dimension(2) sage: t = 1/2*h^2 + h + 1 # ch(O(1)) sage: t._expp() h + 1 sage: t.symm(0)._expp() 1 sage: t.symm(1)._expp() h + 1 sage: t.symm(2)._expp() 2*h + 1 sage: t.symm(5) == t^5 # t corresponds to a line bundle. True
-
todd
()¶ Return the todd class of this Chow ring element.
OUTPUT:
- An element of the parent Chow ring.
EXAMPLE:
sage: A.<c1, c2, c3> = ChowRing(['c1', 'c2', 'c3'], [1, 2, 3]) sage: A.set_dimension(3) sage: x = 1 + c1 + 1/2*c1^2 + 1/6*c1^3 sage: x._expp() # Check that x=ch(L) with L l.b. c1(L)=c1 c1 + 1 sage: x.todd() 1/12*c1^2 + 1/2*c1 + 1
-
truncate
(a=0, b=0)¶ Return this Chow ring element truncated in degrees below a and above b (strictly).
INPUT:
a
– an optional integer (defaults to 0)b
– an optional integer (defaults to 0)
OUTPUT:
- a Chow ring element.
EXAMPLES:
sage: A.<H,E> = ChowRing(['H', 'E'], [1, 1], ['E*H', 'E^2+H^2']) sage: x = -2 - E + 3*H - 4*H^2; x.by_degrees() [-2, 3*H - E, 4*E^2] sage: x.truncate() -2 sage: x.truncate(0, 1) 3*H - E - 2 sage: x.truncate(0, 2) 4*E^2 + 3*H - E - 2 sage: x.truncate(1, 2) 4*E^2 + 3*H - E
-
wedge
(p)¶ Return the p-th exterior power of this Chow ring element. Truncate above degree d.
INPUT:
p
– an integer
By convention, \(0\) is returned for negative values of p.
EXAMPLES:
sage: A.<h> = ChowRing('h', 1, 'h^3') # P2 sage: A.set_dimension(2) sage: t = 3/2*h^2 + 3*h + 2 # ch(TP^2) sage: t._expp() 3*h^2 + 3*h + 1 sage: t.wedge(0)._expp() 1 sage: t.wedge(1)._expp() 3*h^2 + 3*h + 1 sage: t.wedge(2)._expp() 3*h + 1 sage: t.wedge(3)._expp() Traceback (most recent call last): ... ValueError: Wedge for powers outside 0..rank not allowed.
-