Make morphism from GF(p^2)'s multiplicative group to GF(p)'s multiplicative group

asked 2022-06-14 10:25:40 +0100

agregatif2022 gravatar image

Hello, I am again blocked in how to access finite fields' multiplicative group. I want to create a group morphism $\phi$ from $GF(p^2) - \lbrace 0 \rbrace$ (which is a group for multiplication) to $GF(p) - \lbrace 0 \rbrace$ defined by $\phi(x) = x^{p+1}$.

If I type: GF(p^2).hom([GF(p)(z^(p+1))]) where z is GF(p^2).multiplicative_generator(), it throws an error, because of course, this is not a field morphism, but only a multiplicative group morphism...

I searched the documentation for a method like FiniteFiled.multiplicative_group() but I could not find anything.

edit retag flag offensive close merge delete

Comments

Using

sage: F=GF(11)
sage: F.unit_group()
Multiplicative Abelian group isomorphic to C10
FrédéricC gravatar imageFrédéricC ( 2022-06-14 10:44:59 +0100 )edit
1

@FrédéricC: This works only for prime fields. E.g., GF(11^2).unit_group()errors out. Relevant bugreport: https://trac.sagemath.org/ticket/7234

Max Alekseyev gravatar imageMax Alekseyev ( 2022-06-14 17:19:19 +0100 )edit

This may be a replacement for .unit_group():

K = GF(11^2)
from sage.monoids.automatic_semigroup import AutomaticSemigroup
M = AutomaticSemigroup( [K.multiplicative_generator()], one=K.one(), category=Monoids().Finite().Subobjects() & Groups() )
Max Alekseyev gravatar imageMax Alekseyev ( 2022-06-14 19:55:56 +0100 )edit

Thank you very much for your answer. I managed to build K, but unfortunately, I was not able to build a morphism from it. The hom method seems to work differently from what I know for this class and throws errors I could not comprehend. Even K.hom([K.gens()[0]^2]) which should be the endomorphism $x$ gives $x^2$ does not work...

agregatif2022 gravatar imageagregatif2022 ( 2022-06-15 14:30:40 +0100 )edit

It is fairly easy to define a pythonic map $x\to x^{p+1}$. Yes, we completely ignore the mathematical structure. But to use it, and to be able to get such an involved instance knowing everything about structure - not only the map, but also domain, codomain, their properties... well, the hom and the instances we are starting with are not prepared for this particular usage... I would understand the need for a hom-instance implementing $\phi$, if this homomorphism would be (pre)composed with some other one, but also in that case, it is still too much yoga of arranging classes to play the game. If the particular set-theoretical map is enough for the programming purpose, i would go for it.

dan_fulea gravatar imagedan_fulea ( 2022-06-27 16:22:37 +0100 )edit