Skip to content

Commit d954bc3

Browse files
committed
Lighten DrinfeldModule representation
1 parent 90aa9ac commit d954bc3

File tree

5 files changed

+24
-28
lines changed

5 files changed

+24
-28
lines changed

src/sage/categories/drinfeld_modules.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ class DrinfeldModules(Category_over_base_ring):
132132
133133
sage: psi = cat.object([p_root, 1])
134134
sage: psi
135-
Drinfeld module defined by T |--> t + z^3 + 7*z^2 + 6*z + 10 over Finite Field in z of size 11^4 over its base
135+
Drinfeld module defined by T |--> t + z^3 + 7*z^2 + 6*z + 10
136136
sage: psi.category() is cat
137137
True
138138
@@ -149,7 +149,7 @@ class DrinfeldModules(Category_over_base_ring):
149149
150150
sage: rho = cat.random_object(2)
151151
sage: rho # random
152-
Drinfeld module defined by T |--> (7*z^3 + 7*z^2 + 10*z + 2)*t^2 + (9*z^3 + 5*z^2 + 2*z + 7)*t + z^3 + 7*z^2 + 6*z + 10 over Finite Field in z of size 11^4
152+
Drinfeld module defined by T |--> (7*z^3 + 7*z^2 + 10*z + 2)*t^2 + (9*z^3 + 5*z^2 + 2*z + 7)*t + z^3 + 7*z^2 + 6*z + 10
153153
sage: rho.rank() == 2
154154
True
155155
sage: rho.category() is cat
@@ -494,7 +494,7 @@ def object(self, gen):
494494
sage: cat = phi.category()
495495
sage: psi = cat.object([p_root, 0, 1])
496496
sage: psi
497-
Drinfeld module defined by T |--> t^2 + z^3 + 7*z^2 + 6*z + 10 over Finite Field in z of size 11^4 over its base
497+
Drinfeld module defined by T |--> t^2 + z^3 + 7*z^2 + 6*z + 10
498498
sage: t = phi.ore_polring().gen()
499499
sage: cat.object(t^3 + z^3 + 7*z^2 + 6*z + 10) is phi
500500
True
@@ -547,7 +547,7 @@ def random_object(self, rank):
547547
sage: phi = DrinfeldModule(A, [p_root, 0, 0, 1])
548548
sage: cat = phi.category()
549549
sage: psi = cat.random_object(3) # random
550-
Drinfeld module defined by T |--> (6*z^3 + 4*z^2 + 10*z + 9)*t^3 + (4*z^3 + 8*z^2 + 8*z)*t^2 + (10*z^3 + 3*z^2 + 6*z)*t + z^3 + 7*z^2 + 6*z + 10 over Finite Field in z of size 11^4
550+
Drinfeld module defined by T |--> (6*z^3 + 4*z^2 + 10*z + 9)*t^3 + (4*z^3 + 8*z^2 + 8*z)*t^2 + (10*z^3 + 3*z^2 + 6*z)*t + z^3 + 7*z^2 + 6*z + 10
551551
sage: psi.rank() == 3
552552
True
553553
"""
@@ -736,7 +736,7 @@ def constant_coefficient(self):
736736
sage: t = phi.ore_polring().gen()
737737
sage: psi = cat.object(phi.constant_coefficient() + t^3)
738738
sage: psi
739-
Drinfeld module defined by T |--> t^3 + 2*z12^11 + 2*z12^10 + z12^9 + 3*z12^8 + z12^7 + 2*z12^5 + 2*z12^4 + 3*z12^3 + z12^2 + 2*z12 over Finite Field in z12 of size 5^12 over its base
739+
Drinfeld module defined by T |--> t^3 + 2*z12^11 + 2*z12^10 + z12^9 + 3*z12^8 + z12^7 + 2*z12^5 + 2*z12^4 + 3*z12^3 + z12^2 + 2*z12
740740
741741
Reciprocally, it is impossible to create two Drinfeld modules in
742742
this category if they do not share the same constant

src/sage/rings/function_field/drinfeld_modules/action.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class DrinfeldModuleAction(Action):
5858
sage: phi = DrinfeldModule(A, [z, 0, 0, 1])
5959
sage: action = phi.action()
6060
sage: action
61-
Action on Finite Field in z of size 11^2 over its base induced by Drinfeld module defined by T |--> t^3 + z over Finite Field in z of size 11^2 over its base
61+
Action on Finite Field in z of size 11^2 over its base induced by Drinfeld module defined by T |--> t^3 + z
6262
6363
The action on elements is computed as follows::
6464
@@ -170,7 +170,7 @@ def _repr_(self):
170170
sage: phi = DrinfeldModule(A, [z, 0, 0, 1])
171171
sage: action = phi.action()
172172
sage: action
173-
Action on Finite Field in z of size 11^2 over its base induced by Drinfeld module defined by T |--> t^3 + z over Finite Field in z of size 11^2 over its base
173+
Action on Finite Field in z of size 11^2 over its base induced by Drinfeld module defined by T |--> t^3 + z
174174
"""
175175
return f'Action on {self._base} induced by ' \
176176
f'{self._drinfeld_module}'

src/sage/rings/function_field/drinfeld_modules/drinfeld_module.py

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,8 @@ class DrinfeldModule(Parent, UniqueRepresentation):
4949
5050
A Drinfeld `\mathbb{F}_q[T]`-module over the `base
5151
\mathbb{F}_q[T]`-field `K` is an `\mathbb{F}_q`-algebra morphism
52-
`\phi: \mathbb{F}_q[T] \to K\{\tau\}` such that:
53-
1. The image of `\phi` contains nonconstant Ore polynomials.
54-
2. For every element `a` in the `\mathbb{F}_q[T]`, the constant
55-
coefficient `\phi(a)` is `\gamma(a)`.
52+
`\phi: \mathbb{F}_q[T] \to K\{\tau\}` such that `\Im(\phi) \not\subset K`
53+
and `\phi` agrees with `\gamma` on `\mathbb{F}_q`.
5654
5755
For `a` in `\mathbb{F}_q[T]`, `\phi(a)` is denoted `\phi_a`.
5856
@@ -80,7 +78,7 @@ class DrinfeldModule(Parent, UniqueRepresentation):
8078
sage: K.<z> = Fq.extension(6)
8179
sage: phi = DrinfeldModule(A, [z, 4, 1])
8280
sage: phi
83-
Drinfeld module defined by T |--> t^2 + 4*t + z over Finite Field in z of size 5^12 over its base
81+
Drinfeld module defined by T |--> t^2 + 4*t + z
8482
8583
::
8684
@@ -89,7 +87,7 @@ class DrinfeldModule(Parent, UniqueRepresentation):
8987
sage: K.<z> = Frac(A)
9088
sage: psi = DrinfeldModule(A, [z, T+1])
9189
sage: psi
92-
Drinfeld module defined by T |--> (T + 1)*t + T over Fraction Field of Univariate Polynomial Ring in T over Finite Field in z2 of size 7^2 over its base
90+
Drinfeld module defined by T |--> (T + 1)*t + T
9391
9492
.. NOTE::
9593
@@ -128,7 +126,7 @@ class DrinfeldModule(Parent, UniqueRepresentation):
128126
sage: K.<z> = Fq.extension(6)
129127
sage: phi = DrinfeldModule(A, [z, 1, 1])
130128
sage: phi
131-
Drinfeld module defined by T |--> t^2 + t + z over Finite Field in z of size 3^12 over its base
129+
Drinfeld module defined by T |--> t^2 + t + z
132130
133131
.. NOTE::
134132
@@ -141,7 +139,7 @@ class DrinfeldModule(Parent, UniqueRepresentation):
141139
sage: L = Frac(A)
142140
sage: psi = DrinfeldModule(A, [L(T), 1, T^3 + T + 1])
143141
sage: psi
144-
Drinfeld module defined by T |--> (T^3 + T + 1)*t^2 + t + T over Fraction Field of Univariate Polynomial Ring in T over Finite Field in z2 of size 3^2 over its base
142+
Drinfeld module defined by T |--> (T^3 + T + 1)*t^2 + t + T
145143
146144
::
147145
@@ -159,7 +157,7 @@ class DrinfeldModule(Parent, UniqueRepresentation):
159157
sage: rho_T = z + t^3
160158
sage: rho = DrinfeldModule(A, rho_T)
161159
sage: rho
162-
Drinfeld module defined by T |--> t^3 + z over Finite Field in z of size 3^12 over its base
160+
Drinfeld module defined by T |--> t^3 + z
163161
sage: rho(T) == rho_T
164162
True
165163
@@ -195,7 +193,7 @@ class DrinfeldModule(Parent, UniqueRepresentation):
195193
196194
sage: cat = phi.category()
197195
sage: cat.object([z, 0, 0, 1])
198-
Drinfeld module defined by T |--> t^3 + z over Finite Field in z of size 3^12 over its base
196+
Drinfeld module defined by T |--> t^3 + z
199197
200198
.. RUBRIC:: The base field of a Drinfeld module
201199
@@ -223,8 +221,6 @@ class DrinfeldModule(Parent, UniqueRepresentation):
223221
224222
One can retrieve basic properties::
225223
226-
::
227-
228224
sage: phi.base_morphism()
229225
Ring morphism:
230226
From: Univariate Polynomial Ring in T over Finite Field in z2 of size 3^2
@@ -366,7 +362,7 @@ class DrinfeldModule(Parent, UniqueRepresentation):
366362
sage: ore_pol = (2*z^6 + z^3 + 2*z^2 + z + 2)*t + z^11 + 2*z^10 + 2*z^9 + 2*z^8 + z^7 + 2*z^6 + z^5 + z^3 + z^2 + z
367363
sage: psi = phi.velu(ore_pol)
368364
sage: psi
369-
Drinfeld module defined by T |--> (2*z^11 + 2*z^9 + z^6 + 2*z^5 + 2*z^4 + 2*z^2 + 1)*t^2 + (2*z^11 + 2*z^10 + 2*z^9 + z^8 + 2*z^7 + 2*z^6 + z^5 + 2*z^4 + 2*z^2 + 2*z)*t + z over Finite Field in z of size 3^12 over its base
365+
Drinfeld module defined by T |--> (2*z^11 + 2*z^9 + z^6 + 2*z^5 + 2*z^4 + 2*z^2 + 1)*t^2 + (2*z^11 + 2*z^10 + 2*z^9 + z^8 + 2*z^7 + 2*z^6 + z^5 + 2*z^4 + 2*z^2 + 2*z)*t + z
370366
sage: ore_pol in Hom(phi, psi)
371367
True
372368
sage: ore_pol * phi(T) == psi(T) * ore_pol
@@ -397,7 +393,7 @@ class DrinfeldModule(Parent, UniqueRepresentation):
397393
398394
sage: action = phi.action()
399395
sage: action
400-
Action on Finite Field in z of size 3^12 over its base induced by Drinfeld module defined by T |--> t^2 + t + z over Finite Field in z of size 3^12 over its base
396+
Action on Finite Field in z of size 3^12 over its base induced by Drinfeld module defined by T |--> t^2 + t + z
401397
402398
The action on elements is computed by calling the action object::
403399
@@ -823,10 +819,10 @@ def _repr_(self):
823819
sage: p_root = 2*z12^11 + 2*z12^10 + z12^9 + 3*z12^8 + z12^7 + 2*z12^5 + 2*z12^4 + 3*z12^3 + z12^2 + 2*z12
824820
sage: phi = DrinfeldModule(A, [p_root, z12^3, z12^5])
825821
sage: phi
826-
Drinfeld module defined by T |--> z12^5*t^2 + z12^3*t + 2*z12^11 + 2*z12^10 + z12^9 + 3*z12^8 + z12^7 + 2*z12^5 + 2*z12^4 + 3*z12^3 + z12^2 + 2*z12 over Finite Field in z12 of size 5^12 over its base
822+
Drinfeld module defined by T |--> z12^5*t^2 + z12^3*t + 2*z12^11 + 2*z12^10 + z12^9 + 3*z12^8 + z12^7 + 2*z12^5 + 2*z12^4 + 3*z12^3 + z12^2 + 2*z12
827823
"""
828824
return f'Drinfeld module defined by {self._function_ring.gen()} ' \
829-
f'|--> {self._gen} over {self._base}'
825+
f'|--> {self._gen}'
830826

831827
def action(self):
832828
r"""
@@ -846,7 +842,7 @@ def action(self):
846842
sage: phi = DrinfeldModule(A, [p_root, z12^3, z12^5])
847843
sage: action = phi.action()
848844
sage: action
849-
Action on Finite Field in z12 of size 5^12 over its base induced by Drinfeld module defined by T |--> z12^5*t^2 + z12^3*t + 2*z12^11 + 2*z12^10 + z12^9 + 3*z12^8 + z12^7 + 2*z12^5 + 2*z12^4 + 3*z12^3 + z12^2 + 2*z12 over Finite Field in z12 of size 5^12 over its base
845+
Action on Finite Field in z12 of size 5^12 over its base induced by Drinfeld module defined by T |--> z12^5*t^2 + z12^3*t + 2*z12^11 + 2*z12^10 + z12^9 + 3*z12^8 + z12^7 + 2*z12^5 + 2*z12^4 + 3*z12^3 + z12^2 + 2*z12
850846
851847
The action on elements is computed as follows::
852848
@@ -1206,7 +1202,7 @@ def velu(self, isog):
12061202
sage: isog = t + 2*z12^11 + 4*z12^9 + 2*z12^8 + 2*z12^6 + 3*z12^5 + z12^4 + 2*z12^3 + 4*z12^2 + 4*z12 + 4
12071203
sage: psi = phi.velu(isog)
12081204
sage: psi
1209-
Drinfeld module defined by T |--> (z12^11 + 3*z12^10 + z12^9 + z12^7 + z12^5 + 4*z12^4 + 4*z12^3 + z12^2 + 1)*t^2 + (2*z12^11 + 4*z12^10 + 2*z12^8 + z12^6 + 3*z12^5 + z12^4 + 2*z12^3 + z12^2 + z12 + 4)*t + 2*z12^11 + 2*z12^10 + z12^9 + 3*z12^8 + z12^7 + 2*z12^5 + 2*z12^4 + 3*z12^3 + z12^2 + 2*z12 over Finite Field in z12 of size 5^12 over its base
1205+
Drinfeld module defined by T |--> (z12^11 + 3*z12^10 + z12^9 + z12^7 + z12^5 + 4*z12^4 + 4*z12^3 + z12^2 + 1)*t^2 + (2*z12^11 + 4*z12^10 + 2*z12^8 + z12^6 + 3*z12^5 + z12^4 + 2*z12^3 + z12^2 + z12 + 4)*t + 2*z12^11 + 2*z12^10 + z12^9 + 3*z12^8 + z12^7 + 2*z12^5 + 2*z12^4 + 3*z12^3 + z12^2 + 2*z12
12101206
sage: isog in Hom(phi, psi)
12111207
True
12121208

src/sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class FiniteDrinfeldModule(DrinfeldModule):
5050
sage: K.<z6> = Fq.extension(2)
5151
sage: phi = DrinfeldModule(A, [z6, 0, 5])
5252
sage: phi
53-
Drinfeld module defined by T |--> 5*t^2 + z6 over Finite Field in z6 of size 7^6 over its base
53+
Drinfeld module defined by T |--> 5*t^2 + z6
5454
5555
::
5656

src/sage/rings/function_field/drinfeld_modules/morphism.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,14 @@ class DrinfeldModuleMorphism(Morphism, UniqueRepresentation,
6464
One can get basic data on the morphism::
6565
6666
sage: morphism.domain()
67-
Drinfeld module defined by T |--> z12^5*t^2 + z12^3*t + 2*z12^11 + 2*z12^10 + z12^9 + 3*z12^8 + z12^7 + 2*z12^5 + 2*z12^4 + 3*z12^3 + z12^2 + 2*z12 over Finite Field in z12 of size 5^12 over its base
67+
Drinfeld module defined by T |--> z12^5*t^2 + z12^3*t + 2*z12^11 + 2*z12^10 + z12^9 + 3*z12^8 + z12^7 + 2*z12^5 + 2*z12^4 + 3*z12^3 + z12^2 + 2*z12
6868
sage: morphism.domain() is phi
6969
True
7070
7171
::
7272
7373
sage: morphism.codomain()
74-
Drinfeld module defined by T |--> (z12^11 + 3*z12^10 + z12^9 + z12^7 + z12^5 + 4*z12^4 + 4*z12^3 + z12^2 + 1)*t^2 + (2*z12^11 + 4*z12^10 + 2*z12^8 + z12^6 + 3*z12^5 + z12^4 + 2*z12^3 + z12^2 + z12 + 4)*t + 2*z12^11 + 2*z12^10 + z12^9 + 3*z12^8 + z12^7 + 2*z12^5 + 2*z12^4 + 3*z12^3 + z12^2 + 2*z12 over Finite Field in z12 of size 5^12 over its base
74+
Drinfeld module defined by T |--> (z12^11 + 3*z12^10 + z12^9 + z12^7 + z12^5 + 4*z12^4 + 4*z12^3 + z12^2 + 1)*t^2 + (2*z12^11 + 4*z12^10 + 2*z12^8 + z12^6 + 3*z12^5 + z12^4 + 2*z12^3 + z12^2 + z12 + 4)*t + 2*z12^11 + 2*z12^10 + z12^9 + 3*z12^8 + z12^7 + 2*z12^5 + 2*z12^4 + 3*z12^3 + z12^2 + 2*z12
7575
sage: morphism.codomain() is psi
7676
True
7777

0 commit comments

Comments
 (0)