# isQLinearEquivalent -- whether two Q-divisors are linearly equivalent

## Synopsis

• Usage:
isQLinearEquivalent(n, D1, D2)
• Inputs:
• Optional inputs:
• IsGraded => , default value false, specify that we should do this computation on a projective algebraic variety
• Outputs:

## Description

Given two rational divisors, this method returns true if they linearly equivalent after clearing denominators or if some further multiple up to n makes them linearly equivalent. Otherwise it returns false.

 i1 : R = QQ[x, y, z] / ideal(x * y - z^2); i2 : D = divisor({1/2, 3/4}, {ideal(x, z), ideal(y, z)}, CoefficientType => QQ) o2 = 3/4*Div(y, z) + 1/2*Div(x, z) o2 : QWeilDivisor on R i3 : E = divisor({3/4, 5/2}, {ideal(y, z), ideal(x, z)}, CoefficientType => QQ) o3 = 3/4*Div(y, z) + 5/2*Div(x, z) o3 : QWeilDivisor on R i4 : isQLinearEquivalent(10, D, E) o4 = true

In the above ring, every pair of divisors is Q-linearly equivalent because the Weil divisor class group is isomorphic to Z/2. However, if we don't set n high enough, the function will return false.

 i5 : R = QQ[x,y,z] / ideal(x * y - z^2); i6 : D = divisor(x); o6 : WeilDivisor on R i7 : E = divisor(ideal(x,z)); o7 : WeilDivisor on R i8 : isQLinearEquivalent(1, D, E) o8 = false i9 : isQLinearEquivalent(3, D, E) o9 = true

If IsGraded=>true (the default is false), then it treats the divisors as if they are divisors on the $Proj$ of their ambient ring.

 i10 : R = QQ[x, y, z] / ideal(x * y - z^2); i11 : D = divisor({1/2, 3/4}, {ideal(x, z), ideal(y, z)}, CoefficientType => QQ) o11 = 1/2*Div(x, z) + 3/4*Div(y, z) o11 : QWeilDivisor on R i12 : E = divisor({3/2, -1/4}, {ideal(y, z), ideal(x, z)}, CoefficientType => QQ) o12 = -1/4*Div(x, z) + 3/2*Div(y, z) o12 : QWeilDivisor on R i13 : isQLinearEquivalent(10, D, E, IsGraded => true) o13 = true i14 : isQLinearEquivalent(10, 3*D, E, IsGraded => true) o14 = false

## Ways to use isQLinearEquivalent :

• "isQLinearEquivalent(ZZ,QWeilDivisor,QWeilDivisor)"

## For the programmer

The object isQLinearEquivalent is .