@@ -117,33 +117,22 @@ open IsGaloisGroup
117117
118118open NumberField
119119
120- open Ideal IsGaloisGroup Pointwise in
121- /-- A Galois group over `ℤ` is generated by its inertia subgroups. -/
122- theorem NumberField.supr_inertia_eq_top (S G : Type *) [CommRing S] [Module.Finite ℤ S]
120+ -- #40955
121+ theorem NumberField.supr_inertia_primeSpectrum_eq_top (S G : Type *) [CommRing S] [Module.Finite ℤ S]
123122 [IsDomain S] [FaithfulSMul ℤ S] [Group G] [MulSemiringAction G S] [IsGaloisGroup G ℤ S] :
124123 ⨆ m : PrimeSpectrum S, m.asIdeal.toAddSubgroup.inertia G = ⊤ := by
125124 sorry
126125
127- theorem NumberField.supr_inertia_eq_top' (S G : Type *) [CommRing S] [Module.Finite ℤ S]
126+ theorem NumberField.supr_inertia_maximalSpectrum_eq_top (S G : Type *) [CommRing S] [Module.Finite ℤ S]
128127 [IsDomain S] [FaithfulSMul ℤ S] [Group G] [MulSemiringAction G S] [IsGaloisGroup G ℤ S] :
129128 ⨆ m : MaximalSpectrum S, m.asIdeal.toAddSubgroup.inertia G = ⊤ := by
130- rw [eq_top_iff, ← NumberField.supr_inertia_eq_top S G, iSup_le_iff]
129+ rw [eq_top_iff, ← NumberField.supr_inertia_primeSpectrum_eq_top S G, iSup_le_iff]
131130 intro p
132131 obtain ⟨m, hm, hpm⟩ := p.1 .exists_le_maximal p.2 .ne_top
133132 intro x hx
134133 apply Subgroup.mem_iSup_of_mem ⟨m, hm⟩
135134 exact fun x ↦ hpm (hx x)
136135
137- theorem NumberField.supr_inertia_eq_top'' (K : Type *) [Field K] [NumberField K]
138- (G : Type *) [Group G] [MulSemiringAction G K] [IsGaloisGroup G ℚ K] :
139- ⨆ m : PrimeSpectrum (𝓞 K), m.asIdeal.toAddSubgroup.inertia G = ⊤ := by
140- exact NumberField.supr_inertia_eq_top (𝓞 K) G
141-
142- theorem NumberField.supr_inertia_eq_top''' (K : Type *) [Field K] [NumberField K]
143- (G : Type *) [Group G] [MulSemiringAction G K] [IsGaloisGroup G ℚ K] :
144- ⨆ m : MaximalSpectrum (𝓞 K), m.asIdeal.toAddSubgroup.inertia G = ⊤ := by
145- exact NumberField.supr_inertia_eq_top' (𝓞 K) G
146-
147136end ram
148137
149138end Inertia
@@ -168,8 +157,6 @@ theorem tada' (f₀ : ℤ[X]) (hf₀ : Irreducible f₀) (hf₉' : f₀.Monic)
168157 (h : ∀ (F : Type ) [Field F], (f₀.map (algebraMap ℤ F)).Splits →
169158 f₀.natDegree ≤ (f₀.rootSet F).ncard + 1 ) :
170159 Function.Bijective (Gal.galActionHom (f₀.map (algebraMap ℤ ℚ)) ℂ) := by
171- -- by_cases nd : f₀.natDegree = 0
172- -- · sorry
173160 classical
174161 let f : ℚ[X] := f₀.map (algebraMap ℤ ℚ)
175162 have hf' : Irreducible f := hf₉'.irreducible_iff_irreducible_map_fraction_map.mp hf₀
@@ -183,20 +170,34 @@ theorem tada' (f₀ : ℤ[X]) (hf₀ : Irreducible f₀) (hf₉' : f₀.Monic)
183170 let G := f.Gal
184171 have h_transitive := Gal.galAction_isPretransitive f ℂ hf'
185172 let e : f₀.rootSet R ≃ f.rootSet ℂ := by
173+ let e₀ : f₀.rootSet R ≃ f.rootSet K := by
174+ sorry
175+ let e1 := Polynomial.Gal.rootsEquivRoots f ℂ
176+
186177 sorry
187- have he (g : G) (x : f₀.rootSet R) : g • e x = e ( g • x) := by
178+ have he (g : G) (x : f₀.rootSet R) : e ( g • x) = g • e x := by
188179 sorry
189- have : MulAction.IsPretransitive G (f₀.rootSet R) := sorry
190- let e := Polynomial.Gal.rootsEquivRoots f ℂ
180+ have : MulAction.IsPretransitive G (f₀.rootSet R) := by
181+ refine ⟨fun x y ↦ ?_⟩
182+ obtain ⟨g, hg⟩ := MulAction.exists_smul_eq f.Gal (e x) (e y)
183+ exact ⟨g, e.injective ((he g x).trans hg)⟩
191184 suffices Function.Surjective (MulAction.toPermHom G (f₀.rootSet R)) by
192185 use Polynomial.Gal.galActionHom_injective (f₀.map (algebraMap ℤ ℚ)) ℂ
193- sorry
186+ change Function.Surjective (MulAction.toPermHom G (f.rootSet ℂ))
187+ intro φ
188+ obtain ⟨g, hg⟩ := this (e.permCongr.symm φ)
189+ use g
190+ ext x
191+ replace hg := Equiv.Perm.ext_iff.mp hg (e.symm x)
192+ apply_fun e at hg
193+ simp [he] at hg
194+ simpa
194195 have h1 : (f₀.map (algebraMap ℤ R)).Splits := by
195196 -- might require monic
196197 sorry
197198 have : IsGaloisGroup G ℚ K := IsGaloisGroup.of_isGalois ℚ K
198199 refine h1.surjective_toPermHom_of_iSup_inertia_eq_top (fun m ↦ ?_)
199- (NumberField.supr_inertia_eq_top' (𝓞 K) G)
200+ (NumberField.supr_inertia_maximalSpectrum_eq_top (𝓞 K) G)
200201 let := Ideal.Quotient.field m.asIdeal
201202 refine le_trans (f₀.ncard_rootSet_le R) (h (R ⧸ m.asIdeal) ?_)
202203 rw [IsScalarTower.algebraMap_eq ℤ R, ← Polynomial.map_map]
0 commit comments