-- Lean 4 proof step from Mathlib.Analysis.AbsoluteValue.Equivalence (goal)
Goal:
R : Type u_1
S : Type u_2
inst : Field R
inst_1 : Field S
inst_2 : LinearOrder S
inst_3 : TopologicalSpace S
inst_4 : IsStrictOrderedRing S
inst_5 : Archimedean S
inst_6 : OrderTopology S
ι : Type u_3
inst_7 : Finite ι
v : ι → AbsoluteValue R S
w : AbsoluteValue R S
a b : R
i : ι
ha : LT.lt.{u_2} (α := S) (1 : S) ((v i : (a : R) → S) a : S)
haj : ∀ (j : ι), j ≠ i → LT.lt.{u_2} (α := S) ((v j : (a : R) → S) a : S) (1 : S)
haw : Eq.{u_2 + 1} (α := S) ((w : (a : R) → S) a : S) (1 : S)
hb : LT.lt.{u_2} (α := S) (1 : S) ((v i : (a : R) → S) b : S)
hbw : LT.lt.{u_2} (α := S) ((w : (a : R) → S) b : S) (1 : S)
let let₁ let₂ :
  ∃ (k : R),
    LT.lt.{u_2} (α := S) (1 : S) ((v i : (a : R) → S) k : S) ∧
      (∀ (j : ι), j ≠ i → LT.lt.{u_2} (α := S) ((v j : (a : R) → S) k : S) (1 : S)) ∧
        LT.lt.{u_2} (α := S) ((w : (a : R) → S) k : S) (1 : S)
let₃ :
  let c : ℕ → R := fun (n : ℕ) ↦ a ^ n * b;
  ∀ (hcᵢ : Tendsto.{0, u_2} (β := S) (fun (n : ℕ) ↦ (v i : (a : R) → S) (c n)) atTop atTop),
    ∃ (k : R),
      LT.lt.{u_2} (α := S) (1 : S) ((v i : (a : R) → S) k : S) ∧
        (∀ (j : ι), j ≠ i → LT.lt.{u_2} (α := S) ((v j : (a : R) → S) k : S) (1 : S)) ∧
          LT.lt.{u_2} (α := S) ((w : (a : R) → S) k : S) (1 : S)
let₄ :
  let c : ℕ → R := fun (n : ℕ) ↦ a ^ n * b;
  ∀ (hcᵢ : Tendsto.{0, u_2} (β := S) (fun (n : ℕ) ↦ (v i : (a : R) → S) (c n)) atTop atTop)
    (hcⱼ : ∀ (j : ι) (hj : j ≠ i), Tendsto.{0, u_2} (β := S) (fun (n : ℕ) ↦ (v j : (a : R) → S) (c n)) atTop (𝓝 0)),
    ∃ (k : R),
      LT.lt.{u_2} (α := S) (1 : S) ((v i : (a : R) → S) k : S) ∧
        (∀ (j : ι), j ≠ i → LT.lt.{u_2} (α := S) ((v j : (a : R) → S) k : S) (1 : S)) ∧
          LT.lt.{u_2} (α := S) ((w : (a : R) → S) k : S) (1 : S)
let₅ :
  let c : ℕ → R := fun (n : ℕ) ↦ a ^ n * b;
  ∀ (hcᵢ : Tendsto.{0, u_2} (β := S) (fun (n : ℕ) ↦ (v i : (a : R) → S) (c n)) atTop atTop)
    (hcⱼ :
      ∀ (j : ι) (hj : j ≠ i) (s : Set S),
        Membership.mem (γ := Set (Set S)) {s : Set S | ∃ (a : S), s = Set.Ioi a ∨ s = Set.Iio a} s →
          0 ∈ s → ∃ (a : ℕ), ∀ b ≥ a, Membership.mem (α := S) s ((v j : (a : R) → S) (c b) : S)),
    ∃ (k : R),
      LT.lt.{u_2} (α := S) (1 : S) ((v i : (a : R) → S) k : S) ∧
        (∀ (j : ι), j ≠ i → LT.lt.{u_2} (α := S) ((v j : (a : R) → S) k : S) (1 : S)) ∧
          LT.lt.{u_2} (α := S) ((w : (a : R) → S) k : S) (1 : S)
let₆ :
  let c : ℕ → R := fun (n : ℕ) ↦ a ^ n * b;
  ∀ (hcᵢ : Tendsto.{0, u_2} (β := S) (fun (n : ℕ) ↦ (v i : (a : R) → S) (c n)) atTop atTop)
    (hcⱼ :
      ∀ (j : ι) (hj : j ≠ i) (s : Set S),
        Membership.mem (γ := Set (Set S)) {s : Set S | ∃ (a : S), s = Set.Ioi a ∨ s = Set.Iio a} s →
          0 ∈ s → ∃ (a : ℕ), ∀ b ≥ a, Membership.mem (α := S) s ((v j : (a : R) → S) (c b) : S))
    (r₁ : ℕ) (hr₁ : ∀ (a : ℕ), r₁ ≤ a → LE.le.{u_2} (α := S) (2 : S) ((v i : (a : R) → S) (c a) : S)),
    ∃ (k : R),
      LT.lt.{u_2} (α := S) (1 : S) ((v i : (a : R) → S) k : S) ∧
        (∀ (j : ι), j ≠ i → LT.lt.{u_2} (α := S) ((v j : (a : R) → S) k : S) (1 : S)) ∧
          LT.lt.{u_2} (α := S) ((w : (a : R) → S) k : S) (1 : S)
let₇ :
  let c : ℕ → R := fun (n : ℕ) ↦ a ^ n * b;
  ∀ (hcᵢ : Tendsto.{0, u_2} (β := S) (fun (n : ℕ) ↦ (v i : (a : R) → S) (c n)) atTop atTop)
    (hcⱼ :
      ∀ (j : ι) (hj : j ≠ i) (s : Set S),
        Membership.mem (γ := Set (Set S)) {s : Set S | ∃ (a : S), s = Set.Ioi a ∨ s = Set.Iio a} s →
          0 ∈ s → ∃ (a : ℕ), ∀ b ≥ a, Membership.mem (α := S) s ((v j : (a : R) → S) (c b) : S))
    (r₁ : ℕ) (hr₁ : ∀ (a : ℕ), r₁ ≤ a → LE.le.{u_2} (α := S) (2 : S) ((v i : (a : R) → S) (c a) : S))
    (rₙ : (j : ι) → (hj : j ≠ i) → ℕ)
    (hrₙ :
      ∀ (j : ι) (hj : j ≠ i),
        ∀ b ≥ rₙ j hj, Membership.mem.{u_2, u_2} (α := S) (γ := Set S) (Set.Iio 1) ((v j : (a : R) → S) (c b) : S)),
    ∃ (k : R),
      LT.lt.{u_2} (α := S) (1 : S) ((v i : (a : R) → S) k : S) ∧
        (∀ (j : ι), j ≠ i → LT.lt.{u_2} (α := S) ((v j : (a : R) → S) k : S) (1 : S)) ∧
          LT.lt.{u_2} (α := S) ((w : (a : R) → S) k : S) (1 : S)
let₈ let₉ :
  let c : ℕ → R := fun (n : ℕ) ↦ a ^ n * b;
  ∀ (hcᵢ : Tendsto.{0, u_2} (β := S) (fun (n : ℕ) ↦ (v i : (a : R) → S) (c n)) atTop atTop)
    (hcⱼ :
      ∀ (j : ι) (hj : j ≠ i) (s : Set S),
        Membership.mem (γ := Set (Set S)) {s : Set S | ∃ (a : S), s = Set.Ioi a ∨ s = Set.Iio a} s →
          0 ∈ s → ∃ (a : ℕ), ∀ b ≥ a, Membership.mem (α := S) s ((v j : (a : R) → S) (c b) : S))
    (r₁ : ℕ) (hr₁ : ∀ (a : ℕ), r₁ ≤ a → LE.le.{u_2} (α := S) (2 : S) ((v i : (a : R) → S) (c a) : S))
    (rₙ : (j : ι) → (hj : j ≠ i) → ℕ)
    (hrₙ :
      ∀ (j : ι) (hj : j ≠ i),
        ∀ b ≥ rₙ j hj, Membership.mem.{u_2, u_2} (α := S) (γ := Set S) (Set.Iio 1) ((v j : (a : R) → S) (c b) : S))
    (this : Fintype ι),
    ∃ (k : R),
      LT.lt.{u_2} (α := S) (1 : S) ((v i : (a : R) → S) k : S) ∧
        (∀ (j : ι), j ≠ i → LT.lt.{u_2} (α := S) ((v j : (a : R) → S) k : S) (1 : S)) ∧
          LT.lt.{u_2} (α := S) ((w : (a : R) → S) k : S) (1 : S)
⊢ ∃ (k : R),
    LT.lt.{u_2} (α := S) (1 : S) ((v i : (a : R) → S) k : S) ∧
      (∀ (j : ι), j ≠ i → LT.lt.{u_2} (α := S) ((v j : (a : R) → S) k : S) (1 : S)) ∧
        LT.lt.{u_2} (α := S) ((w : (a : R) → S) k : S) (1 : S)
have refine_1 : let c : ℕ → R := fun (n : ℕ) ↦ a ^ n * b;
∀ (hcᵢ : Tendsto.{0, u_2} (β := S) (fun (n : ℕ) ↦ (v i : (a : R) → S) (c n)) atTop atTop)
  (hcⱼ :
    ∀ (j : ι) (hj : j ≠ i) (s : Set S),
      Membership.mem (γ := Set (Set S)) {s : Set S | ∃ (a : S), s = Set.Ioi a ∨ s = Set.Iio a} s →
        0 ∈ s → ∃ (a : ℕ), ∀ b ≥ a, Membership.mem (α := S) s ((v j : (a : R) → S) (c b) : S))
  (r₁ : ℕ) (hr₁ : ∀ (a : ℕ), r₁ ≤ a → LE.le.{u_2} (α := S) (2 : S) ((v i : (a : R) → S) (c a) : S))
  (rₙ : (j : ι) → (hj : j ≠ i) → ℕ)
  (hrₙ :
    ∀ (j : ι) (hj : j ≠ i),
      ∀ b ≥ rₙ j hj, Membership.mem.{u_2, u_2} (α := S) (γ := Set S) (Set.Iio 1) ((v j : (a : R) → S) (c b) : S))
  (this : Fintype ι),
  let r : ℕ := Finset.sup Finset.univ fun (j : ι) ↦ if h : j = i then r₁ else rₙ j h;
  r₁ ≤ r
Tactic: classical
  let c : ℕ → R := fun n ↦ a ^ n * b
  have hcᵢ : Tendsto (fun n ↦ (v i) (c n)) atTop atTop := by
    simpa [c] using Tendsto.atTop_mul_const (by linarith) (tendsto_pow_atTop_atTop_of_one_lt ha)
  have hcⱼ (j : ι) (hj : j ≠ i) : Tendsto (fun n ↦ (v j) (c n)) atTop (𝓝 0) := by
    simpa [c] using (tendsto_pow_atTop_nhds_zero_of_lt_one ((v j).nonneg _) (haj j hj)).mul_const _
  simp_rw +instances [OrderTopology.topology_eq_generate_intervals,
    TopologicalSpace.tendsto_nhds_generateFrom_iff, mem_atTop_sets, Set.mem_preimage] at hcⱼ
  choose r₁ hr₁ using tendsto_atTop_atTop.1 hcᵢ 2
  choose rₙ hrₙ using fun j hj ↦ hcⱼ j hj (.Iio 1) (by simpa using ⟨1, .inr rfl⟩) (by simp)
  have := Fintype.ofFinite ι
  let r := Finset.univ.sup fun j ↦ if h : j = i then r₁ else rₙ j h
  refine ⟨c r, lt_of_lt_of_le (by linarith) (hr₁ r ?_), fun j hj ↦ ?_, by simpa [c, haw]⟩
  · exact Finset.le_sup_dite_pos (p := fun j ↦ j = i) (f := fun _ _ ↦ r₁) (Finset.mem_univ _) rfl
  · simpa using hrₙ j hj _ <| Finset.le_sup_dite_neg (fun j ↦ j = i) (Finset.mem_univ j) _