Skip to content

Commit 4e3005d

Browse files
author
Release Manager
committed
gh-39150: Fix a bug in Khuri-Makdisi small model of Jacobian <!-- ^ Please provide a concise and informative title. --> <!-- ^ Don't put issue numbers in the title, do this in the PR description below. --> <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method to calculate 1 + 2". --> <!-- v Describe your changes below in detail. --> <!-- v Why is this change required? What problem does it solve? --> <!-- v If this PR resolves an open issue, please link to it here. For example, "Fixes #12345". --> Fixes #39148. ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> - [x] The title is concise and informative. - [x] The description explains in detail what this PR is about. - [x] I have linked a relevant issue or discussion. - [x] I have created tests covering the changes. - [x] I have updated the documentation and checked the documentation preview. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on. For example, --> <!-- - #12345: short description why this is a dependency --> <!-- - #34567: ... --> URL: #39150 Reported by: Kwankyu Lee Reviewer(s): Kwankyu Lee, Vincent Macri
2 parents bb3505c + ecaa89b commit 4e3005d

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

src/sage/rings/function_field/khuri_makdisi.pyx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -871,13 +871,31 @@ cdef class KhuriMakdisi_small(KhuriMakdisi_base):
871871
sage: p2 = G.point(pl2 - b)
872872
sage: -(-p1) == p1 # indirect doctest
873873
True
874+
875+
Check that :issue:`39148` is fixed::
876+
877+
sage: # long time
878+
sage: k.<x> = FunctionField(GF(17)); t = polygen(k)
879+
sage: F.<y> = k.extension(t^4 + (14*x + 14)*t^3 + 9*t^2 + (10*x^2 + 15*x + 8)*t
880+
....: + 7*x^3 + 15*x^2 + 6*x + 16)
881+
sage: infty1, infty2 = F.places_infinite()
882+
sage: O = F.maximal_order()
883+
sage: P = O.ideal((x + 1, y + 7)).divisor()
884+
sage: D1 = 3*infty2 + infty1 - 4*P
885+
sage: D2 = F.divisor_group().zero()
886+
sage: J = F.jacobian(model='km-small', base_div=4*P)
887+
sage: J(D1) + J(D2) == J(D1)
888+
True
874889
"""
875890
cdef int d0 = self.d0
876891
cdef int g = self.g
877892
cdef Matrix w1, w2, w3, w4
878893

879894
w1 = self.mu_image(self.wV2, wd, self.mu_mat23, 4*d0 - g + 1)
880-
w2 = self.mu_preimage(self.wV3, w1, self.mu_mat23, d0)
895+
# The row space of w2 represents H^0(O(2D_0 - D)), whose dimension is
896+
# at least d0 - g + 1, and hence the codimension is at most d0. Thus,
897+
# we cannot provide an expected_codim argument for mu_preimage.
898+
w2 = self.mu_preimage(self.wV3, w1, self.mu_mat23)
881899
# efficient than
882900
# wf = matrix(w2[0])
883901
# w3 = self.mu_image(wf, self.wV4, self.mu_mat24, 4*d0 - g + 1)

0 commit comments

Comments
 (0)