@@ -168,7 +168,7 @@ open NumberField
168168
169169open scoped Pointwise
170170
171- #check IsPrimitive.irreducible_iff_irreducible_map_fraction_map
171+ variable (f : ℚ[X])
172172
173173theorem tada' (f₀ : ℤ[X]) (hf₀ : Irreducible f₀) (hf₀' : f₀.Monic)
174174 (h : ∀ (F : Type ) [Field F], (f₀.map (algebraMap ℤ F)).Splits →
@@ -187,16 +187,16 @@ theorem tada' (f₀ : ℤ[X]) (hf₀ : Irreducible f₀) (hf₀' : f₀.Monic)
187187 let R := 𝓞 K
188188 let := Ring.toIntAlgebra R
189189 have foo := @aeval_algebraMap_apply (R := ℤ) (A := R) K _ _ _ _ _ _ (IsScalarTower.of_algebraMap_eq' rfl)
190+ have hoof : (f₀.map (algebraMap ℤ R)).Splits := by
191+ -- requires monic
192+ sorry
190193 let G := f.Gal
191194 have := Gal.galAction_isPretransitive f ℂ hf
192- have : Set.BijOn v (f₀.rootSet R) (f.rootSet K) := by
195+ have : Set.BijOn (algebraMap R K) (f₀.rootSet R) (f.rootSet K) := by
193196 rw [rootSet, rootSet, aroots_map, ← rootSet, ← rootSet] -- rootSet_map lemma
194- have := Polynomial.Splits.image_rootSet_algebraMap (f := f₀) (A := R) (B := K) ?_ v
195-
196- rw [← Polynomial.Splits.image_rootSet (f := f₀) ?_ v] -- switch to algebraMap version
197- suffices Set.InjOn (algebraMap R K) ∧
198- refine ⟨?_, ?_⟩
199- sorry
197+ rw [← @hoof.image_rootSet_algebraMap ℤ R K _ _ _ _ _ _ _ f₀ _ _ ?_]
198+ · exact (FaithfulSMul.algebraMap_injective R K).bijOn_image
199+ · exact IsScalarTower.of_algebraMap_eq' rfl
200200 have hφ : Set.MapsTo (algebraMap R K) (f₀.rootSet R) (f.rootSet K) := by
201201 intro x hx
202202 rw [hf'.mem_rootSet, aeval_map_algebraMap, foo, aeval_eq_zero_of_mem_rootSet hx, map_zero]
@@ -211,12 +211,11 @@ theorem tada' (f₀ : ℤ[X]) (hf₀ : Irreducible f₀) (hf₀' : f₀.Monic)
211211 refine ⟨y, ?_, rfl⟩
212212 rw [mem_rootSet, and_iff_right hf₀.ne_zero]
213213 simpa using (foo y f₀).symm.trans h0
214- let e₀ := Equiv.ofBijective hφ.restrict hφ2
215- let e₁ : f₀.rootSet R ≃ f.rootSet K := by
216-
217- sorry
214+ let e₀ : f₀.rootSet R ≃ f.rootSet K := Equiv.ofBijective hφ.restrict hφ2
215+ let e₁ : f₀.rootSet R ≃ f.rootSet K := e₀.trans (Gal.rootsEquivRoots f K)
218216 have he₁ (g : G) (x : f₀.rootSet R) : e₁ (g • x) = g • e₁ x := by
219- sorry
217+ erw [Gal.smul_def f K g ((Gal.rootsEquivRoots f K) (e₀ x)), symm_apply_apply]
218+ rfl
220219 let e₂ : f.rootSet K ≃ f.rootSet ℂ := Gal.rootsEquivRoots' f K ℂ
221220 have he₂ (g : G) (x : f.rootSet K) : e₂ (g • x) = g • e₂ x :=
222221 (Gal.smul_rootsEquivRoots' f K ℂ g x).symm
@@ -237,16 +236,13 @@ theorem tada' (f₀ : ℤ[X]) (hf₀ : Irreducible f₀) (hf₀' : f₀.Monic)
237236 apply_fun e at hg
238237 simp [he] at hg
239238 simpa
240- have h1 : (f₀.map (algebraMap ℤ R)).Splits := by
241- -- might require monic
242- sorry
243239 have : IsGaloisGroup G ℚ K := IsGaloisGroup.of_isGalois ℚ K
244- refine h1 .surjective_toPermHom_of_iSup_inertia_eq_top (fun m ↦ ?_)
240+ refine hoof .surjective_toPermHom_of_iSup_inertia_eq_top (fun m ↦ ?_)
245241 (NumberField.supr_inertia_maximalSpectrum_eq_top (𝓞 K) G)
246242 let := Ideal.Quotient.field m.asIdeal
247243 refine le_trans (f₀.ncard_rootSet_le R) (h (R ⧸ m.asIdeal) ?_)
248244 rw [IsScalarTower.algebraMap_eq ℤ R, ← Polynomial.map_map]
249- exact h1 .map _
245+ exact hoof .map _
250246
251247-- theorem tada'''' (f₀ : ℤ[ X ] ) (hf₀ : Monic f₀) (hf₀' : Irreducible f₀)
252248-- (h : ∀ (F : Type) [Field F], (f₀.map (algebraMap ℤ F)).Splits →
0 commit comments