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+y) + Div(x) + Div(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.