-
-
Notifications
You must be signed in to change notification settings - Fork 510
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Drinfeld modules #35026
Drinfeld modules #35026
Conversation
This commit is a bit dirty, apologies. There are new getters (see below), and the commit includes some refactoring of the doctests. The added getters are: - characteristic, - constant_term, - delta (rank two specific), - g (rank two specific), - height, - j (rank two specific).
The added methods are: - frobenius_trace, - frobenius_norm, - invert (required by frobenius_norm), - is_ordinary, - is_supersingular, - characteristic_polynomial.
The added methods are: - is_morphism, - is_endomorphism, - is_automorphism, - is_isogeny, - velu.
Rank two finite Drinfeld modules have specific enough properties to have their own class. Therefore, we created the class `FiniteDrinfeldModule_rank_two`. The following methods were moved from `FiniteDrinfeldModule` to `FiniteDrinfeldModule_rank_two`: - characteristic_polynomial, - delta, - frobenius_norm, - frobenius_trace, - g, - is_ordinary, - is_supersingular. Before this change, those methods were regular methods of just `FiniteDrinfeldModule`; an exception was raised when the rank of the Drinfeld module was not two. Furthermore, the methods `_latex_` and `_repr_` were slightly changed.
…s-category_object
- Comment constructor - Check that codomain of input morphism is a field - Delete various useless docstrings (they will be written later, at a more final stage of development) - Change gamma to morphism - Various small enhancements
Codecov ReportBase: 88.59% // Head: 88.60% // Increases project coverage by
Additional details and impacted files@@ Coverage Diff @@
## develop #35026 +/- ##
===========================================
+ Coverage 88.59% 88.60% +0.01%
===========================================
Files 2140 2146 +6
Lines 396961 397362 +401
===========================================
+ Hits 351677 352074 +397
- Misses 45284 45288 +4
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. ☔ View full report at Codecov. |
pdf docs do not build |
This would lead the pdf build to crash.
Thanks for the comment. I think the issue is fixed. Here is the end of the output of
I also fixed a few typos. |
Documentation preview for this PR is ready! 🎉 |
🍾 🍾 🍾 Many thanks to all coders and reviewers who made this contribution merged! |
…odule <!-- ^^^^^ Please provide a concise, informative and self-explanatory title. Don't put issue numbers in there, do this in the PR body below. For example, instead of "Fixes #1234" use "Introduce new method to calculate 1+1" --> ### 📚 Description The goal of this PR is to implement the logarithm and the exponential of a Drinfeld module. ### Background material Let $\phi:T \mapsto \gamma(T) + g_1 \tau + \cdots + g_r \tau^r$ with $g_r\neq 0$ be a rank $r$ Drinfeld module and let $\Lambda\subset \mathbb{C}\_{\infty}$ be the associated rank $r$ lattice. Then recall that the exponential $e\_{\phi}:\mathbb{C}\_{\infty} \rightarrow \mathbb{C}\_{\infty}$ of the Drinfeld module $\phi$ is defined by: $$ e_{\phi}(z) := z\prod_{\lambda\in \Lambda\setminus \{0\}} \left( 1 - z/\lambda \right). $$ It can be viewed as a power series in $z$: $$ e_{\phi}(z) = z + \alpha_1 z^{q} + \alpha_2 z^{q^2} + \alpha_3 z^{q^3} + \cdots $$ Moreover, it satisfies the following functional equation: $$ e_{\phi}(az) = \phi_a(e_{\phi}(z)). $$ The logarithm of $\phi$ is defined to be the compositional inverse of $e_{\phi}$, denoted $\mathrm{log}\_{\phi}$. By applying $\mathrm{log}\_{\phi}$ on both side of the functional equation, we obtain the following recurrence relation: $$ \beta_k = \frac{1}{\gamma(T) - \gamma(T)^{q^i - 1}} \sum_{i = 0}^{k-1} \beta_i g_{k-i}^{q^i} $$ where $\beta_k$ is the $q^k$-th coefficient of $\mathrm{log}_{\phi}$ and $\beta_0 = 1$. ### Examples ``` sage: A = GF(2)['T'] sage: K.<T> = Frac(A) sage: phi = DrinfeldModule(A, [T, 1]) sage: q = A.base_ring().cardinality() sage: log = phi.logarithm(); log z + ((1/(T^2+T))*z^2) + ((1/(T^6+T^5+T^3+T^2))*z^4) + O(z^7) sage: log[q] == -1/((T**q - T)) True sage: log[q**2] == 1/((T**q - T)*(T**(q**2) - T)) True sage: log[q**3] == -1/((T**q - T)*(T**(q**2) - T)*(T**(q**3) - T)) True ``` ### Ideas The idea here is to first compute the logarithm of a Drinfeld module using lazy power series and then compute its compositional inverse to find its exponential. <!-- Describe your changes here in detail --> <!-- Why is this change required? What problem does it solve? --> <!-- If it resolves an open issue, please link to the issue here. For example "Closes #1337" --> ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> - [x] I have made sure that the title is self-explanatory and the description concisely explains the PR. - [ ] I have linked an issue or discussion. - [x] I have created tests covering the changes. - [x] I have updated the documentation accordingly. ### ⌛ Dependencies <!-- List all open pull requests that this PR logically depends on --> <!-- - #xyz: short description why this is a dependency - #abc: ... --> Depends on #35026 because this PR implements Drinfeld modules. CC: @xcaruso @ymusleh @kryzar URL: #35260 Reported by: David Ayotte Reviewer(s): Antoine Leudière, David Ayotte, Xavier Caruso
<!-- ^^^^^ Please provide a concise, informative and self-explanatory title. Don't put issue numbers in there, do this in the PR body below. For example, instead of "Fixes #1234" use "Introduce new method to calculate 1+1" --> ### 📚 Description The goal of this PR is to implement basic j-invariants of Drinfeld module as defined by Potemine in Potemine, I.Y. Minimal Terminal ℚ-Factorial Models of Drinfeld Coarse Moduli Schemes. Mathematical Physics, Analysis and Geometry 1, 171–191 (1998). https://doi.org/10.1023/A:1009724323513 These j-invariants allows to determine whether two Drinfeld `Fq[T]`-modules of arbitrary ranks are isomorphic or not. @kryzar @ymusleh @xcaruso <!-- Describe your changes here in detail --> <!-- Why is this change required? What problem does it solve? --> <!-- If it resolves an open issue, please link to the issue here. For example "Closes #1337" --> ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> - [x] I have made sure that the title is self-explanatory and the description concisely explains the PR. - [] I have linked an issue or discussion. - [x] I have created tests covering the changes. - [x] I have updated the documentation accordingly. ### ⌛ Dependencies <!-- List all open pull requests that this PR logically depends on --> <!-- - #xyz: short description why this is a dependency - #abc: ... --> Depends on #35026 because this PR implements Drinfeld modules. URL: #35057 Reported by: David Ayotte Reviewer(s): Antoine Leudière, David Ayotte, Xavier Caruso
📚 Description
Fixes #33713.
We implement Drinfeld$\mathbb{F}_q[T]$ -modules with a focus towards finite Drinfeld modules. We also implement isogenies of Drinfeld modules. More details in the issue.
📝 Checklist
⌛ Dependencies
None.