Skip to content

Commit e82e19a

Browse files
author
Xavier Caruso
committed
relative Frobenius
1 parent 931cc5e commit e82e19a

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -907,6 +907,42 @@ def frobenius_trace(self, algorithm=None):
907907
# If all fail, we raise an error
908908
raise NotImplementedError(f'algorithm "{algorithm}" not implemented')
909909

910+
def frobenius_relative(self):
911+
r"""
912+
Return the relative Frobenius of this Drinfeld module, that is
913+
the isogeny of the form `\tau^d` with `d` minimal.
914+
915+
We note that `d` is the degree of `\gamma(T)` over the `\mathbb F_q`.
916+
917+
EXAMPLES::
918+
919+
sage: Fq = GF(5)
920+
sage: A.<T> = Fq[]
921+
sage: K.<z> = Fq.extension(3)
922+
sage: phi = DrinfeldModule(A, [1, z, z])
923+
sage: phi.frobenius_relative()
924+
Drinfeld Module morphism:
925+
From: Drinfeld module defined by T |--> z*t^2 + z*t + 1
926+
To: Drinfeld module defined by T |--> (2*z^2 + 4*z + 4)*t^2 + (2*z^2 + 4*z + 4)*t + 1
927+
Defn: t
928+
929+
When the constant coefficient generates the field `K`, the relative
930+
Frobenius is the same as the Frobenius endomorphism::
931+
932+
sage: psi = DrinfeldModule(A, [z, z, 1])
933+
sage: psi.frobenius_relative()
934+
Endomorphism of Drinfeld module defined by T |--> t^2 + z*t + z
935+
Defn: t^3
936+
sage: psi.frobenius_endomorphism()
937+
Endomorphism of Drinfeld module defined by T |--> t^2 + z*t + z
938+
Defn: t^3
939+
"""
940+
E = self.base_over_constants_field()
941+
z = E(self.constant_coefficient())
942+
d = z.minpoly().degree()
943+
tau = self.ore_variable()
944+
return self.hom(tau**d)
945+
910946
def invert(self, ore_pol):
911947
r"""
912948
Return the preimage of the input under the Drinfeld module, if it

0 commit comments

Comments
 (0)