11import Mathlib.RingTheory.ClassGroup
22import Mathlib.RingTheory.DedekindDomain.Ideal.Lemmas
33
4- variable {K : Type *} {p : ℕ} [Field K] [CharZero K] {ζ : K}
4+ section Mathlib.RingTheory.UniqueFactorizationDomain.Multiplicity
55
6- open scoped nonZeroDivisors
7- open Polynomial
6+ variable {M : Type *} [CommMonoidWithZero M] [IsCancelMulZero M]
87
9- lemma WfDvdMonoid.multiplicity_finite_iff {M : Type *} [CommMonoidWithZero M] [IsCancelMulZero M]
10- [WfDvdMonoid M] {x y : M} :
8+ lemma WfDvdMonoid.multiplicity_finite_iff [WfDvdMonoid M] {x y : M} :
119 FiniteMultiplicity x y ↔ ¬IsUnit x ∧ y ≠ 0 :=
1210 ⟨fun h => ⟨h.not_unit, h.ne_zero⟩, and_imp.mpr FiniteMultiplicity.of_not_isUnit⟩
1311
14- lemma dvd_iff_emultiplicity_le {M : Type *}
15- [CommMonoidWithZero M] [IsCancelMulZero M] [UniqueFactorizationMonoid M]
16- {a b : M} (ha : a ≠ 0 ) : a ∣ b ↔ ∀ p : M, Prime p → emultiplicity p a ≤ emultiplicity p b := by
12+ lemma dvd_iff_emultiplicity_le [UniqueFactorizationMonoid M] {a b : M} (ha : a ≠ 0 ) :
13+ a ∣ b ↔ ∀ p : M, Prime p → emultiplicity p a ≤ emultiplicity p b := by
1714 constructor
1815 · intro hab p _
1916 exact emultiplicity_le_emultiplicity_of_dvd_right hab
@@ -42,8 +39,8 @@ lemma dvd_iff_emultiplicity_le {M : Type*}
4239 (FiniteMultiplicity.of_not_isUnit hq.not_unit hq.ne_zero).emultiplicity_self,
4340 add_comm, add_le_add_iff_right_of_ne_top (ENat.coe_ne_top _), Nat.one_le_cast] at this
4441
45- lemma pow_dvd_pow_iff_dvd {M : Type *} [CommMonoidWithZero M] [IsCancelMulZero M]
46- [UniqueFactorizationMonoid M] {a b : M} {x : ℕ} (h' : x ≠ 0 ) : a ^ x ∣ b ^ x ↔ a ∣ b := by
42+ lemma pow_dvd_pow_iff_dvd [UniqueFactorizationMonoid M] {a b : M} {x : ℕ} (h' : x ≠ 0 ) :
43+ a ^ x ∣ b ^ x ↔ a ∣ b := by
4744 classical
4845 by_cases ha : a = 0
4946 · simp [ha, h']
@@ -62,6 +59,13 @@ lemma pow_dvd_pow_iff_dvd {M : Type*} [CommMonoidWithZero M] [IsCancelMulZero M]
6259 Nat.cast_le]
6360 exact Nat.le_of_mul_le_mul_left h (Nat.pos_of_ne_zero h')
6461
62+ end Mathlib.RingTheory.UniqueFactorizationDomain.Multiplicity
63+
64+ variable {K : Type *} {p : ℕ} [Field K] [CharZero K] {ζ : K}
65+
66+ open scoped nonZeroDivisors
67+ open Polynomial
68+
6569theorem isPrincipal_of_isPrincipal_pow_of_Coprime'
6670 {A K : Type *} [CommRing A] [IsDedekindDomain A] [Fintype (ClassGroup A)]
6771 [Field K] [Algebra A K] [IsFractionRing A K] (p : ℕ)
0 commit comments