Get the associated module $O(D)$ of a Weil Divisor $D$. In the affine case, $O(D)$ is by definition the set of elements $f$ of the fraction field such that $D + Div(f) \geq 0$. We represent this as a module. In the projective case, $O(D)$ is the coherent sheaf of such elements, and hence we represent it as a graded module. For example, consider the following modules on $P^2$.
i1 : R = ZZ/7[x,y,z]; |
i2 : D = divisor(x); o2 : WeilDivisor on R |
i3 : OO(D)
1
o3 = R
o3 : R-module, free, degrees {-1}
|
i4 : OO(2*D)
1
o4 = R
o4 : R-module, free, degrees {-2}
|
i5 : OO(0*D)
1
o5 = R
o5 : R-module, free
|
i6 : OO(-3*D)
1
o6 = R
o6 : R-module, free, degrees {3}
|
Next, consider an example on $P^1 \times P^1$.
i7 : R = QQ[x, y, u, v] / ideal(x * y - u * v); |
i8 : D1 = divisor(ideal(x, u)) o8 = Div(x, u) o8 : WeilDivisor on R |
i9 : D2 = divisor(ideal(x, v)) o9 = Div(x, v) o9 : WeilDivisor on R |
i10 : OO( D1 )
o10 = image {-1} | x v |
{-1} | u y |
2
o10 : R-module, submodule of R
|
i11 : OO(D1 + D2)
o11 = image {-2} | x |
{-2} | v |
{-2} | u |
{-2} | y |
4
o11 : R-module, submodule of R
|
To get the associated module $O(D)$ for a rational/real divisor $D$, we first obtain a new divisor $D'$ whose coefficients are the floor of the coefficients of $D$, and take $O(D')$ as $O(D)$.
i12 : R = QQ[x, y, u, v] / ideal(x * y - u * v); |
i13 : D2 = divisor({3/5, -4/7, 9/4, -7/8}, {ideal(x, u), ideal(x, v), ideal(y, u), ideal(y, v)}, CoefficientType=>QQ)
o13 = -7/8*Div(y, v) + 3/5*Div(x, u) + -4/7*Div(x, v) + 9/4*Div(y, u)
o13 : QWeilDivisor on R
|
i14 : OO( D2 )
o14 = image {-1} | y2 yv v2 |
{-1} | u2 xu x2 |
2
o14 : R-module, submodule of R
|
i15 : OO( floor(D2) )
o15 = image {-1} | y2 yv v2 |
{-1} | u2 xu x2 |
2
o15 : R-module, submodule of R
|
Note that you can call the divisor constructor on the module you construct, but it will only produce a divisor up to linear equivalence (which can mean different things depending on whether or not you are keeping track of the grading).
i16 : R = ZZ/11[x,y]; |
i17 : D = divisor(x*y/(x+y)) o17 = Div(x) + Div(y) + -Div(x+y) o17 : WeilDivisor on R |
i18 : divisor(OO(D)) o18 = 0, the zero divisor o18 : WeilDivisor on R |
i19 : divisor(OO(D), IsGraded=>true) o19 = Div(x) o19 : WeilDivisor on R |
The output value of this function is stored in the divisor's cache.