-- Module: Mathlib.Algebra.Module.ZLattice.Summable
Goal:
E : Type u_1
inst : NormedAddCommGroup E
inst_1 : NormedSpace ℝ E
inst_2 : FiniteDimensional ℝ E
L : Submodule ℤ E
inst_3 : DiscreteTopology.{u_1} ↥L
h : Nontrivial.{u_1} ↥L
inr inr₁ inr₂ :
  ∃ A > 0,
    ∀ r < -(↑(finrank.{0, u_1} ℤ ↥L) : ℝ),
      ∀ (s : Finset ↥L),
        ∑ z ∈ s, ‖z‖ ^ r ≤
          A ^ r * ∑' (k : ℕ), HPow.hPow (α := ℝ) (↑k : ℝ) (HSub.hSub (α := ℝ) (↑(finrank.{0, u_1} ℤ ↥L) : ℝ) 1 + r)
inr₃ inr₄ :
  let I := Free.ChooseBasisIndex ℤ ↥L;
  ∀ (this : Fintype I),
    ∃ A > 0,
      ∀ r < -(↑(finrank.{0, u_1} ℤ ↥L) : ℝ),
        ∀ (s : Finset ↥L),
          ∑ z ∈ s, ‖z‖ ^ r ≤
            A ^ r * ∑' (k : ℕ), HPow.hPow (α := ℝ) (↑k : ℝ) (HSub.hSub (α := ℝ) (↑(finrank.{0, u_1} ℤ ↥L) : ℝ) 1 + r)
inr₅ :
  let I := Free.ChooseBasisIndex ℤ ↥L;
  ∀ (this : Fintype I),
    ∃ A > 0,
      ∀ r < -(↑(Fintype.card I) : ℝ),
        ∀ (s : Finset ↥L),
          ∑ z ∈ s, ‖z‖ ^ r ≤
            A ^ r * ∑' (k : ℕ), HPow.hPow (α := ℝ) (↑k : ℝ) (HSub.hSub (α := ℝ) (↑(Fintype.card I) : ℝ) 1 + r)
inr₆ :
  let I := Free.ChooseBasisIndex ℤ ↥L;
  ∀ (this : Fintype I),
    let d := Fintype.card I;
    ∃ A > 0,
      ∀ r < -(↑d : ℝ),
        ∀ (s : Finset ↥L),
          ∑ z ∈ s, ‖z‖ ^ r ≤ A ^ r * ∑' (k : ℕ), HPow.hPow (α := ℝ) (↑k : ℝ) (HSub.hSub (α := ℝ) (↑d : ℝ) 1 + r)
inr₇ inr₈ :
  let I := Free.ChooseBasisIndex ℤ ↥L;
  ∀ (this : Fintype I),
    let d := Fintype.card I;
    ∀ (hd : d ≠ 0),
      ∃ A > 0,
        ∀ r < -(↑d : ℝ),
          ∀ (s : Finset ↥L),
            ∑ z ∈ s, ‖z‖ ^ r ≤ A ^ r * ∑' (k : ℕ), HPow.hPow (α := ℝ) (↑k : ℝ) (HSub.hSub (α := ℝ) (↑d : ℝ) 1 + r)
inr₉ :
  let I := Free.ChooseBasisIndex ℤ ↥L;
  ∀ (this : Fintype I),
    let d := Fintype.card I;
    ∀ (hd : d ≠ 0) (A : ℝ) (hA : A > 0) (B : ℝ) (hB : B > 0)
      (H :
        ∀ r < -(↑d : ℝ),
          ∀ (s : Finset ↥L),
            ∑ z ∈ s, ‖z‖ ^ r ≤ A * B ^ r * ∑' (k : ℕ), HPow.hPow (α := ℝ) (↑k : ℝ) (HSub.hSub (α := ℝ) (↑d : ℝ) 1 + r)),
      ∃ A > 0,
        ∀ r < -(↑d : ℝ),
          ∀ (s : Finset ↥L),
            ∑ z ∈ s, ‖z‖ ^ r ≤ A ^ r * ∑' (k : ℕ), HPow.hPow (α := ℝ) (↑k : ℝ) (HSub.hSub (α := ℝ) (↑d : ℝ) 1 + r)
pos :
  let I := Free.ChooseBasisIndex ℤ ↥L;
  ∀ (this : Fintype I),
    let d := Fintype.card I;
    ∀ (hd : d ≠ 0) (A : ℝ) (hA : A > 0) (B : ℝ) (hB : B > 0)
      (H :
        ∀ r < -(↑d : ℝ),
          ∀ (s : Finset ↥L),
            ∑ z ∈ s, ‖z‖ ^ r ≤ A * B ^ r * ∑' (k : ℕ), HPow.hPow (α := ℝ) (↑k : ℝ) (HSub.hSub (α := ℝ) (↑d : ℝ) 1 + r))
      (hA' : A ≤ 1),
      ∃ A > 0,
        ∀ r < -(↑d : ℝ),
          ∀ (s : Finset ↥L),
            ∑ z ∈ s, ‖z‖ ^ r ≤ A ^ r * ∑' (k : ℕ), HPow.hPow (α := ℝ) (↑k : ℝ) (HSub.hSub (α := ℝ) (↑d : ℝ) 1 + r)
neg neg₁ :
  let I := Free.ChooseBasisIndex ℤ ↥L;
  ∀ (this : Fintype I),
    let d := Fintype.card I;
    ∀ (hd : d ≠ 0) (A : ℝ) (hA : A > 0) (B : ℝ) (hB : B > 0)
      (H :
        ∀ r < -(↑d : ℝ),
          ∀ (s : Finset ↥L),
            ∑ z ∈ s, ‖z‖ ^ r ≤ A * B ^ r * ∑' (k : ℕ), HPow.hPow (α := ℝ) (↑k : ℝ) (HSub.hSub (α := ℝ) (↑d : ℝ) 1 + r))
      (hA' : ¬A ≤ 1),
      ∃ A > 0,
        ∀ r < -(↑d : ℝ),
          ∀ (s : Finset ↥L),
            ∑ z ∈ s, ‖z‖ ^ r ≤ A ^ r * ∑' (k : ℕ), HPow.hPow (α := ℝ) (↑k : ℝ) (HSub.hSub (α := ℝ) (↑d : ℝ) 1 + r)
⊢ ∃ A > 0,
    ∀ r < -(↑(finrank.{0, u_1} ℤ ↥L) : ℝ),
      ∀ (s : Finset ↥L),
        ∑ z ∈ s, ‖z‖ ^ r ≤
          A ^ r * ∑' (k : ℕ), HPow.hPow (α := ℝ) (↑k : ℝ) (HSub.hSub (α := ℝ) (↑(finrank.{0, u_1} ℤ ↥L) : ℝ) 1 + r)

Tactic:
classical
  let I : Type _ := Module.Free.ChooseBasisIndex ℤ L
  have : Fintype I := inferInstance
  let b : Basis I ℤ L := Module.Free.chooseBasis ℤ L
  simp_rw [Module.finrank_eq_card_basis b]
  set d := Fintype.card I
  have hd : d ≠ 0 := by simp [d]
  let ε := normBound b
  obtain ⟨A, hA, B, hB, H⟩ : ∃ A > (0 : ℝ), ∃ B > (0 : ℝ), ∀ r < (-d : ℝ), ∀ s : Finset L,
      ∑ z ∈ s, ‖z‖ ^ r ≤ A * B ^ r * ∑' k : ℕ, (k : ℝ) ^ (d - 1 + r) := by
    refine ⟨2 * d * 3 ^ (d - 1), by positivity, ε, normBound_pos b, fun r hr u ↦ ?_⟩
    let e : (I → ℤ) ≃ₗ[ℤ] L := (b.repr ≪≫ₗ Finsupp.linearEquivFunOnFinite _ _ _).symm
    obtain ⟨u, rfl⟩ : ∃ u' : Finset _, u = u'.image e.toEmbedding :=
      ⟨u.image e.symm.toEmbedding, Finset.coe_injective
        (by simpa using (e.image_symm_image _).symm)⟩
    dsimp
    simp only [EmbeddingLike.apply_eq_iff_eq, implies_true, Set.injOn_of_eq_iff_eq,
      Finset.sum_image, ge_iff_le]
    obtain ⟨n, hn⟩ : ∃ n : ℕ, u ⊆ Fintype.piFinset fun _ : I ↦ Finset.Icc (-n : ℤ) n := by
      obtain ⟨r, hr, hr'⟩ := u.finite_toSet.isCompact.isBounded.subset_closedBall_lt 0 0
      refine ⟨⌊r⌋.toNat, fun x hx ↦ ?_⟩
      have hr'' : ⌊r⌋ ⊔ 0 = ⌊r⌋ := by rw [sup_eq_left]; positivity
      have := hr' hx
      simp only [Metric.mem_closedBall, dist_zero_right, pi_norm_le_iff_of_nonneg hr.le,
        Int.norm_eq_abs, ← Int.cast_abs, ← Int.le_floor] at this
      simpa only [Int.ofNat_toNat, Fintype.mem_piFinset, Finset.mem_Icc, ← abs_le, hr'']
    refine (Finset.sum_le_sum_of_subset_of_nonneg hn (by intros; positivity)).trans ?_
    dsimp
    simp only [Submodule.norm_coe]
    convert! sum_piFinset_Icc_rpow_le b rfl n r hr with x
    simp [e, Finsupp.linearCombination]
  by_cases hA' : A ≤ 1
  · refine ⟨B, hB, fun r hr s ↦ (H r hr s).trans ?_⟩
    rw [mul_assoc]
    exact mul_le_of_le_one_left (mul_nonneg (by positivity) (by positivity)) hA'
  · refine ⟨A⁻¹ * B, mul_pos (inv_pos.mpr hA) hB, fun r hr s ↦ (H r hr s).trans ?_⟩
    rw [Real.mul_rpow (inv_pos.mpr hA).le hB.le, mul_assoc, mul_assoc]
    gcongr
    rw [← Real.rpow_neg_one, ← Real.rpow_mul hA.le]
    refine Real.self_le_rpow_of_one_le (not_le.mp hA').le ?_
    simp only [neg_mul, one_mul, le_neg (b := r)]
    refine hr.le.trans ?_
    simpa [Nat.one_le_iff_ne_zero]

Premises used: Real.rpow_neg_one, mul_assoc, Nat.one_le_iff_ne_zero, neg_mul, OfNat.ofNat, one_mul