picardGroup(NormalToricVariety) -- make the Picard group

Synopsis

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

Description

The Picard group of a variety is the group of Cartier divisors divided by the subgroup of principal divisors. For a normal toric variety, the Picard group has a presentation defined by the map from the group of torus-characters to the group of torus-invariant Cartier divisors.

When the normal toric variety is smooth, the Picard group is isomorphic to the class group.

 `i1 : PP3 = toricProjectiveSpace 3;` `i2 : assert (isSmooth PP3 and isProjective PP3)` ```i3 : picardGroup PP3 1 o3 = ZZ o3 : ZZ-module, free``` `i4 : assert (picardGroup PP3 === classGroup PP3 and isFreeModule picardGroup PP3)`
 `i5 : X = smoothFanoToricVariety (4,90);` `i6 : assert (isSmooth X and isProjective X and isFano X)` ```i7 : picardGroup X 5 o7 = ZZ o7 : ZZ-module, free``` `i8 : assert (fromCDivToPic X === fromWDivToCl X and isFreeModule picardGroup X)`
 `i9 : U = normalToricVariety ({{4,-1},{0,1}},{{0},{1}});` `i10 : assert (isSmooth U and not isComplete U and # max U =!= 1)` ```i11 : picardGroup U o11 = cokernel | 4 | 1 o11 : ZZ-module, quotient of ZZ``` `i12 : assert (classGroup U === picardGroup U and not isFreeModule picardGroup U)`

For an affine toric variety, the Picard group is trivial.

 ```i13 : AA3 = affineSpace 3 o13 = normalToricVariety((({{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}(,({{0, 1, 2}} ))))) o13 : NormalToricVariety``` `i14 : assert (isSimplicial AA3 and isSmooth AA3 and # max AA3 === 1)` ```i15 : picardGroup AA3 o15 = 0 o15 : ZZ-module``` `i16 : assert (picardGroup AA3 == 0 and isFreeModule picardGroup AA3)`
 `i17 : Q = normalToricVariety ({{1,0,0},{0,1,0},{0,0,1},{1,1,-1}},{{0,1,2,3}});` `i18 : assert (not isSimplicial Q and not isComplete Q and # max Q === 1)` ```i19 : picardGroup Q o19 = 0 o19 : ZZ-module``` `i20 : assert (picardGroup Q == 0 and isFreeModule picardGroup Q)`

If the fan associated to X contains a cone of dimension dim(X), then the Picard group is free.

 `i21 : Y = normalToricVariety (id_(ZZ^3) | -id_(ZZ^3));` `i22 : assert (not isSimplicial Y and isProjective Y)` ```i23 : picardGroup Y 1 o23 = ZZ o23 : ZZ-module, free``` `i24 : assert (rank picardGroup Y === 1 and isFreeModule picardGroup Y)`