@@ -1574,6 +1574,45 @@ def j_invariant(self, parameter=None, check=True):
1574
1574
for k , d in zip (parameter [0 ], parameter [1 ][:- 1 ]))
1575
1575
return num / (self ._gen [- 1 ]** parameter [1 ][- 1 ])
1576
1576
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
+
1577
1616
def morphism (self ):
1578
1617
r"""
1579
1618
Return the morphism object that defines the Drinfeld module.
0 commit comments