-- Lean 4 proof step from Mathlib.MeasureTheory.Measure.HasOuterApproxClosedProd (hypothesis)
Goal:
ι : Type u_1
κ : Type u_2
X : ι → Type u_5
Y : κ → Type u_6
mX : (i : ι) → MeasurableSpace (X i)
inst : (i : ι) → TopologicalSpace (X i)
inst_1 : ∀ (i : ι), BorelSpace.{u_5} (X i)
inst_2 : ∀ (i : ι), HasOuterApproxClosed.{u_5} (X i)
mY : (j : κ) → MeasurableSpace (Y j)
inst_3 : (j : κ) → TopologicalSpace (Y j)
inst_4 : ∀ (j : κ), BorelSpace.{u_6} (Y j)
inst_5 : ∀ (j : κ), HasOuterApproxClosed.{u_6} (Y j)
inst_6 : Fintype ι
inst_7 : Fintype κ
μ ν : Measure (((i : ι) → X i) × ((j : κ) → Y j))
inst_8 : IsFiniteMeasure μ
h :
  ∀ (f : (i : ι) → X i →ᵇ ℝ≥0) (g : (j : κ) → Y j →ᵇ ℝ≥0),
    ∫⁻ (p : ((i : ι) → X i) × ((j : κ) → Y j)),
        (↑(∏ i : ι, (f i : (a : X i) → ℝ≥0) (p.1 i)) : ℝ≥0∞) * (↑(∏ j : κ, (g j : (a : Y j) → ℝ≥0) (p.2 j)) : ℝ≥0∞) ∂μ =
      ∫⁻ (p : ((i : ι) → X i) × ((j : κ) → Y j)),
        (↑(∏ i : ι, (f i : (a : X i) → ℝ≥0) (p.1 i)) : ℝ≥0∞) * (↑(∏ j : κ, (g j : (a : Y j) → ℝ≥0) (p.2 j)) : ℝ≥0∞) ∂ν
hμν :
  Eq (α := ℝ≥0∞) ((μ : (a : Set (((i : ι) → X i) × ((j : κ) → Y j))) → ℝ≥0∞) univ : ℝ≥0∞)
    ((ν : (a : Set (((i : ι) → X i) × ((j : κ) → Y j))) → ℝ≥0∞) univ : ℝ≥0∞)
this_1 : IsFiniteMeasure ν
π : Set (Set (((i : ι) → X i) × ((j : κ) → Y j))) :=
  image2 (fun (s : Set ((i : ι) → X i)) (t : Set ((j : κ) → Y j)) ↦ s ×ˢ t)
    (Set.pi (α := X) univ ''
      Set.pi (α := fun (i : ι) ↦ Set (X i)) univ fun (x : ι) ↦ {s : Set (X x) | IsClosed[inst x] s})
    (Set.pi (α := Y) univ ''
      Set.pi (α := fun (i : κ) ↦ Set (Y i)) univ fun (x : κ) ↦ {t : Set (Y x) | IsClosed[inst_3 x] t})
hπ1 : IsPiSystem π
hπ2 : Prod.instMeasurableSpace = generateFrom π
s : (i : ι) → Set (X i)
t : (i : κ) → Set (Y i)
hs : ∀ (i : ι), IsClosed[inst i] (s i)
ht : ∀ (i : κ), IsClosed[inst_3 i] (t i)
this :
  ∀ (p : ((i : ι) → X i) × ((j : κ) → Y j)),
    Tendsto (α := ℕ)
      (ofNNReal ∘ fun (x : ℕ) ↦
        HMul.hMul (α := ℝ≥0) (∏ c : ι, (⋯.apprSeq (F := s c) x : (a : X c) → ℝ≥0) (p.1 c))
          (∏ c : κ, (⋯.apprSeq (F := t c) x : (a : Y c) → ℝ≥0) (p.2 c)))
      atTop
      (𝓝
        (↑(HMul.hMul (α := ℝ≥0) (∏ c : ι, (s c).indicator (fun (x : X c) ↦ 1) (p.1 c))
              (∏ c : κ, (t c).indicator (fun (x : Y c) ↦ 1) (p.2 c))) :
          ℝ≥0∞))
⊢ Eq (α := ℝ≥0∞)
    ((μ : (a : Set (((i : ι) → X i) × ((j : κ) → Y j))) → ℝ≥0∞)
      ((fun (s : Set ((i : ι) → X i)) (t : Set ((j : κ) → Y j)) ↦ s ×ˢ t) (Set.pi (α := X) univ s)
        (Set.pi (α := Y) univ t)))
    ((ν : (a : Set (((i : ι) → X i) × ((j : κ) → Y j))) → ℝ≥0∞)
      ((fun (s : Set ((i : ι) → X i)) (t : Set ((j : κ) → Y j)) ↦ s ×ˢ t) (Set.pi (α := X) univ s)
        (Set.pi (α := Y) univ t)))
have hp1 : ∀ (x : (i : ι) → X i),
  Eq (α := ℝ≥0) (∏ i : ι, (s i).indicator (fun (x : X i) ↦ 1) (x i)) ((Set.pi (α := X) univ s).indicator 1 x)
Tactic: have hp1 (x : Π i, X i) : ∏ i, (s i).indicator (fun _ ↦ (1 : ℝ≥0)) (x i) =
      (Set.univ.pi s).indicator 1 x := by
    simp only [Set.indicator, Set.mem_pi, mem_univ, forall_const, Pi.ofNat_apply]
    split_ifs with hy
    · simp only [Set.mem_pi, mem_univ, forall_const] at hy
      exact Finset.prod_eq_one (by simpa)
    · simpa [Finset.prod_eq_zero_iff] using hy