Zulip Chat Archive
Stream: Is there code for X?
Topic: in K / L / k, [L : k] = index of fixing subgroup of L
Jz Pan (Apr 04 2025 at 17:58):
Seems that there are missing APIs for infinite Galois theory. If K / k
is an infinite Galois extension, then docs#InfiniteGalois.isOpen_iff_finite says that the fixing subgroup of L
is open if and only if L / k
is finite. I think that in this case the [L : k]
should equal to the index of the fixing subgroup of L
(is this true mathematically?). But this result is missing. We only have docs#IsGalois.card_fixingSubgroup_eq_finrank which concerns [K : L]
for finite Galois extension.
Kevin Buzzard (Apr 04 2025 at 22:26):
Yes this is true mathematically. You can probably deduce it mathematically from the finite case applied to the Galois closure of L/k plus third isomorphism theorem although this might be a painful way to formalise it
Kevin Buzzard (Apr 04 2025 at 22:28):
A useful result is that a finite index open subgroup contains a finite index open normal subgroup (take the intersection of the conjugates)
Jz Pan (Apr 05 2025 at 05:26):
Thank you, let me try. Is it the standard textbook proof?
Jz Pan (Apr 05 2025 at 05:29):
And seems that no stacks tags are attached to the theorems for infinite Galois theory yet.
Kevin Buzzard (Apr 05 2025 at 05:44):
I don't know what's in the textbooks or in stacks unfortunately, this is an area I picked up by osmosis 35 years ago
Jz Pan (Apr 05 2025 at 06:34):
There are some interesting facts on https://stacks.math.columbia.edu/tag/0BMI, for example the universal property of Krull topology...
Jz Pan (Apr 05 2025 at 08:28):
Kevin Buzzard said:
Yes this is true mathematically. You can probably deduce it mathematically from the finite case applied to the Galois closure of L/k plus third isomorphism theorem although this might be a painful way to formalise it
It works (probably without importing infinite Galois file):
import Mathlib
-- TODO: move to suitable file
theorem _root_.IntermediateField.map_fixingSubgroup
{k E : Type*} (K : Type*)
[Field k] [Field E] [Field K] [Algebra k E] [Algebra k K] [Algebra E K] [IsScalarTower k E K]
[Normal k E] (L : IntermediateField k E) :
(L.map (IsScalarTower.toAlgHom k E K)).fixingSubgroup =
L.fixingSubgroup.comap (AlgEquiv.restrictNormalHom (F := k) (K₁ := K) E) := by
ext f
simp only [Subgroup.mem_comap, IntermediateField.mem_fixingSubgroup_iff]
constructor
· rintro h x hx
change f.restrictNormal E x = x
apply_fun _ using (algebraMap E K).injective
rw [AlgEquiv.restrictNormal_commutes]
exact h _ ⟨x, hx, rfl⟩
· rintro h _ ⟨x, hx, rfl⟩
replace h := congr(algebraMap E K $(show f.restrictNormal E x = x from h x hx))
rwa [AlgEquiv.restrictNormal_commutes] at h
-- TODO: move to suitable file
theorem _root_.IntermediateField.map_fixingSubgroup_index
{k E : Type*} (K : Type*)
[Field k] [Field E] [Field K] [Algebra k E] [Algebra k K] [Algebra E K] [IsScalarTower k E K]
[Normal k E] [Normal k K] (L : IntermediateField k E) :
(L.map (IsScalarTower.toAlgHom k E K)).fixingSubgroup.index = L.fixingSubgroup.index := by
rw [L.map_fixingSubgroup K, L.fixingSubgroup.index_comap_of_surjective
(AlgEquiv.restrictNormalHom_surjective _)]
-- TODO: move to suitable file
theorem _root_.IsGalois.finrank_eq_index_of_finite
{k K : Type*} [Field k] [Field K] [Algebra k K] (L : IntermediateField k K)
[IsGalois k K] [FiniteDimensional k L] :
Module.finrank k L = L.fixingSubgroup.index := by
let E := IntermediateField.normalClosure k L K
have hle : L ≤ E := by
simpa only [IntermediateField.fieldRange_val] using L.val.fieldRange_le_normalClosure
let L' := IntermediateField.restrict hle
have h := Module.finrank_mul_finrank k ↥L' ↥E
classical
rw [← IsGalois.card_fixingSubgroup_eq_finrank L', ← IsGalois.card_aut_eq_finrank k E] at h
nth_rw 2 [Fintype.card_eq_nat_card] at h
rw [← L'.fixingSubgroup.index_mul_card, Nat.card_eq_fintype_card,
Nat.mul_left_inj Fintype.card_ne_zero] at h
rw [(IntermediateField.restrict_algEquiv hle).toLinearEquiv.finrank_eq, h,
← L'.map_fixingSubgroup_index K]
congr 2
exact IntermediateField.lift_restrict hle
Jz Pan (Apr 05 2025 at 08:30):
Module.finrank k L = L.fixingSubgroup.index
should be true without requiring FiniteDimensional k L
, though. In that case both sides should be zero. But I don't know how to prove that L.fixingSubgroup
is of infinite index if [L : k]
is not finite.
Jz Pan (Apr 05 2025 at 08:35):
I think I have a solution. If L / k
is infinite but algebraic, then there are finite extensions L'
with arbitrary large degree inside L / k
. We should have L.fixingSubgroup ≤ L'.fixingSubgroup
but L'.fixingSubgroup.index
can be arbitrary large. So L.fixingSubgroup
must be of infinite index.
Jz Pan (Apr 05 2025 at 08:52):
Done!
-- ... same as above
-- TODO: move to suitable file
theorem _root_.IsGalois.finrank_eq_index
{k K : Type*} [Field k] [Field K] [Algebra k K] (L : IntermediateField k K) [IsGalois k K] :
Module.finrank k L = L.fixingSubgroup.index := by
wlog hnfd : FiniteDimensional k L generalizing L
· rw [Module.finrank_of_infinite_dimensional hnfd]
by_contra! h
replace h : L.fixingSubgroup.FiniteIndex := ⟨h.symm⟩
obtain ⟨L', hfd, hL'⟩ :=
IntermediateField.exists_lt_finrank_of_infinite_dimensional hnfd L.fixingSubgroup.index
let i := (IntermediateField.liftAlgEquiv L').toLinearEquiv
replace hfd := i.finiteDimensional
rw [i.finrank_eq, this _ hfd] at hL'
exact (Subgroup.index_antitone <| IntermediateField.fixingSubgroup.antimono <|
IntermediateField.lift_le L').not_lt hL'
let E := IntermediateField.normalClosure k L K
have hle : L ≤ E := by
simpa only [IntermediateField.fieldRange_val] using L.val.fieldRange_le_normalClosure
let L' := IntermediateField.restrict hle
have h := Module.finrank_mul_finrank k ↥L' ↥E
classical
rw [← IsGalois.card_fixingSubgroup_eq_finrank L', ← IsGalois.card_aut_eq_finrank k E] at h
nth_rw 2 [Fintype.card_eq_nat_card] at h
rw [← L'.fixingSubgroup.index_mul_card, Nat.card_eq_fintype_card,
Nat.mul_left_inj Fintype.card_ne_zero] at h
rw [(IntermediateField.restrict_algEquiv hle).toLinearEquiv.finrank_eq, h,
← L'.map_fixingSubgroup_index K]
congr 2
exact IntermediateField.lift_restrict hle
Jz Pan (Apr 05 2025 at 10:43):
#find_home
cannot find a suitable place for IntermediateField.map_fixingSubgroup
...
Jz Pan (Apr 05 2025 at 10:51):
Found it: Mathlib.FieldTheory.KrullTopology
Jz Pan (Apr 05 2025 at 11:29):
PR created as #23693.
Last updated: May 02 2025 at 03:31 UTC