Skip to content

Commit 8422c2f

Browse files
author
Release Manager
committed
sagemathgh-40430: Use the variable name τ instead of t for Drinfeld modules In the theory of Drinfeld module, the classical name of the noncommutative variable is `τ`. However, in Sage, we currently use `t`, which might conflict with other standard notations (often the variable name of the underlying function ring is denoted by `t`). In this PR, we propose to shift to the notation `τ`. It just changes how the outputs are printed (by default), not the interface. ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> - [x] The title is concise and informative. - [x] The description explains in detail what this PR is about. - [ ] I have linked a relevant issue or discussion. - [x] I have created tests covering the changes. - [x] I have updated the documentation and checked the documentation preview. ### ⌛ Dependencies sagemath#40420, sagemath#40421 URL: sagemath#40430 Reported by: Xavier Caruso Reviewer(s): Antoine Leudière
2 parents bd27693 + 27e890b commit 8422c2f

File tree

7 files changed

+221
-214
lines changed

7 files changed

+221
-214
lines changed

src/sage/categories/drinfeld_modules.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- coding: utf-8 -*-
12
# sage_setup: distribution = sagemath-categories
23
# sage.doctest: needs sage.rings.finite_rings
34
r"""
@@ -123,7 +124,7 @@ class DrinfeldModules(Category_over_base_ring):
123124
True
124125
125126
sage: C.ore_polring()
126-
Ore Polynomial Ring in t over Finite Field in z of size 11^4 twisted by z |--> z^11
127+
Ore Polynomial Ring in τ over Finite Field in z of size 11^4 twisted by z |--> z^11
127128
sage: C.ore_polring() is phi.ore_polring()
128129
True
129130
@@ -135,7 +136,7 @@ class DrinfeldModules(Category_over_base_ring):
135136
136137
sage: psi = C.object([p_root, 1])
137138
sage: psi
138-
Drinfeld module defined by T |--> t + z^3 + 7*z^2 + 6*z + 10
139+
Drinfeld module defined by T |--> τ + z^3 + 7*z^2 + 6*z + 10
139140
sage: psi.category() is C
140141
True
141142
@@ -207,7 +208,7 @@ class DrinfeldModules(Category_over_base_ring):
207208
TypeError: function ring base must be a finite field
208209
"""
209210

210-
def __init__(self, base_morphism, name='t'):
211+
def __init__(self, base_morphism, name='τ'):
211212
r"""
212213
Initialize ``self``.
213214
@@ -216,7 +217,7 @@ def __init__(self, base_morphism, name='t'):
216217
- ``base_field`` -- the base field, which is a ring extension
217218
over a base
218219
219-
- ``name`` -- (default: ``'t'``) the name of the Ore polynomial
220+
- ``name`` -- (default: ``'τ'``) the name of the Ore polynomial
220221
variable
221222
222223
TESTS::
@@ -227,7 +228,7 @@ def __init__(self, base_morphism, name='t'):
227228
sage: p_root = z^3 + 7*z^2 + 6*z + 10
228229
sage: phi = DrinfeldModule(A, [p_root, 0, 0, 1])
229230
sage: C = phi.category()
230-
sage: ore_polring.<t> = OrePolynomialRing(K, K.frobenius_endomorphism())
231+
sage: ore_polring.<τ> = OrePolynomialRing(K, K.frobenius_endomorphism())
231232
sage: C._ore_polring is ore_polring
232233
True
233234
sage: C._function_ring is A
@@ -507,7 +508,7 @@ def object(self, gen):
507508
508509
sage: phi = C.object([p_root, 0, 1])
509510
sage: phi
510-
Drinfeld module defined by T |--> t^2 + z^3 + 7*z^2 + 6*z + 10
511+
Drinfeld module defined by T |--> τ^2 + z^3 + 7*z^2 + 6*z + 10
511512
sage: t = phi.ore_polring().gen()
512513
sage: C.object(t^2 + z^3 + 7*z^2 + 6*z + 10) is phi
513514
True
@@ -534,7 +535,7 @@ def ore_polring(self):
534535
sage: phi = DrinfeldModule(A, [p_root, 0, 0, 1])
535536
sage: C = phi.category()
536537
sage: C.ore_polring()
537-
Ore Polynomial Ring in t over Finite Field in z of size 11^4 twisted by z |--> z^11
538+
Ore Polynomial Ring in τ over Finite Field in z of size 11^4 twisted by z |--> z^11
538539
"""
539540
return self._ore_polring
540541

@@ -770,7 +771,7 @@ def constant_coefficient(self):
770771
sage: t = phi.ore_polring().gen()
771772
sage: psi = C.object(phi.constant_coefficient() + t^3)
772773
sage: psi
773-
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
774+
Drinfeld module defined by 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
774775
775776
Reciprocally, it is impossible to create two Drinfeld modules in
776777
this category if they do not share the same constant
@@ -796,7 +797,7 @@ def ore_polring(self):
796797
sage: phi = DrinfeldModule(A, [p_root, z12^3, z12^5])
797798
sage: S = phi.ore_polring()
798799
sage: S
799-
Ore Polynomial Ring in t over Finite Field in z12 of size 5^12 twisted by z12 |--> z12^(5^2)
800+
Ore Polynomial Ring in τ over Finite Field in z12 of size 5^12 twisted by z12 |--> z12^(5^2)
800801
801802
The Ore polynomial ring can also be retrieved from the category
802803
of the Drinfeld module::
@@ -825,8 +826,8 @@ def ore_variable(self):
825826
sage: phi = DrinfeldModule(A, [p_root, z12^3, z12^5])
826827
827828
sage: phi.ore_polring()
828-
Ore Polynomial Ring in t over Finite Field in z12 of size 5^12 twisted by z12 |--> z12^(5^2)
829+
Ore Polynomial Ring in τ over Finite Field in z12 of size 5^12 twisted by z12 |--> z12^(5^2)
829830
sage: phi.ore_variable()
830-
t
831+
τ
831832
"""
832833
return self.category().ore_polring().gen()

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- coding: utf-8 -*-
12
# sage.doctest: needs sage.rings.finite_rings
23
r"""
34
The module action induced by a Drinfeld module
@@ -60,7 +61,7 @@ class DrinfeldModuleAction(Action):
6061
sage: action = phi.action()
6162
sage: action
6263
Action on Finite Field in z of size 11^2 over its base
63-
induced by Drinfeld module defined by T |--> t^3 + z
64+
induced by Drinfeld module defined by T |--> τ^3 + z
6465
6566
The action on elements is computed as follows::
6667
@@ -154,7 +155,7 @@ def _latex_(self):
154155
sage: phi = DrinfeldModule(A, [z, 0, 0, 1])
155156
sage: action = phi.action()
156157
sage: latex(action)
157-
\text{Action{ }on{ }}\Bold{F}_{11^{2}}\text{{ }induced{ }by{ }}\phi: T \mapsto t^{3} + z
158+
\text{Action{ }on{ }}\Bold{F}_{11^{2}}\text{{ }induced{ }by{ }}\phi: T \mapsto τ^{3} + z
158159
"""
159160
return f'\\text{{Action{{ }}on{{ }}}}' \
160161
f'{latex(self._base)}\\text{{{{ }}' \
@@ -174,7 +175,7 @@ def _repr_(self):
174175
sage: phi = DrinfeldModule(A, [z, 0, 0, 1])
175176
sage: action = phi.action()
176177
sage: action
177-
Action on Finite Field in z of size 11^2 over its base induced by Drinfeld module defined by T |--> t^3 + z
178+
Action on Finite Field in z of size 11^2 over its base induced by Drinfeld module defined by T |--> τ^3 + z
178179
"""
179180
return f'Action on {self._base} induced by ' \
180181
f'{self._drinfeld_module}'

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- coding: utf-8 -*-
12
# sage.doctest: optional - sage.rings.finite_rings
23
r"""
34
Drinfeld modules over rings of characteristic zero
@@ -60,7 +61,7 @@ class DrinfeldModule_charzero(DrinfeldModule):
6061
sage: K.<T> = Frac(A)
6162
sage: phi = DrinfeldModule(A, [T, 1])
6263
sage: phi
63-
Drinfeld module defined by T |--> t + T
64+
Drinfeld module defined by T |--> τ + T
6465
6566
::
6667
@@ -110,7 +111,7 @@ class DrinfeldModule_charzero(DrinfeldModule):
110111
sage: L.<s> = LaurentSeriesRing(GF(2)) # s = 1/T
111112
sage: phi = DrinfeldModule(A, [1/s, s + s^2 + s^5 + O(s^6), 1+1/s])
112113
sage: phi(T)
113-
(s^-1 + 1)*t^2 + (s + s^2 + s^5 + O(s^6))*t + s^-1
114+
(s^-1 + 1)*τ^2 + (s + s^2 + s^5 + O(s^6))*τ + s^-1
114115
115116
One can also construct Drinfeld modules over SageMath's global
116117
function fields::
@@ -119,7 +120,7 @@ class DrinfeldModule_charzero(DrinfeldModule):
119120
sage: K.<z> = FunctionField(GF(5)) # z = T
120121
sage: phi = DrinfeldModule(A, [z, 1, z^2])
121122
sage: phi(T)
122-
z^2*t^2 + t + z
123+
z^2*τ^2 + τ + z
123124
"""
124125
@cached_method
125126
def _compute_coefficient_exp(self, k):
@@ -462,7 +463,7 @@ class DrinfeldModule_rational(DrinfeldModule_charzero):
462463
sage: A = Fq['T']
463464
sage: K.<T> = Frac(A)
464465
sage: C = DrinfeldModule(A, [T, 1]); C
465-
Drinfeld module defined by T |--> t + T
466+
Drinfeld module defined by T |--> τ + T
466467
sage: type(C)
467468
<class 'sage.rings.function_field.drinfeld_modules.charzero_drinfeld_module.DrinfeldModule_rational_with_category'>
468469
"""
@@ -573,7 +574,7 @@ def class_polynomial(self):
573574
sage: A = Fq['T']
574575
sage: K.<T> = Frac(A)
575576
sage: C = DrinfeldModule(A, [T, 1]); C
576-
Drinfeld module defined by T |--> t + T
577+
Drinfeld module defined by T |--> τ + T
577578
sage: C.class_polynomial()
578579
1
579580

0 commit comments

Comments
 (0)