Documentation

Mathlib.RingTheory.Multiplicity

Multiplicity of a divisor #

For a commutative monoid, this file introduces the notion of multiplicity of a divisor and proves several basic results on it.

Main definitions #

@[reducible, inline]
abbrev multiplicity.Finite {α : Type u_1} [Monoid α] (a : α) (b : α) :

multiplicity.Finite a b indicates that the multiplicity of a in b is finite.

Equations
Instances For
    noncomputable def emultiplicity {α : Type u_1} [Monoid α] (a : α) (b : α) :

    emultiplicity a b returns the largest natural number n such that a ^ n ∣ b, as an ℕ∞. If ∀ n, a ^ n ∣ b then it returns .

    Equations
    Instances For
      noncomputable def multiplicity {α : Type u_1} [Monoid α] (a : α) (b : α) :

      A -valued version of emultiplicity, returning 1 instead of .

      Equations
      Instances For
        @[simp]
        theorem emultiplicity_eq_top {α : Type u_1} [Monoid α] {a : α} {b : α} :
        theorem emultiplicity_lt_top {α : Type u_1} [Monoid α] {a : α} {b : α} :
        theorem Finite.emultiplicity_ne_top {α : Type u_1} [Monoid α] {a : α} {b : α} :

        Alias of the forward direction of finite_iff_emultiplicity_ne_top.

        theorem finite_of_emultiplicity_eq_natCast {α : Type u_1} [Monoid α] {a : α} {b : α} {n : } (h : emultiplicity a b = n) :
        theorem multiplicity_eq_of_emultiplicity_eq_some {α : Type u_1} [Monoid α] {a : α} {b : α} {n : } (h : emultiplicity a b = n) :
        theorem emultiplicity_ne_of_multiplicity_ne {α : Type u_1} [Monoid α] {a : α} {b : α} {n : } :
        multiplicity a b nemultiplicity a b n
        theorem multiplicity.Finite.emultiplicity_eq_iff_multiplicity_eq {α : Type u_1} [Monoid α] {a : α} {b : α} {n : } (h : multiplicity.Finite a b) :
        theorem emultiplicity_eq_iff_multiplicity_eq_of_ne_one {α : Type u_1} [Monoid α] {a : α} {b : α} {n : } (h : n 1) :
        theorem emultiplicity_eq_zero_iff_multiplicity_eq_zero {α : Type u_1} [Monoid α] {a : α} {b : α} :
        @[simp]
        theorem multiplicity_eq_one_of_not_finite {α : Type u_1} [Monoid α] {a : α} {b : α} (h : ¬multiplicity.Finite a b) :
        @[simp]
        theorem multiplicity_le_emultiplicity {α : Type u_1} [Monoid α] {a : α} {b : α} :
        @[simp]
        theorem multiplicity_eq_of_emultiplicity_eq {α : Type u_1} {β : Type u_2} [Monoid α] [Monoid β] {a : α} {b : α} {c : β} {d : β} (h : emultiplicity a b = emultiplicity c d) :
        theorem multiplicity_le_of_emultiplicity_le {α : Type u_1} [Monoid α] {a : α} {b : α} {n : } (h : emultiplicity a b n) :
        theorem multiplicity.Finite.emultiplicity_le_of_multiplicity_le {α : Type u_1} [Monoid α] {a : α} {b : α} (hfin : multiplicity.Finite a b) {n : } (h : multiplicity a b n) :
        theorem le_emultiplicity_of_le_multiplicity {α : Type u_1} [Monoid α] {a : α} {b : α} {n : } (h : n multiplicity a b) :
        theorem multiplicity.Finite.le_multiplicity_of_le_emultiplicity {α : Type u_1} [Monoid α] {a : α} {b : α} (hfin : multiplicity.Finite a b) {n : } (h : n emultiplicity a b) :
        theorem multiplicity_lt_of_emultiplicity_lt {α : Type u_1} [Monoid α] {a : α} {b : α} {n : } (h : emultiplicity a b < n) :
        theorem multiplicity.Finite.emultiplicity_lt_of_multiplicity_lt {α : Type u_1} [Monoid α] {a : α} {b : α} (hfin : multiplicity.Finite a b) {n : } (h : multiplicity a b < n) :
        emultiplicity a b < n
        theorem lt_emultiplicity_of_lt_multiplicity {α : Type u_1} [Monoid α] {a : α} {b : α} {n : } (h : n < multiplicity a b) :
        n < emultiplicity a b
        theorem multiplicity.Finite.lt_multiplicity_of_lt_emultiplicity {α : Type u_1} [Monoid α] {a : α} {b : α} (hfin : multiplicity.Finite a b) {n : } (h : n < emultiplicity a b) :
        theorem emultiplicity_pos_iff {α : Type u_1} [Monoid α] {a : α} {b : α} :
        theorem multiplicity.Finite.def {α : Type u_1} [Monoid α] {a : α} {b : α} :
        multiplicity.Finite a b ∃ (n : ), ¬a ^ (n + 1) b
        @[deprecated Int.natCast_multiplicity]
        theorem Int.coe_nat_multiplicity (a : ) (b : ) :

        Alias of Int.natCast_multiplicity.

        theorem multiplicity.Finite.not_iff_forall {α : Type u_1} [Monoid α] {a : α} {b : α} :
        ¬multiplicity.Finite a b ∀ (n : ), a ^ n b
        theorem multiplicity.Finite.not_unit {α : Type u_1} [Monoid α] {a : α} {b : α} (h : multiplicity.Finite a b) :
        theorem multiplicity.Finite.mul_left {α : Type u_1} [Monoid α] {a : α} {b : α} {c : α} :
        theorem pow_dvd_of_le_emultiplicity {α : Type u_1} [Monoid α] {a : α} {b : α} {k : } (hk : k emultiplicity a b) :
        a ^ k b
        theorem pow_dvd_of_le_multiplicity {α : Type u_1} [Monoid α] {a : α} {b : α} {k : } (hk : k multiplicity a b) :
        a ^ k b
        @[simp]
        theorem pow_multiplicity_dvd {α : Type u_1} [Monoid α] (a : α) (b : α) :
        theorem not_pow_dvd_of_emultiplicity_lt {α : Type u_1} [Monoid α] {a : α} {b : α} {m : } (hm : emultiplicity a b < m) :
        ¬a ^ m b
        theorem multiplicity.Finite.not_pow_dvd_of_multiplicity_lt {α : Type u_1} [Monoid α] {a : α} {b : α} (hf : multiplicity.Finite a b) {m : } (hm : multiplicity a b < m) :
        ¬a ^ m b
        theorem multiplicity_pos_of_dvd {α : Type u_1} [Monoid α] {a : α} {b : α} (hdiv : a b) :
        theorem emultiplicity_pos_of_dvd {α : Type u_1} [Monoid α] {a : α} {b : α} (hdiv : a b) :
        theorem emultiplicity_eq_of_dvd_of_not_dvd {α : Type u_1} [Monoid α] {a : α} {b : α} {k : } (hk : a ^ k b) (hsucc : ¬a ^ (k + 1) b) :
        emultiplicity a b = k
        theorem multiplicity_eq_of_dvd_of_not_dvd {α : Type u_1} [Monoid α] {a : α} {b : α} {k : } (hk : a ^ k b) (hsucc : ¬a ^ (k + 1) b) :
        theorem le_emultiplicity_of_pow_dvd {α : Type u_1} [Monoid α] {a : α} {b : α} {k : } (hk : a ^ k b) :
        theorem multiplicity.Finite.le_multiplicity_of_pow_dvd {α : Type u_1} [Monoid α] {a : α} {b : α} (hf : multiplicity.Finite a b) {k : } (hk : a ^ k b) :
        theorem pow_dvd_iff_le_emultiplicity {α : Type u_1} [Monoid α] {a : α} {b : α} {k : } :
        a ^ k b k emultiplicity a b
        theorem multiplicity.Finite.pow_dvd_iff_le_multiplicity {α : Type u_1} [Monoid α] {a : α} {b : α} (hf : multiplicity.Finite a b) {k : } :
        a ^ k b k multiplicity a b
        theorem emultiplicity_lt_iff_not_dvd {α : Type u_1} [Monoid α] {a : α} {b : α} {k : } :
        emultiplicity a b < k ¬a ^ k b
        theorem multiplicity.Finite.multiplicity_lt_iff_not_dvd {α : Type u_1} [Monoid α] {a : α} {b : α} {k : } (hf : multiplicity.Finite a b) :
        multiplicity a b < k ¬a ^ k b
        theorem emultiplicity_eq_coe {α : Type u_1} [Monoid α] {a : α} {b : α} {n : } :
        emultiplicity a b = n a ^ n b ¬a ^ (n + 1) b
        theorem multiplicity.Finite.multiplicity_eq_iff {α : Type u_1} [Monoid α] {a : α} {b : α} (hf : multiplicity.Finite a b) {n : } :
        multiplicity a b = n a ^ n b ¬a ^ (n + 1) b
        @[simp]
        theorem multiplicity.Finite.not_of_isUnit_left {α : Type u_1} [Monoid α] {a : α} (b : α) (ha : IsUnit a) :
        @[simp]
        theorem emultiplicity_one_left {α : Type u_1} [Monoid α] (b : α) :
        @[simp]
        theorem multiplicity.Finite.one_right {α : Type u_1} [Monoid α] {a : α} (ha : multiplicity.Finite a 1) :
        theorem multiplicity.Finite.not_of_unit_left {α : Type u_1} [Monoid α] (a : α) (u : αˣ) :
        theorem emultiplicity_eq_zero {α : Type u_1} [Monoid α] {a : α} {b : α} :
        theorem multiplicity_eq_zero {α : Type u_1} [Monoid α] {a : α} {b : α} :
        theorem emultiplicity_ne_zero {α : Type u_1} [Monoid α] {a : α} {b : α} :
        theorem multiplicity_ne_zero {α : Type u_1} [Monoid α] {a : α} {b : α} :
        theorem multiplicity.Finite.exists_eq_pow_mul_and_not_dvd {α : Type u_1} [Monoid α] {a : α} {b : α} (hfin : multiplicity.Finite a b) :
        ∃ (c : α), b = a ^ multiplicity a b * c ¬a c
        theorem emultiplicity_le_emultiplicity_iff {α : Type u_1} {β : Type u_2} [Monoid α] [Monoid β] {a : α} {b : α} {c : β} {d : β} :
        emultiplicity a b emultiplicity c d ∀ (n : ), a ^ n bc ^ n d
        theorem multiplicity.Finite.multiplicity_le_multiplicity_iff {α : Type u_1} {β : Type u_2} [Monoid α] [Monoid β] {a : α} {b : α} {c : β} {d : β} (hab : multiplicity.Finite a b) (hcd : multiplicity.Finite c d) :
        multiplicity a b multiplicity c d ∀ (n : ), a ^ n bc ^ n d
        theorem emultiplicity_eq_emultiplicity_iff {α : Type u_1} {β : Type u_2} [Monoid α] [Monoid β] {a : α} {b : α} {c : β} {d : β} :
        emultiplicity a b = emultiplicity c d ∀ (n : ), a ^ n b c ^ n d
        theorem le_emultiplicity_map {α : Type u_1} {β : Type u_2} [Monoid α] [Monoid β] {F : Type u_3} [FunLike F α β] [MonoidHomClass F α β] (f : F) {a : α} {b : α} :
        theorem emultiplicity_map_eq {α : Type u_1} {β : Type u_2} [Monoid α] [Monoid β] {F : Type u_3} [EquivLike F α β] [MulEquivClass F α β] (f : F) {a : α} {b : α} :
        emultiplicity (f a) (f b) = emultiplicity a b
        theorem multiplicity_map_eq {α : Type u_1} {β : Type u_2} [Monoid α] [Monoid β] {F : Type u_3} [EquivLike F α β] [MulEquivClass F α β] (f : F) {a : α} {b : α} :
        multiplicity (f a) (f b) = multiplicity a b
        theorem emultiplicity_le_emultiplicity_of_dvd_right {α : Type u_1} [Monoid α] {a : α} {b : α} {c : α} (h : b c) :
        theorem emultiplicity_eq_of_associated_right {α : Type u_1} [Monoid α] {a : α} {b : α} {c : α} (h : Associated b c) :
        theorem multiplicity_eq_of_associated_right {α : Type u_1} [Monoid α] {a : α} {b : α} {c : α} (h : Associated b c) :
        theorem dvd_of_emultiplicity_pos {α : Type u_1} [Monoid α] {a : α} {b : α} (h : 0 < emultiplicity a b) :
        a b
        theorem dvd_of_multiplicity_pos {α : Type u_1} [Monoid α] {a : α} {b : α} (h : 0 < multiplicity a b) :
        a b
        theorem dvd_iff_multiplicity_pos {α : Type u_1} [Monoid α] {a : α} {b : α} :
        0 < multiplicity a b a b
        theorem dvd_iff_emultiplicity_pos {α : Type u_1} [Monoid α] {a : α} {b : α} :
        theorem Dvd.multiplicity_pos {α : Type u_1} [Monoid α] {a : α} {b : α} :
        a b0 < multiplicity a b

        Alias of the reverse direction of dvd_iff_multiplicity_pos.

        theorem multiplicity.Finite.mul_right {α : Type u_1} [CommMonoid α] {a : α} {b : α} {c : α} (hf : multiplicity.Finite a (b * c)) :
        theorem emultiplicity_of_isUnit_right {α : Type u_1} [CommMonoid α] {a : α} {b : α} (ha : ¬IsUnit a) (hb : IsUnit b) :
        theorem multiplicity_of_isUnit_right {α : Type u_1} [CommMonoid α] {a : α} {b : α} (ha : ¬IsUnit a) (hb : IsUnit b) :
        theorem emultiplicity_of_one_right {α : Type u_1} [CommMonoid α] {a : α} (ha : ¬IsUnit a) :
        theorem multiplicity_of_one_right {α : Type u_1} [CommMonoid α] {a : α} (ha : ¬IsUnit a) :
        theorem emultiplicity_of_unit_right {α : Type u_1} [CommMonoid α] {a : α} (ha : ¬IsUnit a) (u : αˣ) :
        emultiplicity a u = 0
        theorem multiplicity_of_unit_right {α : Type u_1} [CommMonoid α] {a : α} (ha : ¬IsUnit a) (u : αˣ) :
        multiplicity a u = 0
        theorem emultiplicity_le_emultiplicity_of_dvd_left {α : Type u_1} [CommMonoid α] {a : α} {b : α} {c : α} (hdvd : a b) :
        theorem emultiplicity_eq_of_associated_left {α : Type u_1} [CommMonoid α] {a : α} {b : α} {c : α} (h : Associated a b) :
        theorem multiplicity_eq_of_associated_left {α : Type u_1} [CommMonoid α] {a : α} {b : α} {c : α} (h : Associated a b) :
        theorem multiplicity.Finite.ne_zero {α : Type u_1} [MonoidWithZero α] {a : α} {b : α} (h : multiplicity.Finite a b) :
        b 0
        @[simp]
        theorem emultiplicity_zero {α : Type u_1} [MonoidWithZero α] (a : α) :
        @[simp]
        theorem emultiplicity_zero_eq_zero_of_ne_zero {α : Type u_1} [MonoidWithZero α] (a : α) (ha : a 0) :
        @[simp]
        theorem multiplicity_zero_eq_zero_of_ne_zero {α : Type u_1} [MonoidWithZero α] (a : α) (ha : a 0) :
        theorem multiplicity.Finite.or_of_add {α : Type u_1} [Semiring α] {p : α} {a : α} {b : α} (hf : multiplicity.Finite p (a + b)) :
        theorem min_le_emultiplicity_add {α : Type u_1} [Semiring α] {p : α} {a : α} {b : α} :
        @[simp]
        theorem multiplicity.Finite.neg_iff {α : Type u_1} [Ring α] {a : α} {b : α} :
        theorem multiplicity.Finite.neg {α : Type u_1} [Ring α] {a : α} {b : α} :

        Alias of the reverse direction of multiplicity.Finite.neg_iff.

        @[simp]
        theorem emultiplicity_neg {α : Type u_1} [Ring α] (a : α) (b : α) :
        @[simp]
        theorem multiplicity_neg {α : Type u_1} [Ring α] (a : α) (b : α) :
        theorem Int.emultiplicity_natAbs (a : ) (b : ) :
        emultiplicity a b.natAbs = emultiplicity (↑a) b
        theorem Int.multiplicity_natAbs (a : ) (b : ) :
        multiplicity a b.natAbs = multiplicity (↑a) b
        theorem emultiplicity_add_of_gt {α : Type u_1} [Ring α] {p : α} {a : α} {b : α} (h : emultiplicity p b < emultiplicity p a) :
        theorem multiplicity.Finite.multiplicity_add_of_gt {α : Type u_1} [Ring α] {p : α} {a : α} {b : α} (hf : multiplicity.Finite p b) (h : multiplicity p b < multiplicity p a) :
        theorem emultiplicity_sub_of_gt {α : Type u_1} [Ring α] {p : α} {a : α} {b : α} (h : emultiplicity p b < emultiplicity p a) :
        theorem multiplicity_sub_of_gt {α : Type u_1} [Ring α] {p : α} {a : α} {b : α} (h : multiplicity p b < multiplicity p a) (hfin : multiplicity.Finite p b) :
        theorem emultiplicity_add_eq_min {α : Type u_1} [Ring α] {p : α} {a : α} {b : α} (h : emultiplicity p a emultiplicity p b) :
        theorem multiplicity_add_eq_min {α : Type u_1} [Ring α] {p : α} {a : α} {b : α} (ha : multiplicity.Finite p a) (hb : multiplicity.Finite p b) (h : multiplicity p a multiplicity p b) :
        @[irreducible]
        theorem multiplicity.finite_mul_aux {α : Type u_1} [CancelCommMonoidWithZero α] {p : α} (hp : Prime p) {a : α} {b : α} {n : } {m : } :
        ¬p ^ (n + 1) a¬p ^ (m + 1) b¬p ^ (n + m + 1) a * b
        theorem Prime.multiplicity_finite_mul {α : Type u_1} [CancelCommMonoidWithZero α] {p : α} {a : α} {b : α} (hp : Prime p) :
        theorem multiplicity.Finite.pow {α : Type u_1} [CancelCommMonoidWithZero α] {p : α} {a : α} (hp : Prime p) (hfin : multiplicity.Finite p a) {k : } :
        @[simp]
        theorem multiplicity_self {α : Type u_1} [CancelCommMonoidWithZero α] {a : α} :
        theorem multiplicity_mul {α : Type u_1} [CancelCommMonoidWithZero α] {p : α} {a : α} {b : α} (hp : Prime p) (hfin : multiplicity.Finite p (a * b)) :
        theorem emultiplicity_mul {α : Type u_1} [CancelCommMonoidWithZero α] {p : α} {a : α} {b : α} (hp : Prime p) :
        theorem Finset.emultiplicity_prod {α : Type u_1} [CancelCommMonoidWithZero α] {β : Type u_3} {p : α} (hp : Prime p) (s : Finset β) (f : βα) :
        emultiplicity p (∏ xs, f x) = xs, emultiplicity p (f x)
        theorem emultiplicity_pow {α : Type u_1} [CancelCommMonoidWithZero α] {p : α} {a : α} (hp : Prime p) {k : } :
        emultiplicity p (a ^ k) = k * emultiplicity p a
        theorem multiplicity.Finite.multiplicity_pow {α : Type u_1} [CancelCommMonoidWithZero α] {p : α} {a : α} (hp : Prime p) (ha : multiplicity.Finite p a) {k : } :
        multiplicity p (a ^ k) = k * multiplicity p a
        theorem emultiplicity_pow_self {α : Type u_1} [CancelCommMonoidWithZero α] {p : α} (h0 : p 0) (hu : ¬IsUnit p) (n : ) :
        emultiplicity p (p ^ n) = n
        theorem multiplicity_pow_self {α : Type u_1} [CancelCommMonoidWithZero α] {p : α} (h0 : p 0) (hu : ¬IsUnit p) (n : ) :
        multiplicity p (p ^ n) = n
        theorem emultiplicity_pow_self_of_prime {α : Type u_1} [CancelCommMonoidWithZero α] {p : α} (hp : Prime p) (n : ) :
        emultiplicity p (p ^ n) = n
        theorem multiplicity_pow_self_of_prime {α : Type u_1} [CancelCommMonoidWithZero α] {p : α} (hp : Prime p) (n : ) :
        multiplicity p (p ^ n) = n
        theorem multiplicity_eq_zero_of_coprime {p : } {a : } {b : } (hp : p 1) (hle : multiplicity p a multiplicity p b) (hab : a.Coprime b) :
        theorem Int.multiplicity_finite_iff {a : } {b : } :
        multiplicity.Finite a b a.natAbs 1 b 0
        Equations
        Equations