Drinfeld modules#

Base class for Drinfeld modules over \(\mathbb{F}_q[T]\)

Drinfeld modules are currently being implemented in SageMath. See the following Pull Request: https://github.com/sagemath/sage/pull/35026.

You should not import from this module as it will be deprecated in the future.

AUTHORS:

  • David Ayotte (2021): initial version

class drinfeld_modular_forms.drinfeld_modules.CarlitzModule(polynomial_base_ring, name='𝜏')#

Bases: DrinfeldModule

class drinfeld_modular_forms.drinfeld_modules.DrinfeldModule(*args, name='𝜏')#

Bases: Parent

Base class of a Drinfeld module.

action_endomorphism(a)#

Return the Ore polynomial corresponding to the action of \(a\).

INPUT:

  • a (Polynomial) – A polynomial living in the univariate polynomial ring of the base field.

EXAMPLES:

sage: from drinfeld_modular_forms.drinfeld_modules import DrinfeldModule
sage: A.<T> = GF(3)['T']
sage: C = DrinfeldModule(A.one())
sage: C.action_endomorphism(T)
𝜏 + T
sage: C.action_endomorphism(T^2)
𝜏^2 + (T^3 + T)*𝜏 + T^2

This method can also be accessed more directly:

sage: C(T)
𝜏 + T
sage: C(T^3)
𝜏^3 + (T^9 + T^3 + T)*𝜏^2 + (T^6 + T^4 + T^2)*𝜏 + T^3
action_polynomial(a, name='X')#

Return the action endomorphism at a polynomial \(a\) but as a univariate polynomial in name (default: ‘X’).

EXAMPLES:

sage: from drinfeld_modular_forms.drinfeld_modules import DrinfeldModule
sage: A.<T> = GF(3)['T']
sage: C = DrinfeldModule(A.one()); C
Drinfeld Module of rank 1 over Finite Field of size 3 defined by:
T |--> 𝜏 + T
sage: p = C.action_polynomial(T); p
X^3 + T*X
sage: p.parent()
Univariate Polynomial Ring in X over Fraction Field of Univariate Polynomial Ring in T over Finite Field of size 3
base_field()#

Return the base field of the given Drinfeld module.

EXAMPLES:

sage: from drinfeld_modular_forms.drinfeld_modules import DrinfeldModule
sage: A.<T> = GF(11 ** 3)['T']
sage: phi = DrinfeldModule(T^2)
sage: phi.base_field()
Fraction Field of Univariate Polynomial Ring in T over Finite Field in z3 of size 11^3
base_polynomial_ring()#

Return the ring of regular functions outside infinity.

EXAMPLES:

sage: from drinfeld_modular_forms.drinfeld_modules import DrinfeldModule
sage: A.<T> = GF(19)['T']
sage: C = DrinfeldModule(A.one())
sage: C.base_polynomial_ring()
Univariate Polynomial Ring in T over Finite Field of size 19
sage: C.base_polynomial_ring() is A
True

An alias of this method is regular_functions_outside_infinity:

sage: C.regular_functions_outside_infinity()
Univariate Polynomial Ring in T over Finite Field of size 19
field_of_constants()#

Return the field of constants of the base function field.

EXAMPLES:

sage: from drinfeld_modular_forms.drinfeld_modules import DrinfeldModule
sage: A.<T> = GF(7)['T']
sage: DrinfeldModule(T).field_of_constants()
Finite Field of size 7
operator_polynomial()#

Return the Ore polynomial corresponding to the action of \(T\)

EXAMPLES:

sage: from drinfeld_modular_forms.drinfeld_modules import DrinfeldModule
sage: A.<T> = GF(5 ** 2)['T']
sage: phi_T = DrinfeldModule(T).operator_polynomial(); phi_T
T*𝜏 + T
sage: phi_T.parent()
Ore Polynomial Ring in 𝜏 over Fraction Field of Univariate Polynomial Ring in T over Finite Field in z2 of size 5^2 twisted by Frob
q()#
rank()#

Return the rank of the given Drinfeld module.

EXAMPLES:

sage: from drinfeld_modular_forms.drinfeld_modules import DrinfeldModule
sage: A.<T> = GF(5 ** 2)['T']
sage: DrinfeldModule(T).rank()
1
sage: DrinfeldModule(T, T^2, T).rank()
3
regular_functions_outside_infinity()#

Return the ring of regular functions outside infinity.

EXAMPLES:

sage: from drinfeld_modular_forms.drinfeld_modules import DrinfeldModule
sage: A.<T> = GF(19)['T']
sage: C = DrinfeldModule(A.one())
sage: C.base_polynomial_ring()
Univariate Polynomial Ring in T over Finite Field of size 19
sage: C.base_polynomial_ring() is A
True

An alias of this method is regular_functions_outside_infinity:

sage: C.regular_functions_outside_infinity()
Univariate Polynomial Ring in T over Finite Field of size 19
ring_of_constants()#

Return the field of constants of the base function field.

EXAMPLES:

sage: from drinfeld_modular_forms.drinfeld_modules import DrinfeldModule
sage: A.<T> = GF(7)['T']
sage: DrinfeldModule(T).field_of_constants()
Finite Field of size 7