Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit f151da2

Browse files
committed
feat(field_theory/polynomial_galois_group): Restriction from splitting field of composition (#6148)
Defines the surjective restriction map from the splitting field of a composition Co-authored-by: tb65536 <tb65536@users.noreply.github.com>
1 parent 7b4a9e5 commit f151da2

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

src/field_theory/polynomial_galois_group.lean

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,64 @@ begin
208208
{ rwa [ne.def, mul_eq_zero, map_eq_zero, map_eq_zero, ←mul_eq_zero] }
209209
end
210210

211+
lemma mul_splits_in_splitting_field_of_mul {p₁ q₁ p₂ q₂ : polynomial F}
212+
(hq₁ : q₁ ≠ 0) (hq₂ : q₂ ≠ 0) (h₁ : p₁.splits (algebra_map F q₁.splitting_field))
213+
(h₂ : p₂.splits (algebra_map F q₂.splitting_field)) :
214+
(p₁ * p₂).splits (algebra_map F (q₁ * q₂).splitting_field) :=
215+
begin
216+
apply splits_mul,
217+
{ rw ← (splitting_field.lift q₁ (splits_of_splits_of_dvd _
218+
(mul_ne_zero hq₁ hq₂) (splitting_field.splits _) (dvd_mul_right q₁ q₂))).comp_algebra_map,
219+
exact splits_comp_of_splits _ _ h₁, },
220+
{ rw ← (splitting_field.lift q₂ (splits_of_splits_of_dvd _
221+
(mul_ne_zero hq₁ hq₂) (splitting_field.splits _) (dvd_mul_left q₂ q₁))).comp_algebra_map,
222+
exact splits_comp_of_splits _ _ h₂, },
223+
end
224+
225+
lemma splits_in_splitting_field_of_comp (hq : q.nat_degree ≠ 0) :
226+
p.splits (algebra_map F (p.comp q).splitting_field) :=
227+
begin
228+
let P : polynomial F → Prop := λ r, r.splits (algebra_map F (r.comp q).splitting_field),
229+
have key1 : ∀ {r : polynomial F}, irreducible r → P r,
230+
{ intros r hr,
231+
by_cases hr' : nat_degree r = 0,
232+
{ exact splits_of_nat_degree_le_one _ (le_trans (le_of_eq hr') zero_le_one) },
233+
obtain ⟨x, hx⟩ := exists_root_of_splits _ (splitting_field.splits (r.comp q))
234+
(λ h, hr' ((mul_eq_zero.mp (nat_degree_comp.symm.trans
235+
(nat_degree_eq_of_degree_eq_some h))).resolve_right hq)),
236+
rw [←aeval_def, aeval_comp] at hx,
237+
have h_normal : normal F (r.comp q).splitting_field := splitting_field.normal (r.comp q),
238+
have qx_int := normal.is_integral h_normal (aeval x q),
239+
exact splits_of_splits_of_dvd _
240+
(minpoly.ne_zero qx_int)
241+
(normal.splits h_normal _)
242+
(dvd_symm_of_irreducible (minpoly.irreducible qx_int) hr (minpoly.dvd F _ hx)) },
243+
have key2 : ∀ {p₁ p₂ : polynomial F}, P p₁ → P p₂ → P (p₁ * p₂),
244+
{ intros p₁ p₂ hp₁ hp₂,
245+
by_cases h₁ : p₁.comp q = 0,
246+
{ cases comp_eq_zero_iff.mp h₁ with h h,
247+
{ rw [h, zero_mul],
248+
exact splits_zero _ },
249+
{ exact false.rec _ (hq (by rw [h.2, nat_degree_C])) } },
250+
by_cases h₂ : p₂.comp q = 0,
251+
{ cases comp_eq_zero_iff.mp h₂ with h h,
252+
{ rw [h, mul_zero],
253+
exact splits_zero _ },
254+
{ exact false.rec _ (hq (by rw [h.2, nat_degree_C])) } },
255+
have key := mul_splits_in_splitting_field_of_mul h₁ h₂ hp₁ hp₂,
256+
rwa ← mul_comp at key },
257+
exact wf_dvd_monoid.induction_on_irreducible p (splits_zero _)
258+
(λ _, splits_of_is_unit _) (λ _ _ _ h, key2 (key1 h)),
259+
end
260+
261+
/-- The restriction homomorphism from the Galois group of a homomorphism -/
262+
def restrict_comp (hq : q.nat_degree ≠ 0) : (p.comp q).gal →* p.gal :=
263+
@restrict F _ p _ _ _ (splits_in_splitting_field_of_comp p q hq)
264+
265+
lemma restrict_comp_surjective (hq : q.nat_degree ≠ 0) :
266+
function.surjective (restrict_comp p q hq) :=
267+
by simp only [restrict_comp, restrict_surjective]
268+
211269
variables {p q}
212270

213271
lemma card_of_separable (hp : p.separable) :

0 commit comments

Comments
 (0)