Anderson motives

AUTHOR:

  • Xavier Caruso, Antoine Leudière (2025-11): initial version

class sage.categories.anderson_motives.AndersonMotives(category)[source]

Bases: OreModules

The category of Anderson motives.

A_field()[source]

Return the underlying \(A\)-field of this category.

EXAMPLES:

sage: from sage.categories.anderson_motives import AndersonMotives
sage: A.<T> = GF(3)[]
sage: K.<z> = GF(3^3)
sage: phi = DrinfeldModule(A, [z, z^2, z^3])
sage: C = AndersonMotives(phi.category())
sage: C.A_field()
Finite Field in z of size 3^3 over its base
>>> from sage.all import *
>>> from sage.categories.anderson_motives import AndersonMotives
>>> A = GF(Integer(3))['T']; (T,) = A._first_ngens(1)
>>> K = GF(Integer(3)**Integer(3), names=('z',)); (z,) = K._first_ngens(1)
>>> phi = DrinfeldModule(A, [z, z**Integer(2), z**Integer(3)])
>>> C = AndersonMotives(phi.category())
>>> C.A_field()
Finite Field in z of size 3^3 over its base
Endsets()[source]

Return the category of endsets.

EXAMPLES:

sage: from sage.categories.anderson_motives import AndersonMotives
sage: A.<T> = GF(3)[]
sage: K.<z> = GF(3^3)
sage: phi = DrinfeldModule(A, [z, z^2, z^3])
sage: C = AndersonMotives(phi.category())

sage: from sage.categories.homsets import Homsets
sage: C.Endsets() is Homsets().Endsets()
True
>>> from sage.all import *
>>> from sage.categories.anderson_motives import AndersonMotives
>>> A = GF(Integer(3))['T']; (T,) = A._first_ngens(1)
>>> K = GF(Integer(3)**Integer(3), names=('z',)); (z,) = K._first_ngens(1)
>>> phi = DrinfeldModule(A, [z, z**Integer(2), z**Integer(3)])
>>> C = AndersonMotives(phi.category())

>>> from sage.categories.homsets import Homsets
>>> C.Endsets() is Homsets().Endsets()
True
Homsets()[source]

Return the category of homsets.

EXAMPLES:

sage: from sage.categories.anderson_motives import AndersonMotives
sage: A.<T> = GF(3)[]
sage: K.<z> = GF(3^3)
sage: phi = DrinfeldModule(A, [z, z^2, z^3])
sage: C = AndersonMotives(phi.category())

sage: from sage.categories.homsets import Homsets
sage: C.Homsets() is Homsets()
True
>>> from sage.all import *
>>> from sage.categories.anderson_motives import AndersonMotives
>>> A = GF(Integer(3))['T']; (T,) = A._first_ngens(1)
>>> K = GF(Integer(3)**Integer(3), names=('z',)); (z,) = K._first_ngens(1)
>>> phi = DrinfeldModule(A, [z, z**Integer(2), z**Integer(3)])
>>> C = AndersonMotives(phi.category())

>>> from sage.categories.homsets import Homsets
>>> C.Homsets() is Homsets()
True
class ParentMethods[source]

Bases: object

A_field()[source]

Return the underlying \(A\)-field of this Anderson motive.

This is an instance of the class sage.rings.ring_extension.RingExtension_generic.

EXAMPLES:

sage: Fq = GF(25)
sage: A.<T> = Fq[]
sage: K.<z> = Fq.extension(6)
sage: phi = DrinfeldModule(A, [z, z^3, z^5])
sage: M = phi.anderson_motive()
sage: M.A_field()
Finite Field in z of size 5^12 over its base
>>> from sage.all import *
>>> Fq = GF(Integer(25))
>>> A = Fq['T']; (T,) = A._first_ngens(1)
>>> K = Fq.extension(Integer(6), names=('z',)); (z,) = K._first_ngens(1)
>>> phi = DrinfeldModule(A, [z, z**Integer(3), z**Integer(5)])
>>> M = phi.anderson_motive()
>>> M.A_field()
Finite Field in z of size 5^12 over its base
base()[source]

Return the base ring over which this Anderson motive is defined.

EXAMPLES:

sage: Fq = GF(25)
sage: A.<T> = Fq[]
sage: K.<z> = Fq.extension(6)
sage: phi = DrinfeldModule(A, [z, z^3, z^5])
sage: M = phi.anderson_motive()
sage: M.base()
Univariate Polynomial Ring in T over Finite Field in z of size 5^12
>>> from sage.all import *
>>> Fq = GF(Integer(25))
>>> A = Fq['T']; (T,) = A._first_ngens(1)
>>> K = Fq.extension(Integer(6), names=('z',)); (z,) = K._first_ngens(1)
>>> phi = DrinfeldModule(A, [z, z**Integer(3), z**Integer(5)])
>>> M = phi.anderson_motive()
>>> M.base()
Univariate Polynomial Ring in T over Finite Field in z of size 5^12
base_ring()[source]

alias of base().

characteristic()[source]

Return the characteristic of the underlying \(A\)-field.

EXAMPLES:

sage: Fq = GF(25)
sage: A.<T> = Fq[]
sage: K.<z> = Fq.extension(6)
sage: phi = DrinfeldModule(A, [z, z^3, z^5])
sage: M = phi.anderson_motive()
sage: M.characteristic()
T^6 + (4*z2 + 3)*T^5 + T^4 + (3*z2 + 1)*T^3 + T^2 + (4*z2 + 1)*T + z2
>>> from sage.all import *
>>> Fq = GF(Integer(25))
>>> A = Fq['T']; (T,) = A._first_ngens(1)
>>> K = Fq.extension(Integer(6), names=('z',)); (z,) = K._first_ngens(1)
>>> phi = DrinfeldModule(A, [z, z**Integer(3), z**Integer(5)])
>>> M = phi.anderson_motive()
>>> M.characteristic()
T^6 + (4*z2 + 3)*T^5 + T^4 + (3*z2 + 1)*T^3 + T^2 + (4*z2 + 1)*T + z2
function_ring()[source]

Return the underlying function ring of this Anderson motive.

EXAMPLES:

sage: Fq = GF(25)
sage: A.<T> = Fq[]
sage: K.<z> = Fq.extension(6)
sage: phi = DrinfeldModule(A, [z, z^3, z^5])
sage: M = phi.anderson_motive()
sage: M.function_ring()
Univariate Polynomial Ring in T over Finite Field in z2 of size 5^2
>>> from sage.all import *
>>> Fq = GF(Integer(25))
>>> A = Fq['T']; (T,) = A._first_ngens(1)
>>> K = Fq.extension(Integer(6), names=('z',)); (z,) = K._first_ngens(1)
>>> phi = DrinfeldModule(A, [z, z**Integer(3), z**Integer(5)])
>>> M = phi.anderson_motive()
>>> M.function_ring()
Univariate Polynomial Ring in T over Finite Field in z2 of size 5^2
ore_polring()[source]

Return the Ore polynomial ring over which this Anderson motive is defined.

EXAMPLES:

sage: Fq = GF(25)
sage: A.<T> = Fq[]
sage: K.<z> = Fq.extension(6)
sage: phi = DrinfeldModule(A, [z, z^3, z^5])
sage: M = phi.anderson_motive()
sage: M.ore_polring()
Ore Polynomial Ring in τ over Univariate Polynomial Ring in T
over Finite Field in z of size 5^12 twisted by T |--> T, with map of base ring
>>> from sage.all import *
>>> Fq = GF(Integer(25))
>>> A = Fq['T']; (T,) = A._first_ngens(1)
>>> K = Fq.extension(Integer(6), names=('z',)); (z,) = K._first_ngens(1)
>>> phi = DrinfeldModule(A, [z, z**Integer(3), z**Integer(5)])
>>> M = phi.anderson_motive()
>>> M.ore_polring()
Ore Polynomial Ring in τ over Univariate Polynomial Ring in T
over Finite Field in z of size 5^12 twisted by T |--> T, with map of base ring
ore_variable()[source]

Return the generator of the Ore polynomial ring over which this Anderson motive is defined.

EXAMPLES:

sage: Fq = GF(25)
sage: A.<T> = Fq[]
sage: K.<z> = Fq.extension(6)
sage: phi = DrinfeldModule(A, [z, z^3, z^5])
sage: M = phi.anderson_motive()
sage: tau = M.ore_variable()
sage: tau
τ
sage: tau.parent()
Ore Polynomial Ring in τ over Univariate Polynomial Ring in T
over Finite Field in z of size 5^12 twisted by T |--> T, with map of base ring
>>> from sage.all import *
>>> Fq = GF(Integer(25))
>>> A = Fq['T']; (T,) = A._first_ngens(1)
>>> K = Fq.extension(Integer(6), names=('z',)); (z,) = K._first_ngens(1)
>>> phi = DrinfeldModule(A, [z, z**Integer(3), z**Integer(5)])
>>> M = phi.anderson_motive()
>>> tau = M.ore_variable()
>>> tau
τ
>>> tau.parent()
Ore Polynomial Ring in τ over Univariate Polynomial Ring in T
over Finite Field in z of size 5^12 twisted by T |--> T, with map of base ring
base()[source]

Return the base over which the Anderson motives in this category are defined.

EXAMPLES:

sage: from sage.categories.anderson_motives import AndersonMotives
sage: A.<T> = GF(3)[]
sage: K.<z> = GF(3^3)
sage: phi = DrinfeldModule(A, [z, z^2, z^3])
sage: C = AndersonMotives(phi.category())
sage: C.base()
Univariate Polynomial Ring in T over Finite Field in z of size 3^3
>>> from sage.all import *
>>> from sage.categories.anderson_motives import AndersonMotives
>>> A = GF(Integer(3))['T']; (T,) = A._first_ngens(1)
>>> K = GF(Integer(3)**Integer(3), names=('z',)); (z,) = K._first_ngens(1)
>>> phi = DrinfeldModule(A, [z, z**Integer(2), z**Integer(3)])
>>> C = AndersonMotives(phi.category())
>>> C.base()
Univariate Polynomial Ring in T over Finite Field in z of size 3^3
characteristic()[source]

Return the characteristic of the underlying \(A\)-field.

EXAMPLES:

sage: from sage.categories.anderson_motives import AndersonMotives
sage: A.<T> = GF(3)[]
sage: K.<z> = GF(3^3)
sage: phi = DrinfeldModule(A, [z, z^2, z^3])
sage: C = AndersonMotives(phi.category())
sage: C.divisor()
T + 2*z
>>> from sage.all import *
>>> from sage.categories.anderson_motives import AndersonMotives
>>> A = GF(Integer(3))['T']; (T,) = A._first_ngens(1)
>>> K = GF(Integer(3)**Integer(3), names=('z',)); (z,) = K._first_ngens(1)
>>> phi = DrinfeldModule(A, [z, z**Integer(2), z**Integer(3)])
>>> C = AndersonMotives(phi.category())
>>> C.divisor()
T + 2*z
divisor()[source]

Return the polynomial \(T - z\) if \(T\) denotes the generator of the function ring \(A\) and \(z\) is the image of \(T\) in the \(A\)-field.

EXAMPLES:

sage: from sage.categories.anderson_motives import AndersonMotives
sage: A.<T> = GF(3)[]
sage: K.<z> = GF(3^3)
sage: phi = DrinfeldModule(A, [z, z^2, z^3])
sage: C = AndersonMotives(phi.category())
sage: C.divisor()
T + 2*z
>>> from sage.all import *
>>> from sage.categories.anderson_motives import AndersonMotives
>>> A = GF(Integer(3))['T']; (T,) = A._first_ngens(1)
>>> K = GF(Integer(3)**Integer(3), names=('z',)); (z,) = K._first_ngens(1)
>>> phi = DrinfeldModule(A, [z, z**Integer(2), z**Integer(3)])
>>> C = AndersonMotives(phi.category())
>>> C.divisor()
T + 2*z
function_ring()[source]

Return the underlying function ring of this category.

EXAMPLES:

sage: from sage.categories.anderson_motives import AndersonMotives
sage: A.<T> = GF(3)[]
sage: K.<z> = GF(3^3)
sage: phi = DrinfeldModule(A, [z, z^2, z^3])
sage: C = AndersonMotives(phi.category())
sage: C.function_ring()
Univariate Polynomial Ring in T over Finite Field of size 3
>>> from sage.all import *
>>> from sage.categories.anderson_motives import AndersonMotives
>>> A = GF(Integer(3))['T']; (T,) = A._first_ngens(1)
>>> K = GF(Integer(3)**Integer(3), names=('z',)); (z,) = K._first_ngens(1)
>>> phi = DrinfeldModule(A, [z, z**Integer(2), z**Integer(3)])
>>> C = AndersonMotives(phi.category())
>>> C.function_ring()
Univariate Polynomial Ring in T over Finite Field of size 3
object(tau=None, names=None)[source]

Return the object in this category with \(\tau\)-action given by the matrix tau.

INPUT:

  • tau – a matrix or None (default: None); if None, return the trivial Anderson module in this category

  • names – a matrix or None (default: None); if None, return the trivial Anderson module in this category

EXAMPLES:

sage: from sage.categories.anderson_motives import AndersonMotives
sage: A.<T> = GF(3)[]
sage: K.<z> = GF(3^3)
sage: phi = DrinfeldModule(A, [z, z^2, z^3])
sage: C = AndersonMotives(phi.category())

sage: M = C.object()
sage: M
Anderson motive of rank 1 over Univariate Polynomial Ring in T over Finite Field in z of size 3^3
sage: M.matrix()
[1]
>>> from sage.all import *
>>> from sage.categories.anderson_motives import AndersonMotives
>>> A = GF(Integer(3))['T']; (T,) = A._first_ngens(1)
>>> K = GF(Integer(3)**Integer(3), names=('z',)); (z,) = K._first_ngens(1)
>>> phi = DrinfeldModule(A, [z, z**Integer(2), z**Integer(3)])
>>> C = AndersonMotives(phi.category())

>>> M = C.object()
>>> M
Anderson motive of rank 1 over Univariate Polynomial Ring in T over Finite Field in z of size 3^3
>>> M.matrix()
[1]

sage: tau = matrix(2, 2, [[T, 1], [z, 1]])
sage: N = C.object(tau)
sage: N.matrix()
[T 1]
[z 1]
[Python]
>>> from sage.all import *
>>> tau = matrix(Integer(2), Integer(2), [[T, Integer(1)], [z, Integer(1)]])
>>> N = C.object(tau)
>>> N.matrix()
[T 1]
[z 1]
ore_polring()[source]

Return the Ore polynomial ring over which the Anderson motives in this category are defined.

EXAMPLES:

sage: from sage.categories.anderson_motives import AndersonMotives
sage: Fq = GF(25)
sage: A.<T> = Fq[]
sage: K.<z> = Fq.extension(6)
sage: phi = DrinfeldModule(A, [z, z^3, z^5])
sage: C = AndersonMotives(phi.category())
sage: C.ore_polring()
Ore Polynomial Ring in τ over Univariate Polynomial Ring in T
over Finite Field in z of size 5^12 twisted by T |--> T, with map of base ring
>>> from sage.all import *
>>> from sage.categories.anderson_motives import AndersonMotives
>>> Fq = GF(Integer(25))
>>> A = Fq['T']; (T,) = A._first_ngens(1)
>>> K = Fq.extension(Integer(6), names=('z',)); (z,) = K._first_ngens(1)
>>> phi = DrinfeldModule(A, [z, z**Integer(3), z**Integer(5)])
>>> C = AndersonMotives(phi.category())
>>> C.ore_polring()
Ore Polynomial Ring in τ over Univariate Polynomial Ring in T
over Finite Field in z of size 5^12 twisted by T |--> T, with map of base ring
super_categories()[source]

EXAMPLES:

sage: from sage.categories.anderson_motives import AndersonMotives
sage: A.<T> = GF(3)[]
sage: K.<z> = GF(3^3)
sage: phi = DrinfeldModule(A, [z, z^2, z^3])
sage: C = AndersonMotives(phi.category())
sage: C.super_categories()
[Category of Ore modules over Univariate Polynomial Ring in T over Finite Field in z of size 3^3 twisted by T |--> T, with map of base ring]
>>> from sage.all import *
>>> from sage.categories.anderson_motives import AndersonMotives
>>> A = GF(Integer(3))['T']; (T,) = A._first_ngens(1)
>>> K = GF(Integer(3)**Integer(3), names=('z',)); (z,) = K._first_ngens(1)
>>> phi = DrinfeldModule(A, [z, z**Integer(2), z**Integer(3)])
>>> C = AndersonMotives(phi.category())
>>> C.super_categories()
[Category of Ore modules over Univariate Polynomial Ring in T over Finite Field in z of size 3^3 twisted by T |--> T, with map of base ring]