Skip to content
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

absolute_field() for towers of finite fields #26103

Closed
saraedum opened this issue Aug 20, 2018 · 22 comments
Closed

absolute_field() for towers of finite fields #26103

saraedum opened this issue Aug 20, 2018 · 22 comments

Comments

@saraedum
Copy link
Member

Towers of finite fields are hard to work with because they lose most of the nice functionality of simple extensions of prime finite fields and are also much slower.

Therefore it would be useful to have a method that turns a tower into a simple extension.

Note that there have been attempts to support relative extensions of finite fields in #21413 and that there is also sage.coding.relative_finite_field_extension, the state of which is unclear to me. There is also _isomorphic_ring on polynomial quotient rings which does something similar so this should probably be unified for finite fields.

Depends on #26105
Depends on #26161

CC: @sagetrac-swewers @roed314

Component: finite rings

Keywords: finite fields, polynomial quotient ring, padicBordeaux

Branch/Commit: u/saraedum/26103 @ 0f7c2c9

Issue created by migration from https://trac.sagemath.org/ticket/26103

@saraedum saraedum added this to the sage-8.4 milestone Aug 20, 2018
@saraedum
Copy link
Member Author

comment:1

See #25976 for a followup and MCLF/mclf#103 for some context.

@saraedum

This comment has been minimized.

@saraedum
Copy link
Member Author

Branch: u/saraedum/26103

@saraedum
Copy link
Member Author

New commits:

2fc28c2Add absolute_field() for finite fields

@saraedum
Copy link
Member Author

Commit: 2fc28c2

@saraedum
Copy link
Member Author

Dependencies: #26105

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Aug 21, 2018

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

14e6fdcComment on why this method should live in FiniteFields()

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Aug 21, 2018

Changed commit from 2fc28c2 to 14e6fdc

@saraedum

This comment has been minimized.

@saraedum saraedum changed the title simple_model() on quotients of polynomial rings absolute_field() for towers of finite fields Aug 21, 2018
@saraedum
Copy link
Member Author

comment:7

Without proper support for morphisms with base_morphisms, the output is slightly ugly:

sage: k = GF(2)
sage: R.<a> = k[]
sage: l.<a> = k.extension(a^3 + a^2 + 1)
sage: l.absolute_field()
(Finite Field in z3 of size 2^3, Composite map:
   From: Finite Field in a of size 2^3
   To:   Finite Field in z3 of size 2^3
   Defn:   Ring morphism:
           From: Finite Field in a of size 2^3
           To:   Univariate Polynomial Ring in a over Finite Field of size 2 (using GF2X)
           Defn: a |--> a
         then
           Ring morphism:
           From: Univariate Polynomial Ring in a over Finite Field of size 2 (using GF2X)
           To:   Univariate Polynomial Ring in a over Finite Field in z3 of size 2^3
           Defn: Induced from base ring by
                 Composite map:
                   From: Finite Field of size 2
                   To:   Finite Field in z3 of size 2^3
                   Defn:   Identity endomorphism of Finite Field of size 2
                         then
                           Ring morphism:
                           From: Finite Field of size 2
                           To:   Finite Field in z3 of size 2^3
                           Defn: 1 |--> 1
         then
           Ring morphism:
           From: Univariate Polynomial Ring in a over Finite Field in z3 of size 2^3
           To:   Finite Field in z3 of size 2^3
           Defn: a |--> z3^2 + 1, Ring morphism:
   From: Finite Field in z3 of size 2^3
   To:   Finite Field in a of size 2^3
   Defn: z3 |--> a^2 + a)

Unfortunately, this does not work yet if we add another extension on top:

sage: R.<b> = l[]
sage: m.<b> = l.extension(b^2 + b + a)
sage: m.absolute_field()
AttributeError: no attribute absolute_field

The problem is that even though m is in the category of finite fields, it does not inherit the parent methods for some reason.


New commits:

cb8418aFix absolute_field() implementation
8685729Some temporary hacks to make absolute_field() work

@saraedum
Copy link
Member Author

Changed commit from 14e6fdc to 8685729

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Aug 29, 2018

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

8db7302Merge remote-tracking branch 'trac/develop' into 26103

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Aug 29, 2018

Changed commit from 8685729 to 8db7302

@saraedum
Copy link
Member Author

comment:9

It only gets worse for larger towers:

sage: R.<b> = l[]
sage: m.<b> = l.extension(b^2 + b + a)
sage: m.is_field() # refines category
sage: m.absolute_field()
(Finite Field in z6 of size 2^6, Composite map:
   From: Univariate Quotient Polynomial Ring in b over Finite Field in a of size 2^3 with modulus b^2 + b + a
   To:   Finite Field in z6 of size 2^6
   Defn:   Ring morphism:
           From: Univariate Quotient Polynomial Ring in b over Finite Field in a of size 2^3 with modulus b^2 + b + a
           To:   Univariate Polynomial Ring in b over Finite Field in a of size 2^3
           Defn: b |--> b
         then
           Ring morphism:
           From: Univariate Polynomial Ring in b over Finite Field in a of size 2^3
           To:   Univariate Polynomial Ring in b over Finite Field in z6 of size 2^6
           Defn: Induced from base ring by
                 Composite map:
                   From: Finite Field in a of size 2^3
                   To:   Finite Field in z6 of size 2^6
                   Defn:   Ring morphism:
                           From: Finite Field in a of size 2^3
                           To:   Univariate Polynomial Ring in a over Finite Field of size 2 (using GF2X)
                           Defn: a |--> a
                         then
                           Ring morphism:
                           From: Univariate Polynomial Ring in a over Finite Field of size 2 (using GF2X)
                           To:   Univariate Polynomial Ring in a over Finite Field in z3 of size 2^3
                           Defn: Induced from base ring by
                                 Composite map:
                                   From: Finite Field of size 2
                                   To:   Finite Field in z3 of size 2^3
                                   Defn:   Identity endomorphism of Finite Field of size 2
                                         then
                                           Ring morphism:
                                           From: Finite Field of size 2
                                           To:   Finite Field in z3 of size 2^3
                                           Defn: 1 |--> 1
                         then
                           Ring morphism:
                           From: Univariate Polynomial Ring in a over Finite Field in z3 of size 2^3
                           To:   Finite Field in z3 of size 2^3
                           Defn: a |--> z3 + 1
                         then
                           Ring morphism:
                           From: Finite Field in z3 of size 2^3
                           To:   Finite Field in z6 of size 2^6
                           Defn: z3 |--> z6^5 + z6^4 + z6^2 + 1
         then
           Ring morphism:
           From: Univariate Polynomial Ring in b over Finite Field in z6 of size 2^6
           To:   Finite Field in z6 of size 2^6
           Defn: b |--> z6^4 + z6^3, Ring morphism:
   From: Finite Field in z6 of size 2^6
   To:   Univariate Quotient Polynomial Ring in b over Finite Field in a of size 2^3 with modulus b^2 + b + a
   Defn: z6 |--> (a + 1)*b + a^2 + a)

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Aug 29, 2018

Changed commit from 8db7302 to c68e16d

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Aug 29, 2018

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

c68e16dHack around problems in morphisms of quotients and finite fields

@saraedum
Copy link
Member Author

Changed dependencies from #26105 to #26105, #26161

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Aug 30, 2018

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

12fd855Refine polynomial quotient ring to the finite subcategory on initialization
0f7c2c9Merge branch '26161' into 26103

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Aug 30, 2018

Changed commit from c68e16d to 0f7c2c9

@saraedum

This comment has been minimized.

@roed314
Copy link
Contributor

roed314 commented Sep 7, 2019

Changed keywords from finite fields, polynomial quotient ring to finite fields, polynomial quotient ring, padicBordeaux

@saraedum
Copy link
Member Author

saraedum commented Sep 2, 2020

comment:15

https://gitlab.com/sagemath/sage/-/merge_requests/33 implements this in a more general way it seems.

So what's been done here is probably irrelevant.

@saraedum saraedum removed this from the sage-8.4 milestone Feb 12, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants