The module action induced by a Drinfeld module - Drinfeld modules

Skip to content
Back to top
View this page
Edit this page

# The module action induced by a Drinfeld module

This module provides the class `sage.rings.function_field.drinfeld_module.action.DrinfeldModuleAction`.

AUTHORS:

- Antoine Leudière (2022-04)

class sage.rings.function_field.drinfeld_modules.action.DrinfeldModuleAction(drinfeld_module)

  Bases: `Action`

  This class implements the module action induced by a Drinfeld \(\GF{q}[T]\)-module.

  Let \(\phi\) be a Drinfeld \(\GF{q}[T]\)-module over a field \(K\) and let \(L/K\) be a field extension. Let \(x \in L\) and let \(a\) be a function ring element; the action is defined as \((a, x) \mapsto \phi_a(x)\).

  Note

  In this implementation, \(L\) is \(K\).

  Note

  The user should never explicitly instantiate the class `DrinfeldModuleAction`.

  Warning

  This class may be replaced later on. See issues Issue #34833 and Issue #34834.

  INPUT: the Drinfeld module

  EXAMPLES:

  Sage

      sage: Fq.<z2> = GF(11)
      sage: A.<T> = Fq[]
      sage: K.<z> = Fq.extension(2)
      sage: phi = DrinfeldModule(A, [z, 0, 0, 1])
      sage: action = phi.action()
      sage: action
      Action on Finite Field in z of size 11^2 over its base
       induced by Drinfeld module defined by T |--> τ^3 + z

  Python

      >>> from sage.all import *
      >>> Fq = GF(Integer(11), names=('z2',)); (z2,) = Fq._first_ngens(1)
      >>> A = Fq['T']; (T,) = A._first_ngens(1)
      >>> K = Fq.extension(Integer(2), names=('z',)); (z,) = K._first_ngens(1)
      >>> phi = DrinfeldModule(A, [z, Integer(0), Integer(0), Integer(1)])
      >>> action = phi.action()
      >>> action
      Action on Finite Field in z of size 11^2 over its base
       induced by Drinfeld module defined by T |--> τ^3 + z

  The action on elements is computed as follows:

  Sage

      sage: P = T + 1
      sage: a = z
      sage: action(P, a)
      ...
      4*z + 2
      sage: action(0, K.random_element())
      0
      sage: action(A.random_element(), 0)
      0

  [Python]

      >>> from sage.all import *
      >>> P = T + Integer(1)
      >>> a = z
      >>> action(P, a)
      ...
      4*z + 2
      >>> action(Integer(0), K.random_element())
      0
      >>> action(A.random_element(), Integer(0))
      0

  Finally, given a Drinfeld module action, it is easy to recover the corresponding Drinfeld module:

  Sage

      sage: action.drinfeld_module() is phi
      True

  Python

      >>> from sage.all import *
      >>> action.drinfeld_module() is phi
      True

  drinfeld_module()

    Return the Drinfeld module defining the action.

    OUTPUT: a Drinfeld module

    EXAMPLES:

    Sage

        sage: Fq.<z2> = GF(11)
        sage: A.<T> = Fq[]
        sage: K.<z> = Fq.extension(2)
        sage: phi = DrinfeldModule(A, [z, 0, 0, 1])
        sage: action = phi.action()
        sage: action.drinfeld_module() is phi
        True

    Python

        >>> from sage.all import *
        >>> Fq = GF(Integer(11), names=('z2',)); (z2,) = Fq._first_ngens(1)
        >>> A = Fq['T']; (T,) = A._first_ngens(1)
        >>> K = Fq.extension(Integer(2), names=('z',)); (z,) = K._first_ngens(1)
        >>> phi = DrinfeldModule(A, [z, Integer(0), Integer(0), Integer(1)])
        >>> action = phi.action()
        >>> action.drinfeld_module() is phi
        True