#20284 closed enhancement (fixed)

A class to manage embedding between non-prime fields

Reported by: dlucas Owned by:
Priority: major Milestone: sage-7.3
Component: finite rings Keywords:
Cc: jsrn, jpflori, defeo Merged in:
Authors: David Lucas Reviewers: Arpit Merchant
Report Upstream: N/A Work issues:
Branch: 2492c31 (Commits) Commit: 2492c313523014a07d88bc9af3809b96bf595700
Dependencies: Stopgaps:

Description

In Sage, there is no general mechanism to manage the embedding of elements of a finite extension field in one of its subfields.

We propose here a class which takes care of that.

Considering a big, non-prime field Fqm and one of its subfields Fq, this class is able to give either a polynomial or a vectorial representation of an element of Fqm in Fq.

Change History (16)

comment:1 Changed 14 months ago by dlucas

  • Branch set to u/dlucas/field_embedding

comment:2 Changed 14 months ago by dlucas

  • Authors set to David Lucas
  • Cc jsrn jpflori defeo added
  • Commit set to 49cebeef342bec6763892c3d9d1029b94f852867
  • Status changed from new to needs_review

I pushed my code, and I open this ticket for review.


New commits:

49cebeeNew class to manage embeddings between non-prime fields

comment:3 Changed 14 months ago by dlucas

By the way, as I'm not sure where to put my code, I left it (for now) in sage/coding...

comment:4 Changed 14 months ago by jsrn

Just to be precise: Sage already supports embedding a small field GF(p^s) into a larger one GF(p^(sm)) (by using Fsmall.extension(m, map=True)). It also supports the inverse map (returned by the section() method on the embedding map).

The new functionality of this ticket is to support representing any GF(p^(sm)) element in a basis over GF(p^s). AFAIK, the current implementation supports this with only one particular choice of bases: if 1, beta, ..., beta^(sm-1) is the basis of GF(p^(sm)) that Sage currently uses natively, then it is always the case that 1, beta, ..., beta^(m-1) is a basis of GF(p^(sm)) over GF(p^s). This is the basis employed by the current ticket.

More precisely, it gives a function that takes an element e in GF(p^(sm)) and returns a vector (v[0],...,v[m-1]) in GF(p^s)^m, such that

    e = sum_{i=0}^{m-1} phi(v[i]) * beta^i

where phi is a given embedding from GF(p^s) into GF(p^(sm)).

Best, Johan

comment:5 Changed 12 months ago by git

  • Commit changed from 49cebeef342bec6763892c3d9d1029b94f852867 to 38b77f9f34a7e3480b5656e557fcf9c0c2a6e732

Branch pushed to git repo; I updated commit sha1. New commits:

7ffd2c0Update to 7.3beta2
74a8c23representation_matrix is now a private method
4f4c0a6Changed names: Fqm over Fq is now designated as a relative finite field extension
87deebaChanged return value of big_field_representation
0eb1d5aChanged naming: small field -> relative field, big field -> absolute field
38b77f9Added method to check if an element of the absolute field is in the relative field under the embedding

comment:6 Changed 12 months ago by dlucas

  • Milestone changed from sage-7.2 to sage-7.3

Hello,

I made some changes to the class:

  • I completely changed its nomenclature, which is now based on the one defined for relative extensions.
  • I changed the behaviour of some methods.
  • I added a method to check if an element of the "big field" is in the relative field under the embedding.

This is still open for review.

Best,

David

comment:7 follow-up: Changed 12 months ago by vdelecroix

Two naive questions:

  • Why is this in sage/coding?
  • Why not extending the preceding existing embedding class?

Vincent

comment:8 in reply to: ↑ 7 ; follow-up: Changed 12 months ago by jsrn

Replying to vdelecroix:

Two naive questions:

  • Why is this in sage/coding?
  • Why not extending the preceding existing embedding class?

Because we did not know where to put it, and we didn't get input from anyone. We need the functionality for several things in sage/coding, so we just wanted to add it. And it's on the agenda for Sage Days 75 to merge it much more sensibly with the rest of Sage.

Incidentally, will you be coming for SD75?

comment:9 in reply to: ↑ 8 Changed 12 months ago by vdelecroix

Replying to jsrn:

Replying to vdelecroix:

Two naive questions:

  • Why is this in sage/coding?
  • Why not extending the preceding existing embedding class?

Because we did not know where to put it, and we didn't get input from anyone. We need the functionality for several things in sage/coding, so we just wanted to add it. And it's on the agenda for Sage Days 75 to merge it much more sensibly with the rest of Sage.

Would make more sense with everything about finite field, no? That is to say sage/rings/finite_rings/.

Incidentally, will you be coming for SD75?

Sadly not. I will be in Chile at that time.

comment:10 Changed 12 months ago by jpflori

I'll be there at sd75. And I do agree it would nice to use such functionalities in a more general setting. We could still put it in coding first and move it later.

comment:11 follow-up: Changed 12 months ago by dlucas

Hello,

And I do agree it would nice to use such functionalities in a more general setting. We could still put it in coding first and move it later.

I would indeed prefer to put it in coding first, as it locks several very useful tickets for us (#20039, #20100, #20335) while it's not reviewed. Furthermore, we need it for our GSoC project on rank-metric codes.

I can put an experimental warning in it: this way, we will be able to move it later on without being worried by deprecation warnings.

Best,

David

comment:12 in reply to: ↑ 11 Changed 12 months ago by jsrn

I can put an experimental warning in it: this way, we will be able to move it later on without being worried by deprecation warnings.

+1

comment:13 Changed 12 months ago by git

  • Commit changed from 38b77f9f34a7e3480b5656e557fcf9c0c2a6e732 to 2492c313523014a07d88bc9af3809b96bf595700

Branch pushed to git repo; I updated commit sha1. New commits:

311b960Added experimental warning for RelativeFiniteFieldExtension
2492c31Added relative_finite_field_extension to sage.coding's index.rst

comment:14 Changed 12 months ago by dlucas

I added this experimental warning to the class.

I also added this module in sage.coding's index.

comment:15 Changed 12 months ago by arpitdm

  • Reviewers set to Arpit Merchant
  • Status changed from needs_review to positive_review

I went through the reviewer's checklist and all the tests pass. The naming conventions are quite suitable and make it easier to interpret the functions. Giving it a positive review.

comment:16 Changed 12 months ago by vbraun

  • Branch changed from u/dlucas/field_embedding to 2492c313523014a07d88bc9af3809b96bf595700
  • Resolution set to fixed
  • Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.