ring_theory.multiplicityMathlib.RingTheory.Multiplicity

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

feat(algebra/divisibility/basic): Dot notation aliases (#18698)

A few convenience shortcuts for dvd along with some simple nat lemmas. Also

  • Drop neg_dvd_of_dvd/dvd_of_neg_dvd/dvd_neg_of_dvd/dvd_of_dvd_neg in favor of the aforementioned shortcuts.
  • Remove explicit arguments to dvd_neg/neg_dvd.
  • Drop int.of_nat_dvd_of_dvd_nat_abs/int.dvd_nat_abs_of_of_nat_dvd because they are the two directions of int.coe_nat_dvd_left.
  • Move group_with_zero.to_cancel_monoid_with_zero from algebra.group_with_zero.units.basic back to algebra.group_with_zero.basic. It was erroneously moved during the Great Splits.
Diff
@@ -330,8 +330,8 @@ variables [ring α] [decidable_rel ((∣) : α → α → Prop)]
 @[simp] protected lemma neg (a b : α) : multiplicity a (-b) = multiplicity a b :=
 part.ext' (by simp only [multiplicity, part_enat.find, dvd_neg])
   (λ h₁ h₂, part_enat.coe_inj.1 (by rw [part_enat.coe_get]; exact
-    eq.symm (unique ((dvd_neg _ _).2 (pow_multiplicity_dvd _))
-      (mt (dvd_neg _ _).1 (is_greatest' _ (lt_succ_self _))))))
+    eq.symm (unique (pow_multiplicity_dvd _).neg_right
+      (mt dvd_neg.1 (is_greatest' _ (lt_succ_self _))))))
 
 theorem int.nat_abs (a : ℕ) (b : ℤ) : multiplicity a b.nat_abs = multiplicity (a : ℤ) b :=
 begin
@@ -346,8 +346,8 @@ begin
   apply le_antisymm,
   { apply part_enat.le_of_lt_add_one,
     cases part_enat.ne_top_iff.mp (part_enat.ne_top_of_lt h) with k hk,
-    rw [hk], rw_mod_cast [multiplicity_lt_iff_neg_dvd], intro h_dvd,
-    rw [← dvd_add_iff_right] at h_dvd,
+    rw [hk], rw_mod_cast [multiplicity_lt_iff_neg_dvd, dvd_add_right],
+    intro h_dvd,
     apply multiplicity.is_greatest _ h_dvd, rw [hk], apply_mod_cast nat.lt_succ_self,
     rw [pow_dvd_iff_le_multiplicity, nat.cast_add, ← hk, nat.cast_one],
     exact part_enat.add_one_le_of_lt h },

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(first ported)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -75,16 +75,16 @@ theorem not_dvd_one_of_finite_one_right {a : α} : Finite a 1 → ¬a ∣ 1 := f
 #align multiplicity.not_dvd_one_of_finite_one_right multiplicity.not_dvd_one_of_finite_one_right
 -/
 
-#print multiplicity.Int.coe_nat_multiplicity /-
+#print multiplicity.Int.natCast_multiplicity /-
 @[norm_cast]
-theorem Int.coe_nat_multiplicity (a b : ℕ) : multiplicity (a : ℤ) (b : ℤ) = multiplicity a b :=
+theorem Int.natCast_multiplicity (a b : ℕ) : multiplicity (a : ℤ) (b : ℤ) = multiplicity a b :=
   by
   apply Part.ext'
   · repeat' rw [← finite_iff_dom, finite_def]
     norm_cast
   · intro h1 h2
     apply _root_.le_antisymm <;> · apply Nat.find_mono; norm_cast; simp
-#align multiplicity.int.coe_nat_multiplicity multiplicity.Int.coe_nat_multiplicity
+#align multiplicity.int.coe_nat_multiplicity multiplicity.Int.natCast_multiplicity
 -/
 
 #print multiplicity.not_finite_iff_forall /-
Diff
@@ -277,7 +277,7 @@ theorem exists_eq_pow_mul_and_not_dvd {a b : α} (hfin : Finite a b) :
   obtain ⟨c, hc⟩ := multiplicity.pow_multiplicity_dvd hfin
   refine' ⟨c, hc, _⟩
   rintro ⟨k, hk⟩
-  rw [hk, ← mul_assoc, ← pow_succ'] at hc
+  rw [hk, ← mul_assoc, ← pow_succ] at hc
   have h₁ : a ^ ((multiplicity a b).get hfin + 1) ∣ b := ⟨k, hc⟩
   exact (multiplicity.eq_coe_iff.1 (by simp)).2 h₁
 #align multiplicity.exists_eq_pow_mul_and_not_dvd multiplicity.exists_eq_pow_mul_and_not_dvd
@@ -632,7 +632,7 @@ theorem finite_mul_iff {p a b : α} (hp : Prime p) : Finite p (a * b) ↔ Finite
 #print multiplicity.finite_pow /-
 theorem finite_pow {p a : α} (hp : Prime p) : ∀ {k : ℕ} (ha : Finite p a), Finite p (a ^ k)
   | 0, ha => ⟨0, by simp [mt isUnit_iff_dvd_one.2 hp.2.1]⟩
-  | k + 1, ha => by rw [pow_succ] <;> exact finite_mul hp ha (finite_pow ha)
+  | k + 1, ha => by rw [pow_succ'] <;> exact finite_mul hp ha (finite_pow ha)
 #align multiplicity.finite_pow multiplicity.finite_pow
 -/
 
@@ -650,7 +650,7 @@ theorem multiplicity_self {a : α} (ha : ¬IsUnit a) (ha0 : a ≠ 0) : multiplic
             ⟨b,
               mul_left_cancel₀ ha0 <| by
                 clear _fun_match
-                simpa [pow_succ, mul_assoc] using hb⟩)⟩
+                simpa [pow_succ', mul_assoc] using hb⟩)⟩
 #align multiplicity.multiplicity_self multiplicity.multiplicity_self
 -/
 
@@ -736,7 +736,7 @@ protected theorem pow' {p a : α} (hp : Prime p) (ha : Finite p a) :
   | 0 => by simp [one_right hp.not_unit]
   | k + 1 =>
     by
-    have : multiplicity p (a ^ (k + 1)) = multiplicity p (a * a ^ k) := by rw [pow_succ]
+    have : multiplicity p (a ^ (k + 1)) = multiplicity p (a * a ^ k) := by rw [pow_succ']
     rw [get_eq_get_of_eq _ _ this, multiplicity.mul' hp, pow', add_mul, one_mul, add_comm]
 #align multiplicity.pow' multiplicity.pow'
 -/
@@ -744,7 +744,7 @@ protected theorem pow' {p a : α} (hp : Prime p) (ha : Finite p a) :
 #print multiplicity.pow /-
 theorem pow {p a : α} (hp : Prime p) : ∀ {k : ℕ}, multiplicity p (a ^ k) = k • multiplicity p a
   | 0 => by simp [one_right hp.not_unit]
-  | succ k => by simp [pow_succ, succ_nsmul, pow, multiplicity.mul hp]
+  | succ k => by simp [pow_succ', succ_nsmul', pow, multiplicity.mul hp]
 #align multiplicity.pow multiplicity.pow
 -/
 
Diff
@@ -128,14 +128,14 @@ theorem pow_multiplicity_dvd {a b : α} (h : Finite a b) : a ^ get (multiplicity
 
 #print multiplicity.is_greatest /-
 theorem is_greatest {a b : α} {m : ℕ} (hm : multiplicity a b < m) : ¬a ^ m ∣ b := fun h => by
-  rw [PartENat.lt_coe_iff] at hm  <;> exact Nat.find_spec hm.fst ((pow_dvd_pow _ hm.snd).trans h)
+  rw [PartENat.lt_coe_iff] at hm <;> exact Nat.find_spec hm.fst ((pow_dvd_pow _ hm.snd).trans h)
 #align multiplicity.is_greatest multiplicity.is_greatest
 -/
 
 #print multiplicity.is_greatest' /-
 theorem is_greatest' {a b : α} {m : ℕ} (h : Finite a b) (hm : get (multiplicity a b) h < m) :
     ¬a ^ m ∣ b :=
-  is_greatest (by rwa [← PartENat.coe_lt_coe, PartENat.natCast_get] at hm )
+  is_greatest (by rwa [← PartENat.coe_lt_coe, PartENat.natCast_get] at hm)
 #align multiplicity.is_greatest' multiplicity.is_greatest'
 -/
 
@@ -277,7 +277,7 @@ theorem exists_eq_pow_mul_and_not_dvd {a b : α} (hfin : Finite a b) :
   obtain ⟨c, hc⟩ := multiplicity.pow_multiplicity_dvd hfin
   refine' ⟨c, hc, _⟩
   rintro ⟨k, hk⟩
-  rw [hk, ← mul_assoc, ← pow_succ'] at hc 
+  rw [hk, ← mul_assoc, ← pow_succ'] at hc
   have h₁ : a ^ ((multiplicity a b).get hfin + 1) ∣ b := ⟨k, hc⟩
   exact (multiplicity.eq_coe_iff.1 (by simp)).2 h₁
 #align multiplicity.exists_eq_pow_mul_and_not_dvd multiplicity.exists_eq_pow_mul_and_not_dvd
@@ -472,7 +472,7 @@ theorem multiplicity_mk_eq_multiplicity
           ((PartENat.lt_coe_iff _ _).mpr (Exists.intro (finite_iff_dom.mp h) (Nat.lt_succ_self _)))
   · suffices ¬Finite (Associates.mk a) (Associates.mk b)
       by
-      rw [finite_iff_dom, PartENat.not_dom_iff_eq_top] at h this 
+      rw [finite_iff_dom, PartENat.not_dom_iff_eq_top] at h this
       rw [h, this]
     refine'
       not_finite_iff_forall.mpr fun n =>
@@ -585,7 +585,7 @@ theorem finite_mul_aux {p : α} (hp : Prime p) :
             (hx.symm ▸
               ⟨y,
                 mul_right_cancel₀ hp.1 <| by
-                  rw [tsub_add_cancel_of_le (succ_le_of_lt hn0)] at hy  <;>
+                  rw [tsub_add_cancel_of_le (succ_le_of_lt hn0)] at hy <;>
                     simp [hy, pow_add, mul_comm, mul_assoc, mul_left_comm]⟩)
         have : 1 ≤ n + m := le_trans hn0 (Nat.le_add_right n m)
         finite_mul_aux hpx hb
@@ -604,7 +604,7 @@ theorem finite_mul_aux {p : α} (hp : Prime p) :
           (hx.symm ▸
             ⟨y,
               mul_right_cancel₀ hp.1 <| by
-                rw [tsub_add_cancel_of_le (succ_le_of_lt hm0)] at hy  <;>
+                rw [tsub_add_cancel_of_le (succ_le_of_lt hm0)] at hy <;>
                   simp [hy, pow_add, mul_comm, mul_assoc, mul_left_comm]⟩)
       finite_mul_aux ha hpx
         ⟨s,
@@ -661,7 +661,7 @@ theorem get_multiplicity_self {a : α} (ha : Finite a a) : get (multiplicity a a
     (eq_coe_iff.2
       ⟨by simp, fun ⟨b, hb⟩ => by
         rw [← mul_one a, pow_add, pow_one, mul_assoc, mul_assoc,
-            mul_right_inj' (ne_zero_of_finite ha)] at hb  <;>
+            mul_right_inj' (ne_zero_of_finite ha)] at hb <;>
           exact
             mt isUnit_iff_dvd_one.2 (not_unit_of_finite ha) ⟨b, by clear _fun_match <;> simp_all⟩⟩)
 #align multiplicity.get_multiplicity_self multiplicity.get_multiplicity_self
@@ -795,12 +795,12 @@ open multiplicity
 theorem multiplicity_eq_zero_of_coprime {p a b : ℕ} (hp : p ≠ 1)
     (hle : multiplicity p a ≤ multiplicity p b) (hab : Nat.Coprime a b) : multiplicity p a = 0 :=
   by
-  rw [multiplicity_le_multiplicity_iff] at hle 
+  rw [multiplicity_le_multiplicity_iff] at hle
   rw [← nonpos_iff_eq_zero, ← not_lt, PartENat.pos_iff_one_le, ← Nat.cast_one, ←
     pow_dvd_iff_le_multiplicity]
   intro h
   have := Nat.dvd_gcd h (hle _ h)
-  rw [coprime.gcd_eq_one hab, Nat.dvd_one, pow_one] at this 
+  rw [coprime.gcd_eq_one hab, Nat.dvd_one, pow_one] at this
   exact hp this
 #align multiplicity_eq_zero_of_coprime multiplicity_eq_zero_of_coprime
 -/
Diff
@@ -720,7 +720,13 @@ protected theorem mul {p a b : α} (hp : Prime p) :
 
 #print multiplicity.Finset.prod /-
 theorem Finset.prod {β : Type _} {p : α} (hp : Prime p) (s : Finset β) (f : β → α) :
-    multiplicity p (∏ x in s, f x) = ∑ x in s, multiplicity p (f x) := by classical
+    multiplicity p (∏ x in s, f x) = ∑ x in s, multiplicity p (f x) := by
+  classical
+  induction' s using Finset.induction with a s has ih h
+  · simp only [Finset.sum_empty, Finset.prod_empty]
+    convert one_right hp.not_unit
+  · simp [has, ← ih]
+    convert multiplicity.mul hp
 #align multiplicity.finset.prod multiplicity.Finset.prod
 -/
 
Diff
@@ -720,13 +720,7 @@ protected theorem mul {p a b : α} (hp : Prime p) :
 
 #print multiplicity.Finset.prod /-
 theorem Finset.prod {β : Type _} {p : α} (hp : Prime p) (s : Finset β) (f : β → α) :
-    multiplicity p (∏ x in s, f x) = ∑ x in s, multiplicity p (f x) := by
-  classical
-  induction' s using Finset.induction with a s has ih h
-  · simp only [Finset.sum_empty, Finset.prod_empty]
-    convert one_right hp.not_unit
-  · simp [has, ← ih]
-    convert multiplicity.mul hp
+    multiplicity p (∏ x in s, f x) = ∑ x in s, multiplicity p (f x) := by classical
 #align multiplicity.finset.prod multiplicity.Finset.prod
 -/
 
Diff
@@ -179,10 +179,10 @@ theorem pow_dvd_iff_le_multiplicity {a b : α} {k : ℕ} :
 #align multiplicity.pow_dvd_iff_le_multiplicity multiplicity.pow_dvd_iff_le_multiplicity
 -/
 
-#print multiplicity.multiplicity_lt_iff_neg_dvd /-
-theorem multiplicity_lt_iff_neg_dvd {a b : α} {k : ℕ} :
+#print multiplicity.multiplicity_lt_iff_not_dvd /-
+theorem multiplicity_lt_iff_not_dvd {a b : α} {k : ℕ} :
     multiplicity a b < (k : PartENat) ↔ ¬a ^ k ∣ b := by rw [pow_dvd_iff_le_multiplicity, not_le]
-#align multiplicity.multiplicity_lt_iff_neg_dvd multiplicity.multiplicity_lt_iff_neg_dvd
+#align multiplicity.multiplicity_lt_iff_neg_dvd multiplicity.multiplicity_lt_iff_not_dvd
 -/
 
 #print multiplicity.eq_coe_iff /-
Diff
@@ -351,7 +351,7 @@ theorem finite_nat_iff {a b : ℕ} : Finite a b ↔ a ≠ 1 ∧ 0 < b :=
     le_zero_iff]
   exact
     ⟨fun h =>
-      or_iff_not_imp_right.2 fun hb =>
+      Classical.or_iff_not_imp_right.2 fun hb =>
         have ha : a ≠ 0 := fun ha => by simpa [ha] using h 1
         by_contradiction fun ha1 : a ≠ 1 =>
           have ha_gt_one : 1 < a := lt_of_not_ge fun ha' => by clear h; revert ha ha1; decide!
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2018 Robert Y. Lewis. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Robert Y. Lewis, Chris Hughes
 -/
-import Mathbin.Algebra.Associated
-import Mathbin.Algebra.BigOperators.Basic
-import Mathbin.RingTheory.Valuation.Basic
+import Algebra.Associated
+import Algebra.BigOperators.Basic
+import RingTheory.Valuation.Basic
 
 #align_import ring_theory.multiplicity from "leanprover-community/mathlib"@"e8638a0fcaf73e4500469f368ef9494e495099b3"
 
Diff
@@ -793,7 +793,7 @@ open multiplicity
 
 #print multiplicity_eq_zero_of_coprime /-
 theorem multiplicity_eq_zero_of_coprime {p a b : ℕ} (hp : p ≠ 1)
-    (hle : multiplicity p a ≤ multiplicity p b) (hab : Nat.coprime a b) : multiplicity p a = 0 :=
+    (hle : multiplicity p a ≤ multiplicity p b) (hab : Nat.Coprime a b) : multiplicity p a = 0 :=
   by
   rw [multiplicity_le_multiplicity_iff] at hle 
   rw [← nonpos_iff_eq_zero, ← not_lt, PartENat.pos_iff_one_le, ← Nat.cast_one, ←
Diff
@@ -360,7 +360,7 @@ theorem finite_nat_iff {a b : ℕ} : Finite a b ↔ a ≠ 1 ∧ 0 < b :=
 #align multiplicity.finite_nat_iff multiplicity.finite_nat_iff
 -/
 
-alias dvd_iff_multiplicity_pos ↔ _ _root_.has_dvd.dvd.multiplicity_pos
+alias ⟨_, _root_.has_dvd.dvd.multiplicity_pos⟩ := dvd_iff_multiplicity_pos
 #align has_dvd.dvd.multiplicity_pos Dvd.Dvd.multiplicity_pos
 
 end Monoid
@@ -414,7 +414,7 @@ theorem eq_of_associated_left {a b c : α} (h : Associated a b) :
 #align multiplicity.eq_of_associated_left multiplicity.eq_of_associated_left
 -/
 
-alias dvd_iff_multiplicity_pos ↔ _ _root_.has_dvd.dvd.multiplicity_pos
+alias ⟨_, _root_.has_dvd.dvd.multiplicity_pos⟩ := dvd_iff_multiplicity_pos
 #align has_dvd.dvd.multiplicity_pos Dvd.Dvd.multiplicity_pos
 
 end CommMonoid
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2018 Robert Y. Lewis. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Robert Y. Lewis, Chris Hughes
-
-! This file was ported from Lean 3 source module ring_theory.multiplicity
-! leanprover-community/mathlib commit e8638a0fcaf73e4500469f368ef9494e495099b3
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.Associated
 import Mathbin.Algebra.BigOperators.Basic
 import Mathbin.RingTheory.Valuation.Basic
 
+#align_import ring_theory.multiplicity from "leanprover-community/mathlib"@"e8638a0fcaf73e4500469f368ef9494e495099b3"
+
 /-!
 # Multiplicity of a divisor
 
Diff
@@ -72,10 +72,13 @@ theorem finite_def {a b : α} : Finite a b ↔ ∃ n : ℕ, ¬a ^ (n + 1) ∣ b
 #align multiplicity.finite_def multiplicity.finite_def
 -/
 
+#print multiplicity.not_dvd_one_of_finite_one_right /-
 theorem not_dvd_one_of_finite_one_right {a : α} : Finite a 1 → ¬a ∣ 1 := fun ⟨n, hn⟩ ⟨d, hd⟩ =>
   hn ⟨d ^ (n + 1), (pow_mul_pow_eq_one (n + 1) hd.symm).symm⟩
 #align multiplicity.not_dvd_one_of_finite_one_right multiplicity.not_dvd_one_of_finite_one_right
+-/
 
+#print multiplicity.Int.coe_nat_multiplicity /-
 @[norm_cast]
 theorem Int.coe_nat_multiplicity (a b : ℕ) : multiplicity (a : ℤ) (b : ℤ) = multiplicity a b :=
   by
@@ -85,6 +88,7 @@ theorem Int.coe_nat_multiplicity (a b : ℕ) : multiplicity (a : ℤ) (b : ℤ)
   · intro h1 h2
     apply _root_.le_antisymm <;> · apply Nat.find_mono; norm_cast; simp
 #align multiplicity.int.coe_nat_multiplicity multiplicity.Int.coe_nat_multiplicity
+-/
 
 #print multiplicity.not_finite_iff_forall /-
 theorem not_finite_iff_forall {a b : α} : ¬Finite a b ↔ ∀ n : ℕ, a ^ n ∣ b :=
@@ -102,18 +106,22 @@ theorem not_unit_of_finite {a b : α} (h : Finite a b) : ¬IsUnit a :=
 #align multiplicity.not_unit_of_finite multiplicity.not_unit_of_finite
 -/
 
+#print multiplicity.finite_of_finite_mul_right /-
 theorem finite_of_finite_mul_right {a b c : α} : Finite a (b * c) → Finite a b := fun ⟨n, hn⟩ =>
   ⟨n, fun h => hn (h.trans (dvd_mul_right _ _))⟩
 #align multiplicity.finite_of_finite_mul_right multiplicity.finite_of_finite_mul_right
+-/
 
 variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
+#print multiplicity.pow_dvd_of_le_multiplicity /-
 theorem pow_dvd_of_le_multiplicity {a b : α} {k : ℕ} :
     (k : PartENat) ≤ multiplicity a b → a ^ k ∣ b := by rw [← PartENat.some_eq_natCast];
   exact
     Nat.casesOn k (fun _ => by rw [pow_zero]; exact one_dvd _) fun k ⟨h₁, h₂⟩ =>
       by_contradiction fun hk => Nat.find_min _ (lt_of_succ_le (h₂ ⟨k, hk⟩)) hk
 #align multiplicity.pow_dvd_of_le_multiplicity multiplicity.pow_dvd_of_le_multiplicity
+-/
 
 #print multiplicity.pow_multiplicity_dvd /-
 theorem pow_multiplicity_dvd {a b : α} (h : Finite a b) : a ^ get (multiplicity a b) h ∣ b :=
@@ -121,9 +129,11 @@ theorem pow_multiplicity_dvd {a b : α} (h : Finite a b) : a ^ get (multiplicity
 #align multiplicity.pow_multiplicity_dvd multiplicity.pow_multiplicity_dvd
 -/
 
+#print multiplicity.is_greatest /-
 theorem is_greatest {a b : α} {m : ℕ} (hm : multiplicity a b < m) : ¬a ^ m ∣ b := fun h => by
   rw [PartENat.lt_coe_iff] at hm  <;> exact Nat.find_spec hm.fst ((pow_dvd_pow _ hm.snd).trans h)
 #align multiplicity.is_greatest multiplicity.is_greatest
+-/
 
 #print multiplicity.is_greatest' /-
 theorem is_greatest' {a b : α} {m : ℕ} (h : Finite a b) (hm : get (multiplicity a b) h < m) :
@@ -140,6 +150,7 @@ theorem pos_of_dvd {a b : α} (hfin : Finite a b) (hdiv : a ∣ b) : 0 < (multip
 #align multiplicity.pos_of_dvd multiplicity.pos_of_dvd
 -/
 
+#print multiplicity.unique /-
 theorem unique {a b : α} {k : ℕ} (hk : a ^ k ∣ b) (hsucc : ¬a ^ (k + 1) ∣ b) :
     (k : PartENat) = multiplicity a b :=
   le_antisymm (le_of_not_gt fun hk' => is_greatest hk' hk) <|
@@ -148,6 +159,7 @@ theorem unique {a b : α} {k : ℕ} (hk : a ^ k ∣ b) (hsucc : ¬a ^ (k + 1) 
     rw [PartENat.le_coe_iff]
     exact ⟨this, Nat.find_min' _ hsucc⟩
 #align multiplicity.unique multiplicity.unique
+-/
 
 #print multiplicity.unique' /-
 theorem unique' {a b : α} {k : ℕ} (hk : a ^ k ∣ b) (hsucc : ¬a ^ (k + 1) ∣ b) :
@@ -156,20 +168,27 @@ theorem unique' {a b : α} {k : ℕ} (hk : a ^ k ∣ b) (hsucc : ¬a ^ (k + 1) 
 #align multiplicity.unique' multiplicity.unique'
 -/
 
+#print multiplicity.le_multiplicity_of_pow_dvd /-
 theorem le_multiplicity_of_pow_dvd {a b : α} {k : ℕ} (hk : a ^ k ∣ b) :
     (k : PartENat) ≤ multiplicity a b :=
   le_of_not_gt fun hk' => is_greatest hk' hk
 #align multiplicity.le_multiplicity_of_pow_dvd multiplicity.le_multiplicity_of_pow_dvd
+-/
 
+#print multiplicity.pow_dvd_iff_le_multiplicity /-
 theorem pow_dvd_iff_le_multiplicity {a b : α} {k : ℕ} :
     a ^ k ∣ b ↔ (k : PartENat) ≤ multiplicity a b :=
   ⟨le_multiplicity_of_pow_dvd, pow_dvd_of_le_multiplicity⟩
 #align multiplicity.pow_dvd_iff_le_multiplicity multiplicity.pow_dvd_iff_le_multiplicity
+-/
 
+#print multiplicity.multiplicity_lt_iff_neg_dvd /-
 theorem multiplicity_lt_iff_neg_dvd {a b : α} {k : ℕ} :
     multiplicity a b < (k : PartENat) ↔ ¬a ^ k ∣ b := by rw [pow_dvd_iff_le_multiplicity, not_le]
 #align multiplicity.multiplicity_lt_iff_neg_dvd multiplicity.multiplicity_lt_iff_neg_dvd
+-/
 
+#print multiplicity.eq_coe_iff /-
 theorem eq_coe_iff {a b : α} {n : ℕ} :
     multiplicity a b = (n : PartENat) ↔ a ^ n ∣ b ∧ ¬a ^ (n + 1) ∣ b :=
   by
@@ -182,6 +201,7 @@ theorem eq_coe_iff {a b : α} {n : ℕ} :
           IsGreatest (by rw [PartENat.lt_coe_iff]; exact ⟨h₁, lt_succ_self _⟩)⟩,
       fun h => eq_some_iff.2 ⟨⟨n, h.2⟩, Eq.symm <| unique' h.1 h.2⟩⟩
 #align multiplicity.eq_coe_iff multiplicity.eq_coe_iff
+-/
 
 #print multiplicity.eq_top_iff /-
 theorem eq_top_iff {a b : α} : multiplicity a b = ⊤ ↔ ∀ n : ℕ, a ^ n ∣ b :=
@@ -200,17 +220,21 @@ theorem isUnit_left {a : α} (b : α) (ha : IsUnit a) : multiplicity a b = ⊤ :
 #align multiplicity.is_unit_left multiplicity.isUnit_left
 -/
 
+#print multiplicity.one_left /-
 @[simp]
 theorem one_left (b : α) : multiplicity 1 b = ⊤ :=
   isUnit_left b isUnit_one
 #align multiplicity.one_left multiplicity.one_left
+-/
 
+#print multiplicity.get_one_right /-
 @[simp]
 theorem get_one_right {a : α} (ha : Finite a 1) : get (multiplicity a 1) ha = 0 :=
   by
   rw [PartENat.get_eq_iff_eq_coe, eq_coe_iff, pow_zero]
   simp [not_dvd_one_of_finite_one_right ha]
 #align multiplicity.get_one_right multiplicity.get_one_right
+-/
 
 #print multiplicity.unit_left /-
 @[simp]
@@ -249,6 +273,7 @@ theorem lt_top_iff_finite {a b : α} : multiplicity a b < ⊤ ↔ Finite a b :=
 #align multiplicity.lt_top_iff_finite multiplicity.lt_top_iff_finite
 -/
 
+#print multiplicity.exists_eq_pow_mul_and_not_dvd /-
 theorem exists_eq_pow_mul_and_not_dvd {a b : α} (hfin : Finite a b) :
     ∃ c : α, b = a ^ (multiplicity a b).get hfin * c ∧ ¬a ∣ c :=
   by
@@ -259,6 +284,7 @@ theorem exists_eq_pow_mul_and_not_dvd {a b : α} (hfin : Finite a b) :
   have h₁ : a ^ ((multiplicity a b).get hfin + 1) ∣ b := ⟨k, hc⟩
   exact (multiplicity.eq_coe_iff.1 (by simp)).2 h₁
 #align multiplicity.exists_eq_pow_mul_and_not_dvd multiplicity.exists_eq_pow_mul_and_not_dvd
+-/
 
 open scoped Classical
 
@@ -346,9 +372,11 @@ section CommMonoid
 
 variable [CommMonoid α]
 
+#print multiplicity.finite_of_finite_mul_left /-
 theorem finite_of_finite_mul_left {a b c : α} : Finite a (b * c) → Finite a c := by
   rw [mul_comm] <;> exact finite_of_finite_mul_right
 #align multiplicity.finite_of_finite_mul_left multiplicity.finite_of_finite_mul_left
+-/
 
 variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
@@ -360,9 +388,11 @@ theorem isUnit_right {a b : α} (ha : ¬IsUnit a) (hb : IsUnit b) : multiplicity
 #align multiplicity.is_unit_right multiplicity.isUnit_right
 -/
 
+#print multiplicity.one_right /-
 theorem one_right {a : α} (ha : ¬IsUnit a) : multiplicity a 1 = 0 :=
   isUnit_right ha isUnit_one
 #align multiplicity.one_right multiplicity.one_right
+-/
 
 #print multiplicity.unit_right /-
 theorem unit_right {a : α} (ha : ¬IsUnit a) (u : αˣ) : multiplicity a u = 0 :=
@@ -396,22 +426,28 @@ section MonoidWithZero
 
 variable [MonoidWithZero α]
 
+#print multiplicity.ne_zero_of_finite /-
 theorem ne_zero_of_finite {a b : α} (h : Finite a b) : b ≠ 0 :=
   let ⟨n, hn⟩ := h
   fun hb => by simpa [hb] using hn
 #align multiplicity.ne_zero_of_finite multiplicity.ne_zero_of_finite
+-/
 
 variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
+#print multiplicity.zero /-
 @[simp]
 protected theorem zero (a : α) : multiplicity a 0 = ⊤ :=
   Part.eq_none_iff.2 fun n ⟨⟨k, hk⟩, _⟩ => hk (dvd_zero _)
 #align multiplicity.zero multiplicity.zero
+-/
 
+#print multiplicity.multiplicity_zero_eq_zero_of_ne_zero /-
 @[simp]
 theorem multiplicity_zero_eq_zero_of_ne_zero (a : α) (ha : a ≠ 0) : multiplicity 0 a = 0 :=
   multiplicity.multiplicity_eq_zero.2 <| mt zero_dvd_iff.1 ha
 #align multiplicity.multiplicity_zero_eq_zero_of_ne_zero multiplicity.multiplicity_zero_eq_zero_of_ne_zero
+-/
 
 end MonoidWithZero
 
@@ -421,6 +457,7 @@ variable [CommMonoidWithZero α]
 
 variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
+#print multiplicity.multiplicity_mk_eq_multiplicity /-
 theorem multiplicity_mk_eq_multiplicity
     [DecidableRel ((· ∣ ·) : Associates α → Associates α → Prop)] {a b : α} :
     multiplicity (Associates.mk a) (Associates.mk b) = multiplicity a b :=
@@ -446,6 +483,7 @@ theorem multiplicity_mk_eq_multiplicity
         rw [← Associates.mk_pow, Associates.mk_dvd_mk]
         exact not_finite_iff_forall.mp h n
 #align multiplicity.multiplicity_mk_eq_multiplicity multiplicity.multiplicity_mk_eq_multiplicity
+-/
 
 end CommMonoidWithZero
 
@@ -453,6 +491,7 @@ section Semiring
 
 variable [Semiring α] [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
+#print multiplicity.min_le_multiplicity_add /-
 theorem min_le_multiplicity_add {p a b : α} :
     min (multiplicity p a) (multiplicity p b) ≤ multiplicity p (a + b) :=
   (le_total (multiplicity p a) (multiplicity p b)).elim
@@ -463,6 +502,7 @@ theorem min_le_multiplicity_add {p a b : α} :
     rw [min_eq_right h, multiplicity_le_multiplicity_iff] <;>
       exact fun n hn => dvd_add (multiplicity_le_multiplicity_iff.1 h n hn) hn
 #align multiplicity.min_le_multiplicity_add multiplicity.min_le_multiplicity_add
+-/
 
 end Semiring
 
@@ -470,6 +510,7 @@ section Ring
 
 variable [Ring α] [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
+#print multiplicity.neg /-
 @[simp]
 protected theorem neg (a b : α) : multiplicity a (-b) = multiplicity a b :=
   Part.ext' (by simp only [multiplicity, PartENat.find, dvd_neg]) fun h₁ h₂ =>
@@ -481,14 +522,18 @@ protected theorem neg (a b : α) : multiplicity a (-b) = multiplicity a b :=
               (Unique (pow_multiplicity_dvd _).neg_right
                 (mt dvd_neg.1 (is_greatest' _ (lt_succ_self _)))))
 #align multiplicity.neg multiplicity.neg
+-/
 
+#print multiplicity.Int.natAbs /-
 theorem Int.natAbs (a : ℕ) (b : ℤ) : multiplicity a b.natAbs = multiplicity (a : ℤ) b :=
   by
   cases' Int.natAbs_eq b with h h <;> conv_rhs => rw [h]
   · rw [int.coe_nat_multiplicity]
   · rw [multiplicity.neg, int.coe_nat_multiplicity]
 #align multiplicity.int.nat_abs multiplicity.Int.natAbs
+-/
 
+#print multiplicity.multiplicity_add_of_gt /-
 theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity p a) :
     multiplicity p (a + b) = multiplicity p b :=
   by
@@ -502,12 +547,16 @@ theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity
     exact PartENat.add_one_le_of_lt h
   · convert min_le_multiplicity_add; rw [min_eq_right (le_of_lt h)]
 #align multiplicity.multiplicity_add_of_gt multiplicity.multiplicity_add_of_gt
+-/
 
+#print multiplicity.multiplicity_sub_of_gt /-
 theorem multiplicity_sub_of_gt {p a b : α} (h : multiplicity p b < multiplicity p a) :
     multiplicity p (a - b) = multiplicity p b := by
   rw [sub_eq_add_neg, multiplicity_add_of_gt] <;> rwa [multiplicity.neg]
 #align multiplicity.multiplicity_sub_of_gt multiplicity.multiplicity_sub_of_gt
+-/
 
+#print multiplicity.multiplicity_add_eq_min /-
 theorem multiplicity_add_eq_min {p a b : α} (h : multiplicity p a ≠ multiplicity p b) :
     multiplicity p (a + b) = min (multiplicity p a) (multiplicity p b) :=
   by
@@ -516,6 +565,7 @@ theorem multiplicity_add_eq_min {p a b : α} (h : multiplicity p a ≠ multiplic
   · contradiction
   · rw [multiplicity_add_of_gt hab, min_eq_right]; exact le_of_lt hab
 #align multiplicity.multiplicity_add_eq_min multiplicity.multiplicity_add_eq_min
+-/
 
 end Ring
 
@@ -523,6 +573,7 @@ section CancelCommMonoidWithZero
 
 variable [CancelCommMonoidWithZero α]
 
+#print multiplicity.finite_mul_aux /-
 theorem finite_mul_aux {p : α} (hp : Prime p) :
     ∀ {n m : ℕ} {a b : α}, ¬p ^ (n + 1) ∣ a → ¬p ^ (m + 1) ∣ b → ¬p ^ (n + m + 1) ∣ a * b
   | n, m => fun a b ha hb ⟨s, hs⟩ =>
@@ -566,15 +617,20 @@ theorem finite_mul_aux {p : α} (hp : Prime p) :
               clear _fun_match _fun_match finite_mul_aux
               simp_all [mul_comm, mul_assoc, mul_left_comm, pow_add])⟩
 #align multiplicity.finite_mul_aux multiplicity.finite_mul_aux
+-/
 
+#print multiplicity.finite_mul /-
 theorem finite_mul {p a b : α} (hp : Prime p) : Finite p a → Finite p b → Finite p (a * b) :=
   fun ⟨n, hn⟩ ⟨m, hm⟩ => ⟨n + m, finite_mul_aux hp hn hm⟩
 #align multiplicity.finite_mul multiplicity.finite_mul
+-/
 
+#print multiplicity.finite_mul_iff /-
 theorem finite_mul_iff {p a b : α} (hp : Prime p) : Finite p (a * b) ↔ Finite p a ∧ Finite p b :=
   ⟨fun h => ⟨finite_of_finite_mul_right h, finite_of_finite_mul_left h⟩, fun h =>
     finite_mul hp h.1 h.2⟩
 #align multiplicity.finite_mul_iff multiplicity.finite_mul_iff
+-/
 
 #print multiplicity.finite_pow /-
 theorem finite_pow {p a : α} (hp : Prime p) : ∀ {k : ℕ} (ha : Finite p a), Finite p (a ^ k)
@@ -585,6 +641,7 @@ theorem finite_pow {p a : α} (hp : Prime p) : ∀ {k : ℕ} (ha : Finite p a),
 
 variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
+#print multiplicity.multiplicity_self /-
 @[simp]
 theorem multiplicity_self {a : α} (ha : ¬IsUnit a) (ha0 : a ≠ 0) : multiplicity a a = 1 := by
   rw [← Nat.cast_one];
@@ -598,6 +655,7 @@ theorem multiplicity_self {a : α} (ha : ¬IsUnit a) (ha0 : a ≠ 0) : multiplic
                 clear _fun_match
                 simpa [pow_succ, mul_assoc] using hb⟩)⟩
 #align multiplicity.multiplicity_self multiplicity.multiplicity_self
+-/
 
 #print multiplicity.get_multiplicity_self /-
 @[simp]
@@ -612,6 +670,7 @@ theorem get_multiplicity_self {a : α} (ha : Finite a a) : get (multiplicity a a
 #align multiplicity.get_multiplicity_self multiplicity.get_multiplicity_self
 -/
 
+#print multiplicity.mul' /-
 protected theorem mul' {p a b : α} (hp : Prime p) (h : (multiplicity p (a * b)).Dom) :
     get (multiplicity p (a * b)) h =
       get (multiplicity p a) ((finite_mul_iff hp).1 h).1 +
@@ -643,9 +702,11 @@ protected theorem mul' {p a b : α} (hp : Prime p) (h : (multiplicity p (a * b))
       (_root_.succ_dvd_or_succ_dvd_of_succ_sum_dvd_mul hp hdiva hdivb h)
   rw [← PartENat.natCast_inj, PartENat.natCast_get, eq_coe_iff] <;> exact ⟨hdiv, hsucc⟩
 #align multiplicity.mul' multiplicity.mul'
+-/
 
 open scoped Classical
 
+#print multiplicity.mul /-
 protected theorem mul {p a b : α} (hp : Prime p) :
     multiplicity p (a * b) = multiplicity p a + multiplicity p b :=
   if h : Finite p a ∧ Finite p b then by
@@ -658,6 +719,7 @@ protected theorem mul {p a b : α} (hp : Prime p) :
     rw [eq_top_iff_not_finite.2 (mt (finite_mul_iff hp).1 h)]
     cases' not_and_or.1 h with h h <;> simp [eq_top_iff_not_finite.2 h]
 #align multiplicity.mul multiplicity.mul
+-/
 
 #print multiplicity.Finset.prod /-
 theorem Finset.prod {β : Type _} {p : α} (hp : Prime p) (s : Finset β) (f : β → α) :
@@ -682,20 +744,26 @@ protected theorem pow' {p a : α} (hp : Prime p) (ha : Finite p a) :
 #align multiplicity.pow' multiplicity.pow'
 -/
 
+#print multiplicity.pow /-
 theorem pow {p a : α} (hp : Prime p) : ∀ {k : ℕ}, multiplicity p (a ^ k) = k • multiplicity p a
   | 0 => by simp [one_right hp.not_unit]
   | succ k => by simp [pow_succ, succ_nsmul, pow, multiplicity.mul hp]
 #align multiplicity.pow multiplicity.pow
+-/
 
+#print multiplicity.multiplicity_pow_self /-
 theorem multiplicity_pow_self {p : α} (h0 : p ≠ 0) (hu : ¬IsUnit p) (n : ℕ) :
     multiplicity p (p ^ n) = n := by rw [eq_coe_iff]; use dvd_rfl; rw [pow_dvd_pow_iff h0 hu];
   apply Nat.not_succ_le_self
 #align multiplicity.multiplicity_pow_self multiplicity.multiplicity_pow_self
+-/
 
+#print multiplicity.multiplicity_pow_self_of_prime /-
 theorem multiplicity_pow_self_of_prime {p : α} (hp : Prime p) (n : ℕ) :
     multiplicity p (p ^ n) = n :=
   multiplicity_pow_self hp.NeZero hp.not_unit n
 #align multiplicity.multiplicity_pow_self_of_prime multiplicity.multiplicity_pow_self_of_prime
+-/
 
 end CancelCommMonoidWithZero
 
@@ -703,16 +771,20 @@ section Valuation
 
 variable {R : Type _} [CommRing R] [IsDomain R] {p : R} [DecidableRel (Dvd.Dvd : R → R → Prop)]
 
+#print multiplicity.addValuation /-
 /-- `multiplicity` of a prime inan integral domain as an additive valuation to `part_enat`. -/
 noncomputable def addValuation (hp : Prime p) : AddValuation R PartENat :=
   AddValuation.of (multiplicity p) (multiplicity.zero _) (one_right hp.not_unit)
     (fun _ _ => min_le_multiplicity_add) fun a b => multiplicity.mul hp
 #align multiplicity.add_valuation multiplicity.addValuation
+-/
 
+#print multiplicity.addValuation_apply /-
 @[simp]
 theorem addValuation_apply {hp : Prime p} {r : R} : addValuation hp r = multiplicity p r :=
   rfl
 #align multiplicity.add_valuation_apply multiplicity.addValuation_apply
+-/
 
 end Valuation
 
@@ -722,6 +794,7 @@ section Nat
 
 open multiplicity
 
+#print multiplicity_eq_zero_of_coprime /-
 theorem multiplicity_eq_zero_of_coprime {p a b : ℕ} (hp : p ≠ 1)
     (hle : multiplicity p a ≤ multiplicity p b) (hab : Nat.coprime a b) : multiplicity p a = 0 :=
   by
@@ -733,6 +806,7 @@ theorem multiplicity_eq_zero_of_coprime {p a b : ℕ} (hp : p ≠ 1)
   rw [coprime.gcd_eq_one hab, Nat.dvd_one, pow_one] at this 
   exact hp this
 #align multiplicity_eq_zero_of_coprime multiplicity_eq_zero_of_coprime
+-/
 
 end Nat
 
Diff
@@ -663,11 +663,11 @@ protected theorem mul {p a b : α} (hp : Prime p) :
 theorem Finset.prod {β : Type _} {p : α} (hp : Prime p) (s : Finset β) (f : β → α) :
     multiplicity p (∏ x in s, f x) = ∑ x in s, multiplicity p (f x) := by
   classical
-    induction' s using Finset.induction with a s has ih h
-    · simp only [Finset.sum_empty, Finset.prod_empty]
-      convert one_right hp.not_unit
-    · simp [has, ← ih]
-      convert multiplicity.mul hp
+  induction' s using Finset.induction with a s has ih h
+  · simp only [Finset.sum_empty, Finset.prod_empty]
+    convert one_right hp.not_unit
+  · simp [has, ← ih]
+    convert multiplicity.mul hp
 #align multiplicity.finset.prod multiplicity.Finset.prod
 -/
 
Diff
@@ -122,13 +122,13 @@ theorem pow_multiplicity_dvd {a b : α} (h : Finite a b) : a ^ get (multiplicity
 -/
 
 theorem is_greatest {a b : α} {m : ℕ} (hm : multiplicity a b < m) : ¬a ^ m ∣ b := fun h => by
-  rw [PartENat.lt_coe_iff] at hm <;> exact Nat.find_spec hm.fst ((pow_dvd_pow _ hm.snd).trans h)
+  rw [PartENat.lt_coe_iff] at hm  <;> exact Nat.find_spec hm.fst ((pow_dvd_pow _ hm.snd).trans h)
 #align multiplicity.is_greatest multiplicity.is_greatest
 
 #print multiplicity.is_greatest' /-
 theorem is_greatest' {a b : α} {m : ℕ} (h : Finite a b) (hm : get (multiplicity a b) h < m) :
     ¬a ^ m ∣ b :=
-  is_greatest (by rwa [← PartENat.coe_lt_coe, PartENat.natCast_get] at hm)
+  is_greatest (by rwa [← PartENat.coe_lt_coe, PartENat.natCast_get] at hm )
 #align multiplicity.is_greatest' multiplicity.is_greatest'
 -/
 
@@ -255,7 +255,7 @@ theorem exists_eq_pow_mul_and_not_dvd {a b : α} (hfin : Finite a b) :
   obtain ⟨c, hc⟩ := multiplicity.pow_multiplicity_dvd hfin
   refine' ⟨c, hc, _⟩
   rintro ⟨k, hk⟩
-  rw [hk, ← mul_assoc, ← pow_succ'] at hc
+  rw [hk, ← mul_assoc, ← pow_succ'] at hc 
   have h₁ : a ^ ((multiplicity a b).get hfin + 1) ∣ b := ⟨k, hc⟩
   exact (multiplicity.eq_coe_iff.1 (by simp)).2 h₁
 #align multiplicity.exists_eq_pow_mul_and_not_dvd multiplicity.exists_eq_pow_mul_and_not_dvd
@@ -438,7 +438,7 @@ theorem multiplicity_mk_eq_multiplicity
           ((PartENat.lt_coe_iff _ _).mpr (Exists.intro (finite_iff_dom.mp h) (Nat.lt_succ_self _)))
   · suffices ¬Finite (Associates.mk a) (Associates.mk b)
       by
-      rw [finite_iff_dom, PartENat.not_dom_iff_eq_top] at h this
+      rw [finite_iff_dom, PartENat.not_dom_iff_eq_top] at h this 
       rw [h, this]
     refine'
       not_finite_iff_forall.mpr fun n =>
@@ -537,7 +537,7 @@ theorem finite_mul_aux {p : α} (hp : Prime p) :
             (hx.symm ▸
               ⟨y,
                 mul_right_cancel₀ hp.1 <| by
-                  rw [tsub_add_cancel_of_le (succ_le_of_lt hn0)] at hy <;>
+                  rw [tsub_add_cancel_of_le (succ_le_of_lt hn0)] at hy  <;>
                     simp [hy, pow_add, mul_comm, mul_assoc, mul_left_comm]⟩)
         have : 1 ≤ n + m := le_trans hn0 (Nat.le_add_right n m)
         finite_mul_aux hpx hb
@@ -556,7 +556,7 @@ theorem finite_mul_aux {p : α} (hp : Prime p) :
           (hx.symm ▸
             ⟨y,
               mul_right_cancel₀ hp.1 <| by
-                rw [tsub_add_cancel_of_le (succ_le_of_lt hm0)] at hy <;>
+                rw [tsub_add_cancel_of_le (succ_le_of_lt hm0)] at hy  <;>
                   simp [hy, pow_add, mul_comm, mul_assoc, mul_left_comm]⟩)
       finite_mul_aux ha hpx
         ⟨s,
@@ -606,7 +606,7 @@ theorem get_multiplicity_self {a : α} (ha : Finite a a) : get (multiplicity a a
     (eq_coe_iff.2
       ⟨by simp, fun ⟨b, hb⟩ => by
         rw [← mul_one a, pow_add, pow_one, mul_assoc, mul_assoc,
-            mul_right_inj' (ne_zero_of_finite ha)] at hb <;>
+            mul_right_inj' (ne_zero_of_finite ha)] at hb  <;>
           exact
             mt isUnit_iff_dvd_one.2 (not_unit_of_finite ha) ⟨b, by clear _fun_match <;> simp_all⟩⟩)
 #align multiplicity.get_multiplicity_self multiplicity.get_multiplicity_self
@@ -725,12 +725,12 @@ open multiplicity
 theorem multiplicity_eq_zero_of_coprime {p a b : ℕ} (hp : p ≠ 1)
     (hle : multiplicity p a ≤ multiplicity p b) (hab : Nat.coprime a b) : multiplicity p a = 0 :=
   by
-  rw [multiplicity_le_multiplicity_iff] at hle
+  rw [multiplicity_le_multiplicity_iff] at hle 
   rw [← nonpos_iff_eq_zero, ← not_lt, PartENat.pos_iff_one_le, ← Nat.cast_one, ←
     pow_dvd_iff_le_multiplicity]
   intro h
   have := Nat.dvd_gcd h (hle _ h)
-  rw [coprime.gcd_eq_one hab, Nat.dvd_one, pow_one] at this
+  rw [coprime.gcd_eq_one hab, Nat.dvd_one, pow_one] at this 
   exact hp this
 #align multiplicity_eq_zero_of_coprime multiplicity_eq_zero_of_coprime
 
Diff
@@ -34,7 +34,7 @@ variable {α : Type _}
 
 open Nat Part
 
-open BigOperators
+open scoped BigOperators
 
 #print multiplicity /-
 /-- `multiplicity a b` returns the largest natural number `n` such that
@@ -243,9 +243,11 @@ theorem ne_top_iff_finite {a b : α} : multiplicity a b ≠ ⊤ ↔ Finite a b :
 #align multiplicity.ne_top_iff_finite multiplicity.ne_top_iff_finite
 -/
 
+#print multiplicity.lt_top_iff_finite /-
 theorem lt_top_iff_finite {a b : α} : multiplicity a b < ⊤ ↔ Finite a b := by
   rw [lt_top_iff_ne_top, ne_top_iff_finite]
 #align multiplicity.lt_top_iff_finite multiplicity.lt_top_iff_finite
+-/
 
 theorem exists_eq_pow_mul_and_not_dvd {a b : α} (hfin : Finite a b) :
     ∃ c : α, b = a ^ (multiplicity a b).get hfin * c ∧ ¬a ∣ c :=
@@ -258,7 +260,7 @@ theorem exists_eq_pow_mul_and_not_dvd {a b : α} (hfin : Finite a b) :
   exact (multiplicity.eq_coe_iff.1 (by simp)).2 h₁
 #align multiplicity.exists_eq_pow_mul_and_not_dvd multiplicity.exists_eq_pow_mul_and_not_dvd
 
-open Classical
+open scoped Classical
 
 #print multiplicity.multiplicity_le_multiplicity_iff /-
 theorem multiplicity_le_multiplicity_iff {a b c d : α} :
@@ -299,13 +301,16 @@ theorem eq_of_associated_right {a b c : α} (h : Associated b c) :
 #align multiplicity.eq_of_associated_right multiplicity.eq_of_associated_right
 -/
 
+#print multiplicity.dvd_of_multiplicity_pos /-
 theorem dvd_of_multiplicity_pos {a b : α} (h : (0 : PartENat) < multiplicity a b) : a ∣ b :=
   by
   rw [← pow_one a]
   apply pow_dvd_of_le_multiplicity
   simpa only [Nat.cast_one, PartENat.pos_iff_one_le] using h
 #align multiplicity.dvd_of_multiplicity_pos multiplicity.dvd_of_multiplicity_pos
+-/
 
+#print multiplicity.dvd_iff_multiplicity_pos /-
 theorem dvd_iff_multiplicity_pos {a b : α} : (0 : PartENat) < multiplicity a b ↔ a ∣ b :=
   ⟨dvd_of_multiplicity_pos, fun hdvd =>
     lt_of_le_of_ne (zero_le _) fun heq =>
@@ -314,6 +319,7 @@ theorem dvd_iff_multiplicity_pos {a b : α} : (0 : PartENat) < multiplicity a b
           simpa only [HEq, Nat.cast_zero] using part_enat.coe_lt_coe.mpr zero_lt_one)
         (by rwa [pow_one a])⟩
 #align multiplicity.dvd_iff_multiplicity_pos multiplicity.dvd_iff_multiplicity_pos
+-/
 
 #print multiplicity.finite_nat_iff /-
 theorem finite_nat_iff {a b : ℕ} : Finite a b ↔ a ≠ 1 ∧ 0 < b :=
@@ -364,7 +370,7 @@ theorem unit_right {a : α} (ha : ¬IsUnit a) (u : αˣ) : multiplicity a u = 0
 #align multiplicity.unit_right multiplicity.unit_right
 -/
 
-open Classical
+open scoped Classical
 
 #print multiplicity.multiplicity_le_multiplicity_of_dvd_left /-
 theorem multiplicity_le_multiplicity_of_dvd_left {a b c : α} (hdvd : a ∣ b) :
@@ -638,7 +644,7 @@ protected theorem mul' {p a b : α} (hp : Prime p) (h : (multiplicity p (a * b))
   rw [← PartENat.natCast_inj, PartENat.natCast_get, eq_coe_iff] <;> exact ⟨hdiv, hsucc⟩
 #align multiplicity.mul' multiplicity.mul'
 
-open Classical
+open scoped Classical
 
 protected theorem mul {p a b : α} (hp : Prime p) :
     multiplicity p (a * b) = multiplicity p a + multiplicity p b :=
Diff
@@ -72,22 +72,10 @@ theorem finite_def {a b : α} : Finite a b ↔ ∃ n : ℕ, ¬a ^ (n + 1) ∣ b
 #align multiplicity.finite_def multiplicity.finite_def
 -/
 
-/- warning: multiplicity.not_dvd_one_of_finite_one_right -> multiplicity.not_dvd_one_of_finite_one_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] {a : α}, (multiplicity.Finite.{u1} α _inst_1 a (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (MulOneClass.toHasOne.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1)))))) -> (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) a (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (MulOneClass.toHasOne.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1)))))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] {a : α}, (multiplicity.Finite.{u1} α _inst_1 a (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Monoid.toOne.{u1} α _inst_1)))) -> (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) a (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Monoid.toOne.{u1} α _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align multiplicity.not_dvd_one_of_finite_one_right multiplicity.not_dvd_one_of_finite_one_rightₓ'. -/
 theorem not_dvd_one_of_finite_one_right {a : α} : Finite a 1 → ¬a ∣ 1 := fun ⟨n, hn⟩ ⟨d, hd⟩ =>
   hn ⟨d ^ (n + 1), (pow_mul_pow_eq_one (n + 1) hd.symm).symm⟩
 #align multiplicity.not_dvd_one_of_finite_one_right multiplicity.not_dvd_one_of_finite_one_right
 
-/- warning: multiplicity.int.coe_nat_multiplicity -> multiplicity.Int.coe_nat_multiplicity is a dubious translation:
-lean 3 declaration is
-  forall (a : Nat) (b : Nat), Eq.{1} PartENat (multiplicity.{0} Int Int.monoid (fun (a : Int) (b : Int) => Int.decidableDvd a b) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) a) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) b)) (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidableDvd a b) a b)
-but is expected to have type
-  forall (a : Nat) (b : Nat), Eq.{1} PartENat (multiplicity.{0} Int Int.instMonoidInt (fun (a : Int) (b : Int) => Int.decidableDvd a b) (Nat.cast.{0} Int instNatCastInt a) (Nat.cast.{0} Int instNatCastInt b)) (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidable_dvd a b) a b)
-Case conversion may be inaccurate. Consider using '#align multiplicity.int.coe_nat_multiplicity multiplicity.Int.coe_nat_multiplicityₓ'. -/
 @[norm_cast]
 theorem Int.coe_nat_multiplicity (a b : ℕ) : multiplicity (a : ℤ) (b : ℤ) = multiplicity a b :=
   by
@@ -114,24 +102,12 @@ theorem not_unit_of_finite {a b : α} (h : Finite a b) : ¬IsUnit a :=
 #align multiplicity.not_unit_of_finite multiplicity.not_unit_of_finite
 -/
 
-/- warning: multiplicity.finite_of_finite_mul_right -> multiplicity.finite_of_finite_mul_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] {a : α} {b : α} {c : α}, (multiplicity.Finite.{u1} α _inst_1 a (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1))) b c)) -> (multiplicity.Finite.{u1} α _inst_1 a b)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] {a : α} {b : α} {c : α}, (multiplicity.Finite.{u1} α _inst_1 a (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1))) b c)) -> (multiplicity.Finite.{u1} α _inst_1 a b)
-Case conversion may be inaccurate. Consider using '#align multiplicity.finite_of_finite_mul_right multiplicity.finite_of_finite_mul_rightₓ'. -/
 theorem finite_of_finite_mul_right {a b c : α} : Finite a (b * c) → Finite a b := fun ⟨n, hn⟩ =>
   ⟨n, fun h => hn (h.trans (dvd_mul_right _ _))⟩
 #align multiplicity.finite_of_finite_mul_right multiplicity.finite_of_finite_mul_right
 
 variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
-/- warning: multiplicity.pow_dvd_of_le_multiplicity -> multiplicity.pow_dvd_of_le_multiplicity is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {k : Nat}, (LE.le.{0} PartENat PartENat.hasLe ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b)) -> (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.761 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.763 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.761 x._@.Mathlib.RingTheory.Multiplicity._hyg.763)] {a : α} {b : α} {k : Nat}, (LE.le.{0} PartENat PartENat.instLEPartENat (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b)) -> (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b)
-Case conversion may be inaccurate. Consider using '#align multiplicity.pow_dvd_of_le_multiplicity multiplicity.pow_dvd_of_le_multiplicityₓ'. -/
 theorem pow_dvd_of_le_multiplicity {a b : α} {k : ℕ} :
     (k : PartENat) ≤ multiplicity a b → a ^ k ∣ b := by rw [← PartENat.some_eq_natCast];
   exact
@@ -145,12 +121,6 @@ theorem pow_multiplicity_dvd {a b : α} (h : Finite a b) : a ^ get (multiplicity
 #align multiplicity.pow_multiplicity_dvd multiplicity.pow_multiplicity_dvd
 -/
 
-/- warning: multiplicity.is_greatest -> multiplicity.is_greatest is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {m : Nat}, (LT.lt.{0} PartENat (Preorder.toHasLt.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) m)) -> (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a m) b))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.1017 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.1019 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.1017 x._@.Mathlib.RingTheory.Multiplicity._hyg.1019)] {a : α} {b : α} {m : Nat}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) m)) -> (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a m) b))
-Case conversion may be inaccurate. Consider using '#align multiplicity.is_greatest multiplicity.is_greatestₓ'. -/
 theorem is_greatest {a b : α} {m : ℕ} (hm : multiplicity a b < m) : ¬a ^ m ∣ b := fun h => by
   rw [PartENat.lt_coe_iff] at hm <;> exact Nat.find_spec hm.fst ((pow_dvd_pow _ hm.snd).trans h)
 #align multiplicity.is_greatest multiplicity.is_greatest
@@ -170,12 +140,6 @@ theorem pos_of_dvd {a b : α} (hfin : Finite a b) (hdiv : a ∣ b) : 0 < (multip
 #align multiplicity.pos_of_dvd multiplicity.pos_of_dvd
 -/
 
-/- warning: multiplicity.unique -> multiplicity.unique is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {k : Nat}, (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b) -> (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) k (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) b)) -> (Eq.{1} PartENat ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.1289 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.1291 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.1289 x._@.Mathlib.RingTheory.Multiplicity._hyg.1291)] {a : α} {b : α} {k : Nat}, (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b) -> (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) b)) -> (Eq.{1} PartENat (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b))
-Case conversion may be inaccurate. Consider using '#align multiplicity.unique multiplicity.uniqueₓ'. -/
 theorem unique {a b : α} {k : ℕ} (hk : a ^ k ∣ b) (hsucc : ¬a ^ (k + 1) ∣ b) :
     (k : PartENat) = multiplicity a b :=
   le_antisymm (le_of_not_gt fun hk' => is_greatest hk' hk) <|
@@ -192,44 +156,20 @@ theorem unique' {a b : α} {k : ℕ} (hk : a ^ k ∣ b) (hsucc : ¬a ^ (k + 1) 
 #align multiplicity.unique' multiplicity.unique'
 -/
 
-/- warning: multiplicity.le_multiplicity_of_pow_dvd -> multiplicity.le_multiplicity_of_pow_dvd is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {k : Nat}, (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b) -> (LE.le.{0} PartENat PartENat.hasLe ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.1541 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.1543 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.1541 x._@.Mathlib.RingTheory.Multiplicity._hyg.1543)] {a : α} {b : α} {k : Nat}, (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b) -> (LE.le.{0} PartENat PartENat.instLEPartENat (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b))
-Case conversion may be inaccurate. Consider using '#align multiplicity.le_multiplicity_of_pow_dvd multiplicity.le_multiplicity_of_pow_dvdₓ'. -/
 theorem le_multiplicity_of_pow_dvd {a b : α} {k : ℕ} (hk : a ^ k ∣ b) :
     (k : PartENat) ≤ multiplicity a b :=
   le_of_not_gt fun hk' => is_greatest hk' hk
 #align multiplicity.le_multiplicity_of_pow_dvd multiplicity.le_multiplicity_of_pow_dvd
 
-/- warning: multiplicity.pow_dvd_iff_le_multiplicity -> multiplicity.pow_dvd_iff_le_multiplicity is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {k : Nat}, Iff (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b) (LE.le.{0} PartENat PartENat.hasLe ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.1603 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.1605 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.1603 x._@.Mathlib.RingTheory.Multiplicity._hyg.1605)] {a : α} {b : α} {k : Nat}, Iff (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b) (LE.le.{0} PartENat PartENat.instLEPartENat (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b))
-Case conversion may be inaccurate. Consider using '#align multiplicity.pow_dvd_iff_le_multiplicity multiplicity.pow_dvd_iff_le_multiplicityₓ'. -/
 theorem pow_dvd_iff_le_multiplicity {a b : α} {k : ℕ} :
     a ^ k ∣ b ↔ (k : PartENat) ≤ multiplicity a b :=
   ⟨le_multiplicity_of_pow_dvd, pow_dvd_of_le_multiplicity⟩
 #align multiplicity.pow_dvd_iff_le_multiplicity multiplicity.pow_dvd_iff_le_multiplicity
 
-/- warning: multiplicity.multiplicity_lt_iff_neg_dvd -> multiplicity.multiplicity_lt_iff_neg_dvd is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {k : Nat}, Iff (LT.lt.{0} PartENat (Preorder.toHasLt.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) k)) (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.1665 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.1667 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.1665 x._@.Mathlib.RingTheory.Multiplicity._hyg.1667)] {a : α} {b : α} {k : Nat}, Iff (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) k)) (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b))
-Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_lt_iff_neg_dvd multiplicity.multiplicity_lt_iff_neg_dvdₓ'. -/
 theorem multiplicity_lt_iff_neg_dvd {a b : α} {k : ℕ} :
     multiplicity a b < (k : PartENat) ↔ ¬a ^ k ∣ b := by rw [pow_dvd_iff_le_multiplicity, not_le]
 #align multiplicity.multiplicity_lt_iff_neg_dvd multiplicity.multiplicity_lt_iff_neg_dvd
 
-/- warning: multiplicity.eq_coe_iff -> multiplicity.eq_coe_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {n : Nat}, Iff (Eq.{1} PartENat (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) n)) (And (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a n) b) (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) b)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.1755 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.1757 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.1755 x._@.Mathlib.RingTheory.Multiplicity._hyg.1757)] {a : α} {b : α} {n : Nat}, Iff (Eq.{1} PartENat (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) n)) (And (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a n) b) (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) b)))
-Case conversion may be inaccurate. Consider using '#align multiplicity.eq_coe_iff multiplicity.eq_coe_iffₓ'. -/
 theorem eq_coe_iff {a b : α} {n : ℕ} :
     multiplicity a b = (n : PartENat) ↔ a ^ n ∣ b ∧ ¬a ^ (n + 1) ∣ b :=
   by
@@ -260,23 +200,11 @@ theorem isUnit_left {a : α} (b : α) (ha : IsUnit a) : multiplicity a b = ⊤ :
 #align multiplicity.is_unit_left multiplicity.isUnit_left
 -/
 
-/- warning: multiplicity.one_left -> multiplicity.one_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] (b : α), Eq.{1} PartENat (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (MulOneClass.toHasOne.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1))))) b) (Top.top.{0} PartENat PartENat.hasTop)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.2134 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.2136 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.2134 x._@.Mathlib.RingTheory.Multiplicity._hyg.2136)] (b : α), Eq.{1} PartENat (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Monoid.toOne.{u1} α _inst_1))) b) (Top.top.{0} PartENat PartENat.instTopPartENat)
-Case conversion may be inaccurate. Consider using '#align multiplicity.one_left multiplicity.one_leftₓ'. -/
 @[simp]
 theorem one_left (b : α) : multiplicity 1 b = ⊤ :=
   isUnit_left b isUnit_one
 #align multiplicity.one_left multiplicity.one_left
 
-/- warning: multiplicity.get_one_right -> multiplicity.get_one_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} (ha : multiplicity.Finite.{u1} α _inst_1 a (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (MulOneClass.toHasOne.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1)))))), Eq.{1} Nat (Part.get.{0} Nat (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (MulOneClass.toHasOne.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1)))))) ha) (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.2176 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.2178 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.2176 x._@.Mathlib.RingTheory.Multiplicity._hyg.2178)] {a : α} (ha : multiplicity.Finite.{u1} α _inst_1 a (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Monoid.toOne.{u1} α _inst_1)))), Eq.{1} Nat (Part.get.{0} Nat (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Monoid.toOne.{u1} α _inst_1)))) ha) (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))
-Case conversion may be inaccurate. Consider using '#align multiplicity.get_one_right multiplicity.get_one_rightₓ'. -/
 @[simp]
 theorem get_one_right {a : α} (ha : Finite a 1) : get (multiplicity a 1) ha = 0 :=
   by
@@ -315,22 +243,10 @@ theorem ne_top_iff_finite {a b : α} : multiplicity a b ≠ ⊤ ↔ Finite a b :
 #align multiplicity.ne_top_iff_finite multiplicity.ne_top_iff_finite
 -/
 
-/- warning: multiplicity.lt_top_iff_finite -> multiplicity.lt_top_iff_finite is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α}, Iff (LT.lt.{0} PartENat (Preorder.toHasLt.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) (Top.top.{0} PartENat PartENat.hasTop)) (multiplicity.Finite.{u1} α _inst_1 a b)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.2567 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.2569 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.2567 x._@.Mathlib.RingTheory.Multiplicity._hyg.2569)] {a : α} {b : α}, Iff (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) (Top.top.{0} PartENat PartENat.instTopPartENat)) (multiplicity.Finite.{u1} α _inst_1 a b)
-Case conversion may be inaccurate. Consider using '#align multiplicity.lt_top_iff_finite multiplicity.lt_top_iff_finiteₓ'. -/
 theorem lt_top_iff_finite {a b : α} : multiplicity a b < ⊤ ↔ Finite a b := by
   rw [lt_top_iff_ne_top, ne_top_iff_finite]
 #align multiplicity.lt_top_iff_finite multiplicity.lt_top_iff_finite
 
-/- warning: multiplicity.exists_eq_pow_mul_and_not_dvd -> multiplicity.exists_eq_pow_mul_and_not_dvd is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} (hfin : multiplicity.Finite.{u1} α _inst_1 a b), Exists.{succ u1} α (fun (c : α) => And (Eq.{succ u1} α b (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a (Part.get.{0} Nat (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) hfin)) c)) (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) a c)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.2642 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.2644 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.2642 x._@.Mathlib.RingTheory.Multiplicity._hyg.2644)] {a : α} {b : α} (hfin : multiplicity.Finite.{u1} α _inst_1 a b), Exists.{succ u1} α (fun (c : α) => And (Eq.{succ u1} α b (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a (Part.get.{0} Nat (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) hfin)) c)) (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) a c)))
-Case conversion may be inaccurate. Consider using '#align multiplicity.exists_eq_pow_mul_and_not_dvd multiplicity.exists_eq_pow_mul_and_not_dvdₓ'. -/
 theorem exists_eq_pow_mul_and_not_dvd {a b : α} (hfin : Finite a b) :
     ∃ c : α, b = a ^ (multiplicity a b).get hfin * c ∧ ¬a ∣ c :=
   by
@@ -383,12 +299,6 @@ theorem eq_of_associated_right {a b c : α} (h : Associated b c) :
 #align multiplicity.eq_of_associated_right multiplicity.eq_of_associated_right
 -/
 
-/- warning: multiplicity.dvd_of_multiplicity_pos -> multiplicity.dvd_of_multiplicity_pos is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toHasLt.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (OfNat.ofNat.{0} PartENat 0 (OfNat.mk.{0} PartENat 0 (Zero.zero.{0} PartENat PartENat.hasZero))) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b)) -> (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) a b)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.3267 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.3269 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.3267 x._@.Mathlib.RingTheory.Multiplicity._hyg.3269)] {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (OfNat.ofNat.{0} PartENat 0 (Zero.toOfNat0.{0} PartENat PartENat.instZeroPartENat)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b)) -> (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) a b)
-Case conversion may be inaccurate. Consider using '#align multiplicity.dvd_of_multiplicity_pos multiplicity.dvd_of_multiplicity_posₓ'. -/
 theorem dvd_of_multiplicity_pos {a b : α} (h : (0 : PartENat) < multiplicity a b) : a ∣ b :=
   by
   rw [← pow_one a]
@@ -396,12 +306,6 @@ theorem dvd_of_multiplicity_pos {a b : α} (h : (0 : PartENat) < multiplicity a
   simpa only [Nat.cast_one, PartENat.pos_iff_one_le] using h
 #align multiplicity.dvd_of_multiplicity_pos multiplicity.dvd_of_multiplicity_pos
 
-/- warning: multiplicity.dvd_iff_multiplicity_pos -> multiplicity.dvd_iff_multiplicity_pos is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α}, Iff (LT.lt.{0} PartENat (Preorder.toHasLt.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (OfNat.ofNat.{0} PartENat 0 (OfNat.mk.{0} PartENat 0 (Zero.zero.{0} PartENat PartENat.hasZero))) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b)) (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) a b)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.3353 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.3355 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.3353 x._@.Mathlib.RingTheory.Multiplicity._hyg.3355)] {a : α} {b : α}, Iff (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (OfNat.ofNat.{0} PartENat 0 (Zero.toOfNat0.{0} PartENat PartENat.instZeroPartENat)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b)) (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) a b)
-Case conversion may be inaccurate. Consider using '#align multiplicity.dvd_iff_multiplicity_pos multiplicity.dvd_iff_multiplicity_posₓ'. -/
 theorem dvd_iff_multiplicity_pos {a b : α} : (0 : PartENat) < multiplicity a b ↔ a ∣ b :=
   ⟨dvd_of_multiplicity_pos, fun hdvd =>
     lt_of_le_of_ne (zero_le _) fun heq =>
@@ -436,12 +340,6 @@ section CommMonoid
 
 variable [CommMonoid α]
 
-/- warning: multiplicity.finite_of_finite_mul_left -> multiplicity.finite_of_finite_mul_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : CommMonoid.{u1} α] {a : α} {b : α} {c : α}, (multiplicity.Finite.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) a (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1)))) b c)) -> (multiplicity.Finite.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) a c)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CommMonoid.{u1} α] {a : α} {b : α} {c : α}, (multiplicity.Finite.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) a (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1)))) b c)) -> (multiplicity.Finite.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) a c)
-Case conversion may be inaccurate. Consider using '#align multiplicity.finite_of_finite_mul_left multiplicity.finite_of_finite_mul_leftₓ'. -/
 theorem finite_of_finite_mul_left {a b c : α} : Finite a (b * c) → Finite a c := by
   rw [mul_comm] <;> exact finite_of_finite_mul_right
 #align multiplicity.finite_of_finite_mul_left multiplicity.finite_of_finite_mul_left
@@ -456,12 +354,6 @@ theorem isUnit_right {a b : α} (ha : ¬IsUnit a) (hb : IsUnit b) : multiplicity
 #align multiplicity.is_unit_right multiplicity.isUnit_right
 -/
 
-/- warning: multiplicity.one_right -> multiplicity.one_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : CommMonoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1))))] {a : α}, (Not (IsUnit.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (MulOneClass.toHasOne.{u1} α (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1))))))) (OfNat.ofNat.{0} PartENat 0 (OfNat.mk.{0} PartENat 0 (Zero.zero.{0} PartENat PartENat.hasZero))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CommMonoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4001 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4003 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4001 x._@.Mathlib.RingTheory.Multiplicity._hyg.4003)] {a : α}, (Not (IsUnit.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Monoid.toOne.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1))))) (OfNat.ofNat.{0} PartENat 0 (Zero.toOfNat0.{0} PartENat PartENat.instZeroPartENat)))
-Case conversion may be inaccurate. Consider using '#align multiplicity.one_right multiplicity.one_rightₓ'. -/
 theorem one_right {a : α} (ha : ¬IsUnit a) : multiplicity a 1 = 0 :=
   isUnit_right ha isUnit_one
 #align multiplicity.one_right multiplicity.one_right
@@ -498,12 +390,6 @@ section MonoidWithZero
 
 variable [MonoidWithZero α]
 
-/- warning: multiplicity.ne_zero_of_finite -> multiplicity.ne_zero_of_finite is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] {a : α} {b : α}, (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) a b) -> (Ne.{succ u1} α b (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α _inst_1)))))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] {a : α} {b : α}, (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) a b) -> (Ne.{succ u1} α b (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α _inst_1))))
-Case conversion may be inaccurate. Consider using '#align multiplicity.ne_zero_of_finite multiplicity.ne_zero_of_finiteₓ'. -/
 theorem ne_zero_of_finite {a b : α} (h : Finite a b) : b ≠ 0 :=
   let ⟨n, hn⟩ := h
   fun hb => by simpa [hb] using hn
@@ -511,23 +397,11 @@ theorem ne_zero_of_finite {a b : α} (h : Finite a b) : b ≠ 0 :=
 
 variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
-/- warning: multiplicity.zero -> multiplicity.zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α _inst_1))))] (a : α), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α _inst_1))))))) (Top.top.{0} PartENat PartENat.hasTop)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4287 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4289 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α _inst_1))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4287 x._@.Mathlib.RingTheory.Multiplicity._hyg.4289)] (a : α), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α _inst_1)))) (Top.top.{0} PartENat PartENat.instTopPartENat)
-Case conversion may be inaccurate. Consider using '#align multiplicity.zero multiplicity.zeroₓ'. -/
 @[simp]
 protected theorem zero (a : α) : multiplicity a 0 = ⊤ :=
   Part.eq_none_iff.2 fun n ⟨⟨k, hk⟩, _⟩ => hk (dvd_zero _)
 #align multiplicity.zero multiplicity.zero
 
-/- warning: multiplicity.multiplicity_zero_eq_zero_of_ne_zero -> multiplicity.multiplicity_zero_eq_zero_of_ne_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α _inst_1))))] (a : α), (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α _inst_1))))))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α _inst_1)))))) a) (OfNat.ofNat.{0} PartENat 0 (OfNat.mk.{0} PartENat 0 (Zero.zero.{0} PartENat PartENat.hasZero))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4365 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4367 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α _inst_1))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4365 x._@.Mathlib.RingTheory.Multiplicity._hyg.4367)] (a : α), (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α _inst_1)))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α _inst_1))) a) (OfNat.ofNat.{0} PartENat 0 (Zero.toOfNat0.{0} PartENat PartENat.instZeroPartENat)))
-Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_zero_eq_zero_of_ne_zero multiplicity.multiplicity_zero_eq_zero_of_ne_zeroₓ'. -/
 @[simp]
 theorem multiplicity_zero_eq_zero_of_ne_zero (a : α) (ha : a ≠ 0) : multiplicity 0 a = 0 :=
   multiplicity.multiplicity_eq_zero.2 <| mt zero_dvd_iff.1 ha
@@ -541,12 +415,6 @@ variable [CommMonoidWithZero α]
 
 variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
-/- warning: multiplicity.multiplicity_mk_eq_multiplicity -> multiplicity.multiplicity_mk_eq_multiplicity is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)))))] [_inst_3 : DecidableRel.{succ u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Dvd.Dvd.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (semigroupDvd.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (SemigroupWithZero.toSemigroup.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toSemigroupWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (CommMonoidWithZero.toMonoidWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Associates.commMonoidWithZero.{u1} α _inst_1))))))] {a : α} {b : α}, Eq.{1} PartENat (multiplicity.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMonoid.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (CommMonoidWithZero.toMonoidWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Associates.commMonoidWithZero.{u1} α _inst_1))) (fun (a : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (b : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) => _inst_3 a b) (Associates.mk.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) a) (Associates.mk.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) a b)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4452 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4454 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4452 x._@.Mathlib.RingTheory.Multiplicity._hyg.4454)] [_inst_3 : DecidableRel.{succ u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4478 : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4480 : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) => Dvd.dvd.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (semigroupDvd.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (SemigroupWithZero.toSemigroup.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toSemigroupWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (CommMonoidWithZero.toMonoidWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Associates.instCommMonoidWithZeroAssociatesToMonoidToMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4478 x._@.Mathlib.RingTheory.Multiplicity._hyg.4480)] {a : α} {b : α}, Eq.{1} PartENat (multiplicity.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMonoid.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (CommMonoidWithZero.toMonoidWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Associates.instCommMonoidWithZeroAssociatesToMonoidToMonoidWithZero.{u1} α _inst_1))) (fun (a : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (b : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) => _inst_3 a b) (Associates.mk.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) a) (Associates.mk.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) a b)
-Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_mk_eq_multiplicity multiplicity.multiplicity_mk_eq_multiplicityₓ'. -/
 theorem multiplicity_mk_eq_multiplicity
     [DecidableRel ((· ∣ ·) : Associates α → Associates α → Prop)] {a b : α} :
     multiplicity (Associates.mk a) (Associates.mk b) = multiplicity a b :=
@@ -579,12 +447,6 @@ section Semiring
 
 variable [Semiring α] [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
-/- warning: multiplicity.min_le_multiplicity_add -> multiplicity.min_le_multiplicity_add is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Semiring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α _inst_1)))))] {p : α} {a : α} {b : α}, LE.le.{0} PartENat PartENat.hasLe (LinearOrder.min.{0} PartENat PartENat.linearOrder (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_1))))) a b))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Semiring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4899 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4901 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α _inst_1)))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4899 x._@.Mathlib.RingTheory.Multiplicity._hyg.4901)] {p : α} {a : α} {b : α}, LE.le.{0} PartENat PartENat.instLEPartENat (Min.min.{0} PartENat (LinearOrder.toMin.{0} PartENat PartENat.linearOrder) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_1))))) a b))
-Case conversion may be inaccurate. Consider using '#align multiplicity.min_le_multiplicity_add multiplicity.min_le_multiplicity_addₓ'. -/
 theorem min_le_multiplicity_add {p a b : α} :
     min (multiplicity p a) (multiplicity p b) ≤ multiplicity p (a + b) :=
   (le_total (multiplicity p a) (multiplicity p b)).elim
@@ -602,12 +464,6 @@ section Ring
 
 variable [Ring α] [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
-/- warning: multiplicity.neg -> multiplicity.neg is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] (a : α) (b : α), Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (Neg.neg.{u1} α (SubNegMonoid.toHasNeg.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1))))) b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a b)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5104 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5106 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5104 x._@.Mathlib.RingTheory.Multiplicity._hyg.5106)] (a : α) (b : α), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a (Neg.neg.{u1} α (Ring.toNeg.{u1} α _inst_1) b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a b)
-Case conversion may be inaccurate. Consider using '#align multiplicity.neg multiplicity.negₓ'. -/
 @[simp]
 protected theorem neg (a b : α) : multiplicity a (-b) = multiplicity a b :=
   Part.ext' (by simp only [multiplicity, PartENat.find, dvd_neg]) fun h₁ h₂ =>
@@ -620,12 +476,6 @@ protected theorem neg (a b : α) : multiplicity a (-b) = multiplicity a b :=
                 (mt dvd_neg.1 (is_greatest' _ (lt_succ_self _)))))
 #align multiplicity.neg multiplicity.neg
 
-/- warning: multiplicity.int.nat_abs -> multiplicity.Int.natAbs is a dubious translation:
-lean 3 declaration is
-  forall (a : Nat) (b : Int), Eq.{1} PartENat (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidableDvd a b) a (Int.natAbs b)) (multiplicity.{0} Int Int.monoid (fun (a : Int) (b : Int) => Int.decidableDvd a b) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) a) b)
-but is expected to have type
-  forall (a : Nat) (b : Int), Eq.{1} PartENat (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidable_dvd a b) a (Int.natAbs b)) (multiplicity.{0} Int Int.instMonoidInt (fun (a : Int) (b : Int) => Int.decidableDvd a b) (Nat.cast.{0} Int instNatCastInt a) b)
-Case conversion may be inaccurate. Consider using '#align multiplicity.int.nat_abs multiplicity.Int.natAbsₓ'. -/
 theorem Int.natAbs (a : ℕ) (b : ℤ) : multiplicity a b.natAbs = multiplicity (a : ℤ) b :=
   by
   cases' Int.natAbs_eq b with h h <;> conv_rhs => rw [h]
@@ -633,12 +483,6 @@ theorem Int.natAbs (a : ℕ) (b : ℤ) : multiplicity a b.natAbs = multiplicity
   · rw [multiplicity.neg, int.coe_nat_multiplicity]
 #align multiplicity.int.nat_abs multiplicity.Int.natAbs
 
-/- warning: multiplicity.multiplicity_add_of_gt -> multiplicity.multiplicity_add_of_gt is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toHasLt.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (Ring.toDistrib.{u1} α _inst_1))) a b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5398 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5400 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5398 x._@.Mathlib.RingTheory.Multiplicity._hyg.5400)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
-Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_add_of_gt multiplicity.multiplicity_add_of_gtₓ'. -/
 theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity p a) :
     multiplicity p (a + b) = multiplicity p b :=
   by
@@ -653,23 +497,11 @@ theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity
   · convert min_le_multiplicity_add; rw [min_eq_right (le_of_lt h)]
 #align multiplicity.multiplicity_add_of_gt multiplicity.multiplicity_add_of_gt
 
-/- warning: multiplicity.multiplicity_sub_of_gt -> multiplicity.multiplicity_sub_of_gt is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toHasLt.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (SubNegMonoid.toHasSub.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5831 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5833 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5831 x._@.Mathlib.RingTheory.Multiplicity._hyg.5833)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (Ring.toSub.{u1} α _inst_1)) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
-Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_sub_of_gt multiplicity.multiplicity_sub_of_gtₓ'. -/
 theorem multiplicity_sub_of_gt {p a b : α} (h : multiplicity p b < multiplicity p a) :
     multiplicity p (a - b) = multiplicity p b := by
   rw [sub_eq_add_neg, multiplicity_add_of_gt] <;> rwa [multiplicity.neg]
 #align multiplicity.multiplicity_sub_of_gt multiplicity.multiplicity_sub_of_gt
 
-/- warning: multiplicity.multiplicity_add_eq_min -> multiplicity.multiplicity_add_eq_min is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (Ne.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (Ring.toDistrib.{u1} α _inst_1))) a b)) (LinearOrder.min.{0} PartENat PartENat.linearOrder (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5988 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5990 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5988 x._@.Mathlib.RingTheory.Multiplicity._hyg.5990)] {p : α} {a : α} {b : α}, (Ne.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (Min.min.{0} PartENat (LinearOrder.toMin.{0} PartENat PartENat.linearOrder) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
-Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_add_eq_min multiplicity.multiplicity_add_eq_minₓ'. -/
 theorem multiplicity_add_eq_min {p a b : α} (h : multiplicity p a ≠ multiplicity p b) :
     multiplicity p (a + b) = min (multiplicity p a) (multiplicity p b) :=
   by
@@ -685,12 +517,6 @@ section CancelCommMonoidWithZero
 
 variable [CancelCommMonoidWithZero α]
 
-/- warning: multiplicity.finite_mul_aux -> multiplicity.finite_mul_aux is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] {p : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall {n : Nat} {m : Nat} {a : α} {b : α}, (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) a)) -> (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) m (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) b)) -> (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n m) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] {p : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall {n : α} {m : α} {a : Nat} {b : Nat}, (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) a (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) n)) -> (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) b (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) m)) -> (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) a b) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) n m))))
-Case conversion may be inaccurate. Consider using '#align multiplicity.finite_mul_aux multiplicity.finite_mul_auxₓ'. -/
 theorem finite_mul_aux {p : α} (hp : Prime p) :
     ∀ {n m : ℕ} {a b : α}, ¬p ^ (n + 1) ∣ a → ¬p ^ (m + 1) ∣ b → ¬p ^ (n + m + 1) ∣ a * b
   | n, m => fun a b ha hb ⟨s, hs⟩ =>
@@ -735,22 +561,10 @@ theorem finite_mul_aux {p : α} (hp : Prime p) :
               simp_all [mul_comm, mul_assoc, mul_left_comm, pow_add])⟩
 #align multiplicity.finite_mul_aux multiplicity.finite_mul_aux
 
-/- warning: multiplicity.finite_mul -> multiplicity.finite_mul is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) -> (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) -> (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) -> (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) -> (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b))
-Case conversion may be inaccurate. Consider using '#align multiplicity.finite_mul multiplicity.finite_mulₓ'. -/
 theorem finite_mul {p a b : α} (hp : Prime p) : Finite p a → Finite p b → Finite p (a * b) :=
   fun ⟨n, hn⟩ ⟨m, hm⟩ => ⟨n + m, finite_mul_aux hp hn hm⟩
 #align multiplicity.finite_mul multiplicity.finite_mul
 
-/- warning: multiplicity.finite_mul_iff -> multiplicity.finite_mul_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (Iff (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (Iff (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)))
-Case conversion may be inaccurate. Consider using '#align multiplicity.finite_mul_iff multiplicity.finite_mul_iffₓ'. -/
 theorem finite_mul_iff {p a b : α} (hp : Prime p) : Finite p (a * b) ↔ Finite p a ∧ Finite p b :=
   ⟨fun h => ⟨finite_of_finite_mul_right h, finite_of_finite_mul_left h⟩, fun h =>
     finite_mul hp h.1 h.2⟩
@@ -765,12 +579,6 @@ theorem finite_pow {p a : α} (hp : Prime p) : ∀ {k : ℕ} (ha : Finite p a),
 
 variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
-/- warning: multiplicity.multiplicity_self -> multiplicity.multiplicity_self is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {a : α}, (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) a)) -> (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a a) (OfNat.ofNat.{0} PartENat 1 (OfNat.mk.{0} PartENat 1 (One.one.{0} PartENat PartENat.hasOne))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7164 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7166 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7164 x._@.Mathlib.RingTheory.Multiplicity._hyg.7166)] {a : α}, (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) a)) -> (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a a) (OfNat.ofNat.{0} PartENat 1 (One.toOfNat1.{0} PartENat PartENat.instOnePartENat)))
-Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_self multiplicity.multiplicity_selfₓ'. -/
 @[simp]
 theorem multiplicity_self {a : α} (ha : ¬IsUnit a) (ha0 : a ≠ 0) : multiplicity a a = 1 := by
   rw [← Nat.cast_one];
@@ -798,12 +606,6 @@ theorem get_multiplicity_self {a : α} (ha : Finite a a) : get (multiplicity a a
 #align multiplicity.get_multiplicity_self multiplicity.get_multiplicity_self
 -/
 
-/- warning: multiplicity.mul' -> multiplicity.mul' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α} {a : α} {b : α} (hp : Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) (h : Part.Dom.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b))), Eq.{1} Nat (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) h) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (And.left (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (And.right (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7422 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7424 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7422 x._@.Mathlib.RingTheory.Multiplicity._hyg.7424)] {p : α} {a : α} {b : α} (hp : Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) (h : Part.Dom.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b))), Eq.{1} Nat (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) h) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (And.left (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (And.right (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))))
-Case conversion may be inaccurate. Consider using '#align multiplicity.mul' multiplicity.mul'ₓ'. -/
 protected theorem mul' {p a b : α} (hp : Prime p) (h : (multiplicity p (a * b)).Dom) :
     get (multiplicity p (a * b)) h =
       get (multiplicity p a) ((finite_mul_iff hp).1 h).1 +
@@ -838,12 +640,6 @@ protected theorem mul' {p a b : α} (hp : Prime p) (h : (multiplicity p (a * b))
 
 open Classical
 
-/- warning: multiplicity.mul -> multiplicity.mul is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (HAdd.hAdd.{0, 0, 0} PartENat PartENat PartENat (instHAdd.{0} PartENat PartENat.hasAdd) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7933 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7935 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7933 x._@.Mathlib.RingTheory.Multiplicity._hyg.7935)] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (HAdd.hAdd.{0, 0, 0} PartENat PartENat PartENat (instHAdd.{0} PartENat PartENat.instAddPartENat) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
-Case conversion may be inaccurate. Consider using '#align multiplicity.mul multiplicity.mulₓ'. -/
 protected theorem mul {p a b : α} (hp : Prime p) :
     multiplicity p (a * b) = multiplicity p a + multiplicity p b :=
   if h : Finite p a ∧ Finite p b then by
@@ -880,34 +676,16 @@ protected theorem pow' {p a : α} (hp : Prime p) (ha : Finite p a) :
 #align multiplicity.pow' multiplicity.pow'
 -/
 
-/- warning: multiplicity.pow -> multiplicity.pow is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α} {a : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall {k : Nat}, Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) a k)) (SMul.smul.{0, 0} Nat PartENat (AddMonoid.SMul.{0} PartENat (AddMonoidWithOne.toAddMonoid.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))) k (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8419 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8421 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8419 x._@.Mathlib.RingTheory.Multiplicity._hyg.8421)] {p : α} {a : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall {k : Nat}, Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) a k)) (HSMul.hSMul.{0, 0, 0} Nat PartENat PartENat (instHSMul.{0, 0} Nat PartENat (AddMonoid.SMul.{0} PartENat (AddMonoidWithOne.toAddMonoid.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)))) k (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)))
-Case conversion may be inaccurate. Consider using '#align multiplicity.pow multiplicity.powₓ'. -/
 theorem pow {p a : α} (hp : Prime p) : ∀ {k : ℕ}, multiplicity p (a ^ k) = k • multiplicity p a
   | 0 => by simp [one_right hp.not_unit]
   | succ k => by simp [pow_succ, succ_nsmul, pow, multiplicity.mul hp]
 #align multiplicity.pow multiplicity.pow
 
-/- warning: multiplicity.multiplicity_pow_self -> multiplicity.multiplicity_pow_self is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α}, (Ne.{succ u1} α p (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))))) -> (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p)) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) n))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8514 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8516 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8514 x._@.Mathlib.RingTheory.Multiplicity._hyg.8516)] {p : α}, (Ne.{succ u1} α p (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) -> (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p)) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) n))
-Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_pow_self multiplicity.multiplicity_pow_selfₓ'. -/
 theorem multiplicity_pow_self {p : α} (h0 : p ≠ 0) (hu : ¬IsUnit p) (n : ℕ) :
     multiplicity p (p ^ n) = n := by rw [eq_coe_iff]; use dvd_rfl; rw [pow_dvd_pow_iff h0 hu];
   apply Nat.not_succ_le_self
 #align multiplicity.multiplicity_pow_self multiplicity.multiplicity_pow_self
 
-/- warning: multiplicity.multiplicity_pow_self_of_prime -> multiplicity.multiplicity_pow_self_of_prime is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) n))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8661 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8663 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8661 x._@.Mathlib.RingTheory.Multiplicity._hyg.8663)] {p : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) n))
-Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_pow_self_of_prime multiplicity.multiplicity_pow_self_of_primeₓ'. -/
 theorem multiplicity_pow_self_of_prime {p : α} (hp : Prime p) (n : ℕ) :
     multiplicity p (p ^ n) = n :=
   multiplicity_pow_self hp.NeZero hp.not_unit n
@@ -919,24 +697,12 @@ section Valuation
 
 variable {R : Type _} [CommRing R] [IsDomain R] {p : R} [DecidableRel (Dvd.Dvd : R → R → Prop)]
 
-/- warning: multiplicity.add_valuation -> multiplicity.addValuation is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.Dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalRing.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalRing.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))], (Prime.{u1} R (CommSemiring.toCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) p) -> (AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.linearOrderedAddCommMonoidWithTop)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalCommSemiring.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))], (Prime.{u1} R (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} R (IsDomain.toCancelCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2)) p) -> (AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat)
-Case conversion may be inaccurate. Consider using '#align multiplicity.add_valuation multiplicity.addValuationₓ'. -/
 /-- `multiplicity` of a prime inan integral domain as an additive valuation to `part_enat`. -/
 noncomputable def addValuation (hp : Prime p) : AddValuation R PartENat :=
   AddValuation.of (multiplicity p) (multiplicity.zero _) (one_right hp.not_unit)
     (fun _ _ => min_le_multiplicity_add) fun a b => multiplicity.mul hp
 #align multiplicity.add_valuation multiplicity.addValuation
 
-/- warning: multiplicity.add_valuation_apply -> multiplicity.addValuation_apply is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.Dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalRing.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalRing.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))] {hp : Prime.{u1} R (CommSemiring.toCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) p} {r : R}, Eq.{1} PartENat (coeFn.{succ u1, succ u1} (AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.linearOrderedAddCommMonoidWithTop) (fun (_x : AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.linearOrderedAddCommMonoidWithTop) => R -> PartENat) (AddValuation.hasCoeToFun.{u1, 0} R PartENat PartENat.linearOrderedAddCommMonoidWithTop (CommRing.toRing.{u1} R _inst_1)) (multiplicity.addValuation.{u1} R _inst_1 _inst_2 p (fun (a : R) (b : R) => _inst_3 a b) hp) r) (multiplicity.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) (fun (a : R) (b : R) => _inst_3 a b) p r)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalCommSemiring.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))] {hp : Prime.{u1} R (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} R (IsDomain.toCancelCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2)) p} {r : R}, Eq.{1} ((fun (x._@.Mathlib.RingTheory.Valuation.Basic._hyg.8830 : R) => PartENat) r) (FunLike.coe.{succ u1, succ u1, 1} (AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat) R (fun (_x : R) => (fun (x._@.Mathlib.RingTheory.Valuation.Basic._hyg.8830 : R) => PartENat) _x) (AddValuation.instFunLikeAddValuation.{u1, 0} R PartENat (CommRing.toRing.{u1} R _inst_1) PartENat.instLinearOrderedAddCommMonoidWithTopPartENat) (multiplicity.addValuation.{u1} R _inst_1 _inst_2 p (fun (a : R) (b : R) => _inst_3 a b) hp) r) (multiplicity.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (fun (a : R) (b : R) => _inst_3 a b) p r)
-Case conversion may be inaccurate. Consider using '#align multiplicity.add_valuation_apply multiplicity.addValuation_applyₓ'. -/
 @[simp]
 theorem addValuation_apply {hp : Prime p} {r : R} : addValuation hp r = multiplicity p r :=
   rfl
@@ -950,12 +716,6 @@ section Nat
 
 open multiplicity
 
-/- warning: multiplicity_eq_zero_of_coprime -> multiplicity_eq_zero_of_coprime is a dubious translation:
-lean 3 declaration is
-  forall {p : Nat} {a : Nat} {b : Nat}, (Ne.{1} Nat p (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) -> (LE.le.{0} PartENat PartENat.hasLe (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidableDvd a b) p a) (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidableDvd a b) p b)) -> (Nat.coprime a b) -> (Eq.{1} PartENat (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidableDvd a b) p a) (OfNat.ofNat.{0} PartENat 0 (OfNat.mk.{0} PartENat 0 (Zero.zero.{0} PartENat PartENat.hasZero))))
-but is expected to have type
-  forall {p : Nat} {a : Nat} {b : Nat}, (Ne.{1} Nat p (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) -> (LE.le.{0} PartENat PartENat.instLEPartENat (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidable_dvd a b) p a) (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidable_dvd a b) p b)) -> (Nat.coprime a b) -> (Eq.{1} PartENat (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidable_dvd a b) p a) (OfNat.ofNat.{0} PartENat 0 (Zero.toOfNat0.{0} PartENat PartENat.instZeroPartENat)))
-Case conversion may be inaccurate. Consider using '#align multiplicity_eq_zero_of_coprime multiplicity_eq_zero_of_coprimeₓ'. -/
 theorem multiplicity_eq_zero_of_coprime {p a b : ℕ} (hp : p ≠ 1)
     (hle : multiplicity p a ≤ multiplicity p b) (hab : Nat.coprime a b) : multiplicity p a = 0 :=
   by
Diff
@@ -95,19 +95,13 @@ theorem Int.coe_nat_multiplicity (a b : ℕ) : multiplicity (a : ℤ) (b : ℤ)
   · repeat' rw [← finite_iff_dom, finite_def]
     norm_cast
   · intro h1 h2
-    apply _root_.le_antisymm <;>
-      · apply Nat.find_mono
-        norm_cast
-        simp
+    apply _root_.le_antisymm <;> · apply Nat.find_mono; norm_cast; simp
 #align multiplicity.int.coe_nat_multiplicity multiplicity.Int.coe_nat_multiplicity
 
 #print multiplicity.not_finite_iff_forall /-
 theorem not_finite_iff_forall {a b : α} : ¬Finite a b ↔ ∀ n : ℕ, a ^ n ∣ b :=
   ⟨fun h n =>
-    Nat.casesOn n
-      (by
-        rw [pow_zero]
-        exact one_dvd _)
+    Nat.casesOn n (by rw [pow_zero]; exact one_dvd _)
       (by simpa [Finite, Classical.not_not] using h),
     by simp [Finite, multiplicity, Classical.not_not] <;> tauto⟩
 #align multiplicity.not_finite_iff_forall multiplicity.not_finite_iff_forall
@@ -139,15 +133,10 @@ but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.761 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.763 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.761 x._@.Mathlib.RingTheory.Multiplicity._hyg.763)] {a : α} {b : α} {k : Nat}, (LE.le.{0} PartENat PartENat.instLEPartENat (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b)) -> (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b)
 Case conversion may be inaccurate. Consider using '#align multiplicity.pow_dvd_of_le_multiplicity multiplicity.pow_dvd_of_le_multiplicityₓ'. -/
 theorem pow_dvd_of_le_multiplicity {a b : α} {k : ℕ} :
-    (k : PartENat) ≤ multiplicity a b → a ^ k ∣ b :=
-  by
-  rw [← PartENat.some_eq_natCast]
+    (k : PartENat) ≤ multiplicity a b → a ^ k ∣ b := by rw [← PartENat.some_eq_natCast];
   exact
-    Nat.casesOn k
-      (fun _ => by
-        rw [pow_zero]
-        exact one_dvd _)
-      fun k ⟨h₁, h₂⟩ => by_contradiction fun hk => Nat.find_min _ (lt_of_succ_le (h₂ ⟨k, hk⟩)) hk
+    Nat.casesOn k (fun _ => by rw [pow_zero]; exact one_dvd _) fun k ⟨h₁, h₂⟩ =>
+      by_contradiction fun hk => Nat.find_min _ (lt_of_succ_le (h₂ ⟨k, hk⟩)) hk
 #align multiplicity.pow_dvd_of_le_multiplicity multiplicity.pow_dvd_of_le_multiplicity
 
 #print multiplicity.pow_multiplicity_dvd /-
@@ -250,10 +239,7 @@ theorem eq_coe_iff {a b : α} {n : ℕ} :
       let ⟨h₁, h₂⟩ := eq_some_iff.1 h
       h₂ ▸
         ⟨pow_multiplicity_dvd _,
-          IsGreatest
-            (by
-              rw [PartENat.lt_coe_iff]
-              exact ⟨h₁, lt_succ_self _⟩)⟩,
+          IsGreatest (by rw [PartENat.lt_coe_iff]; exact ⟨h₁, lt_succ_self _⟩)⟩,
       fun h => eq_some_iff.2 ⟨⟨n, h.2⟩, Eq.symm <| unique' h.1 h.2⟩⟩
 #align multiplicity.eq_coe_iff multiplicity.eq_coe_iff
 
@@ -263,13 +249,7 @@ theorem eq_top_iff {a b : α} : multiplicity a b = ⊤ ↔ ∀ n : ℕ, a ^ n 
     by
     simp only [Classical.not_not]
     exact
-      ⟨fun h n =>
-        Nat.casesOn n
-          (by
-            rw [pow_zero]
-            exact one_dvd _)
-          fun n => h _,
-        fun h n => h _⟩
+      ⟨fun h n => Nat.casesOn n (by rw [pow_zero]; exact one_dvd _) fun n => h _, fun h n => h _⟩
 #align multiplicity.eq_top_iff multiplicity.eq_top_iff
 -/
 
@@ -312,10 +292,8 @@ theorem unit_left (a : α) (u : αˣ) : multiplicity (u : α) a = ⊤ :=
 -/
 
 #print multiplicity.multiplicity_eq_zero /-
-theorem multiplicity_eq_zero {a b : α} : multiplicity a b = 0 ↔ ¬a ∣ b :=
-  by
-  rw [← Nat.cast_zero, eq_coe_iff]
-  simp
+theorem multiplicity_eq_zero {a b : α} : multiplicity a b = 0 ↔ ¬a ∣ b := by
+  rw [← Nat.cast_zero, eq_coe_iff]; simp
 #align multiplicity.multiplicity_eq_zero multiplicity.multiplicity_eq_zero
 -/
 
@@ -443,11 +421,7 @@ theorem finite_nat_iff {a b : ℕ} : Finite a b ↔ a ≠ 1 ∧ 0 < b :=
       or_iff_not_imp_right.2 fun hb =>
         have ha : a ≠ 0 := fun ha => by simpa [ha] using h 1
         by_contradiction fun ha1 : a ≠ 1 =>
-          have ha_gt_one : 1 < a :=
-            lt_of_not_ge fun ha' => by
-              clear h
-              revert ha ha1
-              decide!
+          have ha_gt_one : 1 < a := lt_of_not_ge fun ha' => by clear h; revert ha ha1; decide!
           not_lt_of_ge (le_of_dvd (Nat.pos_of_ne_zero hb) (h b)) (lt_pow_self ha_gt_one b),
       fun h => by cases h <;> simp [*]⟩
 #align multiplicity.finite_nat_iff multiplicity.finite_nat_iff
@@ -477,9 +451,7 @@ variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 #print multiplicity.isUnit_right /-
 theorem isUnit_right {a b : α} (ha : ¬IsUnit a) (hb : IsUnit b) : multiplicity a b = 0 :=
   eq_coe_iff.2
-    ⟨show a ^ 0 ∣ b by simp only [pow_zero, one_dvd],
-      by
-      rw [pow_one]
+    ⟨show a ^ 0 ∣ b by simp only [pow_zero, one_dvd], by rw [pow_one];
       exact fun h => mt (isUnit_of_dvd_unit h) ha hb⟩
 #align multiplicity.is_unit_right multiplicity.isUnit_right
 -/
@@ -673,16 +645,12 @@ theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity
   apply le_antisymm
   · apply PartENat.le_of_lt_add_one
     cases' part_enat.ne_top_iff.mp (PartENat.ne_top_of_lt h) with k hk
-    rw [hk]
-    rw_mod_cast [multiplicity_lt_iff_neg_dvd, dvd_add_right]
+    rw [hk]; rw_mod_cast [multiplicity_lt_iff_neg_dvd, dvd_add_right]
     intro h_dvd
-    apply multiplicity.is_greatest _ h_dvd
-    rw [hk]
-    apply_mod_cast Nat.lt_succ_self
+    apply multiplicity.is_greatest _ h_dvd; rw [hk]; apply_mod_cast Nat.lt_succ_self
     rw [pow_dvd_iff_le_multiplicity, Nat.cast_add, ← hk, Nat.cast_one]
     exact PartENat.add_one_le_of_lt h
-  · convert min_le_multiplicity_add
-    rw [min_eq_right (le_of_lt h)]
+  · convert min_le_multiplicity_add; rw [min_eq_right (le_of_lt h)]
 #align multiplicity.multiplicity_add_of_gt multiplicity.multiplicity_add_of_gt
 
 /- warning: multiplicity.multiplicity_sub_of_gt -> multiplicity.multiplicity_sub_of_gt is a dubious translation:
@@ -706,11 +674,9 @@ theorem multiplicity_add_eq_min {p a b : α} (h : multiplicity p a ≠ multiplic
     multiplicity p (a + b) = min (multiplicity p a) (multiplicity p b) :=
   by
   rcases lt_trichotomy (multiplicity p a) (multiplicity p b) with (hab | hab | hab)
-  · rw [add_comm, multiplicity_add_of_gt hab, min_eq_left]
-    exact le_of_lt hab
+  · rw [add_comm, multiplicity_add_of_gt hab, min_eq_left]; exact le_of_lt hab
   · contradiction
-  · rw [multiplicity_add_of_gt hab, min_eq_right]
-    exact le_of_lt hab
+  · rw [multiplicity_add_of_gt hab, min_eq_right]; exact le_of_lt hab
 #align multiplicity.multiplicity_add_eq_min multiplicity.multiplicity_add_eq_min
 
 end Ring
@@ -806,9 +772,8 @@ but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7164 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7166 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7164 x._@.Mathlib.RingTheory.Multiplicity._hyg.7166)] {a : α}, (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) a)) -> (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a a) (OfNat.ofNat.{0} PartENat 1 (One.toOfNat1.{0} PartENat PartENat.instOnePartENat)))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_self multiplicity.multiplicity_selfₓ'. -/
 @[simp]
-theorem multiplicity_self {a : α} (ha : ¬IsUnit a) (ha0 : a ≠ 0) : multiplicity a a = 1 :=
-  by
-  rw [← Nat.cast_one]
+theorem multiplicity_self {a : α} (ha : ¬IsUnit a) (ha0 : a ≠ 0) : multiplicity a a = 1 := by
+  rw [← Nat.cast_one];
   exact
     eq_coe_iff.2
       ⟨by simp, fun ⟨b, hb⟩ =>
@@ -933,10 +898,7 @@ but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8514 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8516 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8514 x._@.Mathlib.RingTheory.Multiplicity._hyg.8516)] {p : α}, (Ne.{succ u1} α p (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) -> (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p)) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) n))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_pow_self multiplicity.multiplicity_pow_selfₓ'. -/
 theorem multiplicity_pow_self {p : α} (h0 : p ≠ 0) (hu : ¬IsUnit p) (n : ℕ) :
-    multiplicity p (p ^ n) = n := by
-  rw [eq_coe_iff]
-  use dvd_rfl
-  rw [pow_dvd_pow_iff h0 hu]
+    multiplicity p (p ^ n) = n := by rw [eq_coe_iff]; use dvd_rfl; rw [pow_dvd_pow_iff h0 hu];
   apply Nat.not_succ_le_self
 #align multiplicity.multiplicity_pow_self multiplicity.multiplicity_pow_self
 
Diff
@@ -973,7 +973,7 @@ noncomputable def addValuation (hp : Prime p) : AddValuation R PartENat :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.Dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalRing.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalRing.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))] {hp : Prime.{u1} R (CommSemiring.toCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) p} {r : R}, Eq.{1} PartENat (coeFn.{succ u1, succ u1} (AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.linearOrderedAddCommMonoidWithTop) (fun (_x : AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.linearOrderedAddCommMonoidWithTop) => R -> PartENat) (AddValuation.hasCoeToFun.{u1, 0} R PartENat PartENat.linearOrderedAddCommMonoidWithTop (CommRing.toRing.{u1} R _inst_1)) (multiplicity.addValuation.{u1} R _inst_1 _inst_2 p (fun (a : R) (b : R) => _inst_3 a b) hp) r) (multiplicity.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) (fun (a : R) (b : R) => _inst_3 a b) p r)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalCommSemiring.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))] {hp : Prime.{u1} R (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} R (IsDomain.toCancelCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2)) p} {r : R}, Eq.{1} (Multiplicative.{0} (OrderDual.{0} PartENat)) (ZeroHom.toFun.{u1, 0} R (Multiplicative.{0} (OrderDual.{0} PartENat)) (MulZeroOneClass.toZero.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (MulZeroOneClass.toZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (MonoidWithZero.toMulZeroOneClass.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (CommMonoidWithZero.toMonoidWithZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (instLinearOrderedCommMonoidWithZeroMultiplicativeOrderDual.{0} PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat))))) (MonoidWithZeroHom.toZeroHom.{u1, 0} R (Multiplicative.{0} (OrderDual.{0} PartENat)) (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (MonoidWithZero.toMulZeroOneClass.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (CommMonoidWithZero.toMonoidWithZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (instLinearOrderedCommMonoidWithZeroMultiplicativeOrderDual.{0} PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat)))) (Valuation.toMonoidWithZeroHom.{u1, 0} R (Multiplicative.{0} (OrderDual.{0} PartENat)) (instLinearOrderedCommMonoidWithZeroMultiplicativeOrderDual.{0} PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat) (CommRing.toRing.{u1} R _inst_1) (multiplicity.addValuation.{u1} R _inst_1 _inst_2 p (fun (a : R) (b : R) => _inst_3 a b) hp))) r) (multiplicity.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (fun (a : R) (b : R) => _inst_3 a b) p r)
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalCommSemiring.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))] {hp : Prime.{u1} R (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} R (IsDomain.toCancelCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2)) p} {r : R}, Eq.{1} ((fun (x._@.Mathlib.RingTheory.Valuation.Basic._hyg.8830 : R) => PartENat) r) (FunLike.coe.{succ u1, succ u1, 1} (AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat) R (fun (_x : R) => (fun (x._@.Mathlib.RingTheory.Valuation.Basic._hyg.8830 : R) => PartENat) _x) (AddValuation.instFunLikeAddValuation.{u1, 0} R PartENat (CommRing.toRing.{u1} R _inst_1) PartENat.instLinearOrderedAddCommMonoidWithTopPartENat) (multiplicity.addValuation.{u1} R _inst_1 _inst_2 p (fun (a : R) (b : R) => _inst_3 a b) hp) r) (multiplicity.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (fun (a : R) (b : R) => _inst_3 a b) p r)
 Case conversion may be inaccurate. Consider using '#align multiplicity.add_valuation_apply multiplicity.addValuation_applyₓ'. -/
 @[simp]
 theorem addValuation_apply {hp : Prime p} {r : R} : addValuation hp r = multiplicity p r :=
Diff
@@ -158,7 +158,7 @@ theorem pow_multiplicity_dvd {a b : α} (h : Finite a b) : a ^ get (multiplicity
 
 /- warning: multiplicity.is_greatest -> multiplicity.is_greatest is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {m : Nat}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) m)) -> (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a m) b))
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {m : Nat}, (LT.lt.{0} PartENat (Preorder.toHasLt.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) m)) -> (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a m) b))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.1017 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.1019 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.1017 x._@.Mathlib.RingTheory.Multiplicity._hyg.1019)] {a : α} {b : α} {m : Nat}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) m)) -> (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a m) b))
 Case conversion may be inaccurate. Consider using '#align multiplicity.is_greatest multiplicity.is_greatestₓ'. -/
@@ -227,7 +227,7 @@ theorem pow_dvd_iff_le_multiplicity {a b : α} {k : ℕ} :
 
 /- warning: multiplicity.multiplicity_lt_iff_neg_dvd -> multiplicity.multiplicity_lt_iff_neg_dvd is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {k : Nat}, Iff (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) k)) (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b))
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {k : Nat}, Iff (LT.lt.{0} PartENat (Preorder.toHasLt.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) k)) (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.1665 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.1667 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.1665 x._@.Mathlib.RingTheory.Multiplicity._hyg.1667)] {a : α} {b : α} {k : Nat}, Iff (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) k)) (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_lt_iff_neg_dvd multiplicity.multiplicity_lt_iff_neg_dvdₓ'. -/
@@ -337,11 +337,15 @@ theorem ne_top_iff_finite {a b : α} : multiplicity a b ≠ ⊤ ↔ Finite a b :
 #align multiplicity.ne_top_iff_finite multiplicity.ne_top_iff_finite
 -/
 
-#print multiplicity.lt_top_iff_finite /-
+/- warning: multiplicity.lt_top_iff_finite -> multiplicity.lt_top_iff_finite is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α}, Iff (LT.lt.{0} PartENat (Preorder.toHasLt.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) (Top.top.{0} PartENat PartENat.hasTop)) (multiplicity.Finite.{u1} α _inst_1 a b)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.2567 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.2569 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.2567 x._@.Mathlib.RingTheory.Multiplicity._hyg.2569)] {a : α} {b : α}, Iff (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) (Top.top.{0} PartENat PartENat.instTopPartENat)) (multiplicity.Finite.{u1} α _inst_1 a b)
+Case conversion may be inaccurate. Consider using '#align multiplicity.lt_top_iff_finite multiplicity.lt_top_iff_finiteₓ'. -/
 theorem lt_top_iff_finite {a b : α} : multiplicity a b < ⊤ ↔ Finite a b := by
   rw [lt_top_iff_ne_top, ne_top_iff_finite]
 #align multiplicity.lt_top_iff_finite multiplicity.lt_top_iff_finite
--/
 
 /- warning: multiplicity.exists_eq_pow_mul_and_not_dvd -> multiplicity.exists_eq_pow_mul_and_not_dvd is a dubious translation:
 lean 3 declaration is
@@ -401,16 +405,25 @@ theorem eq_of_associated_right {a b c : α} (h : Associated b c) :
 #align multiplicity.eq_of_associated_right multiplicity.eq_of_associated_right
 -/
 
-#print multiplicity.dvd_of_multiplicity_pos /-
+/- warning: multiplicity.dvd_of_multiplicity_pos -> multiplicity.dvd_of_multiplicity_pos is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toHasLt.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (OfNat.ofNat.{0} PartENat 0 (OfNat.mk.{0} PartENat 0 (Zero.zero.{0} PartENat PartENat.hasZero))) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b)) -> (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) a b)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.3267 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.3269 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.3267 x._@.Mathlib.RingTheory.Multiplicity._hyg.3269)] {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (OfNat.ofNat.{0} PartENat 0 (Zero.toOfNat0.{0} PartENat PartENat.instZeroPartENat)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b)) -> (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) a b)
+Case conversion may be inaccurate. Consider using '#align multiplicity.dvd_of_multiplicity_pos multiplicity.dvd_of_multiplicity_posₓ'. -/
 theorem dvd_of_multiplicity_pos {a b : α} (h : (0 : PartENat) < multiplicity a b) : a ∣ b :=
   by
   rw [← pow_one a]
   apply pow_dvd_of_le_multiplicity
   simpa only [Nat.cast_one, PartENat.pos_iff_one_le] using h
 #align multiplicity.dvd_of_multiplicity_pos multiplicity.dvd_of_multiplicity_pos
--/
 
-#print multiplicity.dvd_iff_multiplicity_pos /-
+/- warning: multiplicity.dvd_iff_multiplicity_pos -> multiplicity.dvd_iff_multiplicity_pos is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α}, Iff (LT.lt.{0} PartENat (Preorder.toHasLt.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (OfNat.ofNat.{0} PartENat 0 (OfNat.mk.{0} PartENat 0 (Zero.zero.{0} PartENat PartENat.hasZero))) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b)) (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) a b)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.3353 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.3355 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.3353 x._@.Mathlib.RingTheory.Multiplicity._hyg.3355)] {a : α} {b : α}, Iff (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (OfNat.ofNat.{0} PartENat 0 (Zero.toOfNat0.{0} PartENat PartENat.instZeroPartENat)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b)) (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) a b)
+Case conversion may be inaccurate. Consider using '#align multiplicity.dvd_iff_multiplicity_pos multiplicity.dvd_iff_multiplicity_posₓ'. -/
 theorem dvd_iff_multiplicity_pos {a b : α} : (0 : PartENat) < multiplicity a b ↔ a ∣ b :=
   ⟨dvd_of_multiplicity_pos, fun hdvd =>
     lt_of_le_of_ne (zero_le _) fun heq =>
@@ -419,7 +432,6 @@ theorem dvd_iff_multiplicity_pos {a b : α} : (0 : PartENat) < multiplicity a b
           simpa only [HEq, Nat.cast_zero] using part_enat.coe_lt_coe.mpr zero_lt_one)
         (by rwa [pow_one a])⟩
 #align multiplicity.dvd_iff_multiplicity_pos multiplicity.dvd_iff_multiplicity_pos
--/
 
 #print multiplicity.finite_nat_iff /-
 theorem finite_nat_iff {a b : ℕ} : Finite a b ↔ a ≠ 1 ∧ 0 < b :=
@@ -651,7 +663,7 @@ theorem Int.natAbs (a : ℕ) (b : ℤ) : multiplicity a b.natAbs = multiplicity
 
 /- warning: multiplicity.multiplicity_add_of_gt -> multiplicity.multiplicity_add_of_gt is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (Ring.toDistrib.{u1} α _inst_1))) a b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b))
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toHasLt.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (Ring.toDistrib.{u1} α _inst_1))) a b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5398 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5400 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5398 x._@.Mathlib.RingTheory.Multiplicity._hyg.5400)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_add_of_gt multiplicity.multiplicity_add_of_gtₓ'. -/
@@ -675,7 +687,7 @@ theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity
 
 /- warning: multiplicity.multiplicity_sub_of_gt -> multiplicity.multiplicity_sub_of_gt is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (SubNegMonoid.toHasSub.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b))
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toHasLt.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (SubNegMonoid.toHasSub.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5831 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5833 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5831 x._@.Mathlib.RingTheory.Multiplicity._hyg.5833)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (Ring.toSub.{u1} α _inst_1)) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_sub_of_gt multiplicity.multiplicity_sub_of_gtₓ'. -/
Diff
@@ -622,7 +622,7 @@ variable [Ring α] [DecidableRel ((· ∣ ·) : α → α → Prop)]
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] (a : α) (b : α), Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (Neg.neg.{u1} α (SubNegMonoid.toHasNeg.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1))))) b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a b)
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5104 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5106 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5104 x._@.Mathlib.RingTheory.Multiplicity._hyg.5106)] (a : α) (b : α), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a (Neg.neg.{u1} α (Ring.toNeg.{u1} α _inst_1) b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a b)
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5104 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5106 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5104 x._@.Mathlib.RingTheory.Multiplicity._hyg.5106)] (a : α) (b : α), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a (Neg.neg.{u1} α (Ring.toNeg.{u1} α _inst_1) b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a b)
 Case conversion may be inaccurate. Consider using '#align multiplicity.neg multiplicity.negₓ'. -/
 @[simp]
 protected theorem neg (a b : α) : multiplicity a (-b) = multiplicity a b :=
@@ -653,7 +653,7 @@ theorem Int.natAbs (a : ℕ) (b : ℤ) : multiplicity a b.natAbs = multiplicity
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (Ring.toDistrib.{u1} α _inst_1))) a b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5398 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5400 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5398 x._@.Mathlib.RingTheory.Multiplicity._hyg.5400)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5398 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5400 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5398 x._@.Mathlib.RingTheory.Multiplicity._hyg.5400)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_add_of_gt multiplicity.multiplicity_add_of_gtₓ'. -/
 theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity p a) :
     multiplicity p (a + b) = multiplicity p b :=
@@ -677,7 +677,7 @@ theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (SubNegMonoid.toHasSub.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5831 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5833 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5831 x._@.Mathlib.RingTheory.Multiplicity._hyg.5833)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (Ring.toSub.{u1} α _inst_1)) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5831 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5833 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5831 x._@.Mathlib.RingTheory.Multiplicity._hyg.5833)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (Ring.toSub.{u1} α _inst_1)) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_sub_of_gt multiplicity.multiplicity_sub_of_gtₓ'. -/
 theorem multiplicity_sub_of_gt {p a b : α} (h : multiplicity p b < multiplicity p a) :
     multiplicity p (a - b) = multiplicity p b := by
@@ -688,7 +688,7 @@ theorem multiplicity_sub_of_gt {p a b : α} (h : multiplicity p b < multiplicity
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (Ne.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (Ring.toDistrib.{u1} α _inst_1))) a b)) (LinearOrder.min.{0} PartENat PartENat.linearOrder (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b)))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5988 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5990 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5988 x._@.Mathlib.RingTheory.Multiplicity._hyg.5990)] {p : α} {a : α} {b : α}, (Ne.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (Min.min.{0} PartENat (LinearOrder.toMin.{0} PartENat PartENat.linearOrder) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5988 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5990 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5988 x._@.Mathlib.RingTheory.Multiplicity._hyg.5990)] {p : α} {a : α} {b : α}, (Ne.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (Min.min.{0} PartENat (LinearOrder.toMin.{0} PartENat PartENat.linearOrder) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_add_eq_min multiplicity.multiplicity_add_eq_minₓ'. -/
 theorem multiplicity_add_eq_min {p a b : α} (h : multiplicity p a ≠ multiplicity p b) :
     multiplicity p (a + b) = min (multiplicity p a) (multiplicity p b) :=
@@ -949,7 +949,7 @@ variable {R : Type _} [CommRing R] [IsDomain R] {p : R} [DecidableRel (Dvd.Dvd :
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.Dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalRing.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalRing.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))], (Prime.{u1} R (CommSemiring.toCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) p) -> (AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.linearOrderedAddCommMonoidWithTop)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalRing.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalRing.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))], (Prime.{u1} R (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} R (IsDomain.toCancelCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2)) p) -> (AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat)
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalCommSemiring.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))], (Prime.{u1} R (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} R (IsDomain.toCancelCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2)) p) -> (AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat)
 Case conversion may be inaccurate. Consider using '#align multiplicity.add_valuation multiplicity.addValuationₓ'. -/
 /-- `multiplicity` of a prime inan integral domain as an additive valuation to `part_enat`. -/
 noncomputable def addValuation (hp : Prime p) : AddValuation R PartENat :=
@@ -961,7 +961,7 @@ noncomputable def addValuation (hp : Prime p) : AddValuation R PartENat :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.Dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalRing.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalRing.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))] {hp : Prime.{u1} R (CommSemiring.toCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) p} {r : R}, Eq.{1} PartENat (coeFn.{succ u1, succ u1} (AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.linearOrderedAddCommMonoidWithTop) (fun (_x : AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.linearOrderedAddCommMonoidWithTop) => R -> PartENat) (AddValuation.hasCoeToFun.{u1, 0} R PartENat PartENat.linearOrderedAddCommMonoidWithTop (CommRing.toRing.{u1} R _inst_1)) (multiplicity.addValuation.{u1} R _inst_1 _inst_2 p (fun (a : R) (b : R) => _inst_3 a b) hp) r) (multiplicity.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) (fun (a : R) (b : R) => _inst_3 a b) p r)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalRing.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalRing.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))] {hp : Prime.{u1} R (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} R (IsDomain.toCancelCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2)) p} {r : R}, Eq.{1} (Multiplicative.{0} (OrderDual.{0} PartENat)) (ZeroHom.toFun.{u1, 0} R (Multiplicative.{0} (OrderDual.{0} PartENat)) (MulZeroOneClass.toZero.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (MulZeroOneClass.toZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (MonoidWithZero.toMulZeroOneClass.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (CommMonoidWithZero.toMonoidWithZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (instLinearOrderedCommMonoidWithZeroMultiplicativeOrderDual.{0} PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat))))) (MonoidWithZeroHom.toZeroHom.{u1, 0} R (Multiplicative.{0} (OrderDual.{0} PartENat)) (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (MonoidWithZero.toMulZeroOneClass.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (CommMonoidWithZero.toMonoidWithZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (instLinearOrderedCommMonoidWithZeroMultiplicativeOrderDual.{0} PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat)))) (Valuation.toMonoidWithZeroHom.{u1, 0} R (Multiplicative.{0} (OrderDual.{0} PartENat)) (instLinearOrderedCommMonoidWithZeroMultiplicativeOrderDual.{0} PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat) (CommRing.toRing.{u1} R _inst_1) (multiplicity.addValuation.{u1} R _inst_1 _inst_2 p (fun (a : R) (b : R) => _inst_3 a b) hp))) r) (multiplicity.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (fun (a : R) (b : R) => _inst_3 a b) p r)
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalCommSemiring.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))] {hp : Prime.{u1} R (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} R (IsDomain.toCancelCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2)) p} {r : R}, Eq.{1} (Multiplicative.{0} (OrderDual.{0} PartENat)) (ZeroHom.toFun.{u1, 0} R (Multiplicative.{0} (OrderDual.{0} PartENat)) (MulZeroOneClass.toZero.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (MulZeroOneClass.toZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (MonoidWithZero.toMulZeroOneClass.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (CommMonoidWithZero.toMonoidWithZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (instLinearOrderedCommMonoidWithZeroMultiplicativeOrderDual.{0} PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat))))) (MonoidWithZeroHom.toZeroHom.{u1, 0} R (Multiplicative.{0} (OrderDual.{0} PartENat)) (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (MonoidWithZero.toMulZeroOneClass.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (CommMonoidWithZero.toMonoidWithZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (instLinearOrderedCommMonoidWithZeroMultiplicativeOrderDual.{0} PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat)))) (Valuation.toMonoidWithZeroHom.{u1, 0} R (Multiplicative.{0} (OrderDual.{0} PartENat)) (instLinearOrderedCommMonoidWithZeroMultiplicativeOrderDual.{0} PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat) (CommRing.toRing.{u1} R _inst_1) (multiplicity.addValuation.{u1} R _inst_1 _inst_2 p (fun (a : R) (b : R) => _inst_3 a b) hp))) r) (multiplicity.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (fun (a : R) (b : R) => _inst_3 a b) p r)
 Case conversion may be inaccurate. Consider using '#align multiplicity.add_valuation_apply multiplicity.addValuation_applyₓ'. -/
 @[simp]
 theorem addValuation_apply {hp : Prime p} {r : R} : addValuation hp r = multiplicity p r :=
Diff
@@ -476,7 +476,7 @@ theorem isUnit_right {a b : α} (ha : ¬IsUnit a) (hb : IsUnit b) : multiplicity
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : CommMonoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1))))] {a : α}, (Not (IsUnit.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (MulOneClass.toHasOne.{u1} α (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1))))))) (OfNat.ofNat.{0} PartENat 0 (OfNat.mk.{0} PartENat 0 (Zero.zero.{0} PartENat PartENat.hasZero))))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CommMonoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4005 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4007 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4005 x._@.Mathlib.RingTheory.Multiplicity._hyg.4007)] {a : α}, (Not (IsUnit.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Monoid.toOne.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1))))) (OfNat.ofNat.{0} PartENat 0 (Zero.toOfNat0.{0} PartENat PartENat.instZeroPartENat)))
+  forall {α : Type.{u1}} [_inst_1 : CommMonoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4001 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4003 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4001 x._@.Mathlib.RingTheory.Multiplicity._hyg.4003)] {a : α}, (Not (IsUnit.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Monoid.toOne.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1))))) (OfNat.ofNat.{0} PartENat 0 (Zero.toOfNat0.{0} PartENat PartENat.instZeroPartENat)))
 Case conversion may be inaccurate. Consider using '#align multiplicity.one_right multiplicity.one_rightₓ'. -/
 theorem one_right {a : α} (ha : ¬IsUnit a) : multiplicity a 1 = 0 :=
   isUnit_right ha isUnit_one
@@ -531,7 +531,7 @@ variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α _inst_1))))] (a : α), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α _inst_1))))))) (Top.top.{0} PartENat PartENat.hasTop)
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4291 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4293 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α _inst_1))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4291 x._@.Mathlib.RingTheory.Multiplicity._hyg.4293)] (a : α), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α _inst_1)))) (Top.top.{0} PartENat PartENat.instTopPartENat)
+  forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4287 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4289 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α _inst_1))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4287 x._@.Mathlib.RingTheory.Multiplicity._hyg.4289)] (a : α), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α _inst_1)))) (Top.top.{0} PartENat PartENat.instTopPartENat)
 Case conversion may be inaccurate. Consider using '#align multiplicity.zero multiplicity.zeroₓ'. -/
 @[simp]
 protected theorem zero (a : α) : multiplicity a 0 = ⊤ :=
@@ -542,7 +542,7 @@ protected theorem zero (a : α) : multiplicity a 0 = ⊤ :=
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α _inst_1))))] (a : α), (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α _inst_1))))))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α _inst_1)))))) a) (OfNat.ofNat.{0} PartENat 0 (OfNat.mk.{0} PartENat 0 (Zero.zero.{0} PartENat PartENat.hasZero))))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4369 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4371 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α _inst_1))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4369 x._@.Mathlib.RingTheory.Multiplicity._hyg.4371)] (a : α), (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α _inst_1)))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α _inst_1))) a) (OfNat.ofNat.{0} PartENat 0 (Zero.toOfNat0.{0} PartENat PartENat.instZeroPartENat)))
+  forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4365 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4367 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α _inst_1))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4365 x._@.Mathlib.RingTheory.Multiplicity._hyg.4367)] (a : α), (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α _inst_1)))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α _inst_1))) a) (OfNat.ofNat.{0} PartENat 0 (Zero.toOfNat0.{0} PartENat PartENat.instZeroPartENat)))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_zero_eq_zero_of_ne_zero multiplicity.multiplicity_zero_eq_zero_of_ne_zeroₓ'. -/
 @[simp]
 theorem multiplicity_zero_eq_zero_of_ne_zero (a : α) (ha : a ≠ 0) : multiplicity 0 a = 0 :=
@@ -561,7 +561,7 @@ variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)))))] [_inst_3 : DecidableRel.{succ u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Dvd.Dvd.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (semigroupDvd.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (SemigroupWithZero.toSemigroup.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toSemigroupWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (CommMonoidWithZero.toMonoidWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Associates.commMonoidWithZero.{u1} α _inst_1))))))] {a : α} {b : α}, Eq.{1} PartENat (multiplicity.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMonoid.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (CommMonoidWithZero.toMonoidWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Associates.commMonoidWithZero.{u1} α _inst_1))) (fun (a : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (b : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) => _inst_3 a b) (Associates.mk.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) a) (Associates.mk.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) a b)
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4456 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4458 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4456 x._@.Mathlib.RingTheory.Multiplicity._hyg.4458)] [_inst_3 : DecidableRel.{succ u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4482 : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4484 : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) => Dvd.dvd.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (semigroupDvd.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (SemigroupWithZero.toSemigroup.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toSemigroupWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (CommMonoidWithZero.toMonoidWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Associates.instCommMonoidWithZeroAssociatesToMonoidToMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4482 x._@.Mathlib.RingTheory.Multiplicity._hyg.4484)] {a : α} {b : α}, Eq.{1} PartENat (multiplicity.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMonoid.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (CommMonoidWithZero.toMonoidWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Associates.instCommMonoidWithZeroAssociatesToMonoidToMonoidWithZero.{u1} α _inst_1))) (fun (a : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (b : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) => _inst_3 a b) (Associates.mk.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) a) (Associates.mk.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) a b)
+  forall {α : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4452 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4454 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4452 x._@.Mathlib.RingTheory.Multiplicity._hyg.4454)] [_inst_3 : DecidableRel.{succ u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4478 : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4480 : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) => Dvd.dvd.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (semigroupDvd.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (SemigroupWithZero.toSemigroup.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toSemigroupWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (CommMonoidWithZero.toMonoidWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Associates.instCommMonoidWithZeroAssociatesToMonoidToMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4478 x._@.Mathlib.RingTheory.Multiplicity._hyg.4480)] {a : α} {b : α}, Eq.{1} PartENat (multiplicity.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMonoid.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (CommMonoidWithZero.toMonoidWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Associates.instCommMonoidWithZeroAssociatesToMonoidToMonoidWithZero.{u1} α _inst_1))) (fun (a : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (b : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) => _inst_3 a b) (Associates.mk.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) a) (Associates.mk.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) a b)
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_mk_eq_multiplicity multiplicity.multiplicity_mk_eq_multiplicityₓ'. -/
 theorem multiplicity_mk_eq_multiplicity
     [DecidableRel ((· ∣ ·) : Associates α → Associates α → Prop)] {a b : α} :
@@ -599,7 +599,7 @@ variable [Semiring α] [DecidableRel ((· ∣ ·) : α → α → Prop)]
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : Semiring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α _inst_1)))))] {p : α} {a : α} {b : α}, LE.le.{0} PartENat PartENat.hasLe (LinearOrder.min.{0} PartENat PartENat.linearOrder (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_1))))) a b))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Semiring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4903 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4905 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α _inst_1)))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4903 x._@.Mathlib.RingTheory.Multiplicity._hyg.4905)] {p : α} {a : α} {b : α}, LE.le.{0} PartENat PartENat.instLEPartENat (Min.min.{0} PartENat (LinearOrder.toMin.{0} PartENat PartENat.linearOrder) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_1))))) a b))
+  forall {α : Type.{u1}} [_inst_1 : Semiring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4899 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4901 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α _inst_1)))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4899 x._@.Mathlib.RingTheory.Multiplicity._hyg.4901)] {p : α} {a : α} {b : α}, LE.le.{0} PartENat PartENat.instLEPartENat (Min.min.{0} PartENat (LinearOrder.toMin.{0} PartENat PartENat.linearOrder) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_1))))) a b))
 Case conversion may be inaccurate. Consider using '#align multiplicity.min_le_multiplicity_add multiplicity.min_le_multiplicity_addₓ'. -/
 theorem min_le_multiplicity_add {p a b : α} :
     min (multiplicity p a) (multiplicity p b) ≤ multiplicity p (a + b) :=
@@ -622,7 +622,7 @@ variable [Ring α] [DecidableRel ((· ∣ ·) : α → α → Prop)]
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] (a : α) (b : α), Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (Neg.neg.{u1} α (SubNegMonoid.toHasNeg.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1))))) b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a b)
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5108 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5110 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5108 x._@.Mathlib.RingTheory.Multiplicity._hyg.5110)] (a : α) (b : α), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a (Neg.neg.{u1} α (Ring.toNeg.{u1} α _inst_1) b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a b)
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5104 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5106 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5104 x._@.Mathlib.RingTheory.Multiplicity._hyg.5106)] (a : α) (b : α), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a (Neg.neg.{u1} α (Ring.toNeg.{u1} α _inst_1) b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a b)
 Case conversion may be inaccurate. Consider using '#align multiplicity.neg multiplicity.negₓ'. -/
 @[simp]
 protected theorem neg (a b : α) : multiplicity a (-b) = multiplicity a b :=
@@ -653,7 +653,7 @@ theorem Int.natAbs (a : ℕ) (b : ℤ) : multiplicity a b.natAbs = multiplicity
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (Ring.toDistrib.{u1} α _inst_1))) a b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5402 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5404 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5402 x._@.Mathlib.RingTheory.Multiplicity._hyg.5404)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5398 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5400 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5398 x._@.Mathlib.RingTheory.Multiplicity._hyg.5400)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_add_of_gt multiplicity.multiplicity_add_of_gtₓ'. -/
 theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity p a) :
     multiplicity p (a + b) = multiplicity p b :=
@@ -677,7 +677,7 @@ theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (SubNegMonoid.toHasSub.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5835 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5837 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5835 x._@.Mathlib.RingTheory.Multiplicity._hyg.5837)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (Ring.toSub.{u1} α _inst_1)) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5831 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5833 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5831 x._@.Mathlib.RingTheory.Multiplicity._hyg.5833)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (Ring.toSub.{u1} α _inst_1)) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_sub_of_gt multiplicity.multiplicity_sub_of_gtₓ'. -/
 theorem multiplicity_sub_of_gt {p a b : α} (h : multiplicity p b < multiplicity p a) :
     multiplicity p (a - b) = multiplicity p b := by
@@ -688,7 +688,7 @@ theorem multiplicity_sub_of_gt {p a b : α} (h : multiplicity p b < multiplicity
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (Ne.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (Ring.toDistrib.{u1} α _inst_1))) a b)) (LinearOrder.min.{0} PartENat PartENat.linearOrder (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b)))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5992 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5994 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5992 x._@.Mathlib.RingTheory.Multiplicity._hyg.5994)] {p : α} {a : α} {b : α}, (Ne.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (Min.min.{0} PartENat (LinearOrder.toMin.{0} PartENat PartENat.linearOrder) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5988 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5990 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5988 x._@.Mathlib.RingTheory.Multiplicity._hyg.5990)] {p : α} {a : α} {b : α}, (Ne.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (Min.min.{0} PartENat (LinearOrder.toMin.{0} PartENat PartENat.linearOrder) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_add_eq_min multiplicity.multiplicity_add_eq_minₓ'. -/
 theorem multiplicity_add_eq_min {p a b : α} (h : multiplicity p a ≠ multiplicity p b) :
     multiplicity p (a + b) = min (multiplicity p a) (multiplicity p b) :=
@@ -791,7 +791,7 @@ variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {a : α}, (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) a)) -> (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a a) (OfNat.ofNat.{0} PartENat 1 (OfNat.mk.{0} PartENat 1 (One.one.{0} PartENat PartENat.hasOne))))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7168 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7170 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7168 x._@.Mathlib.RingTheory.Multiplicity._hyg.7170)] {a : α}, (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) a)) -> (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a a) (OfNat.ofNat.{0} PartENat 1 (One.toOfNat1.{0} PartENat PartENat.instOnePartENat)))
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7164 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7166 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7164 x._@.Mathlib.RingTheory.Multiplicity._hyg.7166)] {a : α}, (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) a)) -> (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a a) (OfNat.ofNat.{0} PartENat 1 (One.toOfNat1.{0} PartENat PartENat.instOnePartENat)))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_self multiplicity.multiplicity_selfₓ'. -/
 @[simp]
 theorem multiplicity_self {a : α} (ha : ¬IsUnit a) (ha0 : a ≠ 0) : multiplicity a a = 1 :=
@@ -825,7 +825,7 @@ theorem get_multiplicity_self {a : α} (ha : Finite a a) : get (multiplicity a a
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α} {a : α} {b : α} (hp : Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) (h : Part.Dom.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b))), Eq.{1} Nat (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) h) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (And.left (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (And.right (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7426 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7428 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7426 x._@.Mathlib.RingTheory.Multiplicity._hyg.7428)] {p : α} {a : α} {b : α} (hp : Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) (h : Part.Dom.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b))), Eq.{1} Nat (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) h) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (And.left (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (And.right (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))))
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7422 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7424 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7422 x._@.Mathlib.RingTheory.Multiplicity._hyg.7424)] {p : α} {a : α} {b : α} (hp : Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) (h : Part.Dom.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b))), Eq.{1} Nat (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) h) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (And.left (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (And.right (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))))
 Case conversion may be inaccurate. Consider using '#align multiplicity.mul' multiplicity.mul'ₓ'. -/
 protected theorem mul' {p a b : α} (hp : Prime p) (h : (multiplicity p (a * b)).Dom) :
     get (multiplicity p (a * b)) h =
@@ -865,7 +865,7 @@ open Classical
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (HAdd.hAdd.{0, 0, 0} PartENat PartENat PartENat (instHAdd.{0} PartENat PartENat.hasAdd) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7937 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7939 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7937 x._@.Mathlib.RingTheory.Multiplicity._hyg.7939)] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (HAdd.hAdd.{0, 0, 0} PartENat PartENat PartENat (instHAdd.{0} PartENat PartENat.instAddPartENat) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7933 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7935 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7933 x._@.Mathlib.RingTheory.Multiplicity._hyg.7935)] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (HAdd.hAdd.{0, 0, 0} PartENat PartENat PartENat (instHAdd.{0} PartENat PartENat.instAddPartENat) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
 Case conversion may be inaccurate. Consider using '#align multiplicity.mul multiplicity.mulₓ'. -/
 protected theorem mul {p a b : α} (hp : Prime p) :
     multiplicity p (a * b) = multiplicity p a + multiplicity p b :=
@@ -907,7 +907,7 @@ protected theorem pow' {p a : α} (hp : Prime p) (ha : Finite p a) :
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α} {a : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall {k : Nat}, Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) a k)) (SMul.smul.{0, 0} Nat PartENat (AddMonoid.SMul.{0} PartENat (AddMonoidWithOne.toAddMonoid.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))) k (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8423 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8425 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8423 x._@.Mathlib.RingTheory.Multiplicity._hyg.8425)] {p : α} {a : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall {k : Nat}, Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) a k)) (HSMul.hSMul.{0, 0, 0} Nat PartENat PartENat (instHSMul.{0, 0} Nat PartENat (AddMonoid.SMul.{0} PartENat (AddMonoidWithOne.toAddMonoid.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)))) k (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)))
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8419 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8421 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8419 x._@.Mathlib.RingTheory.Multiplicity._hyg.8421)] {p : α} {a : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall {k : Nat}, Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) a k)) (HSMul.hSMul.{0, 0, 0} Nat PartENat PartENat (instHSMul.{0, 0} Nat PartENat (AddMonoid.SMul.{0} PartENat (AddMonoidWithOne.toAddMonoid.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)))) k (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)))
 Case conversion may be inaccurate. Consider using '#align multiplicity.pow multiplicity.powₓ'. -/
 theorem pow {p a : α} (hp : Prime p) : ∀ {k : ℕ}, multiplicity p (a ^ k) = k • multiplicity p a
   | 0 => by simp [one_right hp.not_unit]
@@ -918,7 +918,7 @@ theorem pow {p a : α} (hp : Prime p) : ∀ {k : ℕ}, multiplicity p (a ^ k) =
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α}, (Ne.{succ u1} α p (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))))) -> (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p)) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) n))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8518 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8520 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8518 x._@.Mathlib.RingTheory.Multiplicity._hyg.8520)] {p : α}, (Ne.{succ u1} α p (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) -> (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p)) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) n))
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8514 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8516 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8514 x._@.Mathlib.RingTheory.Multiplicity._hyg.8516)] {p : α}, (Ne.{succ u1} α p (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) -> (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p)) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) n))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_pow_self multiplicity.multiplicity_pow_selfₓ'. -/
 theorem multiplicity_pow_self {p : α} (h0 : p ≠ 0) (hu : ¬IsUnit p) (n : ℕ) :
     multiplicity p (p ^ n) = n := by
@@ -932,7 +932,7 @@ theorem multiplicity_pow_self {p : α} (h0 : p ≠ 0) (hu : ¬IsUnit p) (n : ℕ
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) n))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8665 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8667 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8665 x._@.Mathlib.RingTheory.Multiplicity._hyg.8667)] {p : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) n))
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8661 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8663 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8661 x._@.Mathlib.RingTheory.Multiplicity._hyg.8663)] {p : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) n))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_pow_self_of_prime multiplicity.multiplicity_pow_self_of_primeₓ'. -/
 theorem multiplicity_pow_self_of_prime {p : α} (hp : Prime p) (n : ℕ) :
     multiplicity p (p ^ n) = n :=
Diff
@@ -653,7 +653,7 @@ theorem Int.natAbs (a : ℕ) (b : ℤ) : multiplicity a b.natAbs = multiplicity
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (Ring.toDistrib.{u1} α _inst_1))) a b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5414 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5416 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5414 x._@.Mathlib.RingTheory.Multiplicity._hyg.5416)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5402 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5404 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5402 x._@.Mathlib.RingTheory.Multiplicity._hyg.5404)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_add_of_gt multiplicity.multiplicity_add_of_gtₓ'. -/
 theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity p a) :
     multiplicity p (a + b) = multiplicity p b :=
@@ -677,7 +677,7 @@ theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (SubNegMonoid.toHasSub.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5810 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5812 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5810 x._@.Mathlib.RingTheory.Multiplicity._hyg.5812)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (Ring.toSub.{u1} α _inst_1)) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5835 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5837 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5835 x._@.Mathlib.RingTheory.Multiplicity._hyg.5837)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (Ring.toSub.{u1} α _inst_1)) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_sub_of_gt multiplicity.multiplicity_sub_of_gtₓ'. -/
 theorem multiplicity_sub_of_gt {p a b : α} (h : multiplicity p b < multiplicity p a) :
     multiplicity p (a - b) = multiplicity p b := by
@@ -688,7 +688,7 @@ theorem multiplicity_sub_of_gt {p a b : α} (h : multiplicity p b < multiplicity
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (Ne.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (Ring.toDistrib.{u1} α _inst_1))) a b)) (LinearOrder.min.{0} PartENat PartENat.linearOrder (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b)))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5967 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5969 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5967 x._@.Mathlib.RingTheory.Multiplicity._hyg.5969)] {p : α} {a : α} {b : α}, (Ne.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (Min.min.{0} PartENat (LinearOrder.toMin.{0} PartENat PartENat.linearOrder) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5992 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5994 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5992 x._@.Mathlib.RingTheory.Multiplicity._hyg.5994)] {p : α} {a : α} {b : α}, (Ne.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (Min.min.{0} PartENat (LinearOrder.toMin.{0} PartENat PartENat.linearOrder) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_add_eq_min multiplicity.multiplicity_add_eq_minₓ'. -/
 theorem multiplicity_add_eq_min {p a b : α} (h : multiplicity p a ≠ multiplicity p b) :
     multiplicity p (a + b) = min (multiplicity p a) (multiplicity p b) :=
@@ -791,7 +791,7 @@ variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {a : α}, (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) a)) -> (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a a) (OfNat.ofNat.{0} PartENat 1 (OfNat.mk.{0} PartENat 1 (One.one.{0} PartENat PartENat.hasOne))))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7143 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7145 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7143 x._@.Mathlib.RingTheory.Multiplicity._hyg.7145)] {a : α}, (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) a)) -> (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a a) (OfNat.ofNat.{0} PartENat 1 (One.toOfNat1.{0} PartENat PartENat.instOnePartENat)))
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7168 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7170 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7168 x._@.Mathlib.RingTheory.Multiplicity._hyg.7170)] {a : α}, (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) a)) -> (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a a) (OfNat.ofNat.{0} PartENat 1 (One.toOfNat1.{0} PartENat PartENat.instOnePartENat)))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_self multiplicity.multiplicity_selfₓ'. -/
 @[simp]
 theorem multiplicity_self {a : α} (ha : ¬IsUnit a) (ha0 : a ≠ 0) : multiplicity a a = 1 :=
@@ -825,7 +825,7 @@ theorem get_multiplicity_self {a : α} (ha : Finite a a) : get (multiplicity a a
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α} {a : α} {b : α} (hp : Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) (h : Part.Dom.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b))), Eq.{1} Nat (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) h) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (And.left (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (And.right (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7401 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7403 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7401 x._@.Mathlib.RingTheory.Multiplicity._hyg.7403)] {p : α} {a : α} {b : α} (hp : Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) (h : Part.Dom.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b))), Eq.{1} Nat (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) h) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (And.left (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (And.right (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))))
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7426 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7428 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7426 x._@.Mathlib.RingTheory.Multiplicity._hyg.7428)] {p : α} {a : α} {b : α} (hp : Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) (h : Part.Dom.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b))), Eq.{1} Nat (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) h) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (And.left (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (And.right (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))))
 Case conversion may be inaccurate. Consider using '#align multiplicity.mul' multiplicity.mul'ₓ'. -/
 protected theorem mul' {p a b : α} (hp : Prime p) (h : (multiplicity p (a * b)).Dom) :
     get (multiplicity p (a * b)) h =
@@ -865,7 +865,7 @@ open Classical
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (HAdd.hAdd.{0, 0, 0} PartENat PartENat PartENat (instHAdd.{0} PartENat PartENat.hasAdd) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7912 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7914 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7912 x._@.Mathlib.RingTheory.Multiplicity._hyg.7914)] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (HAdd.hAdd.{0, 0, 0} PartENat PartENat PartENat (instHAdd.{0} PartENat PartENat.instAddPartENat) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7937 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7939 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7937 x._@.Mathlib.RingTheory.Multiplicity._hyg.7939)] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (HAdd.hAdd.{0, 0, 0} PartENat PartENat PartENat (instHAdd.{0} PartENat PartENat.instAddPartENat) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
 Case conversion may be inaccurate. Consider using '#align multiplicity.mul multiplicity.mulₓ'. -/
 protected theorem mul {p a b : α} (hp : Prime p) :
     multiplicity p (a * b) = multiplicity p a + multiplicity p b :=
@@ -907,7 +907,7 @@ protected theorem pow' {p a : α} (hp : Prime p) (ha : Finite p a) :
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α} {a : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall {k : Nat}, Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) a k)) (SMul.smul.{0, 0} Nat PartENat (AddMonoid.SMul.{0} PartENat (AddMonoidWithOne.toAddMonoid.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))) k (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8398 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8400 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8398 x._@.Mathlib.RingTheory.Multiplicity._hyg.8400)] {p : α} {a : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall {k : Nat}, Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) a k)) (HSMul.hSMul.{0, 0, 0} Nat PartENat PartENat (instHSMul.{0, 0} Nat PartENat (AddMonoid.SMul.{0} PartENat (AddMonoidWithOne.toAddMonoid.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)))) k (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)))
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8423 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8425 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8423 x._@.Mathlib.RingTheory.Multiplicity._hyg.8425)] {p : α} {a : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall {k : Nat}, Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) a k)) (HSMul.hSMul.{0, 0, 0} Nat PartENat PartENat (instHSMul.{0, 0} Nat PartENat (AddMonoid.SMul.{0} PartENat (AddMonoidWithOne.toAddMonoid.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)))) k (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)))
 Case conversion may be inaccurate. Consider using '#align multiplicity.pow multiplicity.powₓ'. -/
 theorem pow {p a : α} (hp : Prime p) : ∀ {k : ℕ}, multiplicity p (a ^ k) = k • multiplicity p a
   | 0 => by simp [one_right hp.not_unit]
@@ -918,7 +918,7 @@ theorem pow {p a : α} (hp : Prime p) : ∀ {k : ℕ}, multiplicity p (a ^ k) =
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α}, (Ne.{succ u1} α p (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))))) -> (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p)) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) n))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8493 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8495 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8493 x._@.Mathlib.RingTheory.Multiplicity._hyg.8495)] {p : α}, (Ne.{succ u1} α p (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) -> (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p)) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) n))
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8518 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8520 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8518 x._@.Mathlib.RingTheory.Multiplicity._hyg.8520)] {p : α}, (Ne.{succ u1} α p (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) -> (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p)) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) n))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_pow_self multiplicity.multiplicity_pow_selfₓ'. -/
 theorem multiplicity_pow_self {p : α} (h0 : p ≠ 0) (hu : ¬IsUnit p) (n : ℕ) :
     multiplicity p (p ^ n) = n := by
@@ -932,7 +932,7 @@ theorem multiplicity_pow_self {p : α} (h0 : p ≠ 0) (hu : ¬IsUnit p) (n : ℕ
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) n))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8640 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8642 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8640 x._@.Mathlib.RingTheory.Multiplicity._hyg.8642)] {p : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) n))
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8665 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8667 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8665 x._@.Mathlib.RingTheory.Multiplicity._hyg.8667)] {p : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) n))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_pow_self_of_prime multiplicity.multiplicity_pow_self_of_primeₓ'. -/
 theorem multiplicity_pow_self_of_prime {p : α} (hp : Prime p) (n : ℕ) :
     multiplicity p (p ^ n) = n :=
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Robert Y. Lewis, Chris Hughes
 
 ! This file was ported from Lean 3 source module ring_theory.multiplicity
-! leanprover-community/mathlib commit 1dac236edca9b4b6f5f00b1ad831e35f89472837
+! leanprover-community/mathlib commit e8638a0fcaf73e4500469f368ef9494e495099b3
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -632,8 +632,8 @@ protected theorem neg (a b : α) : multiplicity a (-b) = multiplicity a b :=
         rw [PartENat.natCast_get] <;>
           exact
             Eq.symm
-              (Unique ((dvd_neg _ _).2 (pow_multiplicity_dvd _))
-                (mt (dvd_neg _ _).1 (is_greatest' _ (lt_succ_self _)))))
+              (Unique (pow_multiplicity_dvd _).neg_right
+                (mt dvd_neg.1 (is_greatest' _ (lt_succ_self _)))))
 #align multiplicity.neg multiplicity.neg
 
 /- warning: multiplicity.int.nat_abs -> multiplicity.Int.natAbs is a dubious translation:
@@ -662,9 +662,8 @@ theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity
   · apply PartENat.le_of_lt_add_one
     cases' part_enat.ne_top_iff.mp (PartENat.ne_top_of_lt h) with k hk
     rw [hk]
-    rw_mod_cast [multiplicity_lt_iff_neg_dvd]
+    rw_mod_cast [multiplicity_lt_iff_neg_dvd, dvd_add_right]
     intro h_dvd
-    rw [← dvd_add_iff_right] at h_dvd
     apply multiplicity.is_greatest _ h_dvd
     rw [hk]
     apply_mod_cast Nat.lt_succ_self
Diff
@@ -620,7 +620,7 @@ variable [Ring α] [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
 /- warning: multiplicity.neg -> multiplicity.neg is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] (a : α) (b : α), Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (Neg.neg.{u1} α (SubNegMonoid.toHasNeg.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1))))) b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a b)
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] (a : α) (b : α), Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (Neg.neg.{u1} α (SubNegMonoid.toHasNeg.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1))))) b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a b)
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5108 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5110 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5108 x._@.Mathlib.RingTheory.Multiplicity._hyg.5110)] (a : α) (b : α), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a (Neg.neg.{u1} α (Ring.toNeg.{u1} α _inst_1) b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a b)
 Case conversion may be inaccurate. Consider using '#align multiplicity.neg multiplicity.negₓ'. -/
@@ -676,7 +676,7 @@ theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity
 
 /- warning: multiplicity.multiplicity_sub_of_gt -> multiplicity.multiplicity_sub_of_gt is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (SubNegMonoid.toHasSub.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b))
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (SubNegMonoid.toHasSub.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5810 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5812 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5810 x._@.Mathlib.RingTheory.Multiplicity._hyg.5812)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (Ring.toSub.{u1} α _inst_1)) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
 Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_sub_of_gt multiplicity.multiplicity_sub_of_gtₓ'. -/
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Robert Y. Lewis, Chris Hughes
 
 ! This file was ported from Lean 3 source module ring_theory.multiplicity
-! leanprover-community/mathlib commit ceb887ddf3344dab425292e497fa2af91498437c
+! leanprover-community/mathlib commit 1dac236edca9b4b6f5f00b1ad831e35f89472837
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.RingTheory.Valuation.Basic
 /-!
 # Multiplicity of a divisor
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 For a commutative monoid, this file introduces the notion of multiplicity of a divisor and proves
 several basic results on it.
 
Diff
@@ -33,12 +33,14 @@ open Nat Part
 
 open BigOperators
 
+#print multiplicity /-
 /-- `multiplicity a b` returns the largest natural number `n` such that
   `a ^ n ∣ b`, as an `part_enat` or natural with infinity. If `∀ n, a ^ n ∣ b`,
   then it returns `⊤`-/
 def multiplicity [Monoid α] [DecidableRel ((· ∣ ·) : α → α → Prop)] (a b : α) : PartENat :=
   PartENat.find fun n => ¬a ^ (n + 1) ∣ b
 #align multiplicity multiplicity
+-/
 
 namespace multiplicity
 
@@ -46,25 +48,43 @@ section Monoid
 
 variable [Monoid α]
 
+#print multiplicity.Finite /-
 /-- `multiplicity.finite a b` indicates that the multiplicity of `a` in `b` is finite. -/
 @[reducible]
 def Finite (a b : α) : Prop :=
   ∃ n : ℕ, ¬a ^ (n + 1) ∣ b
 #align multiplicity.finite multiplicity.Finite
+-/
 
+#print multiplicity.finite_iff_dom /-
 theorem finite_iff_dom [DecidableRel ((· ∣ ·) : α → α → Prop)] {a b : α} :
     Finite a b ↔ (multiplicity a b).Dom :=
   Iff.rfl
 #align multiplicity.finite_iff_dom multiplicity.finite_iff_dom
+-/
 
+#print multiplicity.finite_def /-
 theorem finite_def {a b : α} : Finite a b ↔ ∃ n : ℕ, ¬a ^ (n + 1) ∣ b :=
   Iff.rfl
 #align multiplicity.finite_def multiplicity.finite_def
+-/
 
+/- warning: multiplicity.not_dvd_one_of_finite_one_right -> multiplicity.not_dvd_one_of_finite_one_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] {a : α}, (multiplicity.Finite.{u1} α _inst_1 a (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (MulOneClass.toHasOne.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1)))))) -> (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) a (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (MulOneClass.toHasOne.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1)))))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] {a : α}, (multiplicity.Finite.{u1} α _inst_1 a (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Monoid.toOne.{u1} α _inst_1)))) -> (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) a (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Monoid.toOne.{u1} α _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align multiplicity.not_dvd_one_of_finite_one_right multiplicity.not_dvd_one_of_finite_one_rightₓ'. -/
 theorem not_dvd_one_of_finite_one_right {a : α} : Finite a 1 → ¬a ∣ 1 := fun ⟨n, hn⟩ ⟨d, hd⟩ =>
   hn ⟨d ^ (n + 1), (pow_mul_pow_eq_one (n + 1) hd.symm).symm⟩
 #align multiplicity.not_dvd_one_of_finite_one_right multiplicity.not_dvd_one_of_finite_one_right
 
+/- warning: multiplicity.int.coe_nat_multiplicity -> multiplicity.Int.coe_nat_multiplicity is a dubious translation:
+lean 3 declaration is
+  forall (a : Nat) (b : Nat), Eq.{1} PartENat (multiplicity.{0} Int Int.monoid (fun (a : Int) (b : Int) => Int.decidableDvd a b) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) a) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) b)) (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidableDvd a b) a b)
+but is expected to have type
+  forall (a : Nat) (b : Nat), Eq.{1} PartENat (multiplicity.{0} Int Int.instMonoidInt (fun (a : Int) (b : Int) => Int.decidableDvd a b) (Nat.cast.{0} Int instNatCastInt a) (Nat.cast.{0} Int instNatCastInt b)) (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidable_dvd a b) a b)
+Case conversion may be inaccurate. Consider using '#align multiplicity.int.coe_nat_multiplicity multiplicity.Int.coe_nat_multiplicityₓ'. -/
 @[norm_cast]
 theorem Int.coe_nat_multiplicity (a b : ℕ) : multiplicity (a : ℤ) (b : ℤ) = multiplicity a b :=
   by
@@ -78,6 +98,7 @@ theorem Int.coe_nat_multiplicity (a b : ℕ) : multiplicity (a : ℤ) (b : ℤ)
         simp
 #align multiplicity.int.coe_nat_multiplicity multiplicity.Int.coe_nat_multiplicity
 
+#print multiplicity.not_finite_iff_forall /-
 theorem not_finite_iff_forall {a b : α} : ¬Finite a b ↔ ∀ n : ℕ, a ^ n ∣ b :=
   ⟨fun h n =>
     Nat.casesOn n
@@ -87,18 +108,33 @@ theorem not_finite_iff_forall {a b : α} : ¬Finite a b ↔ ∀ n : ℕ, a ^ n 
       (by simpa [Finite, Classical.not_not] using h),
     by simp [Finite, multiplicity, Classical.not_not] <;> tauto⟩
 #align multiplicity.not_finite_iff_forall multiplicity.not_finite_iff_forall
+-/
 
+#print multiplicity.not_unit_of_finite /-
 theorem not_unit_of_finite {a b : α} (h : Finite a b) : ¬IsUnit a :=
   let ⟨n, hn⟩ := h
   hn ∘ IsUnit.dvd ∘ IsUnit.pow (n + 1)
 #align multiplicity.not_unit_of_finite multiplicity.not_unit_of_finite
+-/
 
+/- warning: multiplicity.finite_of_finite_mul_right -> multiplicity.finite_of_finite_mul_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] {a : α} {b : α} {c : α}, (multiplicity.Finite.{u1} α _inst_1 a (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1))) b c)) -> (multiplicity.Finite.{u1} α _inst_1 a b)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] {a : α} {b : α} {c : α}, (multiplicity.Finite.{u1} α _inst_1 a (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1))) b c)) -> (multiplicity.Finite.{u1} α _inst_1 a b)
+Case conversion may be inaccurate. Consider using '#align multiplicity.finite_of_finite_mul_right multiplicity.finite_of_finite_mul_rightₓ'. -/
 theorem finite_of_finite_mul_right {a b c : α} : Finite a (b * c) → Finite a b := fun ⟨n, hn⟩ =>
   ⟨n, fun h => hn (h.trans (dvd_mul_right _ _))⟩
 #align multiplicity.finite_of_finite_mul_right multiplicity.finite_of_finite_mul_right
 
 variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
+/- warning: multiplicity.pow_dvd_of_le_multiplicity -> multiplicity.pow_dvd_of_le_multiplicity is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {k : Nat}, (LE.le.{0} PartENat PartENat.hasLe ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b)) -> (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.761 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.763 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.761 x._@.Mathlib.RingTheory.Multiplicity._hyg.763)] {a : α} {b : α} {k : Nat}, (LE.le.{0} PartENat PartENat.instLEPartENat (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b)) -> (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b)
+Case conversion may be inaccurate. Consider using '#align multiplicity.pow_dvd_of_le_multiplicity multiplicity.pow_dvd_of_le_multiplicityₓ'. -/
 theorem pow_dvd_of_le_multiplicity {a b : α} {k : ℕ} :
     (k : PartENat) ≤ multiplicity a b → a ^ k ∣ b :=
   by
@@ -111,25 +147,43 @@ theorem pow_dvd_of_le_multiplicity {a b : α} {k : ℕ} :
       fun k ⟨h₁, h₂⟩ => by_contradiction fun hk => Nat.find_min _ (lt_of_succ_le (h₂ ⟨k, hk⟩)) hk
 #align multiplicity.pow_dvd_of_le_multiplicity multiplicity.pow_dvd_of_le_multiplicity
 
+#print multiplicity.pow_multiplicity_dvd /-
 theorem pow_multiplicity_dvd {a b : α} (h : Finite a b) : a ^ get (multiplicity a b) h ∣ b :=
   pow_dvd_of_le_multiplicity (by rw [PartENat.natCast_get])
 #align multiplicity.pow_multiplicity_dvd multiplicity.pow_multiplicity_dvd
+-/
 
+/- warning: multiplicity.is_greatest -> multiplicity.is_greatest is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {m : Nat}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) m)) -> (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a m) b))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.1017 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.1019 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.1017 x._@.Mathlib.RingTheory.Multiplicity._hyg.1019)] {a : α} {b : α} {m : Nat}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) m)) -> (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a m) b))
+Case conversion may be inaccurate. Consider using '#align multiplicity.is_greatest multiplicity.is_greatestₓ'. -/
 theorem is_greatest {a b : α} {m : ℕ} (hm : multiplicity a b < m) : ¬a ^ m ∣ b := fun h => by
   rw [PartENat.lt_coe_iff] at hm <;> exact Nat.find_spec hm.fst ((pow_dvd_pow _ hm.snd).trans h)
 #align multiplicity.is_greatest multiplicity.is_greatest
 
+#print multiplicity.is_greatest' /-
 theorem is_greatest' {a b : α} {m : ℕ} (h : Finite a b) (hm : get (multiplicity a b) h < m) :
     ¬a ^ m ∣ b :=
   is_greatest (by rwa [← PartENat.coe_lt_coe, PartENat.natCast_get] at hm)
 #align multiplicity.is_greatest' multiplicity.is_greatest'
+-/
 
+#print multiplicity.pos_of_dvd /-
 theorem pos_of_dvd {a b : α} (hfin : Finite a b) (hdiv : a ∣ b) : 0 < (multiplicity a b).get hfin :=
   by
   refine' zero_lt_iff.2 fun h => _
   simpa [hdiv] using is_greatest' hfin (lt_one_iff.mpr h)
 #align multiplicity.pos_of_dvd multiplicity.pos_of_dvd
+-/
 
+/- warning: multiplicity.unique -> multiplicity.unique is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {k : Nat}, (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b) -> (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) k (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) b)) -> (Eq.{1} PartENat ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.1289 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.1291 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.1289 x._@.Mathlib.RingTheory.Multiplicity._hyg.1291)] {a : α} {b : α} {k : Nat}, (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b) -> (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) b)) -> (Eq.{1} PartENat (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b))
+Case conversion may be inaccurate. Consider using '#align multiplicity.unique multiplicity.uniqueₓ'. -/
 theorem unique {a b : α} {k : ℕ} (hk : a ^ k ∣ b) (hsucc : ¬a ^ (k + 1) ∣ b) :
     (k : PartENat) = multiplicity a b :=
   le_antisymm (le_of_not_gt fun hk' => is_greatest hk' hk) <|
@@ -139,25 +193,51 @@ theorem unique {a b : α} {k : ℕ} (hk : a ^ k ∣ b) (hsucc : ¬a ^ (k + 1) 
     exact ⟨this, Nat.find_min' _ hsucc⟩
 #align multiplicity.unique multiplicity.unique
 
+#print multiplicity.unique' /-
 theorem unique' {a b : α} {k : ℕ} (hk : a ^ k ∣ b) (hsucc : ¬a ^ (k + 1) ∣ b) :
     k = get (multiplicity a b) ⟨k, hsucc⟩ := by
   rw [← PartENat.natCast_inj, PartENat.natCast_get, Unique hk hsucc]
 #align multiplicity.unique' multiplicity.unique'
+-/
 
+/- warning: multiplicity.le_multiplicity_of_pow_dvd -> multiplicity.le_multiplicity_of_pow_dvd is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {k : Nat}, (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b) -> (LE.le.{0} PartENat PartENat.hasLe ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.1541 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.1543 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.1541 x._@.Mathlib.RingTheory.Multiplicity._hyg.1543)] {a : α} {b : α} {k : Nat}, (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b) -> (LE.le.{0} PartENat PartENat.instLEPartENat (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b))
+Case conversion may be inaccurate. Consider using '#align multiplicity.le_multiplicity_of_pow_dvd multiplicity.le_multiplicity_of_pow_dvdₓ'. -/
 theorem le_multiplicity_of_pow_dvd {a b : α} {k : ℕ} (hk : a ^ k ∣ b) :
     (k : PartENat) ≤ multiplicity a b :=
   le_of_not_gt fun hk' => is_greatest hk' hk
 #align multiplicity.le_multiplicity_of_pow_dvd multiplicity.le_multiplicity_of_pow_dvd
 
+/- warning: multiplicity.pow_dvd_iff_le_multiplicity -> multiplicity.pow_dvd_iff_le_multiplicity is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {k : Nat}, Iff (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b) (LE.le.{0} PartENat PartENat.hasLe ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.1603 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.1605 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.1603 x._@.Mathlib.RingTheory.Multiplicity._hyg.1605)] {a : α} {b : α} {k : Nat}, Iff (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b) (LE.le.{0} PartENat PartENat.instLEPartENat (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) k) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b))
+Case conversion may be inaccurate. Consider using '#align multiplicity.pow_dvd_iff_le_multiplicity multiplicity.pow_dvd_iff_le_multiplicityₓ'. -/
 theorem pow_dvd_iff_le_multiplicity {a b : α} {k : ℕ} :
     a ^ k ∣ b ↔ (k : PartENat) ≤ multiplicity a b :=
   ⟨le_multiplicity_of_pow_dvd, pow_dvd_of_le_multiplicity⟩
 #align multiplicity.pow_dvd_iff_le_multiplicity multiplicity.pow_dvd_iff_le_multiplicity
 
+/- warning: multiplicity.multiplicity_lt_iff_neg_dvd -> multiplicity.multiplicity_lt_iff_neg_dvd is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {k : Nat}, Iff (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) k)) (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.1665 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.1667 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.1665 x._@.Mathlib.RingTheory.Multiplicity._hyg.1667)] {a : α} {b : α} {k : Nat}, Iff (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) k)) (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a k) b))
+Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_lt_iff_neg_dvd multiplicity.multiplicity_lt_iff_neg_dvdₓ'. -/
 theorem multiplicity_lt_iff_neg_dvd {a b : α} {k : ℕ} :
     multiplicity a b < (k : PartENat) ↔ ¬a ^ k ∣ b := by rw [pow_dvd_iff_le_multiplicity, not_le]
 #align multiplicity.multiplicity_lt_iff_neg_dvd multiplicity.multiplicity_lt_iff_neg_dvd
 
+/- warning: multiplicity.eq_coe_iff -> multiplicity.eq_coe_iff is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} {n : Nat}, Iff (Eq.{1} PartENat (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) n)) (And (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a n) b) (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) b)))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.1755 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.1757 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.1755 x._@.Mathlib.RingTheory.Multiplicity._hyg.1757)] {a : α} {b : α} {n : Nat}, Iff (Eq.{1} PartENat (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) n)) (And (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a n) b) (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) b)))
+Case conversion may be inaccurate. Consider using '#align multiplicity.eq_coe_iff multiplicity.eq_coe_iffₓ'. -/
 theorem eq_coe_iff {a b : α} {n : ℕ} :
     multiplicity a b = (n : PartENat) ↔ a ^ n ∣ b ∧ ¬a ^ (n + 1) ∣ b :=
   by
@@ -174,6 +254,7 @@ theorem eq_coe_iff {a b : α} {n : ℕ} :
       fun h => eq_some_iff.2 ⟨⟨n, h.2⟩, Eq.symm <| unique' h.1 h.2⟩⟩
 #align multiplicity.eq_coe_iff multiplicity.eq_coe_iff
 
+#print multiplicity.eq_top_iff /-
 theorem eq_top_iff {a b : α} : multiplicity a b = ⊤ ↔ ∀ n : ℕ, a ^ n ∣ b :=
   (PartENat.find_eq_top_iff _).trans <|
     by
@@ -187,17 +268,32 @@ theorem eq_top_iff {a b : α} : multiplicity a b = ⊤ ↔ ∀ n : ℕ, a ^ n 
           fun n => h _,
         fun h n => h _⟩
 #align multiplicity.eq_top_iff multiplicity.eq_top_iff
+-/
 
+#print multiplicity.isUnit_left /-
 @[simp]
 theorem isUnit_left {a : α} (b : α) (ha : IsUnit a) : multiplicity a b = ⊤ :=
   eq_top_iff.2 fun _ => IsUnit.dvd (ha.pow _)
 #align multiplicity.is_unit_left multiplicity.isUnit_left
+-/
 
+/- warning: multiplicity.one_left -> multiplicity.one_left is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] (b : α), Eq.{1} PartENat (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (MulOneClass.toHasOne.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1))))) b) (Top.top.{0} PartENat PartENat.hasTop)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.2134 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.2136 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.2134 x._@.Mathlib.RingTheory.Multiplicity._hyg.2136)] (b : α), Eq.{1} PartENat (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Monoid.toOne.{u1} α _inst_1))) b) (Top.top.{0} PartENat PartENat.instTopPartENat)
+Case conversion may be inaccurate. Consider using '#align multiplicity.one_left multiplicity.one_leftₓ'. -/
 @[simp]
 theorem one_left (b : α) : multiplicity 1 b = ⊤ :=
   isUnit_left b isUnit_one
 #align multiplicity.one_left multiplicity.one_left
 
+/- warning: multiplicity.get_one_right -> multiplicity.get_one_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} (ha : multiplicity.Finite.{u1} α _inst_1 a (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (MulOneClass.toHasOne.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1)))))), Eq.{1} Nat (Part.get.{0} Nat (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (MulOneClass.toHasOne.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1)))))) ha) (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.2176 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.2178 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.2176 x._@.Mathlib.RingTheory.Multiplicity._hyg.2178)] {a : α} (ha : multiplicity.Finite.{u1} α _inst_1 a (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Monoid.toOne.{u1} α _inst_1)))), Eq.{1} Nat (Part.get.{0} Nat (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Monoid.toOne.{u1} α _inst_1)))) ha) (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))
+Case conversion may be inaccurate. Consider using '#align multiplicity.get_one_right multiplicity.get_one_rightₓ'. -/
 @[simp]
 theorem get_one_right {a : α} (ha : Finite a 1) : get (multiplicity a 1) ha = 0 :=
   by
@@ -205,33 +301,51 @@ theorem get_one_right {a : α} (ha : Finite a 1) : get (multiplicity a 1) ha = 0
   simp [not_dvd_one_of_finite_one_right ha]
 #align multiplicity.get_one_right multiplicity.get_one_right
 
+#print multiplicity.unit_left /-
 @[simp]
 theorem unit_left (a : α) (u : αˣ) : multiplicity (u : α) a = ⊤ :=
   isUnit_left a u.IsUnit
 #align multiplicity.unit_left multiplicity.unit_left
+-/
 
+#print multiplicity.multiplicity_eq_zero /-
 theorem multiplicity_eq_zero {a b : α} : multiplicity a b = 0 ↔ ¬a ∣ b :=
   by
   rw [← Nat.cast_zero, eq_coe_iff]
   simp
 #align multiplicity.multiplicity_eq_zero multiplicity.multiplicity_eq_zero
+-/
 
+#print multiplicity.multiplicity_ne_zero /-
 theorem multiplicity_ne_zero {a b : α} : multiplicity a b ≠ 0 ↔ a ∣ b :=
   multiplicity_eq_zero.not_left
 #align multiplicity.multiplicity_ne_zero multiplicity.multiplicity_ne_zero
+-/
 
+#print multiplicity.eq_top_iff_not_finite /-
 theorem eq_top_iff_not_finite {a b : α} : multiplicity a b = ⊤ ↔ ¬Finite a b :=
   Part.eq_none_iff'
 #align multiplicity.eq_top_iff_not_finite multiplicity.eq_top_iff_not_finite
+-/
 
+#print multiplicity.ne_top_iff_finite /-
 theorem ne_top_iff_finite {a b : α} : multiplicity a b ≠ ⊤ ↔ Finite a b := by
   rw [Ne.def, eq_top_iff_not_finite, Classical.not_not]
 #align multiplicity.ne_top_iff_finite multiplicity.ne_top_iff_finite
+-/
 
+#print multiplicity.lt_top_iff_finite /-
 theorem lt_top_iff_finite {a b : α} : multiplicity a b < ⊤ ↔ Finite a b := by
   rw [lt_top_iff_ne_top, ne_top_iff_finite]
 #align multiplicity.lt_top_iff_finite multiplicity.lt_top_iff_finite
+-/
 
+/- warning: multiplicity.exists_eq_pow_mul_and_not_dvd -> multiplicity.exists_eq_pow_mul_and_not_dvd is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)))] {a : α} {b : α} (hfin : multiplicity.Finite.{u1} α _inst_1 a b), Exists.{succ u1} α (fun (c : α) => And (Eq.{succ u1} α b (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a (Part.get.{0} Nat (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) hfin)) c)) (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) a c)))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Monoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.2642 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.2644 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) x._@.Mathlib.RingTheory.Multiplicity._hyg.2642 x._@.Mathlib.RingTheory.Multiplicity._hyg.2644)] {a : α} {b : α} (hfin : multiplicity.Finite.{u1} α _inst_1 a b), Exists.{succ u1} α (fun (c : α) => And (Eq.{succ u1} α b (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α _inst_1))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α _inst_1)) a (Part.get.{0} Nat (multiplicity.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a b) hfin)) c)) (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α _inst_1)) a c)))
+Case conversion may be inaccurate. Consider using '#align multiplicity.exists_eq_pow_mul_and_not_dvd multiplicity.exists_eq_pow_mul_and_not_dvdₓ'. -/
 theorem exists_eq_pow_mul_and_not_dvd {a b : α} (hfin : Finite a b) :
     ∃ c : α, b = a ^ (multiplicity a b).get hfin * c ∧ ¬a ∣ c :=
   by
@@ -245,6 +359,7 @@ theorem exists_eq_pow_mul_and_not_dvd {a b : α} (hfin : Finite a b) :
 
 open Classical
 
+#print multiplicity.multiplicity_le_multiplicity_iff /-
 theorem multiplicity_le_multiplicity_iff {a b c d : α} :
     multiplicity a b ≤ multiplicity c d ↔ ∀ n : ℕ, a ^ n ∣ b → c ^ n ∣ d :=
   ⟨fun h n hab => pow_dvd_of_le_multiplicity (le_trans (le_multiplicity_of_pow_dvd hab) h), fun h =>
@@ -255,7 +370,9 @@ theorem multiplicity_le_multiplicity_iff {a b c d : α} :
       have : ∀ n : ℕ, c ^ n ∣ d := fun n => h n (not_finite_iff_forall.1 hab _)
       rw [eq_top_iff_not_finite.2 hab, eq_top_iff_not_finite.2 (not_finite_iff_forall.2 this)]⟩
 #align multiplicity.multiplicity_le_multiplicity_iff multiplicity.multiplicity_le_multiplicity_iff
+-/
 
+#print multiplicity.multiplicity_eq_multiplicity_iff /-
 theorem multiplicity_eq_multiplicity_iff {a b c d : α} :
     multiplicity a b = multiplicity c d ↔ ∀ n : ℕ, a ^ n ∣ b ↔ c ^ n ∣ d :=
   ⟨fun h n =>
@@ -264,25 +381,33 @@ theorem multiplicity_eq_multiplicity_iff {a b c d : α} :
     le_antisymm (multiplicity_le_multiplicity_iff.mpr fun n => (h n).mp)
       (multiplicity_le_multiplicity_iff.mpr fun n => (h n).mpr)⟩
 #align multiplicity.multiplicity_eq_multiplicity_iff multiplicity.multiplicity_eq_multiplicity_iff
+-/
 
+#print multiplicity.multiplicity_le_multiplicity_of_dvd_right /-
 theorem multiplicity_le_multiplicity_of_dvd_right {a b c : α} (h : b ∣ c) :
     multiplicity a b ≤ multiplicity a c :=
   multiplicity_le_multiplicity_iff.2 fun n hb => hb.trans h
 #align multiplicity.multiplicity_le_multiplicity_of_dvd_right multiplicity.multiplicity_le_multiplicity_of_dvd_right
+-/
 
+#print multiplicity.eq_of_associated_right /-
 theorem eq_of_associated_right {a b c : α} (h : Associated b c) :
     multiplicity a b = multiplicity a c :=
   le_antisymm (multiplicity_le_multiplicity_of_dvd_right h.Dvd)
     (multiplicity_le_multiplicity_of_dvd_right h.symm.Dvd)
 #align multiplicity.eq_of_associated_right multiplicity.eq_of_associated_right
+-/
 
+#print multiplicity.dvd_of_multiplicity_pos /-
 theorem dvd_of_multiplicity_pos {a b : α} (h : (0 : PartENat) < multiplicity a b) : a ∣ b :=
   by
   rw [← pow_one a]
   apply pow_dvd_of_le_multiplicity
   simpa only [Nat.cast_one, PartENat.pos_iff_one_le] using h
 #align multiplicity.dvd_of_multiplicity_pos multiplicity.dvd_of_multiplicity_pos
+-/
 
+#print multiplicity.dvd_iff_multiplicity_pos /-
 theorem dvd_iff_multiplicity_pos {a b : α} : (0 : PartENat) < multiplicity a b ↔ a ∣ b :=
   ⟨dvd_of_multiplicity_pos, fun hdvd =>
     lt_of_le_of_ne (zero_le _) fun heq =>
@@ -291,7 +416,9 @@ theorem dvd_iff_multiplicity_pos {a b : α} : (0 : PartENat) < multiplicity a b
           simpa only [HEq, Nat.cast_zero] using part_enat.coe_lt_coe.mpr zero_lt_one)
         (by rwa [pow_one a])⟩
 #align multiplicity.dvd_iff_multiplicity_pos multiplicity.dvd_iff_multiplicity_pos
+-/
 
+#print multiplicity.finite_nat_iff /-
 theorem finite_nat_iff {a b : ℕ} : Finite a b ↔ a ≠ 1 ∧ 0 < b :=
   by
   rw [← not_iff_not, not_finite_iff_forall, not_and_or, Ne.def, Classical.not_not, not_lt,
@@ -309,6 +436,7 @@ theorem finite_nat_iff {a b : ℕ} : Finite a b ↔ a ≠ 1 ∧ 0 < b :=
           not_lt_of_ge (le_of_dvd (Nat.pos_of_ne_zero hb) (h b)) (lt_pow_self ha_gt_one b),
       fun h => by cases h <;> simp [*]⟩
 #align multiplicity.finite_nat_iff multiplicity.finite_nat_iff
+-/
 
 alias dvd_iff_multiplicity_pos ↔ _ _root_.has_dvd.dvd.multiplicity_pos
 #align has_dvd.dvd.multiplicity_pos Dvd.Dvd.multiplicity_pos
@@ -319,12 +447,19 @@ section CommMonoid
 
 variable [CommMonoid α]
 
+/- warning: multiplicity.finite_of_finite_mul_left -> multiplicity.finite_of_finite_mul_left is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : CommMonoid.{u1} α] {a : α} {b : α} {c : α}, (multiplicity.Finite.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) a (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1)))) b c)) -> (multiplicity.Finite.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) a c)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : CommMonoid.{u1} α] {a : α} {b : α} {c : α}, (multiplicity.Finite.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) a (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1)))) b c)) -> (multiplicity.Finite.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) a c)
+Case conversion may be inaccurate. Consider using '#align multiplicity.finite_of_finite_mul_left multiplicity.finite_of_finite_mul_leftₓ'. -/
 theorem finite_of_finite_mul_left {a b c : α} : Finite a (b * c) → Finite a c := by
   rw [mul_comm] <;> exact finite_of_finite_mul_right
 #align multiplicity.finite_of_finite_mul_left multiplicity.finite_of_finite_mul_left
 
 variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
+#print multiplicity.isUnit_right /-
 theorem isUnit_right {a b : α} (ha : ¬IsUnit a) (hb : IsUnit b) : multiplicity a b = 0 :=
   eq_coe_iff.2
     ⟨show a ^ 0 ∣ b by simp only [pow_zero, one_dvd],
@@ -332,27 +467,40 @@ theorem isUnit_right {a b : α} (ha : ¬IsUnit a) (hb : IsUnit b) : multiplicity
       rw [pow_one]
       exact fun h => mt (isUnit_of_dvd_unit h) ha hb⟩
 #align multiplicity.is_unit_right multiplicity.isUnit_right
+-/
 
+/- warning: multiplicity.one_right -> multiplicity.one_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : CommMonoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1))))] {a : α}, (Not (IsUnit.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (MulOneClass.toHasOne.{u1} α (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1))))))) (OfNat.ofNat.{0} PartENat 0 (OfNat.mk.{0} PartENat 0 (Zero.zero.{0} PartENat PartENat.hasZero))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : CommMonoid.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4005 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4007 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (Monoid.toSemigroup.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4005 x._@.Mathlib.RingTheory.Multiplicity._hyg.4007)] {a : α}, (Not (IsUnit.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Monoid.toOne.{u1} α (CommMonoid.toMonoid.{u1} α _inst_1))))) (OfNat.ofNat.{0} PartENat 0 (Zero.toOfNat0.{0} PartENat PartENat.instZeroPartENat)))
+Case conversion may be inaccurate. Consider using '#align multiplicity.one_right multiplicity.one_rightₓ'. -/
 theorem one_right {a : α} (ha : ¬IsUnit a) : multiplicity a 1 = 0 :=
   isUnit_right ha isUnit_one
 #align multiplicity.one_right multiplicity.one_right
 
+#print multiplicity.unit_right /-
 theorem unit_right {a : α} (ha : ¬IsUnit a) (u : αˣ) : multiplicity a u = 0 :=
   isUnit_right ha u.IsUnit
 #align multiplicity.unit_right multiplicity.unit_right
+-/
 
 open Classical
 
+#print multiplicity.multiplicity_le_multiplicity_of_dvd_left /-
 theorem multiplicity_le_multiplicity_of_dvd_left {a b c : α} (hdvd : a ∣ b) :
     multiplicity b c ≤ multiplicity a c :=
   multiplicity_le_multiplicity_iff.2 fun n h => (pow_dvd_pow_of_dvd hdvd n).trans h
 #align multiplicity.multiplicity_le_multiplicity_of_dvd_left multiplicity.multiplicity_le_multiplicity_of_dvd_left
+-/
 
+#print multiplicity.eq_of_associated_left /-
 theorem eq_of_associated_left {a b c : α} (h : Associated a b) :
     multiplicity b c = multiplicity a c :=
   le_antisymm (multiplicity_le_multiplicity_of_dvd_left h.Dvd)
     (multiplicity_le_multiplicity_of_dvd_left h.symm.Dvd)
 #align multiplicity.eq_of_associated_left multiplicity.eq_of_associated_left
+-/
 
 alias dvd_iff_multiplicity_pos ↔ _ _root_.has_dvd.dvd.multiplicity_pos
 #align has_dvd.dvd.multiplicity_pos Dvd.Dvd.multiplicity_pos
@@ -363,6 +511,12 @@ section MonoidWithZero
 
 variable [MonoidWithZero α]
 
+/- warning: multiplicity.ne_zero_of_finite -> multiplicity.ne_zero_of_finite is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] {a : α} {b : α}, (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) a b) -> (Ne.{succ u1} α b (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α _inst_1)))))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] {a : α} {b : α}, (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) a b) -> (Ne.{succ u1} α b (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α _inst_1))))
+Case conversion may be inaccurate. Consider using '#align multiplicity.ne_zero_of_finite multiplicity.ne_zero_of_finiteₓ'. -/
 theorem ne_zero_of_finite {a b : α} (h : Finite a b) : b ≠ 0 :=
   let ⟨n, hn⟩ := h
   fun hb => by simpa [hb] using hn
@@ -370,11 +524,23 @@ theorem ne_zero_of_finite {a b : α} (h : Finite a b) : b ≠ 0 :=
 
 variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
+/- warning: multiplicity.zero -> multiplicity.zero is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α _inst_1))))] (a : α), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α _inst_1))))))) (Top.top.{0} PartENat PartENat.hasTop)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4291 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4293 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α _inst_1))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4291 x._@.Mathlib.RingTheory.Multiplicity._hyg.4293)] (a : α), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α _inst_1)))) (Top.top.{0} PartENat PartENat.instTopPartENat)
+Case conversion may be inaccurate. Consider using '#align multiplicity.zero multiplicity.zeroₓ'. -/
 @[simp]
 protected theorem zero (a : α) : multiplicity a 0 = ⊤ :=
   Part.eq_none_iff.2 fun n ⟨⟨k, hk⟩, _⟩ => hk (dvd_zero _)
 #align multiplicity.zero multiplicity.zero
 
+/- warning: multiplicity.multiplicity_zero_eq_zero_of_ne_zero -> multiplicity.multiplicity_zero_eq_zero_of_ne_zero is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α _inst_1))))] (a : α), (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α _inst_1))))))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α _inst_1)))))) a) (OfNat.ofNat.{0} PartENat 0 (OfNat.mk.{0} PartENat 0 (Zero.zero.{0} PartENat PartENat.hasZero))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : MonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4369 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4371 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α _inst_1))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4369 x._@.Mathlib.RingTheory.Multiplicity._hyg.4371)] (a : α), (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α _inst_1)))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α _inst_1))) a) (OfNat.ofNat.{0} PartENat 0 (Zero.toOfNat0.{0} PartENat PartENat.instZeroPartENat)))
+Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_zero_eq_zero_of_ne_zero multiplicity.multiplicity_zero_eq_zero_of_ne_zeroₓ'. -/
 @[simp]
 theorem multiplicity_zero_eq_zero_of_ne_zero (a : α) (ha : a ≠ 0) : multiplicity 0 a = 0 :=
   multiplicity.multiplicity_eq_zero.2 <| mt zero_dvd_iff.1 ha
@@ -388,6 +554,12 @@ variable [CommMonoidWithZero α]
 
 variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
+/- warning: multiplicity.multiplicity_mk_eq_multiplicity -> multiplicity.multiplicity_mk_eq_multiplicity is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)))))] [_inst_3 : DecidableRel.{succ u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Dvd.Dvd.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (semigroupDvd.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (SemigroupWithZero.toSemigroup.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toSemigroupWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (CommMonoidWithZero.toMonoidWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Associates.commMonoidWithZero.{u1} α _inst_1))))))] {a : α} {b : α}, Eq.{1} PartENat (multiplicity.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMonoid.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (CommMonoidWithZero.toMonoidWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Associates.commMonoidWithZero.{u1} α _inst_1))) (fun (a : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (b : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) => _inst_3 a b) (Associates.mk.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) a) (Associates.mk.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) a b)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4456 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4458 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4456 x._@.Mathlib.RingTheory.Multiplicity._hyg.4458)] [_inst_3 : DecidableRel.{succ u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4482 : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4484 : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) => Dvd.dvd.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (semigroupDvd.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (SemigroupWithZero.toSemigroup.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toSemigroupWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (CommMonoidWithZero.toMonoidWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Associates.instCommMonoidWithZeroAssociatesToMonoidToMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4482 x._@.Mathlib.RingTheory.Multiplicity._hyg.4484)] {a : α} {b : α}, Eq.{1} PartENat (multiplicity.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMonoid.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (CommMonoidWithZero.toMonoidWithZero.{u1} (Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (Associates.instCommMonoidWithZeroAssociatesToMonoidToMonoidWithZero.{u1} α _inst_1))) (fun (a : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) (b : Associates.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1))) => _inst_3 a b) (Associates.mk.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) a) (Associates.mk.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) a b)
+Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_mk_eq_multiplicity multiplicity.multiplicity_mk_eq_multiplicityₓ'. -/
 theorem multiplicity_mk_eq_multiplicity
     [DecidableRel ((· ∣ ·) : Associates α → Associates α → Prop)] {a b : α} :
     multiplicity (Associates.mk a) (Associates.mk b) = multiplicity a b :=
@@ -420,6 +592,12 @@ section Semiring
 
 variable [Semiring α] [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
+/- warning: multiplicity.min_le_multiplicity_add -> multiplicity.min_le_multiplicity_add is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Semiring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α _inst_1)))))] {p : α} {a : α} {b : α}, LE.le.{0} PartENat PartENat.hasLe (LinearOrder.min.{0} PartENat PartENat.linearOrder (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_1))))) a b))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Semiring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.4903 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.4905 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (Semiring.toNonUnitalSemiring.{u1} α _inst_1)))) x._@.Mathlib.RingTheory.Multiplicity._hyg.4903 x._@.Mathlib.RingTheory.Multiplicity._hyg.4905)] {p : α} {a : α} {b : α}, LE.le.{0} PartENat PartENat.instLEPartENat (Min.min.{0} PartENat (LinearOrder.toMin.{0} PartENat PartENat.linearOrder) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α _inst_1)) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_1))))) a b))
+Case conversion may be inaccurate. Consider using '#align multiplicity.min_le_multiplicity_add multiplicity.min_le_multiplicity_addₓ'. -/
 theorem min_le_multiplicity_add {p a b : α} :
     min (multiplicity p a) (multiplicity p b) ≤ multiplicity p (a + b) :=
   (le_total (multiplicity p a) (multiplicity p b)).elim
@@ -437,6 +615,12 @@ section Ring
 
 variable [Ring α] [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
+/- warning: multiplicity.neg -> multiplicity.neg is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] (a : α) (b : α), Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a (Neg.neg.{u1} α (SubNegMonoid.toHasNeg.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1))))) b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) a b)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5108 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5110 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5108 x._@.Mathlib.RingTheory.Multiplicity._hyg.5110)] (a : α) (b : α), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a (Neg.neg.{u1} α (Ring.toNeg.{u1} α _inst_1) b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a b)
+Case conversion may be inaccurate. Consider using '#align multiplicity.neg multiplicity.negₓ'. -/
 @[simp]
 protected theorem neg (a b : α) : multiplicity a (-b) = multiplicity a b :=
   Part.ext' (by simp only [multiplicity, PartENat.find, dvd_neg]) fun h₁ h₂ =>
@@ -449,6 +633,12 @@ protected theorem neg (a b : α) : multiplicity a (-b) = multiplicity a b :=
                 (mt (dvd_neg _ _).1 (is_greatest' _ (lt_succ_self _)))))
 #align multiplicity.neg multiplicity.neg
 
+/- warning: multiplicity.int.nat_abs -> multiplicity.Int.natAbs is a dubious translation:
+lean 3 declaration is
+  forall (a : Nat) (b : Int), Eq.{1} PartENat (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidableDvd a b) a (Int.natAbs b)) (multiplicity.{0} Int Int.monoid (fun (a : Int) (b : Int) => Int.decidableDvd a b) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) a) b)
+but is expected to have type
+  forall (a : Nat) (b : Int), Eq.{1} PartENat (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidable_dvd a b) a (Int.natAbs b)) (multiplicity.{0} Int Int.instMonoidInt (fun (a : Int) (b : Int) => Int.decidableDvd a b) (Nat.cast.{0} Int instNatCastInt a) b)
+Case conversion may be inaccurate. Consider using '#align multiplicity.int.nat_abs multiplicity.Int.natAbsₓ'. -/
 theorem Int.natAbs (a : ℕ) (b : ℤ) : multiplicity a b.natAbs = multiplicity (a : ℤ) b :=
   by
   cases' Int.natAbs_eq b with h h <;> conv_rhs => rw [h]
@@ -456,6 +646,12 @@ theorem Int.natAbs (a : ℕ) (b : ℤ) : multiplicity a b.natAbs = multiplicity
   · rw [multiplicity.neg, int.coe_nat_multiplicity]
 #align multiplicity.int.nat_abs multiplicity.Int.natAbs
 
+/- warning: multiplicity.multiplicity_add_of_gt -> multiplicity.multiplicity_add_of_gt is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (Ring.toDistrib.{u1} α _inst_1))) a b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5414 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5416 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5414 x._@.Mathlib.RingTheory.Multiplicity._hyg.5416)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
+Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_add_of_gt multiplicity.multiplicity_add_of_gtₓ'. -/
 theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity p a) :
     multiplicity p (a + b) = multiplicity p b :=
   by
@@ -475,11 +671,23 @@ theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity
     rw [min_eq_right (le_of_lt h)]
 #align multiplicity.multiplicity_add_of_gt multiplicity.multiplicity_add_of_gt
 
+/- warning: multiplicity.multiplicity_sub_of_gt -> multiplicity.multiplicity_sub_of_gt is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (SubNegMonoid.toHasSub.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5810 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5812 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5810 x._@.Mathlib.RingTheory.Multiplicity._hyg.5812)] {p : α} {a : α} {b : α}, (LT.lt.{0} PartENat (Preorder.toLT.{0} PartENat (PartialOrder.toPreorder.{0} PartENat PartENat.partialOrder)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (Ring.toSub.{u1} α _inst_1)) a b)) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b))
+Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_sub_of_gt multiplicity.multiplicity_sub_of_gtₓ'. -/
 theorem multiplicity_sub_of_gt {p a b : α} (h : multiplicity p b < multiplicity p a) :
     multiplicity p (a - b) = multiplicity p b := by
   rw [sub_eq_add_neg, multiplicity_add_of_gt] <;> rwa [multiplicity.neg]
 #align multiplicity.multiplicity_sub_of_gt multiplicity.multiplicity_sub_of_gt
 
+/- warning: multiplicity.multiplicity_add_eq_min -> multiplicity.multiplicity_add_eq_min is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (Ne.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b)) -> (Eq.{1} PartENat (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (Ring.toDistrib.{u1} α _inst_1))) a b)) (LinearOrder.min.{0} PartENat PartENat.linearOrder (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (Ring.toMonoid.{u1} α _inst_1) (fun (a : α) (b : α) => _inst_2 a b) p b)))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.5967 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.5969 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (Ring.toNonUnitalRing.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.5967 x._@.Mathlib.RingTheory.Multiplicity._hyg.5969)] {p : α} {a : α} {b : α}, (Ne.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) a b)) (Min.min.{0} PartENat (LinearOrder.toMin.{0} PartENat PartENat.linearOrder) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
+Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_add_eq_min multiplicity.multiplicity_add_eq_minₓ'. -/
 theorem multiplicity_add_eq_min {p a b : α} (h : multiplicity p a ≠ multiplicity p b) :
     multiplicity p (a + b) = min (multiplicity p a) (multiplicity p b) :=
   by
@@ -497,6 +705,12 @@ section CancelCommMonoidWithZero
 
 variable [CancelCommMonoidWithZero α]
 
+/- warning: multiplicity.finite_mul_aux -> multiplicity.finite_mul_aux is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] {p : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall {n : Nat} {m : Nat} {a : α} {b : α}, (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) a)) -> (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) m (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) b)) -> (Not (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n m) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] {p : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall {n : α} {m : α} {a : Nat} {b : Nat}, (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) a (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) n)) -> (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) b (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) m)) -> (Not (Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) a b) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) n m))))
+Case conversion may be inaccurate. Consider using '#align multiplicity.finite_mul_aux multiplicity.finite_mul_auxₓ'. -/
 theorem finite_mul_aux {p : α} (hp : Prime p) :
     ∀ {n m : ℕ} {a b : α}, ¬p ^ (n + 1) ∣ a → ¬p ^ (m + 1) ∣ b → ¬p ^ (n + m + 1) ∣ a * b
   | n, m => fun a b ha hb ⟨s, hs⟩ =>
@@ -541,22 +755,42 @@ theorem finite_mul_aux {p : α} (hp : Prime p) :
               simp_all [mul_comm, mul_assoc, mul_left_comm, pow_add])⟩
 #align multiplicity.finite_mul_aux multiplicity.finite_mul_aux
 
+/- warning: multiplicity.finite_mul -> multiplicity.finite_mul is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) -> (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) -> (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) -> (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) -> (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b))
+Case conversion may be inaccurate. Consider using '#align multiplicity.finite_mul multiplicity.finite_mulₓ'. -/
 theorem finite_mul {p a b : α} (hp : Prime p) : Finite p a → Finite p b → Finite p (a * b) :=
   fun ⟨n, hn⟩ ⟨m, hm⟩ => ⟨n + m, finite_mul_aux hp hn hm⟩
 #align multiplicity.finite_mul multiplicity.finite_mul
 
+/- warning: multiplicity.finite_mul_iff -> multiplicity.finite_mul_iff is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (Iff (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (Iff (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)))
+Case conversion may be inaccurate. Consider using '#align multiplicity.finite_mul_iff multiplicity.finite_mul_iffₓ'. -/
 theorem finite_mul_iff {p a b : α} (hp : Prime p) : Finite p (a * b) ↔ Finite p a ∧ Finite p b :=
   ⟨fun h => ⟨finite_of_finite_mul_right h, finite_of_finite_mul_left h⟩, fun h =>
     finite_mul hp h.1 h.2⟩
 #align multiplicity.finite_mul_iff multiplicity.finite_mul_iff
 
+#print multiplicity.finite_pow /-
 theorem finite_pow {p a : α} (hp : Prime p) : ∀ {k : ℕ} (ha : Finite p a), Finite p (a ^ k)
   | 0, ha => ⟨0, by simp [mt isUnit_iff_dvd_one.2 hp.2.1]⟩
   | k + 1, ha => by rw [pow_succ] <;> exact finite_mul hp ha (finite_pow ha)
 #align multiplicity.finite_pow multiplicity.finite_pow
+-/
 
 variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
+/- warning: multiplicity.multiplicity_self -> multiplicity.multiplicity_self is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {a : α}, (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) a)) -> (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a a) (OfNat.ofNat.{0} PartENat 1 (OfNat.mk.{0} PartENat 1 (One.one.{0} PartENat PartENat.hasOne))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7143 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7145 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7143 x._@.Mathlib.RingTheory.Multiplicity._hyg.7145)] {a : α}, (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) a)) -> (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) a a) (OfNat.ofNat.{0} PartENat 1 (One.toOfNat1.{0} PartENat PartENat.instOnePartENat)))
+Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_self multiplicity.multiplicity_selfₓ'. -/
 @[simp]
 theorem multiplicity_self {a : α} (ha : ¬IsUnit a) (ha0 : a ≠ 0) : multiplicity a a = 1 :=
   by
@@ -572,6 +806,7 @@ theorem multiplicity_self {a : α} (ha : ¬IsUnit a) (ha0 : a ≠ 0) : multiplic
                 simpa [pow_succ, mul_assoc] using hb⟩)⟩
 #align multiplicity.multiplicity_self multiplicity.multiplicity_self
 
+#print multiplicity.get_multiplicity_self /-
 @[simp]
 theorem get_multiplicity_self {a : α} (ha : Finite a a) : get (multiplicity a a) ha = 1 :=
   PartENat.get_eq_iff_eq_coe.2
@@ -582,7 +817,14 @@ theorem get_multiplicity_self {a : α} (ha : Finite a a) : get (multiplicity a a
           exact
             mt isUnit_iff_dvd_one.2 (not_unit_of_finite ha) ⟨b, by clear _fun_match <;> simp_all⟩⟩)
 #align multiplicity.get_multiplicity_self multiplicity.get_multiplicity_self
+-/
 
+/- warning: multiplicity.mul' -> multiplicity.mul' is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α} {a : α} {b : α} (hp : Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) (h : Part.Dom.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b))), Eq.{1} Nat (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) h) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (And.left (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (And.right (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7401 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7403 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7401 x._@.Mathlib.RingTheory.Multiplicity._hyg.7403)] {p : α} {a : α} {b : α} (hp : Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) (h : Part.Dom.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b))), Eq.{1} Nat (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) h) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (And.left (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))) (Part.get.{0} Nat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b) (And.right (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b) (Iff.mp (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (And (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p a) (multiplicity.Finite.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p b)) (multiplicity.finite_mul_iff.{u1} α _inst_1 p a b hp) h))))
+Case conversion may be inaccurate. Consider using '#align multiplicity.mul' multiplicity.mul'ₓ'. -/
 protected theorem mul' {p a b : α} (hp : Prime p) (h : (multiplicity p (a * b)).Dom) :
     get (multiplicity p (a * b)) h =
       get (multiplicity p a) ((finite_mul_iff hp).1 h).1 +
@@ -617,6 +859,12 @@ protected theorem mul' {p a b : α} (hp : Prime p) (h : (multiplicity p (a * b))
 
 open Classical
 
+/- warning: multiplicity.mul -> multiplicity.mul is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (HAdd.hAdd.{0, 0, 0} PartENat PartENat PartENat (instHAdd.{0} PartENat PartENat.hasAdd) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.7912 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.7914 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.7912 x._@.Mathlib.RingTheory.Multiplicity._hyg.7914)] {p : α} {a : α} {b : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1)))))) a b)) (HAdd.hAdd.{0, 0, 0} PartENat PartENat PartENat (instHAdd.{0} PartENat PartENat.instAddPartENat) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a) (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p b)))
+Case conversion may be inaccurate. Consider using '#align multiplicity.mul multiplicity.mulₓ'. -/
 protected theorem mul {p a b : α} (hp : Prime p) :
     multiplicity p (a * b) = multiplicity p a + multiplicity p b :=
   if h : Finite p a ∧ Finite p b then by
@@ -630,6 +878,7 @@ protected theorem mul {p a b : α} (hp : Prime p) :
     cases' not_and_or.1 h with h h <;> simp [eq_top_iff_not_finite.2 h]
 #align multiplicity.mul multiplicity.mul
 
+#print multiplicity.Finset.prod /-
 theorem Finset.prod {β : Type _} {p : α} (hp : Prime p) (s : Finset β) (f : β → α) :
     multiplicity p (∏ x in s, f x) = ∑ x in s, multiplicity p (f x) := by
   classical
@@ -639,7 +888,9 @@ theorem Finset.prod {β : Type _} {p : α} (hp : Prime p) (s : Finset β) (f : 
     · simp [has, ← ih]
       convert multiplicity.mul hp
 #align multiplicity.finset.prod multiplicity.Finset.prod
+-/
 
+#print multiplicity.pow' /-
 protected theorem pow' {p a : α} (hp : Prime p) (ha : Finite p a) :
     ∀ {k : ℕ}, get (multiplicity p (a ^ k)) (finite_pow hp ha) = k * get (multiplicity p a) ha
   | 0 => by simp [one_right hp.not_unit]
@@ -648,12 +899,25 @@ protected theorem pow' {p a : α} (hp : Prime p) (ha : Finite p a) :
     have : multiplicity p (a ^ (k + 1)) = multiplicity p (a * a ^ k) := by rw [pow_succ]
     rw [get_eq_get_of_eq _ _ this, multiplicity.mul' hp, pow', add_mul, one_mul, add_comm]
 #align multiplicity.pow' multiplicity.pow'
+-/
 
+/- warning: multiplicity.pow -> multiplicity.pow is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α} {a : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall {k : Nat}, Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) a k)) (SMul.smul.{0, 0} Nat PartENat (AddMonoid.SMul.{0} PartENat (AddMonoidWithOne.toAddMonoid.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))) k (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8398 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8400 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8398 x._@.Mathlib.RingTheory.Multiplicity._hyg.8400)] {p : α} {a : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall {k : Nat}, Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) a k)) (HSMul.hSMul.{0, 0, 0} Nat PartENat PartENat (instHSMul.{0, 0} Nat PartENat (AddMonoid.SMul.{0} PartENat (AddMonoidWithOne.toAddMonoid.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)))) k (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p a)))
+Case conversion may be inaccurate. Consider using '#align multiplicity.pow multiplicity.powₓ'. -/
 theorem pow {p a : α} (hp : Prime p) : ∀ {k : ℕ}, multiplicity p (a ^ k) = k • multiplicity p a
   | 0 => by simp [one_right hp.not_unit]
   | succ k => by simp [pow_succ, succ_nsmul, pow, multiplicity.mul hp]
 #align multiplicity.pow multiplicity.pow
 
+/- warning: multiplicity.multiplicity_pow_self -> multiplicity.multiplicity_pow_self is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α}, (Ne.{succ u1} α p (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))))) -> (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p)) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) n))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8493 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8495 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8493 x._@.Mathlib.RingTheory.Multiplicity._hyg.8495)] {p : α}, (Ne.{succ u1} α p (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) -> (Not (IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) p)) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) n))
+Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_pow_self multiplicity.multiplicity_pow_selfₓ'. -/
 theorem multiplicity_pow_self {p : α} (h0 : p ≠ 0) (hu : ¬IsUnit p) (n : ℕ) :
     multiplicity p (p ^ n) = n := by
   rw [eq_coe_iff]
@@ -662,6 +926,12 @@ theorem multiplicity_pow_self {p : α} (h0 : p ≠ 0) (hu : ¬IsUnit p) (n : ℕ
   apply Nat.not_succ_le_self
 #align multiplicity.multiplicity_pow_self multiplicity.multiplicity_pow_self
 
+/- warning: multiplicity.multiplicity_pow_self_of_prime -> multiplicity.multiplicity_pow_self_of_prime is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (Dvd.Dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))))] {p : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat PartENat (HasLiftT.mk.{1, 1} Nat PartENat (CoeTCₓ.coe.{1, 1} Nat PartENat (Nat.castCoe.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.addCommMonoidWithOne))))) n))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoidWithZero.{u1} α] [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.RingTheory.Multiplicity._hyg.8640 : α) (x._@.Mathlib.RingTheory.Multiplicity._hyg.8642 : α) => Dvd.dvd.{u1} α (semigroupDvd.{u1} α (SemigroupWithZero.toSemigroup.{u1} α (MonoidWithZero.toSemigroupWithZero.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) x._@.Mathlib.RingTheory.Multiplicity._hyg.8640 x._@.Mathlib.RingTheory.Multiplicity._hyg.8642)] {p : α}, (Prime.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1) p) -> (forall (n : Nat), Eq.{1} PartENat (multiplicity.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (fun (a : α) (b : α) => _inst_2 a b) p (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))))) p n)) (Nat.cast.{0} PartENat (AddMonoidWithOne.toNatCast.{0} PartENat (AddCommMonoidWithOne.toAddMonoidWithOne.{0} PartENat PartENat.instAddCommMonoidWithOnePartENat)) n))
+Case conversion may be inaccurate. Consider using '#align multiplicity.multiplicity_pow_self_of_prime multiplicity.multiplicity_pow_self_of_primeₓ'. -/
 theorem multiplicity_pow_self_of_prime {p : α} (hp : Prime p) (n : ℕ) :
     multiplicity p (p ^ n) = n :=
   multiplicity_pow_self hp.NeZero hp.not_unit n
@@ -673,12 +943,24 @@ section Valuation
 
 variable {R : Type _} [CommRing R] [IsDomain R] {p : R} [DecidableRel (Dvd.Dvd : R → R → Prop)]
 
+/- warning: multiplicity.add_valuation -> multiplicity.addValuation is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.Dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalRing.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalRing.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))], (Prime.{u1} R (CommSemiring.toCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) p) -> (AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.linearOrderedAddCommMonoidWithTop)
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalRing.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalRing.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))], (Prime.{u1} R (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} R (IsDomain.toCancelCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2)) p) -> (AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat)
+Case conversion may be inaccurate. Consider using '#align multiplicity.add_valuation multiplicity.addValuationₓ'. -/
 /-- `multiplicity` of a prime inan integral domain as an additive valuation to `part_enat`. -/
 noncomputable def addValuation (hp : Prime p) : AddValuation R PartENat :=
   AddValuation.of (multiplicity p) (multiplicity.zero _) (one_right hp.not_unit)
     (fun _ _ => min_le_multiplicity_add) fun a b => multiplicity.mul hp
 #align multiplicity.add_valuation multiplicity.addValuation
 
+/- warning: multiplicity.add_valuation_apply -> multiplicity.addValuation_apply is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.Dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalRing.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalRing.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))] {hp : Prime.{u1} R (CommSemiring.toCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) p} {r : R}, Eq.{1} PartENat (coeFn.{succ u1, succ u1} (AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.linearOrderedAddCommMonoidWithTop) (fun (_x : AddValuation.{u1, 0} R (CommRing.toRing.{u1} R _inst_1) PartENat PartENat.linearOrderedAddCommMonoidWithTop) => R -> PartENat) (AddValuation.hasCoeToFun.{u1, 0} R PartENat PartENat.linearOrderedAddCommMonoidWithTop (CommRing.toRing.{u1} R _inst_1)) (multiplicity.addValuation.{u1} R _inst_1 _inst_2 p (fun (a : R) (b : R) => _inst_3 a b) hp) r) (multiplicity.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) (fun (a : R) (b : R) => _inst_3 a b) p r)
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : IsDomain.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] {p : R} [_inst_3 : DecidableRel.{succ u1} R (Dvd.dvd.{u1} R (semigroupDvd.{u1} R (SemigroupWithZero.toSemigroup.{u1} R (NonUnitalSemiring.toSemigroupWithZero.{u1} R (NonUnitalRing.toNonUnitalSemiring.{u1} R (NonUnitalCommRing.toNonUnitalRing.{u1} R (CommRing.toNonUnitalCommRing.{u1} R _inst_1)))))))] {hp : Prime.{u1} R (CancelCommMonoidWithZero.toCommMonoidWithZero.{u1} R (IsDomain.toCancelCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2)) p} {r : R}, Eq.{1} (Multiplicative.{0} (OrderDual.{0} PartENat)) (ZeroHom.toFun.{u1, 0} R (Multiplicative.{0} (OrderDual.{0} PartENat)) (MulZeroOneClass.toZero.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (MulZeroOneClass.toZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (MonoidWithZero.toMulZeroOneClass.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (CommMonoidWithZero.toMonoidWithZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (instLinearOrderedCommMonoidWithZeroMultiplicativeOrderDual.{0} PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat))))) (MonoidWithZeroHom.toZeroHom.{u1, 0} R (Multiplicative.{0} (OrderDual.{0} PartENat)) (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (MonoidWithZero.toMulZeroOneClass.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (CommMonoidWithZero.toMonoidWithZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{0} (Multiplicative.{0} (OrderDual.{0} PartENat)) (instLinearOrderedCommMonoidWithZeroMultiplicativeOrderDual.{0} PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat)))) (Valuation.toMonoidWithZeroHom.{u1, 0} R (Multiplicative.{0} (OrderDual.{0} PartENat)) (instLinearOrderedCommMonoidWithZeroMultiplicativeOrderDual.{0} PartENat PartENat.instLinearOrderedAddCommMonoidWithTopPartENat) (CommRing.toRing.{u1} R _inst_1) (multiplicity.addValuation.{u1} R _inst_1 _inst_2 p (fun (a : R) (b : R) => _inst_3 a b) hp))) r) (multiplicity.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (fun (a : R) (b : R) => _inst_3 a b) p r)
+Case conversion may be inaccurate. Consider using '#align multiplicity.add_valuation_apply multiplicity.addValuation_applyₓ'. -/
 @[simp]
 theorem addValuation_apply {hp : Prime p} {r : R} : addValuation hp r = multiplicity p r :=
   rfl
@@ -692,6 +974,12 @@ section Nat
 
 open multiplicity
 
+/- warning: multiplicity_eq_zero_of_coprime -> multiplicity_eq_zero_of_coprime is a dubious translation:
+lean 3 declaration is
+  forall {p : Nat} {a : Nat} {b : Nat}, (Ne.{1} Nat p (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) -> (LE.le.{0} PartENat PartENat.hasLe (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidableDvd a b) p a) (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidableDvd a b) p b)) -> (Nat.coprime a b) -> (Eq.{1} PartENat (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidableDvd a b) p a) (OfNat.ofNat.{0} PartENat 0 (OfNat.mk.{0} PartENat 0 (Zero.zero.{0} PartENat PartENat.hasZero))))
+but is expected to have type
+  forall {p : Nat} {a : Nat} {b : Nat}, (Ne.{1} Nat p (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) -> (LE.le.{0} PartENat PartENat.instLEPartENat (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidable_dvd a b) p a) (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidable_dvd a b) p b)) -> (Nat.coprime a b) -> (Eq.{1} PartENat (multiplicity.{0} Nat Nat.monoid (fun (a : Nat) (b : Nat) => Nat.decidable_dvd a b) p a) (OfNat.ofNat.{0} PartENat 0 (Zero.toOfNat0.{0} PartENat PartENat.instZeroPartENat)))
+Case conversion may be inaccurate. Consider using '#align multiplicity_eq_zero_of_coprime multiplicity_eq_zero_of_coprimeₓ'. -/
 theorem multiplicity_eq_zero_of_coprime {p a b : ℕ} (hp : p ≠ 1)
     (hle : multiplicity p a ≤ multiplicity p b) (hab : Nat.coprime a b) : multiplicity p a = 0 :=
   by
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Robert Y. Lewis, Chris Hughes
 
 ! This file was ported from Lean 3 source module ring_theory.multiplicity
-! leanprover-community/mathlib commit 3d32bf9cef95940e3fe1ca0dd2412e0f21579f46
+! leanprover-community/mathlib commit ceb887ddf3344dab425292e497fa2af91498437c
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -216,6 +216,10 @@ theorem multiplicity_eq_zero {a b : α} : multiplicity a b = 0 ↔ ¬a ∣ b :=
   simp
 #align multiplicity.multiplicity_eq_zero multiplicity.multiplicity_eq_zero
 
+theorem multiplicity_ne_zero {a b : α} : multiplicity a b ≠ 0 ↔ a ∣ b :=
+  multiplicity_eq_zero.not_left
+#align multiplicity.multiplicity_ne_zero multiplicity.multiplicity_ne_zero
+
 theorem eq_top_iff_not_finite {a b : α} : multiplicity a b = ⊤ ↔ ¬Finite a b :=
   Part.eq_none_iff'
 #align multiplicity.eq_top_iff_not_finite multiplicity.eq_top_iff_not_finite

Changes in mathlib4

mathlib3
mathlib4
chore: adapt to multiple goal linter 1 (#12338)

A PR accompanying #12339.

Zulip discussion

Diff
@@ -448,8 +448,8 @@ theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity
     cases' PartENat.ne_top_iff.mp (PartENat.ne_top_of_lt h) with k hk
     rw [hk]
     rw_mod_cast [multiplicity_lt_iff_not_dvd, dvd_add_right]
-    intro h_dvd
-    · apply multiplicity.is_greatest _ h_dvd
+    · intro h_dvd
+      apply multiplicity.is_greatest _ h_dvd
       rw [hk, ← Nat.succ_eq_add_one]
       norm_cast
       apply Nat.lt_succ_self k
chore: backports from #11997, adaptations for nightly-2024-04-07 (#12176)

These are changes from #11997, the latest adaptation PR for nightly-2024-04-07, which can be made directly on master.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com>

Diff
@@ -216,7 +216,7 @@ theorem eq_top_iff_not_finite {a b : α} : multiplicity a b = ⊤ ↔ ¬Finite a
 #align multiplicity.eq_top_iff_not_finite multiplicity.eq_top_iff_not_finite
 
 theorem ne_top_iff_finite {a b : α} : multiplicity a b ≠ ⊤ ↔ Finite a b := by
-  rw [Ne.def, eq_top_iff_not_finite, Classical.not_not]
+  rw [Ne, eq_top_iff_not_finite, Classical.not_not]
 #align multiplicity.ne_top_iff_finite multiplicity.ne_top_iff_finite
 
 theorem lt_top_iff_finite {a b : α} : multiplicity a b < ⊤ ↔ Finite a b := by
@@ -289,7 +289,7 @@ theorem dvd_iff_multiplicity_pos {a b : α} : (0 : PartENat) < multiplicity a b
 #align multiplicity.dvd_iff_multiplicity_pos multiplicity.dvd_iff_multiplicity_pos
 
 theorem finite_nat_iff {a b : ℕ} : Finite a b ↔ a ≠ 1 ∧ 0 < b := by
-  rw [← not_iff_not, not_finite_iff_forall, not_and_or, Ne.def, Classical.not_not, not_lt,
+  rw [← not_iff_not, not_finite_iff_forall, not_and_or, Ne, Classical.not_not, not_lt,
     Nat.le_zero]
   exact
     ⟨fun h =>
chore: Rename coe_nat/coe_int/coe_rat to natCast/intCast/ratCast (#11499)

This is less exhaustive than its sibling #11486 because edge cases are harder to classify. No fundamental difficulty, just me being a bit fast and lazy.

Reduce the diff of #11203

Diff
@@ -64,7 +64,7 @@ theorem not_dvd_one_of_finite_one_right {a : α} : Finite a 1 → ¬a ∣ 1 := f
 #align multiplicity.not_dvd_one_of_finite_one_right multiplicity.not_dvd_one_of_finite_one_right
 
 @[norm_cast]
-theorem Int.coe_nat_multiplicity (a b : ℕ) : multiplicity (a : ℤ) (b : ℤ) = multiplicity a b := by
+theorem Int.natCast_multiplicity (a b : ℕ) : multiplicity (a : ℤ) (b : ℤ) = multiplicity a b := by
   apply Part.ext'
   · rw [← @finite_iff_dom ℕ, @finite_def ℕ, ← @finite_iff_dom ℤ, @finite_def ℤ]
     norm_cast
@@ -73,7 +73,10 @@ theorem Int.coe_nat_multiplicity (a b : ℕ) : multiplicity (a : ℤ) (b : ℤ)
       · apply Nat.find_mono
         norm_cast
         simp
-#align multiplicity.int.coe_nat_multiplicity multiplicity.Int.coe_nat_multiplicity
+#align multiplicity.int.coe_nat_multiplicity multiplicity.Int.natCast_multiplicity
+
+-- 2024-04-05
+@[deprecated] alias Int.coe_nat_multiplicity := Int.natCast_multiplicity
 
 theorem not_finite_iff_forall {a b : α} : ¬Finite a b ↔ ∀ n : ℕ, a ^ n ∣ b :=
   ⟨fun h n =>
@@ -434,8 +437,8 @@ protected theorem neg (a b : α) : multiplicity a (-b) = multiplicity a b :=
 
 theorem Int.natAbs (a : ℕ) (b : ℤ) : multiplicity a b.natAbs = multiplicity (a : ℤ) b := by
   cases' Int.natAbs_eq b with h h <;> conv_rhs => rw [h]
-  · rw [Int.coe_nat_multiplicity]
-  · rw [multiplicity.neg, Int.coe_nat_multiplicity]
+  · rw [Int.natCast_multiplicity]
+  · rw [multiplicity.neg, Int.natCast_multiplicity]
 #align multiplicity.int.nat_abs multiplicity.Int.natAbs
 
 theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity p a) :
chore: move some basic multiplicity results out of Mathlib.RingTheory.Int.Basic (#11919)

This means Mathlib.NumberTheory.Padics.PadicVal no longer needs to depend on Mathlib.RingTheory.Int.Basic, which is surprisingly heavy (in particular through Mathlib.RingTheory.Noetherian).

Diff
@@ -647,3 +647,23 @@ theorem multiplicity_eq_zero_of_coprime {p a b : ℕ} (hp : p ≠ 1)
 #align multiplicity_eq_zero_of_coprime multiplicity_eq_zero_of_coprime
 
 end Nat
+
+namespace multiplicity
+
+theorem finite_int_iff_natAbs_finite {a b : ℤ} : Finite a b ↔ Finite a.natAbs b.natAbs := by
+  simp only [finite_def, ← Int.natAbs_dvd_natAbs, Int.natAbs_pow]
+#align multiplicity.finite_int_iff_nat_abs_finite multiplicity.finite_int_iff_natAbs_finite
+
+theorem finite_int_iff {a b : ℤ} : Finite a b ↔ a.natAbs ≠ 1 ∧ b ≠ 0 := by
+  rw [finite_int_iff_natAbs_finite, finite_nat_iff, pos_iff_ne_zero, Int.natAbs_ne_zero]
+#align multiplicity.finite_int_iff multiplicity.finite_int_iff
+
+instance decidableNat : DecidableRel fun a b : ℕ => (multiplicity a b).Dom := fun _ _ =>
+  decidable_of_iff _ finite_nat_iff.symm
+#align multiplicity.decidable_nat multiplicity.decidableNat
+
+instance decidableInt : DecidableRel fun a b : ℤ => (multiplicity a b).Dom := fun _ _ =>
+  decidable_of_iff _ finite_int_iff.symm
+#align multiplicity.decidable_int multiplicity.decidableInt
+
+end multiplicity
chore: Reduce scope of LinearOrderedCommGroupWithZero (#11716)

Reconstitute the file Algebra.Order.Monoid.WithZero from three files:

  • Algebra.Order.Monoid.WithZero.Defs
  • Algebra.Order.Monoid.WithZero.Basic
  • Algebra.Order.WithZero

Avoid importing it in many files. Most uses were just to get le_zero_iff to work on Nat.

Before pre_11716

After post_11716

Diff
@@ -287,7 +287,7 @@ theorem dvd_iff_multiplicity_pos {a b : α} : (0 : PartENat) < multiplicity a b
 
 theorem finite_nat_iff {a b : ℕ} : Finite a b ↔ a ≠ 1 ∧ 0 < b := by
   rw [← not_iff_not, not_finite_iff_forall, not_and_or, Ne.def, Classical.not_not, not_lt,
-    le_zero_iff]
+    Nat.le_zero]
   exact
     ⟨fun h =>
       or_iff_not_imp_right.2 fun hb =>
change the order of operation in zsmulRec and nsmulRec (#11451)

We change the following field in the definition of an additive commutative monoid:

 nsmul_succ : ∀ (n : ℕ) (x : G),
-  AddMonoid.nsmul (n + 1) x = x + AddMonoid.nsmul n x
+  AddMonoid.nsmul (n + 1) x = AddMonoid.nsmul n x + x

where the latter is more natural

We adjust the definitions of ^ in monoids, groups, etc. Originally there was a warning comment about why this natural order was preferred

use x * npowRec n x and not npowRec n x * x in the definition to make sure that definitional unfolding of npowRec is blocked, to avoid deep recursion issues.

but it seems to no longer apply.

Remarks on the PR :

  • pow_succ and pow_succ' have switched their meanings.
  • Most of the time, the proofs were adjusted by priming/unpriming one lemma, or exchanging left and right; a few proofs were more complicated to adjust.
  • In particular, [Mathlib/NumberTheory/RamificationInertia.lean] used Ideal.IsPrime.mul_mem_pow which is defined in [Mathlib/RingTheory/DedekindDomain/Ideal.lean]. Changing the order of operation forced me to add the symmetric lemma Ideal.IsPrime.mem_pow_mul.
  • the docstring for Cauchy condensation test in [Mathlib/Analysis/PSeries.lean] was mathematically incorrect, I added the mention that the function is antitone.
Diff
@@ -225,7 +225,7 @@ theorem exists_eq_pow_mul_and_not_dvd {a b : α} (hfin : Finite a b) :
   obtain ⟨c, hc⟩ := multiplicity.pow_multiplicity_dvd hfin
   refine' ⟨c, hc, _⟩
   rintro ⟨k, hk⟩
-  rw [hk, ← mul_assoc, ← _root_.pow_succ'] at hc
+  rw [hk, ← mul_assoc, ← _root_.pow_succ] at hc
   have h₁ : a ^ ((multiplicity a b).get hfin + 1) ∣ b := ⟨k, hc⟩
   exact (multiplicity.eq_coe_iff.1 (by simp)).2 h₁
 #align multiplicity.exists_eq_pow_mul_and_not_dvd multiplicity.exists_eq_pow_mul_and_not_dvd
@@ -523,7 +523,7 @@ theorem finite_mul_iff {p a b : α} (hp : Prime p) : Finite p (a * b) ↔ Finite
 
 theorem finite_pow {p a : α} (hp : Prime p) : ∀ {k : ℕ} (_ : Finite p a), Finite p (a ^ k)
   | 0, _ => ⟨0, by simp [mt isUnit_iff_dvd_one.2 hp.2.1]⟩
-  | k + 1, ha => by rw [_root_.pow_succ]; exact finite_mul hp ha (finite_pow hp ha)
+  | k + 1, ha => by rw [_root_.pow_succ']; exact finite_mul hp ha (finite_pow hp ha)
 #align multiplicity.finite_pow multiplicity.finite_pow
 
 variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
@@ -604,7 +604,7 @@ protected theorem pow' {p a : α} (hp : Prime p) (ha : Finite p a) :
   intro k
   induction' k with k hk
   · simp [one_right hp.not_unit]
-  · have : multiplicity p (a ^ (k + 1)) = multiplicity p (a * a ^ k) := by rw [_root_.pow_succ]
+  · have : multiplicity p (a ^ (k + 1)) = multiplicity p (a * a ^ k) := by rw [_root_.pow_succ']
     rw [succ_eq_add_one, get_eq_get_of_eq _ _ this,
       multiplicity.mul' hp, hk, add_mul, one_mul, add_comm]
 #align multiplicity.pow' multiplicity.pow'
chore(Data/Nat): Use Std lemmas (#11661)

Move basic Nat lemmas from Data.Nat.Order.Basic and Data.Nat.Pow to Data.Nat.Defs. Most proofs need adapting, but that's easily solved by replacing the general mathlib lemmas by the new Std Nat-specific lemmas and using omega.

Other changes

  • Move the last few lemmas left in Data.Nat.Pow to Algebra.GroupPower.Order
  • Move the deprecated aliases from Data.Nat.Pow to Algebra.GroupPower.Order
  • Move the bit/bit0/bit1 lemmas from Data.Nat.Order.Basic to Data.Nat.Bits
  • Fix some fallout from not importing Data.Nat.Order.Basic anymore
  • Add a few Nat-specific lemmas to help fix the fallout (look for nolint simpNF)
  • Turn Nat.mul_self_le_mul_self_iff and Nat.mul_self_lt_mul_self_iff around (they were misnamed)
  • Make more arguments to Nat.one_lt_pow implicit
Diff
@@ -8,7 +8,6 @@ import Mathlib.Algebra.Associated
 import Mathlib.Algebra.SMulWithZero
 import Mathlib.Data.Nat.PartENat
 import Mathlib.Tactic.Linarith
-import Mathlib.Data.Nat.Pow
 
 #align_import ring_theory.multiplicity from "leanprover-community/mathlib"@"e8638a0fcaf73e4500469f368ef9494e495099b3"
 
chore: Make Finset.preimage not depend on Finset.sum (#11601)

and Data.Finset.LocallyFinite not depend on Finset.sum too

Diff
@@ -3,6 +3,7 @@ Copyright (c) 2018 Robert Y. Lewis. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Robert Y. Lewis, Chris Hughes
 -/
+import Mathlib.Algebra.BigOperators.Basic
 import Mathlib.Algebra.Associated
 import Mathlib.Algebra.SMulWithZero
 import Mathlib.Data.Nat.PartENat
@@ -29,8 +30,7 @@ several basic results on it.
 variable {α β : Type*}
 
 open Nat Part
-
-open BigOperators
+open scoped BigOperators
 
 /-- `multiplicity a b` returns the largest natural number `n` such that
   `a ^ n ∣ b`, as a `PartENat` or natural with infinity. If `∀ n, a ^ n ∣ b`,
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
  for filename in files:
    if filename.endswith('.lean'):
      file_path = os.path.join(dir_path, filename)

      # Open the file and read its contents
      with open(file_path, 'r') as file:
        content = file.read()

      # Use a regular expression to replace sequences of "variable" lines separated by empty lines
      # with sequences without empty lines
      modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -377,7 +377,6 @@ end MonoidWithZero
 section CommMonoidWithZero
 
 variable [CommMonoidWithZero α]
-
 variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 
 theorem multiplicity_mk_eq_multiplicity
chore: remove unneeded decreasing_by and termination_by (#11386)

The termination checker has been getting more capable, and many of the termination_by or decreasing_by clauses in Mathlib are no longer needed.

(Note that termination_by? will show the automatically derived termination expression, so no information is being lost by removing these.)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -479,8 +479,8 @@ section CancelCommMonoidWithZero
 
 variable [CancelCommMonoidWithZero α]
 
-/- Porting note: removed previous wf recursion hints and added termination_by
-Also pulled a b intro parameters since Lean parses that more easily -/
+/- Porting note:
+Pulled a b intro parameters since Lean parses that more easily -/
 theorem finite_mul_aux {p : α} (hp : Prime p) {a b : α} :
     ∀ {n m : ℕ}, ¬p ^ (n + 1) ∣ a → ¬p ^ (m + 1) ∣ b → ¬p ^ (n + m + 1) ∣ a * b
   | n, m => fun ha hb ⟨s, hs⟩ =>
@@ -512,7 +512,6 @@ theorem finite_mul_aux {p : α} (hp : Prime p) {a b : α} :
         ⟨s, mul_right_cancel₀ hp.1 (by
               rw [add_assoc, tsub_add_cancel_of_le (succ_le_of_lt hm0)]
               simp_all [mul_comm, mul_assoc, mul_left_comm, pow_add])⟩
-termination_by n m => n + m
 #align multiplicity.finite_mul_aux multiplicity.finite_mul_aux
 
 theorem finite_mul {p a b : α} (hp : Prime p) : Finite p a → Finite p b → Finite p (a * b) :=
chore: scope open Classical (#11199)

We remove all but one open Classicals, instead preferring to use open scoped Classical. The only real side-effect this led to is moving a couple declarations to use Exists.choose instead of Classical.choose.

The first few commits are explicitly labelled regex replaces for ease of review.

Diff
@@ -333,7 +333,7 @@ theorem unit_right {a : α} (ha : ¬IsUnit a) (u : αˣ) : multiplicity a u = 0
   isUnit_right ha u.isUnit
 #align multiplicity.unit_right multiplicity.unit_right
 
-open Classical
+open scoped Classical
 
 theorem multiplicity_le_multiplicity_of_dvd_left {a b c : α} (hdvd : a ∣ b) :
     multiplicity b c ≤ multiplicity a c :=
@@ -577,7 +577,7 @@ protected theorem mul' {p a b : α} (hp : Prime p) (h : (multiplicity p (a * b))
   rw [← PartENat.natCast_inj, PartENat.natCast_get, eq_coe_iff]; exact ⟨hdiv, hsucc⟩
 #align multiplicity.mul' multiplicity.mul'
 
-open Classical
+open scoped Classical
 
 protected theorem mul {p a b : α} (hp : Prime p) :
     multiplicity p (a * b) = multiplicity p a + multiplicity p b :=
refactor: optimize proofs with omega (#11093)

I ran tryAtEachStep on all files under Mathlib to find all locations where omega succeeds. For each that was a linarith without an only, I tried replacing it with omega, and I verified that elaboration time got smaller. (In almost all cases, there was a noticeable speedup.) I also replaced some slow aesops along the way.

Diff
@@ -299,7 +299,7 @@ theorem finite_nat_iff {a b : ℕ} : Finite a b ↔ a ≠ 1 ∧ 0 < b := by
               match a with
               | 0 => ha rfl
               | 1 => ha1 rfl
-              | b+2 => by linarith
+              | b+2 => by omega
           not_lt_of_ge (le_of_dvd (Nat.pos_of_ne_zero hb) (h b)) (lt_pow_self ha_gt_one b),
       fun h => by cases h <;> simp [*]⟩
 #align multiplicity.finite_nat_iff multiplicity.finite_nat_iff
chore: classify simp can do this porting notes (#10619)

Classify by adding issue number (#10618) to porting notes claiming anything semantically equivalent to simp can prove this or simp can simplify this.

Diff
@@ -184,7 +184,7 @@ theorem isUnit_left {a : α} (b : α) (ha : IsUnit a) : multiplicity a b = ⊤ :
   eq_top_iff.2 fun _ => IsUnit.dvd (ha.pow _)
 #align multiplicity.is_unit_left multiplicity.isUnit_left
 
--- @[simp] Porting note: simp can prove this
+-- @[simp] Porting note (#10618): simp can prove this
 theorem one_left (b : α) : multiplicity 1 b = ⊤ :=
   isUnit_left b isUnit_one
 #align multiplicity.one_left multiplicity.one_left
@@ -195,7 +195,7 @@ theorem get_one_right {a : α} (ha : Finite a 1) : get (multiplicity a 1) ha = 0
   simp [not_dvd_one_of_finite_one_right ha]
 #align multiplicity.get_one_right multiplicity.get_one_right
 
--- @[simp] Porting note: simp can prove this
+-- @[simp] Porting note (#10618): simp can prove this
 theorem unit_left (a : α) (u : αˣ) : multiplicity (u : α) a = ⊤ :=
   isUnit_left a u.isUnit
 #align multiplicity.unit_left multiplicity.unit_left
chore: bump Std (#10482)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -7,6 +7,7 @@ import Mathlib.Algebra.Associated
 import Mathlib.Algebra.SMulWithZero
 import Mathlib.Data.Nat.PartENat
 import Mathlib.Tactic.Linarith
+import Mathlib.Data.Nat.Pow
 
 #align_import ring_theory.multiplicity from "leanprover-community/mathlib"@"e8638a0fcaf73e4500469f368ef9494e495099b3"
 
refactor(Data/FunLike): use unbundled inheritance from FunLike (#8386)

The FunLike hierarchy is very big and gets scanned through each time we need a coercion (via the CoeFun instance). It looks like unbundled inheritance suits Lean 4 better here. The only class that still extends FunLike is EquivLike, since that has a custom coe_injective' field that is easier to implement. All other classes should take FunLike or EquivLike as a parameter.

Zulip thread

Important changes

Previously, morphism classes would be Type-valued and extend FunLike:

/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
  extends FunLike F A B :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))

After this PR, they should be Prop-valued and take FunLike as a parameter:

/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
  [FunLike F A B] : Prop :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))

(Note that A B stay marked as outParam even though they are not purely required to be so due to the FunLike parameter already filling them in. This is required to see through type synonyms, which is important in the category theory library. Also, I think keeping them as outParam is slightly faster.)

Similarly, MyEquivClass should take EquivLike as a parameter.

As a result, every mention of [MyHomClass F A B] should become [FunLike F A B] [MyHomClass F A B].

Remaining issues

Slower (failing) search

While overall this gives some great speedups, there are some cases that are noticeably slower. In particular, a failing application of a lemma such as map_mul is more expensive. This is due to suboptimal processing of arguments. For example:

variable [FunLike F M N] [Mul M] [Mul N] (f : F) (x : M) (y : M)

theorem map_mul [MulHomClass F M N] : f (x * y) = f x * f y

example [AddHomClass F A B] : f (x * y) = f x * f y := map_mul f _ _

Before this PR, applying map_mul f gives the goals [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]. Since M and N are out_params, [MulHomClass F ?M ?N] is synthesized first, supplies values for ?M and ?N and then the Mul M and Mul N instances can be found.

After this PR, the goals become [FunLike F ?M ?N] [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]. Now [FunLike F ?M ?N] is synthesized first, supplies values for ?M and ?N and then the Mul M and Mul N instances can be found, before trying MulHomClass F M N which fails. Since the Mul hierarchy is very big, this can be slow to fail, especially when there is no such Mul instance.

A long-term but harder to achieve solution would be to specify the order in which instance goals get solved. For example, we'd like to change the arguments to map_mul to look like [FunLike F M N] [Mul M] [Mul N] [highPriority <| MulHomClass F M N] because MulHomClass fails or succeeds much faster than the others.

As a consequence, the simpNF linter is much slower since by design it tries and fails to apply many map_ lemmas. The same issue occurs a few times in existing calls to simp [map_mul], where map_mul is tried "too soon" and fails. Thanks to the speedup of leanprover/lean4#2478 the impact is very limited, only in files that already were close to the timeout.

simp not firing sometimes

This affects map_smulₛₗ and related definitions. For simp lemmas Lean apparently uses a slightly different mechanism to find instances, so that rw can find every argument to map_smulₛₗ successfully but simp can't: leanprover/lean4#3701.

Missing instances due to unification failing

Especially in the category theory library, we might sometimes have a type A which is also accessible as a synonym (Bundled A hA).1. Instance synthesis doesn't always work if we have f : A →* B but x * y : (Bundled A hA).1 or vice versa. This seems to be mostly fixed by keeping A B as outParams in MulHomClass F A B. (Presumably because Lean will do a definitional check A =?= (Bundled A hA).1 instead of using the syntax in the discrimination tree.)

Workaround for issues

The timeouts can be worked around for now by specifying which map_mul we mean, either as map_mul f for some explicit f, or as e.g. MonoidHomClass.map_mul.

map_smulₛₗ not firing as simp lemma can be worked around by going back to the pre-FunLike situation and making LinearMap.map_smulₛₗ a simp lemma instead of the generic map_smulₛₗ. Writing simp [map_smulₛₗ _] also works.

Co-authored-by: Matthew Ballard <matt@mrb.email> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott@tqft.net> Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>

Diff
@@ -251,12 +251,12 @@ theorem multiplicity_eq_multiplicity_iff {a b : α} {c d : β} :
       (multiplicity_le_multiplicity_iff.mpr fun n => (h n).mpr)⟩
 #align multiplicity.multiplicity_eq_multiplicity_iff multiplicity.multiplicity_eq_multiplicity_iff
 
-theorem le_multiplicity_map {F : Type*} [MonoidHomClass F α β] (f : F) {a b : α} :
-    multiplicity a b ≤ multiplicity (f a) (f b) :=
+theorem le_multiplicity_map {F : Type*} [FunLike F α β] [MonoidHomClass F α β]
+    (f : F) {a b : α} : multiplicity a b ≤ multiplicity (f a) (f b) :=
   multiplicity_le_multiplicity_iff.mpr fun n ↦ by rw [← map_pow]; exact map_dvd f
 
-theorem multiplicity_map_eq {F : Type*} [MulEquivClass F α β] (f : F) {a b : α} :
-    multiplicity (f a) (f b) = multiplicity a b :=
+theorem multiplicity_map_eq {F : Type*} [EquivLike F α β] [MulEquivClass F α β]
+    (f : F) {a b : α} : multiplicity (f a) (f b) = multiplicity a b :=
   multiplicity_eq_multiplicity_iff.mpr fun n ↦ by rw [← map_pow]; exact map_dvd_iff f
 
 theorem multiplicity_le_multiplicity_of_dvd_right {a b c : α} (h : b ∣ c) :
chore: move to v4.6.0-rc1, merging adaptations from bump/v4.6.0 (#10176)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Joachim Breitner <mail@joachim-breitner.de>

Diff
@@ -511,7 +511,7 @@ theorem finite_mul_aux {p : α} (hp : Prime p) {a b : α} :
         ⟨s, mul_right_cancel₀ hp.1 (by
               rw [add_assoc, tsub_add_cancel_of_le (succ_le_of_lt hm0)]
               simp_all [mul_comm, mul_assoc, mul_left_comm, pow_add])⟩
-termination_by finite_mul_aux _ _ n m => n+m
+termination_by n m => n + m
 #align multiplicity.finite_mul_aux multiplicity.finite_mul_aux
 
 theorem finite_mul {p a b : α} (hp : Prime p) : Finite p a → Finite p b → Finite p (a * b) :=
feat(Data/Polynomial/RingDivision): improvements to Polynomial.rootMultiplicity (#8563)

Main changes:

  • add Monic.mem_nonZeroDivisors and mem_nonZeroDivisors_of_leadingCoeff which states that a monic polynomial (resp. a polynomial whose leading coefficient is not zero divisor) is not a zero divisor.
  • add rootMultiplicity_mul_X_sub_C_pow which states that * (X - a) ^ n adds the root multiplicity at a by n.
  • change the conditions in rootMultiplicity_X_sub_C_self, rootMultiplicity_X_sub_C and rootMultiplicity_X_sub_C_pow from IsDomain to Nontrivial.
  • add rootMultiplicity_eq_natTrailingDegree which relates rootMultiplicity and natTrailingDegree, and eval_divByMonic_eq_trailingCoeff_comp.
  • add le_rootMultiplicity_mul which is similar to le_trailingDegree_mul.
  • add rootMultiplicity_mul' which slightly generalizes rootMultiplicity_mul

In Data/Polynomial/FieldDivision:

  • add rootMultiplicity_sub_one_le_derivative_rootMultiplicity_of_ne_zero which slightly generalizes rootMultiplicity_sub_one_le_derivative_rootMultiplicity.
  • add derivative_rootMultiplicity_of_root_of_mem_nonZeroDivisors which slightly generalizes derivative_rootMultiplicity_of_root.
  • add several theorems relating roots of iterate derivative to rootMultiplicity

In addition:

  • move eq_of_monic_of_associated from RingDivision to Monic and generalize.
  • add dvd_cancel lemmas to NonZeroDivisors.
  • add algEquivOfCompEqX: two polynomials that compose to X both ways induces an isomorphism of the polynomial algebra.
  • add divisibility lemmas to Polynomial/Derivative.

Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>

Diff
@@ -25,7 +25,7 @@ several basic results on it.
 -/
 
 
-variable {α : Type*}
+variable {α β : Type*}
 
 open Nat Part
 
@@ -42,7 +42,7 @@ namespace multiplicity
 
 section Monoid
 
-variable [Monoid α]
+variable [Monoid α] [Monoid β]
 
 /-- `multiplicity.Finite a b` indicates that the multiplicity of `a` in `b` is finite. -/
 @[reducible]
@@ -94,7 +94,7 @@ theorem finite_of_finite_mul_right {a b c : α} : Finite a (b * c) → Finite a
   ⟨n, fun h => hn (h.trans (dvd_mul_right _ _))⟩
 #align multiplicity.finite_of_finite_mul_right multiplicity.finite_of_finite_mul_right
 
-variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
+variable [DecidableRel ((· ∣ ·) : α → α → Prop)] [DecidableRel ((· ∣ ·) : β → β → Prop)]
 
 theorem pow_dvd_of_le_multiplicity {a b : α} {k : ℕ} :
     (k : PartENat) ≤ multiplicity a b → a ^ k ∣ b := by
@@ -149,9 +149,9 @@ theorem pow_dvd_iff_le_multiplicity {a b : α} {k : ℕ} :
   ⟨le_multiplicity_of_pow_dvd, pow_dvd_of_le_multiplicity⟩
 #align multiplicity.pow_dvd_iff_le_multiplicity multiplicity.pow_dvd_iff_le_multiplicity
 
-theorem multiplicity_lt_iff_neg_dvd {a b : α} {k : ℕ} :
+theorem multiplicity_lt_iff_not_dvd {a b : α} {k : ℕ} :
     multiplicity a b < (k : PartENat) ↔ ¬a ^ k ∣ b := by rw [pow_dvd_iff_le_multiplicity, not_le]
-#align multiplicity.multiplicity_lt_iff_neg_dvd multiplicity.multiplicity_lt_iff_neg_dvd
+#align multiplicity.multiplicity_lt_iff_neg_dvd multiplicity.multiplicity_lt_iff_not_dvd
 
 theorem eq_coe_iff {a b : α} {n : ℕ} :
     multiplicity a b = (n : PartENat) ↔ a ^ n ∣ b ∧ ¬a ^ (n + 1) ∣ b := by
@@ -230,11 +230,10 @@ theorem exists_eq_pow_mul_and_not_dvd {a b : α} (hfin : Finite a b) :
   exact (multiplicity.eq_coe_iff.1 (by simp)).2 h₁
 #align multiplicity.exists_eq_pow_mul_and_not_dvd multiplicity.exists_eq_pow_mul_and_not_dvd
 
-open Classical
-
-theorem multiplicity_le_multiplicity_iff {a b c d : α} :
+theorem multiplicity_le_multiplicity_iff {a b : α} {c d : β} :
     multiplicity a b ≤ multiplicity c d ↔ ∀ n : ℕ, a ^ n ∣ b → c ^ n ∣ d :=
   ⟨fun h n hab => pow_dvd_of_le_multiplicity (le_trans (le_multiplicity_of_pow_dvd hab) h), fun h =>
+    letI := Classical.dec (Finite a b)
     if hab : Finite a b then by
       rw [← PartENat.natCast_get (finite_iff_dom.1 hab)];
         exact le_multiplicity_of_pow_dvd (h _ (pow_multiplicity_dvd _))
@@ -243,7 +242,7 @@ theorem multiplicity_le_multiplicity_iff {a b c d : α} :
       rw [eq_top_iff_not_finite.2 hab, eq_top_iff_not_finite.2 (not_finite_iff_forall.2 this)]⟩
 #align multiplicity.multiplicity_le_multiplicity_iff multiplicity.multiplicity_le_multiplicity_iff
 
-theorem multiplicity_eq_multiplicity_iff {a b c d : α} :
+theorem multiplicity_eq_multiplicity_iff {a b : α} {c d : β} :
     multiplicity a b = multiplicity c d ↔ ∀ n : ℕ, a ^ n ∣ b ↔ c ^ n ∣ d :=
   ⟨fun h n =>
     ⟨multiplicity_le_multiplicity_iff.mp h.le n, multiplicity_le_multiplicity_iff.mp h.ge n⟩,
@@ -252,6 +251,14 @@ theorem multiplicity_eq_multiplicity_iff {a b c d : α} :
       (multiplicity_le_multiplicity_iff.mpr fun n => (h n).mpr)⟩
 #align multiplicity.multiplicity_eq_multiplicity_iff multiplicity.multiplicity_eq_multiplicity_iff
 
+theorem le_multiplicity_map {F : Type*} [MonoidHomClass F α β] (f : F) {a b : α} :
+    multiplicity a b ≤ multiplicity (f a) (f b) :=
+  multiplicity_le_multiplicity_iff.mpr fun n ↦ by rw [← map_pow]; exact map_dvd f
+
+theorem multiplicity_map_eq {F : Type*} [MulEquivClass F α β] (f : F) {a b : α} :
+    multiplicity (f a) (f b) = multiplicity a b :=
+  multiplicity_eq_multiplicity_iff.mpr fun n ↦ by rw [← map_pow]; exact map_dvd_iff f
+
 theorem multiplicity_le_multiplicity_of_dvd_right {a b c : α} (h : b ∣ c) :
     multiplicity a b ≤ multiplicity a c :=
   multiplicity_le_multiplicity_iff.2 fun _ hb => hb.trans h
@@ -438,7 +445,7 @@ theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity
   · apply PartENat.le_of_lt_add_one
     cases' PartENat.ne_top_iff.mp (PartENat.ne_top_of_lt h) with k hk
     rw [hk]
-    rw_mod_cast [multiplicity_lt_iff_neg_dvd, dvd_add_right]
+    rw_mod_cast [multiplicity_lt_iff_not_dvd, dvd_add_right]
     intro h_dvd
     · apply multiplicity.is_greatest _ h_dvd
       rw [hk, ← Nat.succ_eq_add_one]
chore: split Algebra.CharP.Basic, reduce imports in RingTheory.Multiplicity (#8637)

This was adding unnecessary imports to Data.ZMod.Basic.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -4,8 +4,9 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Robert Y. Lewis, Chris Hughes
 -/
 import Mathlib.Algebra.Associated
-import Mathlib.Algebra.BigOperators.Basic
-import Mathlib.RingTheory.Valuation.Basic
+import Mathlib.Algebra.SMulWithZero
+import Mathlib.Data.Nat.PartENat
+import Mathlib.Tactic.Linarith
 
 #align_import ring_theory.multiplicity from "leanprover-community/mathlib"@"e8638a0fcaf73e4500469f368ef9494e495099b3"
 
@@ -623,23 +624,6 @@ theorem multiplicity_pow_self_of_prime {p : α} (hp : Prime p) (n : ℕ) :
 
 end CancelCommMonoidWithZero
 
-section Valuation
-
-variable {R : Type*} [CommRing R] [IsDomain R] {p : R} [DecidableRel (Dvd.dvd : R → R → Prop)]
-
-/-- `multiplicity` of a prime in an integral domain as an additive valuation to `PartENat`. -/
-noncomputable def addValuation (hp : Prime p) : AddValuation R PartENat :=
-  AddValuation.of (multiplicity p) (multiplicity.zero _) (one_right hp.not_unit)
-    (fun _ _ => min_le_multiplicity_add) fun _ _ => multiplicity.mul hp
-#align multiplicity.add_valuation multiplicity.addValuation
-
-@[simp]
-theorem addValuation_apply {hp : Prime p} {r : R} : addValuation hp r = multiplicity p r :=
-  rfl
-#align multiplicity.add_valuation_apply multiplicity.addValuation_apply
-
-end Valuation
-
 end multiplicity
 
 section Nat
chore: space after (#8178)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -440,7 +440,7 @@ theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity
     rw_mod_cast [multiplicity_lt_iff_neg_dvd, dvd_add_right]
     intro h_dvd
     · apply multiplicity.is_greatest _ h_dvd
-      rw [hk, ←Nat.succ_eq_add_one]
+      rw [hk, ← Nat.succ_eq_add_one]
       norm_cast
       apply Nat.lt_succ_self k
     · rw [pow_dvd_iff_le_multiplicity, Nat.cast_add, ← hk, Nat.cast_one]
chore: bump to v4.1.0-rc1 (2nd attempt) (#7216)

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -647,13 +647,13 @@ section Nat
 open multiplicity
 
 theorem multiplicity_eq_zero_of_coprime {p a b : ℕ} (hp : p ≠ 1)
-    (hle : multiplicity p a ≤ multiplicity p b) (hab : Nat.coprime a b) : multiplicity p a = 0 := by
+    (hle : multiplicity p a ≤ multiplicity p b) (hab : Nat.Coprime a b) : multiplicity p a = 0 := by
   rw [multiplicity_le_multiplicity_iff] at hle
   rw [← nonpos_iff_eq_zero, ← not_lt, PartENat.pos_iff_one_le, ← Nat.cast_one, ←
     pow_dvd_iff_le_multiplicity]
   intro h
   have := Nat.dvd_gcd h (hle _ h)
-  rw [coprime.gcd_eq_one hab, Nat.dvd_one, pow_one] at this
+  rw [Coprime.gcd_eq_one hab, Nat.dvd_one, pow_one] at this
   exact hp this
 #align multiplicity_eq_zero_of_coprime multiplicity_eq_zero_of_coprime
 
Revert "chore: bump to v4.1.0-rc1 (#7174)" (#7198)

This reverts commit 6f8e8104. Unfortunately this bump was not linted correctly, as CI did not run runLinter Mathlib.

We can unrevert once that's fixed.

Diff
@@ -647,13 +647,13 @@ section Nat
 open multiplicity
 
 theorem multiplicity_eq_zero_of_coprime {p a b : ℕ} (hp : p ≠ 1)
-    (hle : multiplicity p a ≤ multiplicity p b) (hab : Nat.Coprime a b) : multiplicity p a = 0 := by
+    (hle : multiplicity p a ≤ multiplicity p b) (hab : Nat.coprime a b) : multiplicity p a = 0 := by
   rw [multiplicity_le_multiplicity_iff] at hle
   rw [← nonpos_iff_eq_zero, ← not_lt, PartENat.pos_iff_one_le, ← Nat.cast_one, ←
     pow_dvd_iff_le_multiplicity]
   intro h
   have := Nat.dvd_gcd h (hle _ h)
-  rw [Coprime.gcd_eq_one hab, Nat.dvd_one, pow_one] at this
+  rw [coprime.gcd_eq_one hab, Nat.dvd_one, pow_one] at this
   exact hp this
 #align multiplicity_eq_zero_of_coprime multiplicity_eq_zero_of_coprime
 
chore: bump to v4.1.0-rc1 (#7174)

Some changes have already been review and delegated in #6910 and #7148.

The diff that needs looking at is https://github.com/leanprover-community/mathlib4/pull/7174/commits/64d6d07ee18163627c8f517eb31455411921c5ac

The std bump PR was insta-merged already!

Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -647,13 +647,13 @@ section Nat
 open multiplicity
 
 theorem multiplicity_eq_zero_of_coprime {p a b : ℕ} (hp : p ≠ 1)
-    (hle : multiplicity p a ≤ multiplicity p b) (hab : Nat.coprime a b) : multiplicity p a = 0 := by
+    (hle : multiplicity p a ≤ multiplicity p b) (hab : Nat.Coprime a b) : multiplicity p a = 0 := by
   rw [multiplicity_le_multiplicity_iff] at hle
   rw [← nonpos_iff_eq_zero, ← not_lt, PartENat.pos_iff_one_le, ← Nat.cast_one, ←
     pow_dvd_iff_le_multiplicity]
   intro h
   have := Nat.dvd_gcd h (hle _ h)
-  rw [coprime.gcd_eq_one hab, Nat.dvd_one, pow_one] at this
+  rw [Coprime.gcd_eq_one hab, Nat.dvd_one, pow_one] at this
   exact hp this
 #align multiplicity_eq_zero_of_coprime multiplicity_eq_zero_of_coprime
 
feat: patch for new alias command (#6172)
Diff
@@ -295,7 +295,7 @@ theorem finite_nat_iff {a b : ℕ} : Finite a b ↔ a ≠ 1 ∧ 0 < b := by
       fun h => by cases h <;> simp [*]⟩
 #align multiplicity.finite_nat_iff multiplicity.finite_nat_iff
 
-alias dvd_iff_multiplicity_pos ↔ _ _root_.has_dvd.dvd.multiplicity_pos
+alias ⟨_, _root_.has_dvd.dvd.multiplicity_pos⟩ := dvd_iff_multiplicity_pos
 
 end Monoid
 
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -24,7 +24,7 @@ several basic results on it.
 -/
 
 
-variable {α : Type _}
+variable {α : Type*}
 
 open Nat Part
 
@@ -582,7 +582,7 @@ protected theorem mul {p a b : α} (hp : Prime p) :
     cases' not_and_or.1 h with h h <;> simp [eq_top_iff_not_finite.2 h]
 #align multiplicity.mul multiplicity.mul
 
-theorem Finset.prod {β : Type _} {p : α} (hp : Prime p) (s : Finset β) (f : β → α) :
+theorem Finset.prod {β : Type*} {p : α} (hp : Prime p) (s : Finset β) (f : β → α) :
     multiplicity p (∏ x in s, f x) = ∑ x in s, multiplicity p (f x) := by
   classical
     induction' s using Finset.induction with a s has ih h
@@ -625,7 +625,7 @@ end CancelCommMonoidWithZero
 
 section Valuation
 
-variable {R : Type _} [CommRing R] [IsDomain R] {p : R} [DecidableRel (Dvd.dvd : R → R → Prop)]
+variable {R : Type*} [CommRing R] [IsDomain R] {p : R} [DecidableRel (Dvd.dvd : R → R → Prop)]
 
 /-- `multiplicity` of a prime in an integral domain as an additive valuation to `PartENat`. -/
 noncomputable def addValuation (hp : Prime p) : AddValuation R PartENat :=
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2018 Robert Y. Lewis. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Robert Y. Lewis, Chris Hughes
-
-! This file was ported from Lean 3 source module ring_theory.multiplicity
-! leanprover-community/mathlib commit e8638a0fcaf73e4500469f368ef9494e495099b3
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.Associated
 import Mathlib.Algebra.BigOperators.Basic
 import Mathlib.RingTheory.Valuation.Basic
 
+#align_import ring_theory.multiplicity from "leanprover-community/mathlib"@"e8638a0fcaf73e4500469f368ef9494e495099b3"
+
 /-!
 # Multiplicity of a divisor
 
chore: cleanup whitespace (#5988)

Grepping for [^ .:{-] [^ :] and reviewing the results. Once I started I couldn't stop. :-)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -506,7 +506,7 @@ theorem finite_mul_aux {p : α} (hp : Prime p) {a b : α} :
         ⟨s, mul_right_cancel₀ hp.1 (by
               rw [add_assoc, tsub_add_cancel_of_le (succ_le_of_lt hm0)]
               simp_all [mul_comm, mul_assoc, mul_left_comm, pow_add])⟩
-termination_by finite_mul_aux _ _ n m  => n+m
+termination_by finite_mul_aux _ _ n m => n+m
 #align multiplicity.finite_mul_aux multiplicity.finite_mul_aux
 
 theorem finite_mul {p a b : α} (hp : Prime p) : Finite p a → Finite p b → Finite p (a * b) :=
chore: fix grammar 3/3 (#5003)

Part 3 of #5001

Diff
@@ -34,7 +34,7 @@ open Nat Part
 open BigOperators
 
 /-- `multiplicity a b` returns the largest natural number `n` such that
-  `a ^ n ∣ b`, as an `PartENat` or natural with infinity. If `∀ n, a ^ n ∣ b`,
+  `a ^ n ∣ b`, as a `PartENat` or natural with infinity. If `∀ n, a ^ n ∣ b`,
   then it returns `⊤`-/
 def multiplicity [Monoid α] [DecidableRel ((· ∣ ·) : α → α → Prop)] (a b : α) : PartENat :=
   PartENat.find fun n => ¬a ^ (n + 1) ∣ b
chore: formatting issues (#4947)

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -475,7 +475,7 @@ variable [CancelCommMonoidWithZero α]
 
 /- Porting note: removed previous wf recursion hints and added termination_by
 Also pulled a b intro parameters since Lean parses that more easily -/
-theorem finite_mul_aux {p : α} (hp : Prime p) {a b : α}:
+theorem finite_mul_aux {p : α} (hp : Prime p) {a b : α} :
     ∀ {n m : ℕ}, ¬p ^ (n + 1) ∣ a → ¬p ^ (m + 1) ∣ b → ¬p ^ (n + m + 1) ∣ a * b
   | n, m => fun ha hb ⟨s, hs⟩ =>
     have : p ∣ a * b := ⟨p ^ (n + m) * s, by simp [hs, pow_add, mul_comm, mul_assoc, mul_left_comm]⟩
chore: bye-bye, solo bys! (#3825)

This PR puts, with one exception, every single remaining by that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh. The exception is when the by begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.

Essentially this is s/\n *by$/ by/g, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated bys".

Diff
@@ -122,8 +122,8 @@ theorem is_greatest' {a b : α} {m : ℕ} (h : Finite a b) (hm : get (multiplici
   is_greatest (by rwa [← PartENat.coe_lt_coe, PartENat.natCast_get] at hm)
 #align multiplicity.is_greatest' multiplicity.is_greatest'
 
-theorem pos_of_dvd {a b : α} (hfin : Finite a b) (hdiv : a ∣ b) : 0 < (multiplicity a b).get hfin :=
-  by
+theorem pos_of_dvd {a b : α} (hfin : Finite a b) (hdiv : a ∣ b) :
+    0 < (multiplicity a b).get hfin := by
   refine' zero_lt_iff.2 fun h => _
   simpa [hdiv] using is_greatest' hfin (lt_one_iff.mpr h)
 #align multiplicity.pos_of_dvd multiplicity.pos_of_dvd
@@ -168,8 +168,7 @@ theorem eq_coe_iff {a b : α} {n : ℕ} :
 #align multiplicity.eq_coe_iff multiplicity.eq_coe_iff
 
 theorem eq_top_iff {a b : α} : multiplicity a b = ⊤ ↔ ∀ n : ℕ, a ^ n ∣ b :=
-  (PartENat.find_eq_top_iff _).trans <|
-    by
+  (PartENat.find_eq_top_iff _).trans <| by
     simp only [Classical.not_not]
     exact
       ⟨fun h n =>
@@ -391,8 +390,7 @@ theorem multiplicity_mk_eq_multiplicity
       rw [finite_iff_dom, PartENat.not_dom_iff_eq_top] at h this
       rw [h, this]
     refine'
-      not_finite_iff_forall.mpr fun n =>
-        by
+      not_finite_iff_forall.mpr fun n => by
         rw [← Associates.mk_pow, Associates.mk_dvd_mk]
         exact not_finite_iff_forall.mp h n
 #align multiplicity.multiplicity_mk_eq_multiplicity multiplicity.multiplicity_mk_eq_multiplicity
@@ -599,8 +597,7 @@ theorem Finset.prod {β : Type _} {p : α} (hp : Prime p) (s : Finset β) (f : 
 
 -- Porting note: with protected could not use pow' k in the succ branch
 protected theorem pow' {p a : α} (hp : Prime p) (ha : Finite p a) :
-    ∀ {k : ℕ}, get (multiplicity p (a ^ k)) (finite_pow hp ha) = k * get (multiplicity p a) ha :=
-  by
+    ∀ {k : ℕ}, get (multiplicity p (a ^ k)) (finite_pow hp ha) = k * get (multiplicity p a) ha := by
   intro k
   induction' k with k hk
   · simp [one_right hp.not_unit]
refactor, fix: MetaM version of rfl tactic and missing whnfR/instantiateMVars (#3758)

This PR factors out a MetaM version of the rfl tactic and adds a missing whnfR and instantiateMVars in front of the goal type. This means that a few rws across mathlib4 now close the goal instead of e.g. requiring a trailing exact le_rfl.

Note: we do not use whnfR on the return type when adding the refl extension in the first place, as forallMetaTelescopeReducing already performs whnf (here, at reducible transparency).

See zulip for some discussion on the internal changes made.

Co-authored-by: Floris van Doorn <fpvdoorn@gmail.com>

Diff
@@ -243,8 +243,7 @@ theorem multiplicity_le_multiplicity_iff {a b c d : α} :
         exact le_multiplicity_of_pow_dvd (h _ (pow_multiplicity_dvd _))
     else by
       have : ∀ n : ℕ, c ^ n ∣ d := fun n => h n (not_finite_iff_forall.1 hab _)
-      rw [eq_top_iff_not_finite.2 hab, eq_top_iff_not_finite.2 (not_finite_iff_forall.2 this)]
-      apply le_refl⟩
+      rw [eq_top_iff_not_finite.2 hab, eq_top_iff_not_finite.2 (not_finite_iff_forall.2 this)]⟩
 #align multiplicity.multiplicity_le_multiplicity_iff multiplicity.multiplicity_le_multiplicity_iff
 
 theorem multiplicity_eq_multiplicity_iff {a b c d : α} :
feat: Dot notation aliases (#3303)

Match https://github.com/leanprover-community/mathlib/pull/18698 and a bit of https://github.com/leanprover-community/mathlib/pull/18785.

Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com>

Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Robert Y. Lewis, Chris Hughes
 
 ! This file was ported from Lean 3 source module ring_theory.multiplicity
-! leanprover-community/mathlib commit ceb887ddf3344dab425292e497fa2af91498437c
+! leanprover-community/mathlib commit e8638a0fcaf73e4500469f368ef9494e495099b3
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -427,8 +427,8 @@ protected theorem neg (a b : α) : multiplicity a (-b) = multiplicity a b :=
     PartENat.natCast_inj.1 (by
       rw [PartENat.natCast_get]
       exact Eq.symm
-        (unique ((dvd_neg _ _).2 (pow_multiplicity_dvd _))
-          (mt (dvd_neg _ _).1 (is_greatest' _ (lt_succ_self _)))))
+              (unique (pow_multiplicity_dvd _).neg_right
+                (mt dvd_neg.1 (is_greatest' _ (lt_succ_self _)))))
 #align multiplicity.neg multiplicity.neg
 
 theorem Int.natAbs (a : ℕ) (b : ℤ) : multiplicity a b.natAbs = multiplicity (a : ℤ) b := by
@@ -443,9 +443,8 @@ theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity
   · apply PartENat.le_of_lt_add_one
     cases' PartENat.ne_top_iff.mp (PartENat.ne_top_of_lt h) with k hk
     rw [hk]
-    rw_mod_cast [multiplicity_lt_iff_neg_dvd]
+    rw_mod_cast [multiplicity_lt_iff_neg_dvd, dvd_add_right]
     intro h_dvd
-    rw [← dvd_add_iff_right] at h_dvd
     · apply multiplicity.is_greatest _ h_dvd
       rw [hk, ←Nat.succ_eq_add_one]
       norm_cast
chore: tidy various files (#3110)
Diff
@@ -291,8 +291,8 @@ theorem finite_nat_iff {a b : ℕ} : Finite a b ↔ a ≠ 1 ∧ 0 < b := by
         have ha : a ≠ 0 := fun ha => hb <| zero_dvd_iff.mp <| by rw [ha] at h; exact h 1
         Classical.by_contradiction fun ha1 : a ≠ 1 =>
           have ha_gt_one : 1 < a :=
-            lt_of_not_ge fun _ => 
-              match a with 
+            lt_of_not_ge fun _ =>
+              match a with
               | 0 => ha rfl
               | 1 => ha1 rfl
               | b+2 => by linarith
@@ -425,10 +425,10 @@ variable [Ring α] [DecidableRel ((· ∣ ·) : α → α → Prop)]
 protected theorem neg (a b : α) : multiplicity a (-b) = multiplicity a b :=
   Part.ext' (by simp only [multiplicity, PartENat.find, dvd_neg]) fun h₁ h₂ =>
     PartENat.natCast_inj.1 (by
-        rw [PartENat.natCast_get];
-          exact Eq.symm
-              (unique ((dvd_neg _ _).2 (pow_multiplicity_dvd _))
-                (mt (dvd_neg _ _).1 (is_greatest' _ (lt_succ_self _)))))
+      rw [PartENat.natCast_get]
+      exact Eq.symm
+        (unique ((dvd_neg _ _).2 (pow_multiplicity_dvd _))
+          (mt (dvd_neg _ _).1 (is_greatest' _ (lt_succ_self _)))))
 #align multiplicity.neg multiplicity.neg
 
 theorem Int.natAbs (a : ℕ) (b : ℤ) : multiplicity a b.natAbs = multiplicity (a : ℤ) b := by
@@ -452,7 +452,7 @@ theorem multiplicity_add_of_gt {p a b : α} (h : multiplicity p b < multiplicity
       apply Nat.lt_succ_self k
     · rw [pow_dvd_iff_le_multiplicity, Nat.cast_add, ← hk, Nat.cast_one]
       exact PartENat.add_one_le_of_lt h
-  · have := @min_le_multiplicity_add α _ _ p a b 
+  · have := @min_le_multiplicity_add α _ _ p a b
     rwa [← min_eq_right (le_of_lt h)]
 #align multiplicity.multiplicity_add_of_gt multiplicity.multiplicity_add_of_gt
 
@@ -510,7 +510,7 @@ theorem finite_mul_aux {p : α} (hp : Prime p) {a b : α}:
         ⟨s, mul_right_cancel₀ hp.1 (by
               rw [add_assoc, tsub_add_cancel_of_le (succ_le_of_lt hm0)]
               simp_all [mul_comm, mul_assoc, mul_left_comm, pow_add])⟩
-termination_by finite_mul_aux _ _ n m  => n+m 
+termination_by finite_mul_aux _ _ n m  => n+m
 #align multiplicity.finite_mul_aux multiplicity.finite_mul_aux
 
 theorem finite_mul {p a b : α} (hp : Prime p) : Finite p a → Finite p b → Finite p (a * b) :=
@@ -532,7 +532,7 @@ variable [DecidableRel ((· ∣ ·) : α → α → Prop)]
 @[simp]
 theorem multiplicity_self {a : α} (ha : ¬IsUnit a) (ha0 : a ≠ 0) : multiplicity a a = 1 := by
   rw [← Nat.cast_one]
-  exact eq_coe_iff.2 ⟨by simp, fun ⟨b, hb⟩ => ha (isUnit_iff_dvd_one.2 
+  exact eq_coe_iff.2 ⟨by simp, fun ⟨b, hb⟩ => ha (isUnit_iff_dvd_one.2
             ⟨b, mul_left_cancel₀ ha0 <| by simpa [_root_.pow_succ, mul_assoc] using hb⟩)⟩
 #align multiplicity.multiplicity_self multiplicity.multiplicity_self
 
@@ -601,13 +601,13 @@ theorem Finset.prod {β : Type _} {p : α} (hp : Prime p) (s : Finset β) (f : 
 
 -- Porting note: with protected could not use pow' k in the succ branch
 protected theorem pow' {p a : α} (hp : Prime p) (ha : Finite p a) :
-    ∀ {k : ℕ}, get (multiplicity p (a ^ k)) (finite_pow hp ha) = k * get (multiplicity p a) ha := 
-  by 
-  intro k 
+    ∀ {k : ℕ}, get (multiplicity p (a ^ k)) (finite_pow hp ha) = k * get (multiplicity p a) ha :=
+  by
+  intro k
   induction' k with k hk
   · simp [one_right hp.not_unit]
   · have : multiplicity p (a ^ (k + 1)) = multiplicity p (a * a ^ k) := by rw [_root_.pow_succ]
-    rw [succ_eq_add_one, get_eq_get_of_eq _ _ this, 
+    rw [succ_eq_add_one, get_eq_get_of_eq _ _ this,
       multiplicity.mul' hp, hk, add_mul, one_mul, add_comm]
 #align multiplicity.pow' multiplicity.pow'
 
@@ -635,7 +635,7 @@ section Valuation
 
 variable {R : Type _} [CommRing R] [IsDomain R] {p : R} [DecidableRel (Dvd.dvd : R → R → Prop)]
 
-/-- `multiplicity` of a prime inan integral domain as an additive valuation to `PartENat`. -/
+/-- `multiplicity` of a prime in an integral domain as an additive valuation to `PartENat`. -/
 noncomputable def addValuation (hp : Prime p) : AddValuation R PartENat :=
   AddValuation.of (multiplicity p) (multiplicity.zero _) (one_right hp.not_unit)
     (fun _ _ => min_le_multiplicity_add) fun _ _ => multiplicity.mul hp
@@ -666,4 +666,3 @@ theorem multiplicity_eq_zero_of_coprime {p a b : ℕ} (hp : p ≠ 1)
 #align multiplicity_eq_zero_of_coprime multiplicity_eq_zero_of_coprime
 
 end Nat
-
feat: port RingTheory.Multiplicity (#2962)

Co-authored-by: Rémy Degenne <remydegenne@gmail.com>

Dependencies 8 + 452

453 files ported (98.3%)
187464 lines ported (98.4%)
Show graph

The unported dependencies are