next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
Divisor :: divisor

divisor -- constructor for (Weil/Q/R)-divisors

Synopsis

Description

This is the general function for constructing divisors. There are many ways to call it. In our first example, we construct divisors on A3 (which can also be viewed as divisors on P2 since the ideals are homogeneous). The following creates the same Weil divisor with coefficients 1, 2 and 3 in five different ways.

i1 : R = QQ[x,y,z];
i2 : D = divisor({1,2,3}, {ideal(x), ideal(y), ideal(z)})

o2 = 2*Div(y) + 3*Div(z) + Div(x)

o2 : WeilDivisor on R
i3 : E = divisor(x*y^2*z^3)

o3 = 3*Div(z) + 2*Div(y) + Div(x)

o3 : WeilDivisor on R
i4 : F = divisor(ideal(x*y^2*z^3))

o4 = 3*Div(z) + 2*Div(y) + Div(x)

o4 : WeilDivisor on R
i5 : G = divisor({{1, ideal(x)}, {2, ideal(y)}, {3, ideal(z)}})

o5 = 2*Div(y) + 3*Div(z) + Div(x)

o5 : WeilDivisor on R
i6 : H = divisor(x) + 2*divisor(y) + 3*divisor(z)

o6 = 3*Div(z) + 2*Div(y) + Div(x)

o6 : WeilDivisor on R

Next we construct the same divisor in two different ways. We are working on the quadric cone, and we are working with a divisor of a ruling of the cone. This divisor is not Cartier, but 2 times it is.

i7 : R = QQ[x,y,z]/ideal(x^2-y*z);
i8 : D = divisor({2}, {ideal(x,y)})

o8 = 2*Div(x, y)

o8 : WeilDivisor on R
i9 : E = divisor(y)

o9 = 2*Div(y, x)

o9 : WeilDivisor on R

Here is a similar example in a slightly more complicated Veronese ring.

i10 : R = QQ[x,y,z];
i11 : S = QQ[x3,x2y, x2z, xy2, xyz, xz2, y3, y2z, yz2, z3];
i12 : f = map(R, S, {x^3, x^2*y, x^2*z, x*y^2, x*y*z, x*z^2, y^3, y^2*z, y*z^2, z^3});

o12 : RingMap R <--- S
i13 : A = S/(ker f);
i14 : D = divisor(x3)

o14 = 3*Div(xz2, xyz, xy2, x2z, x2y, x3)

o14 : WeilDivisor on A
i15 : E = divisor(y2z)

o15 = Div(z3, yz2, y2z, xz2, xyz, x2z) + 2*Div(yz2, y2z, y3, xyz, xy2, x2y)

o15 : WeilDivisor on A

We can construct a Q-divisor as well. Here are two ways to do it (we work in A2 this time).

i16 : R = ZZ/7[x,y];
i17 : D = divisor({-1/2, 2/1}, {ideal(y^2-x^3), ideal(x)}, CoefficientType=>QQ)

o17 = -1/2*Div(-x^3+y^2) + 2*Div(x)

o17 : QWeilDivisor on R
i18 : D = (-1/2)*divisor(y^2-x^3) + (2/1)*divisor(x)

o18 = -1/2*Div(-x^3+y^2) + 2*Div(x)

o18 : QWeilDivisor on R

Or an R-divisor. This time we work in the cone over P1 ×P1.

i19 : R = ZZ/11[x,y,u,v]/ideal(x*y-u*v);
i20 : D = divisor({1.1, -3.14159}, {ideal(x,u), ideal(x, v)}, CoefficientType=>RR)

o20 = 1.1*Div(x, u) + -3.14159*Div(x, v)

o20 : RWeilDivisor on R
i21 : D = 1.1*divisor(ideal(x,u)) - 3.14159*divisor(ideal(x,v))

o21 = 1.1*Div(x, u) + -3.14159*Div(x, v)

o21 : RWeilDivisor on R

You can also pass it an element of the ring or even the fraction field.

i22 : R = QQ[x,y];
i23 : divisor(x)

o23 = Div(x)

o23 : WeilDivisor on R
i24 : divisor(x/y)

o24 = Div(x) + -Div(y)

o24 : WeilDivisor on R

Given a rank 1 reflexive module M, divisor(M) finds a divisor D such that O(D) is isomorphic to M. If IsGraded is true (it is false by default) this assumes we are working on the Proj of the ambient ring.

i25 : R = QQ[x,y,z]/ideal(x^2-y*z);
i26 : M = (ideal(y*x,y*z))*R^1;
i27 : divisor(M)

o27 = -Div(z, x)

o27 : WeilDivisor on R
i28 : divisor(M, IsGraded=>true)

o28 = -2*Div(z, x) + -Div(y, x)

o28 : WeilDivisor on R

Finally, divisor(Matrix) assumes that the matrix is a map from a rank-1 free module to the module corresponding to O(D). In that case, this function returns the effective divisor corresponding to that section. The same behavior can also be obtained by calling divisor(Module, Section=>Matrix) where the Matrix is a map from a rank-1 free module to M. In the following example, we demonstrate this by considering a rank-1 module (on the cone of P1 ×P1), and considering the map from R1 mapping to the first generator of the module.

i29 : R = QQ[x,y,u,v]/ideal(x*y-u*v);
i30 : M = (ideal(x,u))*R^1;
i31 : matr = map(M, R^1, {{1},{0}});

o31 : Matrix
i32 : divisor(matr)

o32 = Div(v, x)

o32 : WeilDivisor on R
i33 : divisor(M, Section=>matr)

o33 = Div(v, x)

o33 : WeilDivisor on R

One can also obtain the same behavior (as divisor(Matrix)) by passing the divisor either an ideal or a module and then specifying a global section of that object (which will produce the corresponding effective divisor). In particular, if the main argument in the divisor is an Ideal, the option Section=>f specifies that we should find the unique effective divisor D such that I is isomorphic to O(D) and such that f maps to 1 under that isomorphism.

i34 : R = QQ[x,y,u,v]/ideal(x*y-u*v)

o34 = R

o34 : QuotientRing
i35 : D = divisor(ideal(x,u), Section=>x)

o35 = Div(v, x)

o35 : WeilDivisor on R

Note if the section is not in I, then it is interpreted as a rational section and the produced divisor D may not be effective.

If the main argument in the divisor is a module, then the Matrix Mat should be a matrix mapping a free module to M. In this case divisor constructs the unique effective divisor D such that M is isomorphic to O(D) and so that 1 in the matrix map is mapped to 1 in O(D).

i36 : R = QQ[x];
i37 : D = divisor(R^1, Section=>matrix{{x^2}})

o37 = 2*Div(x)

o37 : WeilDivisor on R

Ways to use divisor :