Hecke.jl icon indicating copy to clipboard operation
Hecke.jl copied to clipboard

Cyclotomic field as `NfRel`

Open StevellM opened this issue 1 year ago • 5 comments

Some context To define a hermitian lattice L over a cyclotomic field E, in theory, we define E as a quadratic extension over its real maximal subfield K (generated by gen(E)+1/gen(E)). So in order to do the same on Hecke, since HermLat requires a NfRel of relative degree 2, it is convenient to do the same.

First solution It is not hard to make this in pratice:

julia> K,a = CyclotomicRealSubfield(7, cached=false)
(Maximal real subfield of cyclotomic field of order 7, (z_7 + 1/z_7))

julia> Kt ,t = K["t"]
(Univariate Polynomial Ring in t over K, t)

julia> E,b = number_field(t^2-a*t+1, "z_7")
(Relative number field over with defining polynomial t^2 - (z_7 + 1/z_7)*t + 1
 over Maximal real subfield of cyclotomic field of order 7, z_7)

Some improvement To make codes lighter, I have thought of adding a command cyclotomic_field_as_CM_extension(n::Int; cached::Bool = true) which does roughly the same as above but also give an attribute :cyclo -> n to E for further sanity check. This last thing would ask us to extend is_cyclotomic_type to not only NfAbs but also NfRel in order to detect whether the top field is cyclotomic (which goes to checking if the top field has the attribute :cyclo, and return its value)

Does this seem reasonable ?

StevellM avatar Aug 02 '22 16:08 StevellM

The functionality seems useful to have. I don't have a better name than cyclotomic_field_as_CM_extension in mind. Maybe @fieker has some opinion?

There is already something like a cyclotomic extension of a number field (at the moment only of simple absolute ones), constructed via cyclotomic_extension(K, n). In the above example, E is in fact the n-th cyclotomic extension of K, so there would be no clash in this regard.

What would the is_cyclotomic_type => true be useful for? (At the moment we use it for absolute simple fields and then it is equivalent to the defining polynomial being cyclotomic_polynomial(n).)

thofma avatar Aug 02 '22 17:08 thofma

This check will be useful for the trace equivalence (lattice with isometry <-> hermitian lattices over cyclotomic field): once one wants to construct the trace lattice of a hermitian lattice over a cyclotomic field, one needs to check (not necessarily, but I guess it is better) that the base field of the HermLat is a cyclotomic field.

EDIT: and as far as I have seen, at least on Hecke, we don't have such a thing as cyclotomic_polynomial(n).

StevellM avatar Aug 02 '22 18:08 StevellM

My bad, it is cyclotomic (don't ask about the name).

So I guess what you want is a flag that tells you that the field E you received (of type NfRel) is some Q(zeta_n) and gen(E) is a primitive n-th root of unity?

On the other hand I believe that being a cyclotomic extension (i.e., is_cyclotomic_type => true) should be a notion relative to the base field with the guarantee that

  1. E = base_field(E)(zeta_n)
  2. gen(E) is a primitive n-th root of unity.

Would these conditions be good enough for you (knowing that the field you work with is a CM field)?

Or maybe being cyclotomic should always be something absolute?

thofma avatar Aug 02 '22 18:08 thofma

Ah yes good point, now I see how to get the cyclotomic polynomials!

I don't know to which extent I can bring what I will do, so for now for me, I should detect that E and K are of the form I have made explicit earlier. But obviously, we could do more with that. So maybe regarding your last point, being able to check whether E, seen as an absolute number field, is cyclotomic.

Could we have distinguished methods like is_cyclotomic_field and is_cyclotomic_type ? I don't know if it makes sense, but in this way we could make the difference between cyclotomic extensions and absolute/relative number fields that are actually cyclotomic (of the form Q(zeta_n)), seen as absolute number fields.

StevellM avatar Aug 02 '22 22:08 StevellM

On Tue, Aug 02, 2022 at 03:16:32PM -0700, Stevell Muller wrote:

Ah yes good point, now I see how to get the cyclotomic polynomials!

I don't know to which extent I can bring what I will do, so for now for me, I should detect that E and K are of the form I have made explicit earlier. But obviously, we could do more with that. So maybe regarding your last point, being able to check whether E, seen as an absolute number field, is cyclotomic.

Could we have distinguished methods like is_cyclotomic_field and is_cyclotomic_type ? I don't know if it makes sense, but in this way we could make the difference between cyclotomic extensions and absolute/relative number fields that are actually cyclotomic (of the form Q(zeta_n)), seen as absolute number fields. Do you want: is cyclo field or primitive element is root of unity? Eg. let f be cyclo(n) then number_field(f(x+1)) is clearly the same field as number_field(f)... Should both be cyclotomic?

-- Reply to this email directly or view it on GitHub: https://github.com/thofma/Hecke.jl/issues/768#issuecomment-1203267254 You are receiving this because you were mentioned.

Message ID: @.***>

fieker avatar Aug 03 '22 07:08 fieker