Skip to content

Commit 10ddbd6

Browse files
committed
implement jk_invariants
1 parent b0d9093 commit 10ddbd6

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

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

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1574,6 +1574,45 @@ def j_invariant(self, parameter=None, check=True):
15741574
for k, d in zip(parameter[0], parameter[1][:-1]))
15751575
return num / (self._gen[-1]**parameter[1][-1])
15761576

1577+
def jk_invariants(self):
1578+
r"""
1579+
Return a dictionary whose keys are all the integers
1580+
`1 \leqslant k \leqslant r-1` and the values are the
1581+
`j_k`-invariants
1582+
1583+
Recall that the `j_k`-invariants of self are defined by:
1584+
1585+
.. MATH::
1586+
1587+
j_k := \frac{g_k^{(q^r - 1)/(\mathrm{gcd}(k, r) - 1)}}{g_r^{(q^k - 1)/(\mathrm{gcd}(k, r) - 1)}}
1588+
1589+
where `g_i` is the `i`-th coefficient of the generator of self.
1590+
1591+
EXAMPLES:
1592+
1593+
sage: A = GF(3)['T']
1594+
sage: K.<T> = Frac(A)
1595+
sage: phi = DrinfeldModule(A, [T, 1, T+1, T^3, T^6])
1596+
sage: jk_inv = phi.jk_invariants(); jk_inv
1597+
{1: 1/T^6, 2: (T^10 + T^9 + T + 1)/T^6, 3: T^42}
1598+
sage: jk_inv[2]
1599+
(T^10 + T^9 + T + 1)/T^6
1600+
1601+
::
1602+
1603+
sage: F = GF(7**2)
1604+
sage: A = F['T']
1605+
sage: E.<z> = F.extension(4)
1606+
sage: phi = DrinfeldModule(A, [z^2, 1, z+1, z^2, z, z+1])
1607+
sage: phi.jk_invariants()
1608+
{1: 5*z^7 + 2*z^6 + 5*z^5 + 2*z^4 + 5*z^3 + z^2 + z + 2,
1609+
2: 3*z^7 + 4*z^6 + 5*z^5 + 6*z^4 + 4*z,
1610+
3: 5*z^7 + 6*z^6 + 6*z^5 + 4*z^3 + z^2 + 2*z + 1,
1611+
4: 3*z^6 + 2*z^5 + 4*z^4 + 2*z^3 + 4*z^2 + 6*z + 2}
1612+
"""
1613+
r = self._gen.degree() # rank of self
1614+
return {k: self.j_invariant(k) for k in range(1, r)}
1615+
15771616
def morphism(self):
15781617
r"""
15791618
Return the morphism object that defines the Drinfeld module.

0 commit comments

Comments
 (0)