## Stream: FLT-regular

### Topic: galois stuff

#### Eric Rodriguez (Jan 30 2022 at 21:21):

over the last two days i've proved that the galois group of a cyclotomic extension is ≤ (ℤ/nℤ)ˣ. Hopefully soon, I'm going to finish the proof for ℚ being a bijection too -- I'm following this proof, and realised I don't know how conjugate elements work in Mathlib

#### Eric Rodriguez (Jan 30 2022 at 21:22):

what is the "correct" Lean way to get that if we have n-1 conjugates then the galois group is full? (and therefore the embedding I have is actually a bijection)

#### Eric Rodriguez (Feb 02 2022 at 00:21):

image.png the computation of the galois group of ℚ[ζₙ[ is done! it's on the ne_zero branch, though, as the main branch is currently waiting for some PRs to make it usable again.

#### Eric Rodriguez (Feb 02 2022 at 00:22):

there's also weaker results showing that for general cyclotomic extensions, it's injective, so it basically covers things in some decent generality

#### Riccardo Brasca (Feb 02 2022 at 09:38):

This is great! Is this the mathlib way of stating the result? I was looking for something like galois_group, but I don't see it.

#### Kevin Buzzard (Feb 02 2022 at 10:14):

Galois groups are just L \equiv+*[K] L it seems to me

#### Eric Rodriguez (Feb 02 2022 at 10:23):

yeah, there's also polynomial.gal but that's for polynomials. I just pushed those results, too, because they're pretty much defeq and follow from our is_splitting_field instances.

#### Riccardo Brasca (Feb 02 2022 at 11:01):

Instead of working over Q, can you generalize to any field K such that cyclotomic n K is irreducible? I guess the proof is the same.

#### Riccardo Brasca (Feb 02 2022 at 11:01):

(this can really happen for finite fields, so it is worth to have it)

#### Eric Rodriguez (Feb 02 2022 at 16:58):

done! also stops me from dealing with the diamond ^^

#### Riccardo Brasca (Feb 08 2022 at 17:21):

@Eric Rodriguez What was the solution for the Q-alg diamond? I always forget how to get rid of it...

#### Alex J. Best (Feb 08 2022 at 17:23):

I think last time one of the solutions was to generalize away from Q :grinning:
Maybe local attribute [-instance] algebra_rat is ok?

#### Riccardo Brasca (Feb 08 2022 at 17:24):

This was my first try, not enough

#### Riccardo Brasca (Feb 08 2022 at 17:24):

invalid type ascription, term has type
@is_cyclotomic_extension {n} ℤ
(@cyclotomic_ring n ℤ ℚ int.comm_ring rat.field _
(@algebra_int ℚ
(@normed_ring.to_ring ℚ
(@normed_comm_ring.to_normed_ring ℚ (@normed_field.to_normed_comm_ring ℚ rat.normed_field))))
rat.is_fraction_ring)
int.comm_ring
(@cyclotomic_ring.comm_ring n ℤ ℚ int.comm_ring rat.field _
(@algebra_int ℚ
(@normed_ring.to_ring ℚ
(@normed_comm_ring.to_normed_ring ℚ (@normed_field.to_normed_comm_ring ℚ rat.normed_field))))
rat.is_fraction_ring)
(@cyclotomic_ring.algebra_base n ℤ ℚ int.comm_ring rat.field _
(@algebra_int ℚ
(@normed_ring.to_ring ℚ
(@normed_comm_ring.to_normed_ring ℚ (@normed_field.to_normed_comm_ring ℚ rat.normed_field))))
rat.is_fraction_ring)
but is expected to have type
@is_cyclotomic_extension {n} ℤ
(@cyclotomic_ring n ℤ ℚ int.comm_ring rat.field _
(@algebra_int ℚ
(@normed_ring.to_ring ℚ
(@normed_comm_ring.to_normed_ring ℚ (@normed_field.to_normed_comm_ring ℚ rat.normed_field))))
rat.is_fraction_ring)
int.comm_ring
(@cyclotomic_ring.comm_ring n ℤ ℚ int.comm_ring rat.field _
(@algebra_int ℚ
(@normed_ring.to_ring ℚ
(@normed_comm_ring.to_normed_ring ℚ (@normed_field.to_normed_comm_ring ℚ rat.normed_field))))
rat.is_fraction_ring)
(@algebra_int
(@cyclotomic_ring n ℤ ℚ int.comm_ring rat.field _
(@algebra_int ℚ
(@normed_ring.to_ring ℚ
(@normed_comm_ring.to_normed_ring ℚ (@normed_field.to_normed_comm_ring ℚ rat.normed_field))))
rat.is_fraction_ring)
(@comm_ring.to_ring
(@cyclotomic_ring n ℤ ℚ int.comm_ring rat.field _
(@algebra_int ℚ
(@normed_ring.to_ring ℚ
(@normed_comm_ring.to_normed_ring ℚ (@normed_field.to_normed_comm_ring ℚ rat.normed_field))))
rat.is_fraction_ring)
(@cyclotomic_ring.comm_ring n ℤ ℚ int.comm_ring rat.field _
(@algebra_int ℚ
(@normed_ring.to_ring ℚ
(@normed_comm_ring.to_normed_ring ℚ (@normed_field.to_normed_comm_ring ℚ rat.normed_field))))
rat.is_fraction_ring)))


#### Alex J. Best (Feb 08 2022 at 17:26):

local attribute [-instance] algebra_int too?

#### Eric Rodriguez (Feb 08 2022 at 17:26):

Convert + there's a lemma for Q algebra being a subsingleton that nerds to become an instance locally

#### Riccardo Brasca (Feb 08 2022 at 17:29):

convert cyclotomic_ring.is_cyclotomic_extension n ℤ ℚ,
exact subsingleton.elim (algebra_int _) _


works, thanks!

#### Riccardo Brasca (Feb 08 2022 at 17:33):

BTW it's very nice that working with general ring such that the cyclotomic polynomial is irreducible makes all these problem disappear.

At the end we will need to specialize to Z, but at least we can postpone this problem as much as possible.

#### Eric Rodriguez (Jan 30 2022 at 21:21):

over the last two days i've proved that the galois group of a cyclotomic extension is ≤ (ℤ/nℤ)ˣ. Hopefully soon, I'm going to finish the proof for ℚ being a bijection too -- I'm following this proof, and realised I don't know how conjugate elements work in Mathlib

#### Eric Rodriguez (Jan 30 2022 at 21:22):

what is the "correct" Lean way to get that if we have n-1 conjugates then the galois group is full? (and therefore the embedding I have is actually a bijection)

#### Eric Rodriguez (Feb 02 2022 at 00:21):

image.png the computation of the galois group of ℚ[ζₙ[ is done! it's on the ne_zero branch, though, as the main branch is currently waiting for some PRs to make it usable again.

#### Eric Rodriguez (Feb 02 2022 at 00:22):

there's also weaker results showing that for general cyclotomic extensions, it's injective, so it basically covers things in some decent generality

#### Riccardo Brasca (Feb 02 2022 at 09:38):

This is great! Is this the mathlib way of stating the result? I was looking for something like galois_group, but I don't see it.

#### Kevin Buzzard (Feb 02 2022 at 10:14):

Galois groups are just L \equiv_a[K] L it seems to me (edit: fixed to make them algebra homs)

#### Eric Rodriguez (Feb 02 2022 at 10:23):

yeah, there's also polynomial.gal but that's for polynomials. I just pushed those results, too, because they're pretty much defeq and follow from our is_splitting_field instances.

#### Riccardo Brasca (Feb 02 2022 at 11:01):

Instead of working over Q, can you generalize to any field K such that cyclotomic n K is irreducible? I guess the proof is the same.

#### Riccardo Brasca (Feb 02 2022 at 11:01):

(this can really happen for finite fields, so it is worth to have it)

#### Eric Rodriguez (Feb 02 2022 at 16:58):

done! also stops me from dealing with the diamond ^^

#### Riccardo Brasca (Feb 08 2022 at 17:21):

@Eric Rodriguez What was the solution for the Q-alg diamond? I always forget how to get rid of it...

#### Alex J. Best (Feb 08 2022 at 17:23):

I think last time one of the solutions was to generalize away from Q :grinning:
Maybe local attribute [-instance] algebra_rat is ok?

#### Riccardo Brasca (Feb 08 2022 at 17:24):

This was my first try, not enough

#### Riccardo Brasca (Feb 08 2022 at 17:24):

invalid type ascription, term has type
@is_cyclotomic_extension {n} ℤ
(@cyclotomic_ring n ℤ ℚ int.comm_ring rat.field _
(@algebra_int ℚ
(@normed_ring.to_ring ℚ
(@normed_comm_ring.to_normed_ring ℚ (@normed_field.to_normed_comm_ring ℚ rat.normed_field))))
rat.is_fraction_ring)
int.comm_ring
(@cyclotomic_ring.comm_ring n ℤ ℚ int.comm_ring rat.field _
(@algebra_int ℚ
(@normed_ring.to_ring ℚ
(@normed_comm_ring.to_normed_ring ℚ (@normed_field.to_normed_comm_ring ℚ rat.normed_field))))
rat.is_fraction_ring)
(@cyclotomic_ring.algebra_base n ℤ ℚ int.comm_ring rat.field _
(@algebra_int ℚ
(@normed_ring.to_ring ℚ
(@normed_comm_ring.to_normed_ring ℚ (@normed_field.to_normed_comm_ring ℚ rat.normed_field))))
rat.is_fraction_ring)
but is expected to have type
@is_cyclotomic_extension {n} ℤ
(@cyclotomic_ring n ℤ ℚ int.comm_ring rat.field _
(@algebra_int ℚ
(@normed_ring.to_ring ℚ
(@normed_comm_ring.to_normed_ring ℚ (@normed_field.to_normed_comm_ring ℚ rat.normed_field))))
rat.is_fraction_ring)
int.comm_ring
(@cyclotomic_ring.comm_ring n ℤ ℚ int.comm_ring rat.field _
(@algebra_int ℚ
(@normed_ring.to_ring ℚ
(@normed_comm_ring.to_normed_ring ℚ (@normed_field.to_normed_comm_ring ℚ rat.normed_field))))
rat.is_fraction_ring)
(@algebra_int
(@cyclotomic_ring n ℤ ℚ int.comm_ring rat.field _
(@algebra_int ℚ
(@normed_ring.to_ring ℚ
(@normed_comm_ring.to_normed_ring ℚ (@normed_field.to_normed_comm_ring ℚ rat.normed_field))))
rat.is_fraction_ring)
(@comm_ring.to_ring
(@cyclotomic_ring n ℤ ℚ int.comm_ring rat.field _
(@algebra_int ℚ
(@normed_ring.to_ring ℚ
(@normed_comm_ring.to_normed_ring ℚ (@normed_field.to_normed_comm_ring ℚ rat.normed_field))))
rat.is_fraction_ring)
(@cyclotomic_ring.comm_ring n ℤ ℚ int.comm_ring rat.field _
(@algebra_int ℚ
(@normed_ring.to_ring ℚ
(@normed_comm_ring.to_normed_ring ℚ (@normed_field.to_normed_comm_ring ℚ rat.normed_field))))
rat.is_fraction_ring)))


#### Alex J. Best (Feb 08 2022 at 17:26):

local attribute [-instance] algebra_int too?

#### Eric Rodriguez (Feb 08 2022 at 17:26):

Convert + there's a lemma for Q algebra being a subsingleton that nerds to become an instance locally

#### Riccardo Brasca (Feb 08 2022 at 17:29):

convert cyclotomic_ring.is_cyclotomic_extension n ℤ ℚ,
exact subsingleton.elim (algebra_int _) _


works, thanks!

#### Riccardo Brasca (Feb 08 2022 at 17:33):

BTW it's very nice that working with general ring such that the cyclotomic polynomial is irreducible makes all these problem disappear.

At the end we will need to specialize to Z, but at least we can postpone this problem as much as possible.

Last updated: Dec 20 2023 at 11:08 UTC