Anderson motives¶
AUTHOR:
Xavier Caruso, Antoine Leudière (2025-11): initial version
- class sage.categories.anderson_motives.AndersonMotives(category)[source]¶
Bases:
OreModulesThe category of Anderson motives.
See also
sage.categories.drinfeld_modules.DrinfeldModules,sage.rings.function_field.drinfeld_modules.anderson_motive- 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
- 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 orNone(default:None); ifNone, return the trivial Anderson module in this categorynames– a matrix orNone(default:None); ifNone, 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]