-
-
Notifications
You must be signed in to change notification settings - Fork 601
Gabidulin Codes #20970
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
Comments
Branch: u/arpitdm/gabidulin_codes |
comment:2
A few points:
New commits:
|
Commit: |
comment:3
Hello, To answer your question ( Some remarks:
as
Otherwise it seems good. Best, David |
comment:4
Noticed the following: In one place, you should be computing |
comment:5
Also, avoid "log" if you can:
|
Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
|
comment:7
Oh! I thought I only added the gabidulin.py file to my commit. Is there a way I can remove the skew polynomial files from this ticket? Also, @johanrosenkilde, you mention I computed gqt in the generator matrix of the code. According to Equation 2.27 of the PhD thesis, there is no sigma in the formation of the elements of the generator matrix. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:9
|
comment:10
Replying to @arpitdm:
I guess you merged in the current tip of #13215 and that's what is showing up as a long list of commits? That's perfectly ok (#13215 is a dependency of this ticket).
Well, due to sigma always being the Frobenius, then |
Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
|
comment:13
Hi Arpit, Just saw your Gao decoder, and I have a few initial comments:
Best, |
comment:14
Another comment: The Gabidulin constructor shouldn't take the skew polynomial ring (NOT linearized polynomial ring) as an argument, just like Reed-Solomon and Reed-Muller codes don't take it a polynomial ring as argument. Indeed: the code itself (being a sub-vector space of |
comment:15
Replying to @johanrosenkilde:
The reason I put it there is because although the code is a subspace, the skew polynomial ring takes an additional argument, the base ring automorphism. This is not required in a GRS code. It could be Frobenius or a power of the Frobenius, right? And so, a given polynomial could belong to different rings. |
comment:16
True. The Gabidulin code constructor could therefore take as argument /which/ power of the Frobenius (integer between 1 and m-1, both inclusive). That feels more natural for the user, and is much less work to specify. Best, |
comment:17
Actually, thanks to the recent PhD thesis of Robert, Gabidulin codes make sense (and seem to have applications) for extensions of infinite fields (e.g. number fields) as well. Moreover I strongly believe (although I have not checked it carefully) and Wechter-Zeh's algorithms extend readily to the general case. For this reason, I would say that it makes sense to allow more general morphisms that powers of Frobenius. Concretely I propose to replace the current |
comment:18
Replying to @xcaruso:
That's true and a good point. However, codes over infinite fields needs to be handled specially in many ways, and it would require special casing and some additional testing to do make sure things work. Also, our current plan is to let
I'm also pretty sure it "just works". But it will have terrible performance in the Euclidean algorithm because of unmitigated coefficient growth.
For the sake of getting this GSoC finished in time, I would down-vote officially supporting infinite fields. But of course, we can still think about the best interface that will scale well in the future. I think your suggestion wrt. these arguments is good if it is practical in the current Sage. For instance, how would I create a Frobenius automorphism from a relative field to an extension field, and such that the Gabidulin code constructor can query the fixed field? The following works poorly:
Best, |
comment:19
OK for not supporting infinite fields for now. (And I agree that there are issues with growing of coefficients. By the way, do you know if there exists an analogue of subresultants for skew polynomials?) To answer your last question:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:21
@arpitdm: Remember to add a message after you push. Your changes to the decoder looks good. I'm somewhat baffled why you changed @xcaruso: Thanks for the snippet, I hadn't noticed that but of course it's pretty obvious. I'm not sure, though, that I would find this behaviour the most intuitive for Gabidulin codes, especially if
A carefully phrased exception at the end would help the user find the bug in an interactive session, but I think this is the kind of surprising behaviour that one keeps on running into every time one uses the functionality. I would prefer a session looking something like this:
For your other question: I'm not aware of subresultants for skew polynomials, no. I've recently started looking at computations in skew polynomials in the more general setting of derivations, and over infinite fields. All algorithms I know of perform pretty terribly compared to the case without coefficient growth: the usual approaches of homomorphic imaging doesn't seem to work. Such rings seem more widely known as Ore polynomials. We should add a note about this in the doc of #13215. |
comment:22
Replying to @johanrosenkilde:
I was about to when discussion started on #13215. Anyway, in the |
comment:27
Replying to @arpitdm:
I've looked through the code in overview, and it looks good! Some comments on the structure:
Just proceed exactly as you have done, until you get
That should be a method on Best, |
comment:28
Replying to @johanrosenkilde:
What do I do if both Also, should I remove the dependency on #21088? |
comment:29
Replying to @arpitdm:
Then take
Oh, yeah I guess you can, since finite fields are already formally supported without #21088. |
Changed branch from u/arpitdm/gabidulin_codes to u/gh-emes4/coding/gabidulin |
Changed commit from |
Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
|
Commit: |
comment:34
I implemented all of the changes from Johan's last comment. I fixed all the bugs, added documentation and doctests. Changed the code to reflect all the structural changes in the coding module. I tested the |
Changed author from Arpit Merchant to Arpit Merchant, Marketa Slukova |
Changed branch from u/gh-emes4/coding/gabidulin to u/dimpase/coding/gabidulin |
Reviewer: Dima Pasechnik, Johan Rosenkilde |
comment:37
a straightforward bump to fix python-3 related stuff. LGTM now. |
Changed branch from u/dimpase/coding/gabidulin to |
Changed commit from |
comment:39
Nobody cared about the patchbot plugins. Please do in your next tickets. |
comment:40
Patchbots are often not kicking in quickly enough to notice anything interesting. |
A Linear Gabidulin Code Gab[n,k] over F_{qm} of length n <= m and dimension k <= n is the set of all words, formed by the operator evaluation of a q-degree restricted skew polynomial (with frobenius endomorphism and a finite field) f(x) \in S_{F_{qm}}[x].
i.e. Gab[n,k] = {(f(g_0), f(g_1),..., f(g_{n-1})) = f(g): deg(f) < k}
where g_0,...,g_{n-1} are fixed elements belonging to F_{qm} and are linearly independent over F_{q}
This ticket proposes a new class for Gabidulin Codes along with encoders and decoders for it.
CC: @sagetrac-dlucas @johanrosenkilde @xcaruso @emes4 @Adurand8
Component: coding theory
Author: Arpit Merchant, Marketa Slukova
Branch:
64af632
Reviewer: Dima Pasechnik, Johan Rosenkilde
Issue created by migration from https://trac.sagemath.org/ticket/20970
The text was updated successfully, but these errors were encountered: