case intro
α : Type u_1
inst✝¹ : Monoid α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
hfin : Finite a b
c : α
hc : b = a ^ Part.get (multiplicity a b) hfin * c
⊢ ∃ c, b = a ^ Part.get (multiplicity a b) hfin * c ∧ ¬a ∣ c
α : Type u_1
inst✝¹ : Monoid α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
hfin : Finite a b
⊢ ∃ c, b = a ^ Part.get (multiplicity a b) hfin * c ∧ ¬a ∣ c
obtain ⟨c, hc⟩ := multiplicity.pow_multiplicity_dvd hfin
case intro
α : Type u_1
inst✝¹ : Monoid α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
hfin : Finite a b
c : α
hc : b = a ^ Part.get (multiplicity a b) hfin * c
⊢ ¬a ∣ c
case intro
α : Type u_1
inst✝¹ : Monoid α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
hfin : Finite a b
c : α
hc : b = a ^ Part.get (multiplicity a b) hfin * c
⊢ ∃ c, b = a ^ Part.get (multiplicity a b) hfin * c ∧ ¬a ∣ c
refine' ⟨c, hc, _⟩
case intro.intro
α : Type u_1
inst✝¹ : Monoid α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
hfin : Finite a b
c : α
hc : b = a ^ Part.get (multiplicity a b) hfin * c
k : α
hk : c = a * k
⊢ False
case intro
α : Type u_1
inst✝¹ : Monoid α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
hfin : Finite a b
c : α
hc : b = a ^ Part.get (multiplicity a b) hfin * c
⊢ ¬a ∣ c
rintro ⟨k, hk⟩
case intro.intro
α : Type u_1
inst✝¹ : Monoid α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
hfin : Finite a b
c k : α
hc : b = a ^ (Part.get (multiplicity a b) hfin + 1) * k
hk : c = a * k
⊢ False
case intro.intro
α : Type u_1
inst✝¹ : Monoid α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
hfin : Finite a b
c : α
hc : b = a ^ Part.get (multiplicity a b) hfin * c
k : α
hk : c = a * k
⊢ False
rw [hk, ← mul_assoc, ← _root_.pow_succ'] at hc
case intro.intro
α : Type u_1
inst✝¹ : Monoid α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
hfin : Finite a b
c k : α
hc : b = a ^ (Part.get (multiplicity a b) hfin + 1) * k
hk : c = a * k
h₁ : a ^ (Part.get (multiplicity a b) hfin + 1) ∣ b
⊢ False
case intro.intro
α : Type u_1
inst✝¹ : Monoid α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
hfin : Finite a b
c k : α
hc : b = a ^ (Part.get (multiplicity a b) hfin + 1) * k
hk : c = a * k
⊢ False
have h₁ : a ^ ((multiplicity a b).get hfin + 1) ∣ b := ⟨k, hc⟩
no goals
case intro.intro
α : Type u_1
inst✝¹ : Monoid α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
hfin : Finite a b
c k : α
hc : b = a ^ (Part.get (multiplicity a b) hfin + 1) * k
hk : c = a * k
h₁ : a ^ (Part.get (multiplicity a b) hfin + 1) ∣ b
⊢ False
exact (multiplicity.eq_coe_iff.1 (by simp)).2 h₁
no goals
α : Type u_1
inst✝¹ : Monoid α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
hfin : Finite a b
c k : α
hc : b = a ^ (Part.get (multiplicity a b) hfin + 1) * k
hk : c = a * k
h₁ : a ^ (Part.get (multiplicity a b) hfin + 1) ∣ b
⊢ multiplicity a b = ↑(Part.get (multiplicity a b) hfin)
simp