# cartierDivisorGroup(NormalToricVariety) -- compute the group of torus-invariant Cartier divisors

## Synopsis

• Function: cartierDivisorGroup
• Usage:
cartierDivisorGroup X
• Inputs:
• X, ,
• Outputs:
• , a finitely generated abelian group

## Description

The group of torus-invariant Cartier divisors on $X$ is the subgroup of all locally principal torus-invarient Weil divisors. On a normal toric variety, the group of torus-invariant Cartier divisors can be computed as an inverse limit. More precisely, if $M$ denotes the lattice of characters on $X$ and the maximal cones in the fan of $X$ are $sigma_0, sigma_1, \dots, sigma_{r-1}$, then we have $CDiv(X) = ker( \oplus_{i} M/M(sigma_i{}) \to{} \oplus_{i<j} M/M(sigma_i \cap sigma_j{})$. For more information, see Theorem 4.2.8 in Cox-Little-Schenck's Toric Varieties.

When $X$ is smooth, every torus-invariant Weil divisor is Cartier.

 i1 : PP2 = toricProjectiveSpace 2; i2 : cartierDivisorGroup PP2 3 o2 = ZZ o2 : ZZ-module, free i3 : assert (isSmooth PP2 and weilDivisorGroup PP2 === cartierDivisorGroup PP2) i4 : assert (id_(cartierDivisorGroup PP2) == fromCDivToWDiv PP2)
 i5 : FF7 = hirzebruchSurface 7; i6 : cartierDivisorGroup FF7 4 o6 = ZZ o6 : ZZ-module, free i7 : assert (isSmooth FF7 and weilDivisorGroup FF7 === cartierDivisorGroup FF7) i8 : assert (id_(cartierDivisorGroup FF7) == fromCDivToWDiv FF7)

On a simplicial toric variety, every torus-invariant Weil divisor is $\QQ$-Cartier; every torus-invariant Weil divisor has a positive integer multiple that is Cartier.

 i9 : U = normalToricVariety ({{4,-1},{0,1}},{{0,1}}); i10 : assert (isSimplicial U and not isSmooth U and not isComplete U) i11 : cartierDivisorGroup U 2 o11 = ZZ o11 : ZZ-module, free i12 : weilDivisorGroup U 2 o12 = ZZ o12 : ZZ-module, free i13 : prune coker fromCDivToWDiv U o13 = cokernel | 4 | 1 o13 : ZZ-module, quotient of ZZ i14 : assert ( (coker fromCDivToWDiv U) ** QQ == 0)
 i15 : X = weightedProjectiveSpace {1,2,2,3,4}; i16 : assert (isSimplicial X and not isSmooth X and isComplete X) i17 : cartierDivisorGroup X 5 o17 = ZZ o17 : ZZ-module, free i18 : weilDivisorGroup X 5 o18 = ZZ o18 : ZZ-module, free i19 : prune coker fromCDivToWDiv X o19 = cokernel | 12 | 1 o19 : ZZ-module, quotient of ZZ i20 : assert (rank coker fromCDivToWDiv X === 0)

In general, the Cartier divisors are only a subgroup of the Weil divisors.

 i21 : Q = normalToricVariety ({{1,0,0},{0,1,0},{0,0,1},{1,1,-1}},{{0,1,2,3}}); i22 : assert (not isSimplicial Q and not isComplete Q) i23 : cartierDivisorGroup Q 3 o23 = ZZ o23 : ZZ-module, free i24 : weilDivisorGroup Q 4 o24 = ZZ o24 : ZZ-module, free i25 : prune coker fromCDivToWDiv Q 1 o25 = ZZ o25 : ZZ-module, free i26 : assert (rank coker fromCDivToWDiv Q === 1)
 i27 : Y = normalToricVariety (id_(ZZ^3) | -id_(ZZ^3)); i28 : assert (not isSimplicial Y and isComplete Y) i29 : cartierDivisorGroup Y 4 o29 = ZZ o29 : ZZ-module, free i30 : weilDivisorGroup Y 8 o30 = ZZ o30 : ZZ-module, free i31 : prune cokernel fromCDivToWDiv Y o31 = cokernel | 2 0 0 | | 0 2 0 | | 0 0 2 | | 0 0 0 | | 0 0 0 | | 0 0 0 | | 0 0 0 | 7 o31 : ZZ-module, quotient of ZZ i32 : assert (rank coker fromCDivToWDiv Y === 4)

To avoid duplicate computations, the attribute is cached in the normal toric variety.