Skip to content

Commit ccb497e

Browse files
committed
normalize j-invariants parameters
1 parent ade6bc3 commit ccb497e

File tree

1 file changed

+37
-22
lines changed

1 file changed

+37
-22
lines changed

src/sage/rings/function_field/drinfeld_modules/drinfeld_module.py

Lines changed: 37 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -938,26 +938,26 @@ def basic_j_invariant_parameters(self, coeff_indices=None, nonzero=False):
938938
sage: K.<T> = Frac(A)
939939
sage: phi = DrinfeldModule(A, [T, 0, T+1, T^2 + 1])
940940
sage: phi.basic_j_invariant_parameters()
941-
[((1, 2), (1, 5, 1)),
941+
[((1,), (31, 1)),
942+
((1, 2), (1, 5, 1)),
942943
((1, 2), (7, 4, 1)),
943-
((1, 2), (13, 3, 1)),
944-
((1, 2), (19, 2, 1)),
945-
((1, 2), (25, 1, 1)),
946-
((1, 2), (31, 0, 1)),
947944
((1, 2), (8, 9, 2)),
948-
((1, 2), (20, 7, 2)),
949945
((1, 2), (9, 14, 3)),
950-
((1, 2), (15, 13, 3)),
951-
((1, 2), (27, 11, 3)),
952946
((1, 2), (10, 19, 4)),
953-
((1, 2), (22, 17, 4)),
954947
((1, 2), (11, 24, 5)),
948+
((1, 2), (12, 29, 6)),
949+
((1, 2), (13, 3, 1)),
950+
((1, 2), (15, 13, 3)),
955951
((1, 2), (17, 23, 5)),
952+
((1, 2), (19, 2, 1)),
953+
((1, 2), (20, 7, 2)),
954+
((1, 2), (22, 17, 4)),
956955
((1, 2), (23, 22, 5)),
956+
((1, 2), (25, 1, 1)),
957+
((1, 2), (27, 11, 3)),
957958
((1, 2), (29, 21, 5)),
958-
((1, 2), (0, 31, 6)),
959-
((1, 2), (12, 29, 6)),
960-
((1, 2), (31, 31, 7))]
959+
((1, 2), (31, 31, 7)),
960+
((2,), (31, 6))]
961961
962962
Use the ``nonzero=True`` flag to display only the parameters
963963
whose `j`-invariant value is nonzero::
@@ -973,13 +973,13 @@ def basic_j_invariant_parameters(self, coeff_indices=None, nonzero=False):
973973
sage: K.<T> = Frac(A)
974974
sage: phi = DrinfeldModule(A, [T, T, 1, T])
975975
sage: phi.basic_j_invariant_parameters([1, 2])
976-
[((1, 2), (1, 2, 1)),
976+
[((1,), (7, 1)),
977+
((1, 2), (1, 2, 1)),
977978
((1, 2), (4, 1, 1)),
978-
((1, 2), (7, 0, 1)),
979979
((1, 2), (5, 3, 2)),
980-
((1, 2), (0, 7, 3)),
981980
((1, 2), (6, 5, 3)),
982-
((1, 2), (7, 7, 4))]
981+
((1, 2), (7, 7, 4)),
982+
((2,), (7, 3))]
983983
984984
TESTS::
985985
@@ -1064,8 +1064,23 @@ def basic_j_invariant_parameters(self, coeff_indices=None, nonzero=False):
10641064
polyhedron = Polyhedron(ieqs=inequalities, eqns=[equation])
10651065
# Compute its integral points
10661066
integral_points = polyhedron.integral_points()
1067-
return [(tuple(coeff_indices), tuple(p)) for p in integral_points
1068-
if gcd(p) == 1]
1067+
# Format the result
1068+
parameters = []
1069+
for p in integral_points:
1070+
if gcd(p) != 1:
1071+
continue
1072+
ks = list(coeff_indices)
1073+
ds = p.list()
1074+
i = 0
1075+
while i < len(ks):
1076+
if ds[i] == 0:
1077+
del ds[i]
1078+
del ks[i]
1079+
else:
1080+
i += 1
1081+
parameters.append((tuple(ks), tuple(ds)))
1082+
parameters.sort()
1083+
return parameters
10691084

10701085
def basic_j_invariants(self, nonzero=False):
10711086
r"""
@@ -1110,14 +1125,14 @@ def basic_j_invariants(self, nonzero=False):
11101125
sage: K.<T> = Frac(A)
11111126
sage: phi = DrinfeldModule(A, [T, T + 2, T+1, 1])
11121127
sage: J_phi = phi.basic_j_invariants(); J_phi
1113-
{((1, 2), (0, 31, 6)): T^31 + T^30 + T^26 + T^25 + T^6 + T^5 + T + 1,
1128+
{((1,), (31, 1)): T^31 + 2*T^30 + 2*T^26 + 4*T^25 + 2*T^6 + 4*T^5 + 4*T + 3,
11141129
((1, 2), (1, 5, 1)): T^6 + 2*T^5 + T + 2,
11151130
((1, 2), (7, 4, 1)): T^11 + 3*T^10 + T^9 + 4*T^8 + T^7 + 2*T^6 + 2*T^4 + 3*T^3 + 2*T^2 + 3,
11161131
((1, 2), (8, 9, 2)): T^17 + 2*T^15 + T^14 + 4*T^13 + 4*T^11 + 4*T^10 + 3*T^9 + 2*T^8 + 3*T^7 + 2*T^6 + 3*T^5 + 2*T^4 + 3*T^3 + 4*T^2 + 3*T + 1,
11171132
((1, 2), (9, 14, 3)): T^23 + 2*T^22 + 2*T^21 + T^19 + 4*T^18 + T^17 + 4*T^16 + T^15 + 4*T^14 + 2*T^12 + 4*T^11 + 4*T^10 + 2*T^8 + 4*T^7 + 4*T^6 + 2*T^4 + T^2 + 2*T + 2,
11181133
((1, 2), (10, 19, 4)): T^29 + 4*T^28 + T^27 + 4*T^26 + T^25 + 2*T^24 + 3*T^23 + 2*T^22 + 3*T^21 + 2*T^20 + 4*T^19 + T^18 + 4*T^17 + T^16 + 4*T^15 + T^9 + 4*T^8 + T^7 + 4*T^6 + T^5 + 4*T^4 + T^3 + 4*T^2 + T + 4,
11191134
...
1120-
((1, 2), (31, 31, 7)): T^62 + 3*T^61 + 2*T^60 + 3*T^57 + 4*T^56 + T^55 + 2*T^52 + T^51 + 4*T^50 + 3*T^37 + 4*T^36 + T^35 + 4*T^32 + 2*T^31 + 3*T^30 + T^27 + 3*T^26 + 2*T^25 + 2*T^12 + T^11 + 4*T^10 + T^7 + 3*T^6 + 2*T^5 + 4*T^2 + 2*T + 3}
1135+
((2,), (31, 6)): T^31 + T^30 + T^26 + T^25 + T^6 + T^5 + T + 1}
11211136
sage: J_phi[((1, 2), (7, 4, 1))]
11221137
T^11 + 3*T^10 + T^9 + 4*T^8 + T^7 + 2*T^6 + 2*T^4 + 3*T^3 + 2*T^2 + 3
11231138
"""
@@ -1703,9 +1718,9 @@ def j_invariant(self, parameter=None, check=True):
17031718
sage: K.<T> = Frac(A)
17041719
sage: phi = DrinfeldModule(A, [T, T^2 + T + 1, 0, T^4 + 1, T - 1])
17051720
sage: param = phi.basic_j_invariant_parameters(nonzero=True)
1706-
sage: phi.j_invariant(param[0])
1707-
T^13 + 2*T^12 + T + 2
17081721
sage: phi.j_invariant(param[1])
1722+
T^13 + 2*T^12 + T + 2
1723+
sage: phi.j_invariant(param[2])
17091724
T^35 + 2*T^31 + T^27 + 2*T^8 + T^4 + 2
17101725
17111726
TESTS::

0 commit comments

Comments
 (0)