Processing math: 100%

First time here? Check out the FAQ!

Ask Your Question
3

Subextension over non-prime subfield as a quotient

asked 2 years ago

YesIsBetterThanCrimson gravatar image

updated 2 years ago

FrédéricC gravatar image

Hi!

I am looking for a light and easy way to build the following objects:

  • a finite (possibly non prime) field Fq;
  • an irreducible polynomial p in Fq[X];
  • and a finite extension L of Fq which contains L0 = Fq[X]/p as a subfield.

Crucially, I want to be able to manipulate the generator z = L0(X) (i.e. the image of X in L0) as an element of L. I also need to view these extensions as extension over Fq (e.g. using .over(Fq)) and not the prime subfield (in particular, I do not want to see L as an extension of L0).

Let me know if this is not clear and you need more explanations.

For this, I can define my extensions as follows:

sage: Fq = GF(7^2)
sage: FqX.<X> = Fq[]
sage: p = FqX.irreducible_element(3)
sage: L0 = Fq.extension(modulus=p).over(Fq); L0
Univariate Quotient Polynomial Ring in X over Finite Field in z2 of size 7^2 with modulus X^3 + z2*X + z2 + 3 over its base
sage: L = Fq.extension(modulus=FqX.irreducible_element(6)).over(Fq); L
Univariate Quotient Polynomial Ring in X over Finite Field in z2 of size 7^2 with modulus X^6 + (6*z2 + 4)*X + 4*z2 + 6 over its base

Now I can define z = L0(X):

sage: z = L0(X)
sage: assert z == L0.gen()
sage:

But I can't manage to see z as an element of L. In the following snippet, it seems that casting z as an element of L converts it to a generator of L:

sage: zL = L(z)
sage: zL == L.gen()
True

I tried other ways to create the extensions. Sometimes coercion is a problem. Sometimes some methods are available on a method but not the other. Does anybody has any idea?

Preview: (hide)

Comments

Welcome to Ask Sage! Thank you for your question.

slelievre gravatar imageslelievre ( 2 years ago )
2

You can map z in L0 to one of z.minpoly().change_ring(L).roots(multiplicities=False) in L. Unfortunately defining a homomorphism via L0.hom seems to be broken for a relative extension L0.

rburing gravatar imagerburing ( 2 years ago )

1 Answer

Sort by » oldest newest most voted
3

answered 2 years ago

dan_fulea gravatar image

In such cases, it is useful to work in L and only in L. All elements can be arranged to be there.

Let q be a prime power, the prime will be denoted by p. I will initialize the field L=Fq[w] of characteristic p, of degree six over Fq, containing an element z which generates a subfield L0 of degree three inside L, so that the following tower is realized: L=Fq[w]L0=Fq[z]K=Fq=Fp[a]F=Fp

p, power = 7, 2
q = p^power

F = GF(p)
R.<X> = PolynomialRing(F)
P1power = R.irreducible_element(power)
P3power = R.irreducible_element(3*power)
P6power = R.irreducible_element(6*power)

L.<w> = GF(q^6, modulus=P6power)
z = P3power.roots(ring=L, multiplicities=False)[0]
a = P1power.roots(ring=L, multiplicities=False)[0]

Alternatively:

p, power = 7, 2
q = p^power

K.<a> = GF(q)
R.<X> = PolynomialRing(K)
P3 = R.irreducible_element(3)
P6 = R.irreducible_element(6)

L.<w> = K.extension(P6)
z = P3.roots(ring=L, multiplicities=False)[0]
Preview: (hide)
link

Comments

Thank you two for those solutions. I think that they are the easiest way to achieve the result, and they are fairly simple, as we can always work in L. I will be using this!

YesIsBetterThanCrimson gravatar imageYesIsBetterThanCrimson ( 2 years ago )

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2 years ago

Seen: 575 times

Last updated: May 06 '22