PointsOfFiniteOrder(R0, F, UP, UPUP, R)

pfo.spad line 259 [edit on github]

This package provides function for testing whether a divisor on a curve is a torsion divisor.

cmult : List(SparseMultivariatePolynomial(R0, Kernel(F))) -> SparseMultivariatePolynomial(R0, Kernel(F))

cmult(x) should be local but conditional

handle_imaginary : FiniteDivisor(F, UP, UPUP, R) -> Record(ncurve : UPUP, n_div_numer : Vector(UPUP), n_div_denom : UPUP, need_change : Boolean)

handle_imaginary(d) should be local but conditional.

order : FiniteDivisor(F, UP, UPUP, R) -> Union(NonNegativeInteger, "failed")

order(fd) returns order of divisor fd or "failed" if fd is not of finite order.

possibleOrder : FiniteDivisor(F, UP, UPUP, R) -> NonNegativeInteger

possibleOrder(d) returns n such that d is of order n, or of infinite order.

simplifyCoeffs : (Record(ncurve : UPUP, n_div_numer : Vector(UPUP), n_div_denom : UPUP, need_change : Boolean), List(Kernel(F))) -> NonNegativeInteger if R0 has CharacteristicZero and F has AlgebraicallyClosedField

simplifyCoeffs(d, la) should be local but conditional.

torsion? : FiniteDivisor(F, UP, UPUP, R) -> Boolean

torsion?(fd) returns true if fd is of finite order, false otherwise.

torsionIfCan : FiniteDivisor(F, UP, UPUP, R) -> Union(Record(order : NonNegativeInteger, function : R), "failed")

torsionIfCan(fd) returns [n, f] such that n*fd = div(f) when fd is of finite order. torsionIfCan(fd) returns "failed" if fd is not of finite order.