Expansion at infinity for rank 2#
In analogy with the classical theory, any Drinfeld modular form \(f:\Omega^2(\mathbb{C}_{\infty}) \rightarrow \mathbb{C}_{\infty}\) admits an expansion at infinity of the form:
where \(t(w) := 1/e(w)\) and \(e(w)\) is the exponential of the Carlitz module \(T\mapsto T + \tau\).
We say that a Drinfeld modular forms of weight \(k\) admits a Petrov expansion or an \(A\)-expansion if there exists an integer \(n\) and coefficients \(c_{a}(f)\) such that
where \(G_n(X)\) is the \(n\)-th Goss polynomial of the Carlitz module.
Petrov showed that there exists an infinite family of Drinfeld modular forms with \(A\)-expansion:
provided that \(k\) and \(n\) are integers such that \(k - 2n \equiv 0\) modulo \(q - 1\) and \(n \leq p^{v_p(k - n)}\).
This module defines functions that compute the expansion at infinity of the forms \(f_{k, n}\).
EXAMPLES:
sage: from drinfeld_modular_forms import compute_petrov_expansion
sage: A = GF(3)['T']
sage: D = compute_petrov_expansion(3+1, 1, A); D
t + t^5 + ((2*T^3+T)*t^7) + O(t^8)
It is possible to compute on demands any coefficients of the above series:
sage: D[59] # 59-th coefficient
2*T^27 + T^9 + T^3 + 2*T
sage: D[0:10] # first 10 coefficients
[0, 1, 0, 0, 0, 1, 0, 2*T^3 + T, 0, 1]
AUTHORS:
David Ayotte (2021): initial version
- drinfeld_modular_forms.expansions.coefficient_petrov_expansion(k, n, i, polynomial_ring)#
Return the \(i\)-th coefficient of the expansion for the form \(f_{k, n}\).
INPUT:
k
– an integer representing the weight of the resulting form.n
– an integer. The type of the resulting form will be congruent to this integer modulo \(q-1\).i
– an integer representing the index of the coefficient to compute.polynomial_ring
– a univariate polynomial ring over a finite field.
EXAMPLES:
sage: from drinfeld_modular_forms import coefficient_petrov_expansion sage: A = GF(3)['T'] sage: coefficient_petrov_expansion(3+1, 1, 1, A) 1 sage: coefficient_petrov_expansion(3+1, 1, 0, A) 0 sage: coefficient_petrov_expansion(3+1, 1, 1, A) 1 sage: coefficient_petrov_expansion(3+1, 1, 7, A) 2*T^3 + T
- drinfeld_modular_forms.expansions.compute_delta_rank_2(polynomial_ring, name='t')#
Return the expansion of the normalized Drinfeld modular discriminant of rank 2.
Recall that for \(w\in \Omega^2(\mathbb{C}_{\infty})\) the Drinfeld modular discriminant is the leading coefficient of the Drinfeld module
\[\phi_{w} : T \mapsto T + g(z)\tau + \Delta(w)\tau^2\]corresponding to the lattice \(\Lambda_w := wA + A\). The normalized discriminant is the form \(\Delta_0(w)\) such that its first nonzero coefficient is 1.
INPUT:
polynomial_ring
– a univariate polynomial ring over a finite field.name
– string (default: ‘t’).
OUTPUT: a lazy power series over the base ring.
Note
We have \(\Delta_0(w) = f_{q^2 - 1, q - 1}\).
EXAMPLES:
sage: from drinfeld_modular_forms import compute_delta_rank_2 sage: A = GF(3)['T'] sage: D = compute_delta_rank_2(A); D t^2 + 2*t^6 + O(t^8) sage: D[38] T^18 + 2*T^12 + 2*T^10 + T^4 + 1 sage: D[56] 2*T^27 + 2*T^3 + 2*T
- drinfeld_modular_forms.expansions.compute_eisentein_series_rank_2(polynomial_ring, name='t')#
Return the expansion fo the normalized Drinfeld Eisenstein series of weight \(q-1\).
Recall that this form is defined by:
\[E_{q-1}(w) := \frac{T^q - T}{\tilde{\pi}^{q-1}} \sum_{(c, d)\in A^2\setminus 0} \frac{1}{(cw + d)^{q-1}}.\]where \(\tilde{\pi}\) is the Carlitz period.
INPUT:
polynomial_ring
– a univariate polynomial ring over a finite field.name
– string (default: ‘t’).
OUTPUT: a lazy power series over the base ring.
Note
We have \(E_{q-1} = 1 - (T^q - T)f_{q - 1, q - 1}\).
EXAMPLES:
sage: from drinfeld_modular_forms import compute_eisentein_series_rank_2 sage: A = GF(3)['T'] sage: E = compute_eisentein_series_rank_2(A); E 1 + ((2*T^3+T)*t^2) + O(t^7) sage: E[0:15] [1, 0, 2*T^3 + T, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2*T^3 + T]
- drinfeld_modular_forms.expansions.compute_h_rank_2(polynomial_ring, name='t')#
- drinfeld_modular_forms.expansions.compute_petrov_expansion(k, n, polynomial_ring, name='t')#
Return the \(A\)-expansion of the form \(f_{k, n}\) as a lazy power series.
INPUT:
k
– an integer representing the weight of the resulting form.n
– an integer which will be congruent to the type modulo \(q-1\).polynomial_ring
– a univariate polynomial ring over a finite field.name
– string (default: ‘t’).
OUTPUT: A lazy power series over the fraction field of
polynomial_ring
.EXAMPLES:
sage: from drinfeld_modular_forms import compute_petrov_expansion sage: A = GF(3)['T'] sage: D = compute_petrov_expansion(3+1, 1, A); D t + t^5 + ((2*T^3+T)*t^7) + O(t^8)
To obtain more coefficient, one just need to take slices the series:
sage: D[0:10] # output the coefficient from i=0...9 [0, 1, 0, 0, 0, 1, 0, 2*T^3 + T, 0, 1] sage: D[39] # print the 39-th coefficient T^9 + 2*T^3 sage: D[59] # 59-th coefficient 2*T^27 + T^9 + T^3 + 2*T
- drinfeld_modular_forms.expansions.inverse_cyclotomic_polynomial(a, name='X')#
Return the polynomial \(f_a(X) = \rho_a(X^{-1}) X^{q^{\mathrm{deg}(a)}}\) where \(\rho_a\) is the Carlitz module.
This function is used in
parameter_at_infinity()
EXAMPLES:
sage: from drinfeld_modular_forms.expansions import inverse_cyclotomic_polynomial sage: A.<T> = GF(3)['T'] sage: inverse_cyclotomic_polynomial(A.one()) 1 sage: inverse_cyclotomic_polynomial(T) T*X^2 + 1 sage: inverse_cyclotomic_polynomial(T^2) T^2*X^8 + (T^3 + T)*X^6 + 1 sage: inverse_cyclotomic_polynomial(T^2 + T + 1) (T^2 + T + 1)*X^8 + (T^3 + T + 1)*X^6 + 1
- drinfeld_modular_forms.expansions.parameter_at_infinity(a, name='t')#
Return the function \(t(aw)\) as a power series in \(t\).
INPUT:
a
(polynomial) – univariate polynomial over a finite field.name
(Str, default: ‘t’) – the name of the lazy power series ring generator
EXAMPLES:
sage: from drinfeld_modular_forms import parameter_at_infinity sage: A.<T> = GF(3)['T'] sage: parameter_at_infinity(A.one()) t sage: parameter_at_infinity(T) t^3 + 2*T*t^5 + T^2*t^7 + 2*T^3*t^9 + O(t^10) sage: parameter_at_infinity(T^2) t^9 + ((2*T^3+2*T)*t^15) + O(t^16)