@@ -2084,3 +2084,67 @@ def scalar_multiplication(self, x):
2084
2084
if not self .function_ring ().has_coerce_map_from (x .parent ()):
2085
2085
raise ValueError ("%s is not element of the function ring" % x )
2086
2086
return self .Hom (self )(x )
2087
+
2088
+ def frobenius_relative (self , n = 1 ):
2089
+ r"""
2090
+ Return the `n`-th iterate relative Frobenius of this Drinfeld module.
2091
+
2092
+ By definition, the relative Frobenius is the isogeny represented by
2093
+ the Ore polynomial `tau^d` where `d` is the degree of the characteristic
2094
+ of this Drinfeld module (which is also the degree of `\gamma(T)` over
2095
+ the `\mathbb F_q`).
2096
+
2097
+ INPUT:
2098
+
2099
+ - ``n`` -- a nonnegative integer (default: ``1``)
2100
+
2101
+ EXAMPLES::
2102
+
2103
+ sage: Fq = GF(5)
2104
+ sage: A.<T> = Fq[]
2105
+ sage: K.<z> = Fq.extension(3)
2106
+ sage: phi = DrinfeldModule(A, [1, z, z])
2107
+ sage: phi.frobenius_relative()
2108
+ Drinfeld Module morphism:
2109
+ From: Drinfeld module defined by T |--> z*t^2 + z*t + 1
2110
+ To: Drinfeld module defined by T |--> (2*z^2 + 4*z + 4)*t^2 + (2*z^2 + 4*z + 4)*t + 1
2111
+ Defn: t
2112
+ sage: phi.frobenius_relative(2)
2113
+ Drinfeld Module morphism:
2114
+ From: Drinfeld module defined by T |--> z*t^2 + z*t + 1
2115
+ To: Drinfeld module defined by T |--> (3*z^2 + 1)*t^2 + (3*z^2 + 1)*t + 1
2116
+ Defn: t^2
2117
+
2118
+ When `n` is the degree of `F` over `\FF_q(\gamma(T))`, we obtain
2119
+ the Frobenius endomorphism::
2120
+
2121
+ sage: phi.frobenius_relative(3) == phi.frobenius_endomorphism()
2122
+ True
2123
+
2124
+ In particular, when `\gamma(T)` generates the field `K`, the relative
2125
+ Frobenius is the same as the Frobenius endomorphism::
2126
+
2127
+ sage: psi = DrinfeldModule(A, [z, z, 1])
2128
+ sage: psi.frobenius_relative()
2129
+ Endomorphism of Drinfeld module defined by T |--> t^2 + z*t + z
2130
+ Defn: t^3
2131
+ sage: psi.frobenius_endomorphism()
2132
+ Endomorphism of Drinfeld module defined by T |--> t^2 + z*t + z
2133
+ Defn: t^3
2134
+
2135
+ When the characteristic is zero, the relative Frobenius is not defined
2136
+ and an error is raised::
2137
+
2138
+ sage: R.<z> = Fq[]
2139
+ sage: K.<z> = Frac(R)
2140
+ sage: phi = DrinfeldModule(A, [1, z])
2141
+ sage: phi.frobenius_relative()
2142
+ Traceback (most recent call last):
2143
+ ...
2144
+ NotImplementedError: function ring characteristic not implemented in this case
2145
+ """
2146
+ tau = self .ore_variable ()
2147
+ d = self .characteristic ().degree ()
2148
+ if d < 0 :
2149
+ raise ValueError ("the characteristic of the Drinfeld module must be nonzero" )
2150
+ return self .hom (tau ** (n * d ))
0 commit comments