-- Lean 4 proof step from Mathlib.NumberTheory.ClassNumber.Finite (goal)
Goal:
R : Type u_1
S : Type u_2
inst : EuclideanDomain R
inst_1 : CommRing S
inst_2 : IsDomain S
inst_3 : Algebra R S
abv : AbsoluteValue R ℤ
ι : Type u_5
inst_4 : DecidableEq ι
inst_5 : Fintype ι
bS : Basis ι R S
adm : abv.IsAdmissible
inst_6 : Infinite R
inst_7 : DecidableEq R
a : S
b : R
hb : b ≠ 0
dim_pos : 0 < Fintype.card ι
ε : ℝ := HPow.hPow (α := ℝ) (↑(normBound abv bS) : ℝ) (HDiv.hDiv (α := ℝ) (-1) (↑(Fintype.card ι) : ℝ))
ε_eq : ε = HPow.hPow (α := ℝ) (↑(normBound abv bS) : ℝ) (HDiv.hDiv (α := ℝ) (-1) (↑(Fintype.card ι) : ℝ))
hε : 0 < ε
ε_le :
  (↑(normBound abv bS) : ℝ) *
      HPow.hPow (β := ℝ) (HSMul.hSMul (α := ℤ) ((abv : (a : R) → ℤ) b : ℤ) ε) (↑(Fintype.card ι) : ℝ) ≤
    HPow.hPow (α := ℝ) (β := ℝ) (↑((abv : (a : R) → ℤ) b) : ℝ) (↑(Fintype.card ι) : ℝ)
μ : Fin (cardM bS adm).succ ↪ R := distinctElems bS adm
s : ι →₀ R := (bS.repr : (a : S) → ι →₀ R) a
s_eq :
  ∀ (i : ι),
    Eq.{u_1 + 1} (α := R) ((s : (a : ι) → R) i : R) ((((bS.repr : (a : S) → ι →₀ R) a : ι →₀ R) : (a : ι) → R) i : R)
qs : Fin (cardM bS adm).succ → ι → R :=
  fun (j : Fin (cardM bS adm).succ) (i : ι) ↦
    HMul.hMul (α := R) (β := R) ((μ : (a : Fin (cardM bS adm).succ) → R) j : R) ((s : (a : ι) → R) i : R) / b
rs : Fin (cardM bS adm).succ → ι → R :=
  fun (j : Fin (cardM bS adm).succ) (i : ι) ↦
    HMul.hMul (α := R) (β := R) ((μ : (a : Fin (cardM bS adm).succ) → R) j : R) ((s : (a : ι) → R) i : R) % b
r_eq_1 :
  ∀ (j : Fin (cardM bS adm).succ) (i : ι),
    rs j i = HMul.hMul (α := R) (β := R) ((μ : (a : Fin (cardM bS adm).succ) → R) j : R) ((s : (a : ι) → R) i : R) % b
μ_eq :
  ∀ (i : ι) (j : Fin (cardM bS adm).succ),
    HMul.hMul (α := R) (β := R) ((μ : (a : Fin (cardM bS adm).succ) → R) j : R) ((s : (a : ι) → R) i : R) =
      b * qs j i + rs j i
μ_mul_a_eq :
  ∀ (j : Fin (cardM bS adm).succ),
    HSMul.hSMul (α := R) ((μ : (a : Fin (cardM bS adm).succ) → R) j : R) a =
      HSMul.hSMul (β := S) b (∑ i : ι, HSMul.hSMul (β := S) (qs j i) ((bS : (a : ι) → S) i : S)) +
        ∑ i : ι, HSMul.hSMul (β := S) (rs j i) ((bS : (a : ι) → S) i : S)
j k : Fin (adm.card ε ^ Fintype.card ι).succ
j_ne_k : j ≠ k
hjk :
  ∀ (k_1 : ι),
    (↑((abv : (a : R) → ℤ)
            (HMul.hMul (α := R) (β := R) ((μ : (a : Fin (cardM bS adm).succ) → R) k : R) ((s : (a : ι) → R) k_1 : R) %
                b -
              HMul.hMul (α := R) (β := R) ((μ : (a : Fin (cardM bS adm).succ) → R) j : R) ((s : (a : ι) → R) k_1 : R) %
                b)) :
        ℝ) <
      HSMul.hSMul (α := ℤ) ((abv : (a : R) → ℤ) b : ℤ) ε
hjk' : ∀ (i : ι), (↑((abv : (a : R) → ℤ) (rs k i - rs j i)) : ℝ) < HSMul.hSMul (α := ℤ) ((abv : (a : R) → ℤ) b : ℤ) ε
q : S := ∑ i : ι, HSMul.hSMul (β := S) (qs k i - qs j i) ((bS : (a : ι) → S) i : S)
r : R :=
  HSub.hSub (α := R) (β := R) ((μ : (a : Fin (cardM bS adm).succ) → R) k : R)
    ((μ : (a : Fin (cardM bS adm).succ) → R) j : R)
r_eq :
  r =
    HSub.hSub (α := R) (β := R) ((μ : (a : Fin (cardM bS adm).succ) → R) k : R)
      ((μ : (a : Fin (cardM bS adm).succ) → R) j : R)
this :
  r • a - b • q =
    ∑ x : ι,
      (HSMul.hSMul (β := S) (rs k x) ((bS : (a : ι) → S) x : S) -
        HSMul.hSMul (β := S) (rs j x) ((bS : (a : ι) → S) x : S))
i : ι
refine_2 :
  (∑ x : ι,
          (bS.repr : (a : S) → ι →₀ R)
            (HSMul.hSMul (β := S) (rs k x) ((bS : (a : ι) → S) x : S) -
              HSMul.hSMul (β := S) (rs j x) ((bS : (a : ι) → S) x : S)) :
        (a : ι) → R)
      i =
    rs k i - rs j i
refine_2₁ :
  (∑ x : ι,
          HSub.hSub (α := ι →₀ R) (β := ι →₀ R)
            ((bS.repr : (a : S) → ι →₀ R) (HSMul.hSMul (β := S) (rs k x) ((bS : (a : ι) → S) x : S)) : ι →₀ R)
            ((bS.repr : (a : S) → ι →₀ R) (HSMul.hSMul (β := S) (rs j x) ((bS : (a : ι) → S) x : S)) : ι →₀ R) :
        (a : ι) → R)
      i =
    rs k i - rs j i
refine_2₂ :
  (∑ x : ι,
          (HSMul.hSMul (β := ι →₀ R) (rs k x) ((bS.repr : (a : S) → ι →₀ R) ((bS : (a : ι) → S) x) : ι →₀ R) -
            HSMul.hSMul (β := ι →₀ R) (rs j x) ((bS.repr : (a : S) → ι →₀ R) ((bS : (a : ι) → S) x) : ι →₀ R)) :
        (a : ι) → R)
      i =
    rs k i - rs j i
refine_2₃ :
  ∑ k_1 : ι,
      (HSMul.hSMul (β := ι →₀ R) (rs k k_1) ((bS.repr : (a : S) → ι →₀ R) ((bS : (a : ι) → S) k_1) : ι →₀ R) -
            HSMul.hSMul (β := ι →₀ R) (rs j k_1) ((bS.repr : (a : S) → ι →₀ R) ((bS : (a : ι) → S) k_1) : ι →₀ R) :
          (a : ι) → R)
        i =
    rs k i - rs j i
refine_2₄ :
  ∑ x : ι,
      HSub.hSub (α := R) (β := R)
        ((HSMul.hSMul (β := ι →₀ R) (rs k x) ((bS.repr : (a : S) → ι →₀ R) ((bS : (a : ι) → S) x) : ι →₀ R) :
              (a : ι) → R)
            i :
          R)
        ((HSMul.hSMul (β := ι →₀ R) (rs j x) ((bS.repr : (a : S) → ι →₀ R) ((bS : (a : ι) → S) x) : ι →₀ R) :
              (a : ι) → R)
            i :
          R) =
    rs k i - rs j i
refine_2₅ :
  ∑ x : ι,
      (HSMul.hSMul (β := R) (rs k x)
          ((((bS.repr : (a : S) → ι →₀ R) ((bS : (a : ι) → S) x) : ι →₀ R) : (a : ι) → R) i : R) -
        HSMul.hSMul (β := R) (rs j x)
          ((((bS.repr : (a : S) → ι →₀ R) ((bS : (a : ι) → S) x) : ι →₀ R) : (a : ι) → R) i : R)) =
    rs k i - rs j i
refine_2₆ :
  HSub.hSub (α := R)
      (∑ x : ι,
        HSMul.hSMul (β := R) (rs k x)
          ((((bS.repr : (a : S) → ι →₀ R) ((bS : (a : ι) → S) x) : ι →₀ R) : (a : ι) → R) i : R))
      (∑ x : ι,
        HSMul.hSMul (β := R) (rs j x)
          ((((bS.repr : (a : S) → ι →₀ R) ((bS : (a : ι) → S) x) : ι →₀ R) : (a : ι) → R) i : R)) =
    rs k i - rs j i
refine_2₇ :
  HSub.hSub (α := R) (∑ x : ι, HSMul.hSMul (β := R) (rs k x) (if x = i then 1 else 0))
      (∑ x : ι, HSMul.hSMul (β := R) (rs j x) (if x = i then 1 else 0)) =
    rs k i - rs j i
⊢ ((bS.repr : (a : S) → ι →₀ R)
          (∑ x : ι,
            (HSMul.hSMul (β := S) (rs k x) ((bS : (a : ι) → S) x : S) -
              HSMul.hSMul (β := S) (rs j x) ((bS : (a : ι) → S) x : S))) :
        (a : ι) → R)
      i =
    rs k i - rs j i
have refine_2₈ : HSub.hSub (α := R) (∑ x : ι, rs k x * if x = i then 1 else 0) (∑ x : ι, rs j x * if x = i then 1 else 0) =
  rs k i - rs j i
Tactic: simp_rw [map_sum, map_sub, map_smul, Finset.sum_apply',
      Finsupp.sub_apply, Finsupp.smul_apply, Finset.sum_sub_distrib, Basis.repr_self_apply,
      smul_eq_mul, mul_boole, Finset.sum_ite_eq', Finset.mem_univ, if_true]