@@ -29,7 +29,7 @@ section splits
29
29
30
30
variables (i : α →+* β)
31
31
32
- /-- a polynomial `splits` iff it is zero or all of its irreducible factors have `degree` 1 -/
32
+ /-- A polynomial `splits` iff it is zero or all of its irreducible factors have `degree` 1. -/
33
33
def splits (f : polynomial α) : Prop :=
34
34
f = 0 ∨ ∀ {g : polynomial β}, irreducible g → g ∣ f.map i → degree g = 1
35
35
@@ -80,8 +80,10 @@ else or.inr $ λ p hp hpf, ((principal_ideal_ring.irreducible_iff_prime.1 hp).2.
80
80
81
81
lemma splits_of_splits_mul {f g : polynomial α} (hfg : f * g ≠ 0 ) (h : splits i (f * g)) :
82
82
splits i f ∧ splits i g :=
83
- ⟨or.inr $ λ g hgi hg, or.resolve_left h hfg hgi (by rw map_mul; exact dvd.trans hg (dvd_mul_right _ _)),
84
- or.inr $ λ g hgi hg, or.resolve_left h hfg hgi (by rw map_mul; exact dvd.trans hg (dvd_mul_left _ _))⟩
83
+ ⟨or.inr $ λ g hgi hg, or.resolve_left h hfg hgi
84
+ (by rw map_mul; exact dvd.trans hg (dvd_mul_right _ _)),
85
+ or.inr $ λ g hgi hg, or.resolve_left h hfg hgi
86
+ (by rw map_mul; exact dvd.trans hg (dvd_mul_left _ _))⟩
85
87
86
88
lemma splits_of_splits_of_dvd {f g : polynomial α} (hf0 : f ≠ 0 ) (hf : splits i f) (hgf : g ∣ f) :
87
89
splits i g :=
@@ -381,12 +383,14 @@ begin
381
383
{ have hcoeff : p.leading_coeff ≠ 0 ,
382
384
{ intro h, exact hzero (leading_coeff_eq_zero.1 h) },
383
385
have hrootsnorm : (normalize p).roots.card = (normalize p).nat_degree,
384
- { rw [roots_normalize, normalize_apply, nat_degree_mul hzero (units.ne_zero _), hroots, coe_norm_unit,
385
- nat_degree_C, add_zero], },
386
- have hprod := prod_multiset_X_sub_C_of_monic_of_roots_card_eq (monic_normalize hzero) hrootsnorm,
386
+ { rw [roots_normalize, normalize_apply, nat_degree_mul hzero (units.ne_zero _), hroots,
387
+ coe_norm_unit, nat_degree_C, add_zero], },
388
+ have hprod := prod_multiset_X_sub_C_of_monic_of_roots_card_eq (monic_normalize hzero)
389
+ hrootsnorm,
387
390
rw [roots_normalize, normalize_apply, coe_norm_unit_of_ne_zero hzero] at hprod,
388
391
calc (C p.leading_coeff) * (multiset.map (λ (a : α), X - C a) p.roots).prod
389
- = p * C ((p.leading_coeff)⁻¹ * p.leading_coeff) : by rw [hprod, mul_comm, mul_assoc, ← C_mul]
392
+ = p * C ((p.leading_coeff)⁻¹ * p.leading_coeff) :
393
+ by rw [hprod, mul_comm, mul_assoc, ← C_mul]
390
394
... = p * C 1 : by field_simp
391
395
... = p : by simp only [mul_one, ring_hom.map_one], },
392
396
end
495
499
theorem factor_dvd_of_degree_ne_zero {f : polynomial α} (hf : f.degree ≠ 0 ) : factor f ∣ f :=
496
500
factor_dvd_of_not_is_unit (mt degree_eq_zero_of_is_unit hf)
497
501
498
- theorem factor_dvd_of_nat_degree_ne_zero {f : polynomial α} (hf : f.nat_degree ≠ 0 ) : factor f ∣ f :=
502
+ theorem factor_dvd_of_nat_degree_ne_zero {f : polynomial α} (hf : f.nat_degree ≠ 0 ) :
503
+ factor f ∣ f :=
499
504
factor_dvd_of_degree_ne_zero (mt nat_degree_eq_of_degree_eq_some hf)
500
505
501
506
/-- Divide a polynomial f by X - C r where r is a root of f in a bigger field extension. -/
@@ -510,7 +515,8 @@ mul_div_by_monic_eq_iff_is_root.2 $ by rw [is_root.def, eval_map, hg, eval₂_mu
510
515
511
516
theorem nat_degree_remove_factor (f : polynomial α) :
512
517
f.remove_factor.nat_degree = f.nat_degree - 1 :=
513
- by rw [remove_factor, nat_degree_div_by_monic _ (monic_X_sub_C _), nat_degree_map, nat_degree_X_sub_C]
518
+ by rw [remove_factor, nat_degree_div_by_monic _ (monic_X_sub_C _), nat_degree_map,
519
+ nat_degree_X_sub_C]
514
520
515
521
theorem nat_degree_remove_factor' {f : polynomial α} {n : ℕ} (hfn : f.nat_degree = n+1 ) :
516
522
f.remove_factor.nat_degree = n :=
@@ -586,7 +592,8 @@ nat.rec_on n (λ α _ _ _ β _ j _, by exactI ⟨j, j.comp_id⟩) $ λ n ih α _
586
592
have hndf : f.nat_degree ≠ 0 , by { intro h, rw h at hf, cases hf },
587
593
have hfn0 : f ≠ 0 , by { intro h, rw h at hndf, exact hndf rfl },
588
594
let ⟨r, hr⟩ := exists_root_of_splits _ (splits_of_splits_of_dvd j hfn0 hj
589
- (factor_dvd_of_nat_degree_ne_zero hndf)) (mt is_unit_iff_degree_eq_zero.2 f.irreducible_factor.1 ) in
595
+ (factor_dvd_of_nat_degree_ne_zero hndf))
596
+ (mt is_unit_iff_degree_eq_zero.2 f.irreducible_factor.1 ) in
590
597
have hmf0 : map (adjoin_root.of f.factor) f ≠ 0 , from map_ne_zero hfn0,
591
598
have hsf : splits (adjoin_root.lift j r hr) f.remove_factor,
592
599
by { rw ← X_sub_C_mul_remove_factor _ hndf at hmf0, refine (splits_of_splits_mul _ hmf0 _).2 ,
0 commit comments