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.