Skip to content

Commit a48f677

Browse files
committed
feat(RingTheory/PowerSeries/WeierstrassPreparation): add algebra isomorphisms induced by Weierstrass division (#25087)
- a distinguished polynomial `g` induces a natural isomorphism `A[X] / (g) ≃ A⟦X⟧ / (g)` - a Weierstrass factorization `g = f * h` induces a natural isomorphism `A[X] / (f) ≃ A⟦X⟧ / (g)`
1 parent e755884 commit a48f677

File tree

3 files changed

+321
-49
lines changed

3 files changed

+321
-49
lines changed

Mathlib/RingTheory/Polynomial/Eisenstein/Basic.lean

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Copyright (c) 2022 Riccardo Brasca. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Riccardo Brasca
55
-/
6+
import Mathlib.RingTheory.Ideal.BigOperators
67
import Mathlib.RingTheory.Polynomial.Eisenstein.Criterion
78
import Mathlib.RingTheory.Polynomial.ScaleRoots
89

@@ -56,14 +57,29 @@ namespace IsWeaklyEisensteinAt
5657

5758
section CommSemiring
5859

59-
variable [CommSemiring R] {𝓟 : Ideal R} {f : R[X]}
60+
variable [CommSemiring R] {𝓟 : Ideal R} {f f' : R[X]}
6061

6162
theorem map (hf : f.IsWeaklyEisensteinAt 𝓟) {A : Type v} [CommSemiring A] (φ : R →+* A) :
6263
(f.map φ).IsWeaklyEisensteinAt (𝓟.map φ) := by
6364
refine (isWeaklyEisensteinAt_iff _ _).2 fun hn => ?_
6465
rw [coeff_map]
6566
exact mem_map_of_mem _ (hf.mem (lt_of_lt_of_le hn natDegree_map_le))
6667

68+
theorem mul (hf : f.IsWeaklyEisensteinAt 𝓟) (hf' : f'.IsWeaklyEisensteinAt 𝓟) :
69+
(f * f').IsWeaklyEisensteinAt 𝓟 := by
70+
rw [isWeaklyEisensteinAt_iff] at hf hf' ⊢
71+
intro n hn
72+
rw [coeff_mul]
73+
refine sum_mem _ fun x hx ↦ ?_
74+
rcases lt_or_le x.1 f.natDegree with hx1 | hx1
75+
· exact mul_mem_right _ _ (hf hx1)
76+
replace hx1 : x.2 < f'.natDegree := by
77+
by_contra!
78+
rw [HasAntidiagonal.mem_antidiagonal] at hx
79+
replace hn := hn.trans_le natDegree_mul_le
80+
linarith
81+
exact mul_mem_left _ _ (hf' hx1)
82+
6783
end CommSemiring
6884

6985
section CommRing

Mathlib/RingTheory/Polynomial/Eisenstein/Distinguished.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ structure Polynomial.IsDistinguishedAt (f : R[X]) (I : Ideal R) : Prop
3131

3232
namespace Polynomial.IsDistinguishedAt
3333

34+
lemma mul {f f' : R[X]} {I : Ideal R} (hf : f.IsDistinguishedAt I) (hf' : f'.IsDistinguishedAt I) :
35+
(f * f').IsDistinguishedAt I :=
36+
⟨hf.toIsWeaklyEisensteinAt.mul hf'.toIsWeaklyEisensteinAt, hf.monic.mul hf'.monic⟩
37+
3438
lemma map_eq_X_pow {f : R[X]} {I : Ideal R} (distinguish : f.IsDistinguishedAt I) :
3539
f.map (Ideal.Quotient.mk I) = Polynomial.X ^ f.natDegree := by
3640
ext i

0 commit comments

Comments
 (0)