### Navigation

- index
- modules |
- next |
- previous |
- Schemes »

# The Chow group of a toric variety

In general, the Chow group is an algebraic version of a homology theory. That is, the objects are formal linear combinations of submanifolds modulo relations. In particular, the objects of the Chow group are formal linear combinations of algebraic subvarieties and the equivalence relation is rational equivalence. There is no relative version of the Chow group, so it is not a generalized homology theory.

The Chow groups of smooth or mildly singular toric varieties are almost the same as the homology groups:

- For smooth toric varieties, \(A_{k}(X) = H_{2k}(X,\ZZ)\). While they are the same, using the cohomology ring instead of the Chow group will be much faster! The cohomology ring does not try to keep track of torsion and uses Groebner bases to encode the cup product.
- For simplicial toric varieties, \(A_{k}(X)\otimes \QQ = H_{2k}(X,\QQ)\).

Note that in these cases the odd-dimensional (co)homology groups vanish. But for sufficiently singular toric varieties the Chow group differs from the homology groups (and the odd-dimensional homology groups no longer vanish). For singular varieties the Chow group is much easier to compute than the (co)homology groups.

The toric Chow group of a toric variety is the Chow group generated by the toric subvarieties, that is, closures of orbits under the torus action. These are in one-to-one correspondence with the cones of the fan and, therefore, the toric Chow group is a quotient of the free Abelian group generated by the cones. In particular, the toric Chow group has finite rank. One can show [FMSS1] that the toric Chow groups equal the “full” Chow group of a toric variety, so there is no need to distinguish these in the following.

AUTHORS:

- Volker Braun (2010-08-09): Initial version

REFERENCES:

[wp:ChowRing] | Wikipedia article Chow_ring

[FMSS1] | Fulton, MacPherson, Sottile, Sturmfels: Intersection theory on spherical varieties, J. of Alg. Geometry 4 (1995), 181-193. http://www.math.tamu.edu/~frank.sottile/research/ps/spherical.ps.gz

[FultonChow] | Chapter 5.1 “Chow Groups” of Fulton, William: Introduction to Toric Varieties, Princeton University Press

EXAMPLES:

    sage: X = toric_varieties.Cube_deformation(7)
    sage: X.is_smooth()
    False
    sage: X.is_orbifold()
    False
    sage: A = X.Chow_group()
    sage: A.degree()
    (Z, C7, C2 x C2 x Z^5, Z)
    sage: A.degree(2).ngens()
    7
    sage: a = sum( A.gen(i) * (i+1) for i in range(0,A.ngens()) )   # an element of A
    sage: a  # long time (2s on sage.math, 2011)
    ( 3 | 1 mod 7 | 0 mod 2, 1 mod 2, 4, 5, 6, 7, 8 | 9 )

The Chow group elements are printed as `( a0 | a1 mod 7 | a2 mod 2, a3 mod 2, a4, a5, a6, a7, a8 | a9 )`, which denotes the element of the Chow group in the same basis as `A.degree()`. The `|` separates individual degrees, so the example means:

- The degree-0 part is \(3 \in \ZZ\).
- The degree-1 part is \(1 \in \ZZ_7\).
- The torsion of the degree-2 Chow group is \((0, 1) \in \ZZ_2\oplus\ZZ_2\).
- The free part of the degree-2 Chow group is \((4, 5, 6, 7, 8) \in \ZZ^5\).
- The degree-3 part is \(9 \in \ZZ\).

Note that the generators `A.gens()` are not sorted in any way. In fact, they may be of mixed degree. Use `A.gens(degree=d)` to obtain the generators in a fixed degree `d`. See `ChowGroup_class.gens()` for more details.

Cones of toric varieties can determine their own Chow cycle:

    sage: A = X.Chow_group(); A
    Chow group of 3-d toric variety covered by 6 affine patches
    sage: cone = X.fan(dim=2)[3]; cone
    2-d cone of Rational polyhedral fan in 3-d lattice N
    sage: A_cone = A(cone); A_cone
    ( 0 | 1 mod 7 | 0 mod 2, 0 mod 2, 0, 0, 0, 0, 0 | 0 )
    sage: A_cone.degree()
    1
    sage: 2 * A_cone
    ( 0 | 2 mod 7 | 0 mod 2, 0 mod 2, 0, 0, 0, 0, 0 | 0 )
    sage: A_cone + A.gen(0)
    ( 0 | 1 mod 7 | 0 mod 2, 1 mod 2, 0, 0, 0, 0, 0 | 0 )

Chow cycles can be of mixed degrees:

    sage: mixed = sum(A.gens()); mixed
    ( 1 | 4 mod 7 | 1 mod 2, 1 mod 2, 1, 1, 1, 1, 1 | 1 )
    sage: mixed.project_to_degree(1)
    ( 0 | 4 mod 7 | 0 mod 2, 0 mod 2, 0, 0, 0, 0, 0 | 0 )
    sage: sum( mixed.project_to_degree(i) for i in range(0,X.dimension()+1) ) == mixed
    True

class `sage.schemes.toric.chow_group.``ChowCycle`(parent, v, check=True)

  Bases: `sage.modules.fg_pid.fgp_element.FGP_Element`

  The elements of the Chow group.

  Warning

  Do not construct `ChowCycle` objects manually. Instead, use the parent `ChowGroup` to obtain generators or Chow cycles correspondig to cones of the fan.

  EXAMPLES:

      sage: P2 = toric_varieties.P2()
      sage: A = P2.Chow_group()
      sage: A.gens()
      (( 1 | 0 | 0 ), ( 0 | 1 | 0 ), ( 0 | 0 | 1 ))
      sage: cone = P2.fan(1)[0]
      sage: A(cone)
      ( 0 | 1 | 0 )
      sage: A( Cone([(1,0)]) )
      ( 0 | 1 | 0 )

  `cohomology_class`()

    Return the (Poincare-dual) cohomology class.

    Consider a simplicial cone of the fan, that is, a \(d\)-dimensional cone spanned by \(d\) rays. Take the product of the corresponding \(d\) homogeneous coordinates. This monomial represents a cohomology classes of the toric variety \(X\), see `cohomology_ring()`. Its cohomological degree is \(2d\), which is the same degree as the Poincare-dual of the (real) \(\dim(X)-2d\)-dimensional torus orbit associated to the simplicial cone. By linearity, we can associate a cohomology class to each Chow cycle of a simplicial toric variety.

    If the toric variety is compact and smooth, the associated cohomology class actually is the Poincare dual (over the integers) of the Chow cycle. In particular, integrals of dual cohomology classes perform intersection computations.

    If the toric variety is compact and has at most orbifold singularities, the torsion parts in cohomology and the Chow group can differ. But they are still isomorphic as rings over the rationals. Moreover, the normalization of integration (`volume_class`) and `count_points()` are chosen to agree.

    OUTPUT:

    The `CohomologyClass` which is associated to the Chow cycle.

    If the toric variety is not simplicial, that is, has worse than orbifold singularities, there is no way to associate a cohomology class of the correct degree. In this case, `cohomology_class()` rasies a `ValueError`.

    EXAMPLES:

        sage: dP6 = toric_varieties.dP6()
        sage: cone = dP6.fan().cone_containing(2,3)
        sage: HH = dP6.cohomology_ring()
        sage: A = dP6.Chow_group()
        sage: HH(cone)
        [-w^2]
        sage: A(cone)
        ( 1 | 0, 0, 0, 0 | 0 )
        sage: A(cone).cohomology_class()
        [-w^2]

    Here is an example of a toric variety with orbifold singularities, where we can also use the isomorphism with the rational cohomology ring:

        sage: WP4 = toric_varieties.P4_11169()
        sage: A = WP4.Chow_group()
        sage: HH = WP4.cohomology_ring()
        sage: cone3d = Cone([(0,0,1,0), (0,0,0,1), (-9,-6,-1,-1)])
        sage: A(cone3d)
        ( 0 | 1 | 0 | 0 | 0 )
        sage: HH(cone3d)
        [3*z4^3]

        sage: D = -WP4.K()  # the anticanonical divisor
        sage: A(D)
        ( 0 | 0 | 0 | 18 | 0 )
        sage: HH(D)
        [18*z4]

        sage: WP4.integrate( A(cone3d).cohomology_class() * D.cohomology_class() )
        1
        sage: WP4.integrate( HH(cone3d) * D.cohomology_class() )
        1
        sage: A(cone3d).intersection_with_divisor(D).count_points()
        1

  `count_points`()

    Return the number of points in the Chow cycle.

    OUTPUT:

    An element of `self.base_ring()`, which is usually \(\ZZ\). The number of points in the Chow cycle.

    EXAMPLES:

        sage: P2 = toric_varieties.P2()
        sage: A = P2.Chow_group()
        sage: a = 5*A.gen(0) + 7*A.gen(1); a
        ( 5 | 7 | 0 )
        sage: a.count_points()
        5

    In the case of a smooth complete toric variety, the Chow (homology) groups are Poincare dual to the integral cohomology groups. Here is such a smooth example:

        sage: D = P2.divisor(1)
        sage: a = D.Chow_cycle()
        sage: aD = a.intersection_with_divisor(D)
        sage: aD.count_points()
        1
        sage: P2.integrate( aD.cohomology_class() )
        1

    For toric varieties with at most orbifold singularities, the isomorphism only holds over \(\QQ\). But the normalization of the integral is still chosen such that the intersection numbers (which are potentially rational) computed both ways agree:

        sage: P1xP1_Z2 = toric_varieties.P1xP1_Z2()
        sage: Dt = P1xP1_Z2.divisor(1);  Dt
        V(t)
        sage: Dy = P1xP1_Z2.divisor(3);  Dy
        V(y)
        sage: Dt.Chow_cycle(QQ).intersection_with_divisor(Dy).count_points()
        1/2
        sage: P1xP1_Z2.integrate( Dt.cohomology_class() * Dy.cohomology_class() )
        1/2

  `degree`()

    The degree of the Chow cycle.

    OUTPUT:

    Integer. The complex dimension of the subvariety representing the Chow cycle. Raises a `ValueError` if the Chow cycle is a sum of mixed degree cycles.

    EXAMPLES:

        sage: P2 = toric_varieties.P2()
        sage: A = P2.Chow_group()
        sage: [ a.degree() for a in A.gens() ]
        [0, 1, 2]

  `intersection_with_divisor`(divisor)

    Intersect the Chow cycle with `divisor`.

    See [FultonChow] for a description of the toric algorithm.

    INPUT:

    - `divisor` – a `ToricDivisor` that can be moved away from the Chow cycle. For example, any Cartier divisor. See also `ToricDivisor.move_away_from`.

    OUTPUT:

    A new `ChowCycle`. If the divisor is not Cartier then this method potentially raises a `ValueError`, indicating that the divisor cannot be made transversal to the Chow cycle.

    EXAMPLES:

        sage: dP6 = toric_varieties.dP6()
        sage: cone = dP6.fan().cone_containing(2); cone
        1-d cone of Rational polyhedral fan in 2-d lattice N
        sage: D = dP6.divisor(cone); D
        V(y)
        sage: A = dP6.Chow_group()
        sage: A(cone)
        ( 0 | 0, 0, 0, 1 | 0 )
        sage: intersection = A(cone).intersection_with_divisor(D); intersection
        ( -1 | 0, 0, 0, 0 | 0 )
        sage: intersection.count_points()
        -1

    You can do the same computation over the rational Chow group since there is no torsion in this case:

        sage: A_QQ = dP6.Chow_group(base_ring=QQ)
        sage: A_QQ(cone)
        ( 0 | 0, 0, 0, 1 | 0 )
        sage: intersection_QQ = A_QQ(cone).intersection_with_divisor(D); intersection
        ( -1 | 0, 0, 0, 0 | 0 )
        sage: intersection_QQ.count_points()
        -1
        sage: type(intersection_QQ.count_points())
        <type 'sage.rings.rational.Rational'>
        sage: type(intersection.count_points())
        <type 'sage.rings.integer.Integer'>

    TESTS:

    The relations are the Chow cycles rationally equivalent to the zero cycle. Their intersection with any divisor must be the zero cycle:

        sage: [ r.intersection_with_divisor(D) for r in dP6.Chow_group().relation_gens() ]
        [( 0 | 0, 0, 0, 0 | 0 ), ( 0 | 0, 0, 0, 0 | 0 ),
         ( 0 | 0, 0, 0, 0 | 0 ), ( 0 | 0, 0, 0, 0 | 0 ),
         ( 0 | 0, 0, 0, 0 | 0 ), ( 0 | 0, 0, 0, 0 | 0 ),
         ( 0 | 0, 0, 0, 0 | 0 )]
        sage: [ r.intersection_with_divisor(D).lift() for r in dP6.Chow_group().relation_gens() ]
        [(0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0),
         (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
         (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
         (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
         (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
         (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
         (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)]

  `project_to_degree`(degree)

    Project a (mixed-degree) Chow cycle to the given `degree`.

    INPUT:

    - `degree` – integer. The degree to project to.

    OUTPUT:

    The projection of the Chow class to the given degree as a new `ChowCycle` of the same Chow group.

    EXAMPLES:

        sage: A = toric_varieties.P2().Chow_group()
        sage: cycle = 10*A.gen(0) + 11*A.gen(1) + 12*A.gen(2)
        sage: cycle
        ( 10 | 11 | 12 )
        sage: cycle.project_to_degree(2)
        ( 0 | 0 | 12 )

class `sage.schemes.toric.chow_group.``ChowGroupFactory`

  Bases: `sage.structure.factory.UniqueFactory`

  Factory for `ChowGroup_class`.

  `create_key_and_extra_args`(toric_variety, base_ring=Integer Ring, check=True)

    Create a key that uniquely determines the `ChowGroup_class`.

    INPUT:

    - `toric_variety` – a toric variety.
    - `base_ring` – either \(\ZZ\) (default) or \(\QQ\). The coefficient ring of the Chow group.
    - `check` – boolean (default: `True`).

    EXAMPLES:

        sage: from sage.schemes.toric.chow_group import *
        sage: P2 = toric_varieties.P2()
        sage: ChowGroup(P2, ZZ, check=True) == ChowGroup(P2, ZZ, check=False)   # indirect doctest
        True

  `create_object`(version, key, **extra_args)

    Create a `ChowGroup_class`.

    INPUT:

    - `version` – object version. Currently not used.
    - `key` – a key created by `create_key_and_extra_args()`.
    - `**extra_args` – Currently not used.

    EXAMPLES:

        sage: from sage.schemes.toric.chow_group import *
        sage: P2 = toric_varieties.P2()
        sage: ChowGroup(P2)    # indirect doctest
        Chow group of 2-d CPR-Fano toric variety covered by 3 affine patches

class `sage.schemes.toric.chow_group.``ChowGroup_class`(toric_variety, base_ring, check)

  Bases: `sage.modules.fg_pid.fgp_module.FGP_Module_class`

  The Chow group of a toric variety.

  EXAMPLES:

      sage: P2=toric_varieties.P2()
      sage: from sage.schemes.toric.chow_group import ChowGroup_class
      sage: A = ChowGroup_class(P2,ZZ,True);  A
      Chow group of 2-d CPR-Fano toric variety covered by 3 affine patches
      sage: A.an_element()
      ( 1 | 0 | 0 )

  `Element`

    alias of `ChowCycle`

  `coordinate_vector`(chow_cycle, degree=None, reduce=True)

    Return the coordinate vector of the `chow_cycle`.

    INPUT:

    - `chow_cycle` – a `ChowCycle`.
    - `degree` – None (default) or an integer.
    - `reduce` – boolean (default: `True`). Whether to reduce modulo the invariants.

    OUTPUT:

    - If `degree is None` (default), the coordinate vector relative to the basis `self.gens()` is returned.
    - If some integer `degree=d` is specified, the chow cycle is projected to the given degree and the coordinate vector relative to the basis `self.gens(degree=d)` is returned.

    EXAMPLES:

        sage: A = toric_varieties.P2().Chow_group()
        sage: a = A.gen(0) + 2*A.gen(1) + 3*A.gen(2)
        sage: A.coordinate_vector(a)
        (1, 2, 3)
        sage: A.coordinate_vector(a, degree=1)
        (2)

  `degree`(k=None)

    Return the degree-\(k\) Chow group.

    INPUT:

    - `k` – an integer or `None` (default). The degree of the Chow group.

    OUTPUT:

    - if \(k\) was specified, the Chow group \(A_k\) as an Abelian group.
    - if \(k\) was not specified, a tuple containing the Chow groups in all degrees.

    Note

    - For a smooth toric variety, this is the same as the Poincare-dual cohomology group \(H^{d-2k}(X,\ZZ)\).
    - For a simplicial toric variety (“orbifold”), \(A_k(X)\otimes \QQ = H^{d-2k}(X,\QQ)\).

    EXAMPLES:

    Four exercises from page 65 of [FultonP65]. First, an example with \(A_1(X)=\ZZ\oplus\ZZ/3\ZZ\):

        sage: X = ToricVariety(Fan(cones=[[0,1],[1,2],[2,0]],
        ...                        rays=[[2,-1],[-1,2],[-1,-1]]))
        sage: A = X.Chow_group()
        sage: A.degree(1)
        C3 x Z

    Second, an example with \(A_2(X)=\ZZ^2\):

        sage: points = [[1,0,0],[0,1,0],[0,0,1],[1,-1,1],[-1,0,-1]]
        sage: l = LatticePolytope(points)
        sage: l.show3d()
        sage: X = ToricVariety(FaceFan(l))
        sage: A = X.Chow_group()
        sage: A.degree(2)
        Z^2

    Third, an example with \(A_2(X)=\ZZ^5\):

        sage: cube = [[ 1,0,0],[0, 1,0],[0,0, 1],[-1, 1, 1],
        ...           [-1,0,0],[0,-1,0],[0,0,-1],[ 1,-1,-1]]
        sage: lat_cube = LatticePolytope(cube)
        sage: X = ToricVariety(FaceFan((LatticePolytope(lat_cube))))
        sage: X.Chow_group().degree(2)
        Z^5

    Fourth, a fan that is not the fan over a polytope. Combinatorially, the fan is the same in the third example, only the coordinates of the first point are different. But the resulting fan is not the face fan of a cube, so the variety is “more singular”. Its Chow group has torsion, \(A_2(X)=\ZZ^5 \oplus \ZZ/2\):

        sage: rays = [[ 1, 2, 3],[ 1,-1, 1],[-1, 1, 1],[-1,-1, 1],
        ...           [-1,-1,-1],[-1, 1,-1],[ 1,-1,-1],[ 1, 1,-1]]
        sage: cones = [[0,1,2,3],[4,5,6,7],[0,1,7,6],
        ...            [4,5,3,2],[0,2,5,7],[4,6,1,3]]
        sage: X = ToricVariety(Fan(cones, rays))
        sage: X.Chow_group().degree(2)  # long time (2s on sage.math, 2011)
        C2 x Z^5

    Finally, Example 1.3 of [FS]:

        sage: points_mod = lambda k: matrix([[ 1, 1, 2*k+1],[ 1,-1, 1],
        ...                              [-1, 1, 1],[-1,-1, 1],[-1,-1,-1],
        ...                              [-1, 1,-1],[ 1,-1,-1],[ 1, 1,-1]])
        sage: rays = lambda k: matrix([[1,1,1],[1,-1,1],[-1,1,1]]
        ...                              ).solve_left(points_mod(k)).rows()
        sage: cones = [[0,1,2,3],[4,5,6,7],[0,1,7,6],
        ...            [4,5,3,2],[0,2,5,7],[4,6,1,3]]
        sage: X_Delta = lambda k: ToricVariety(Fan(cones=cones, rays=rays(k)))
        sage: X_Delta(0).Chow_group().degree()  # long time (3s on sage.math, 2011)
        (Z, Z, Z^5, Z)
        sage: X_Delta(1).Chow_group().degree()  # long time (3s on sage.math, 2011)
        (Z, 0, Z^5, Z)
        sage: X_Delta(2).Chow_group().degree()  # long time (3s on sage.math, 2011)
        (Z, C2, Z^5, Z)
        sage: X_Delta(2).Chow_group(base_ring=QQ).degree()  # long time (4s on sage.math, 2011)
        (Q, 0, Q^5, Q)

  `gens`(degree=None)

    Return the generators of the Chow group.

    INPUT:

    - `degree` – integer (optional). The degree of the Chow group.

    OUTPUT:

    - if no degree is specified, the generators of the whole Chow group. The chosen generators may be of mixed degree.
    - if `degree=` \(k\) was specified, the generators of the degree-\(k\) part \(A_k\) of the Chow group.

    EXAMPLES:

        sage: A = toric_varieties.P2().Chow_group()
        sage: A.gens()
        (( 1 | 0 | 0 ), ( 0 | 1 | 0 ), ( 0 | 0 | 1 ))
        sage: A.gens(degree=1)
        (( 0 | 1 | 0 ),)

  `relation_gens`()

    Return the Chow cycles equivalent to zero.

    For each \(d-k-1\)-dimensional cone \(\rho \in \Sigma^{(d-k-1)}\), the relations in \(A_k(X)\), that is the cycles equivalent to zero, are generated by

    \[\begin{split}0 \stackrel{!}{=} \mathop{\mathrm{div}}(u) = \sum_{\rho < \sigma \in \Sigma^{(n-p)} } \big< u, n_{\rho,\sigma} \big> V(\sigma) ,\qquad u \in M(\rho)\end{split}\]

    where \(n_{\rho,\sigma}\) is a (randomly chosen) lift of the generator of \(N_\sigma/N_\rho \simeq \ZZ\). See also Exercise 12.5.7 of [CLS].

    See also `relations()` to obtain the relations as submodule of the free module generated by the cones. Or use `self.relations().gens()` to list the relations in the free module.

    OUTPUT:

    A tuple of Chow cycles, each rationally equivalent to zero, that generates the rational equivalence.

    EXAMPLES:

        sage: P2 = toric_varieties.P2()
        sage: A = P2.Chow_group()
        sage: first = A.relation_gens()[0]
        sage: first
        ( 0 | 0 | 0 )
        sage: first.is_zero()
        True
        sage: first.lift()
        (0, 1, 0, -1, 0, 0, 0)

  `scheme`()

    Return the underlying toric variety.

    OUTPUT:

    A `ToricVariety`.

    EXAMPLES:

        sage: P2 = toric_varieties.P2()
        sage: A = P2.Chow_group()
        sage: A.scheme()
        2-d CPR-Fano toric variety covered by 3 affine patches
        sage: A.scheme() is P2
        True

class `sage.schemes.toric.chow_group.``ChowGroup_degree_class`(A, d)

  Bases: `sage.structure.sage_object.SageObject`

  A fixed-degree subgroup of the Chow group of a toric variety.

  WARNING ..

  > Use `degree()` to construct `ChowGroup_degree_class` instances.

  EXAMPLES:

      sage: P2 = toric_varieties.P2()
      sage: A = P2.Chow_group()
      sage: A
      Chow group of 2-d CPR-Fano toric variety covered by 3 affine patches
      sage: A.degree()
      (Z, Z, Z)
      sage: A.degree(2)
      Z
      sage: type(_)
      <class 'sage.schemes.toric.chow_group.ChowGroup_degree_class'>

  `gen`(i)

    Return the `i`-th generator of the Chow group of fixed degree.

    INPUT:

    - `i` – integer. The index of the generator to be returned.

    OUTPUT:

    A tuple of Chow cycles of fixed degree generating `module()`.

    EXAMPLES:

        sage: projective_plane = toric_varieties.P2()
        sage: A2 = projective_plane.Chow_group().degree(2)
        sage: A2.gen(0)
        ( 0 | 0 | 1 )

  `gens`()

    Return the generators of the Chow group of fixed degree.

    OUTPUT:

    A tuple of Chow cycles of fixed degree generating `module()`.

    EXAMPLES:

        sage: projective_plane = toric_varieties.P2()
        sage: A2 = projective_plane.Chow_group().degree(2)
        sage: A2.gens()
        (( 0 | 0 | 1 ),)

  `module`()

    Return the submodule of the toric Chow group generated.

    OUTPUT:

    A `sage.modules.fg_pid.fgp_module.FGP_Module_class`

    EXAMPLES:

        sage: projective_plane = toric_varieties.P2()
        sage: A2 = projective_plane.Chow_group().degree(2)
        sage: A2.module()
        Finitely generated module V/W over Integer Ring with invariants (0)

  `ngens`()

    Return the number of generators.

    OUTPUT:

    An integer.

    EXAMPLES:

        sage: projective_plane = toric_varieties.P2()
        sage: A2 = projective_plane.Chow_group().degree(2)
        sage: A2.ngens()
        1

`sage.schemes.toric.chow_group.``is_ChowCycle`(x)

  Return whether `x` is a `ChowGroup_class`

  INPUT:

  - `x` – anything.

  OUTPUT:

  `True` or `False`.

  EXAMPLES:

      sage: P2=toric_varieties.P2()
      sage: A = P2.Chow_group()
      sage: from sage.schemes.toric.chow_group import *
      sage: is_ChowCycle(A)
      False
      sage: is_ChowCycle(A.an_element())
      True
      sage: is_ChowCycle('Victoria')
      False

`sage.schemes.toric.chow_group.``is_ChowGroup`(x)

  Return whether `x` is a `ChowGroup_class`

  INPUT:

  - `x` – anything.

  OUTPUT:

  `True` or `False`.

  EXAMPLES:

      sage: P2=toric_varieties.P2()
      sage: A = P2.Chow_group()
      sage: from sage.schemes.toric.chow_group import is_ChowGroup
      sage: is_ChowGroup(A)
      True
      sage: is_ChowGroup('Victoria')
      False

### Navigation

- index
- modules |
- next |
- previous |
- Schemes »