Theorem: MeasureTheory.StronglyMeasurable.finStronglyMeasurable_of_set_sigmaFinite
File: Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic.lean

tactic: haveI : SigmaFinite (μ.restrict t) := htμ
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ : SigmaFinite (Measure.restrict μ t)
⊢ FinStronglyMeasurable f μ

tactic: let S := spanningSets (μ.restrict t)
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
⊢ FinStronglyMeasurable f μ

tactic: have hS_meas : ∀ n, MeasurableSet (S n) := measurable_spanningSets (μ.restrict t)
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
⊢ FinStronglyMeasurable f μ

tactic: let f_approx := hf_meas.approx
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
⊢ FinStronglyMeasurable f μ

tactic: let fs n := SimpleFunc.restrict (f_approx n) (S n ∩ t)
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
⊢ FinStronglyMeasurable f μ

tactic: have h_fs_t_compl : ∀ n, ∀ x, x ∉ t → fs n x = 0 := by
  intro n x hxt
  rw [SimpleFunc.restrict_apply _ ((hS_meas n).inter ht)]
  refine' Set.indicator_of_not_mem _ _
  simp [hxt]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
⊢ FinStronglyMeasurable f μ

tactic: refine' ⟨fs, _, fun x => _⟩
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
⊢ FinStronglyMeasurable f μ

tactic: intro n x hxt
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
⊢ ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0

tactic: rw [SimpleFunc.restrict_apply _ ((hS_meas n).inter ht)]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
n : ℕ
x : α
hxt : ¬x ∈ t
⊢ ↑(fs n) x = 0

tactic: refine' Set.indicator_of_not_mem _ _
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
n : ℕ
x : α
hxt : ¬x ∈ t
⊢ indicator (S n ∩ t) (↑(f_approx n)) x = 0

tactic: simp [hxt]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
n : ℕ
x : α
hxt : ¬x ∈ t
⊢ ¬x ∈ S n ∩ t

tactic: simp_rw [SimpleFunc.support_eq]
state_before: case refine'_1
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
⊢ ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤

tactic: refine' fun n => (measure_biUnion_finset_le _ _).trans_lt _
state_before: case refine'_1
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
⊢ ∀ (n : ℕ),
    ↑↑μ
        (⋃ (y : β) (_ :
          y ∈
            Finset.filter (fun y => y ≠ 0)
              (SimpleFunc.range
                (SimpleFunc.restrict (StronglyMeasurable.approx hf_meas n)
                  (spanningSets (Measure.restrict μ t) n ∩ t)))),
          ↑(SimpleFunc.restrict (StronglyMeasurable.approx hf_meas n) (spanningSets (Measure.restrict μ t) n ∩ t)) ⁻¹'
            {y}) <
      ⊤

tactic: refine' ENNReal.sum_lt_top_iff.mpr fun y hy => _
state_before: case refine'_1
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
n : ℕ
⊢ ∑ p in
      Finset.filter (fun y => y ≠ 0)
        (SimpleFunc.range
          (SimpleFunc.restrict (StronglyMeasurable.approx hf_meas n) (spanningSets (Measure.restrict μ t) n ∩ t))),
      ↑↑μ
        (↑(SimpleFunc.restrict (StronglyMeasurable.approx hf_meas n) (spanningSets (Measure.restrict μ t) n ∩ t)) ⁻¹'
          {p}) <
    ⊤

tactic: rw [SimpleFunc.restrict_preimage_singleton _ ((hS_meas n).inter ht)]
state_before: case refine'_1
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
n : ℕ
y : β
hy :
  y ∈
    Finset.filter (fun y => y ≠ 0)
      (SimpleFunc.range
        (SimpleFunc.restrict (StronglyMeasurable.approx hf_meas n) (spanningSets (Measure.restrict μ t) n ∩ t)))
⊢ ↑↑μ
      (↑(SimpleFunc.restrict (StronglyMeasurable.approx hf_meas n) (spanningSets (Measure.restrict μ t) n ∩ t)) ⁻¹'
        {y}) <
    ⊤

tactic: swap
state_before: case refine'_1
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
n : ℕ
y : β
hy :
  y ∈
    Finset.filter (fun y => y ≠ 0)
      (SimpleFunc.range
        (SimpleFunc.restrict (StronglyMeasurable.approx hf_meas n) (spanningSets (Measure.restrict μ t) n ∩ t)))
⊢ ↑↑μ (S n ∩ t ∩ ↑(StronglyMeasurable.approx hf_meas n) ⁻¹' {y}) < ⊤

case refine'_1
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
n : ℕ
y : β
hy :
  y ∈
    Finset.filter (fun y => y ≠ 0)
      (SimpleFunc.range
        (SimpleFunc.restrict (StronglyMeasurable.approx hf_meas n) (spanningSets (Measure.restrict μ t) n ∩ t)))
⊢ y ≠ 0

tactic: refine' (measure_mono (Set.inter_subset_left _ _)).trans_lt _
state_before: case refine'_1
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
n : ℕ
y : β
hy :
  y ∈
    Finset.filter (fun y => y ≠ 0)
      (SimpleFunc.range
        (SimpleFunc.restrict (StronglyMeasurable.approx hf_meas n) (spanningSets (Measure.restrict μ t) n ∩ t)))
⊢ ↑↑μ (S n ∩ t ∩ ↑(StronglyMeasurable.approx hf_meas n) ⁻¹' {y}) < ⊤

tactic: have h_lt_top := measure_spanningSets_lt_top (μ.restrict t) n
state_before: case refine'_1
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
n : ℕ
y : β
hy :
  y ∈
    Finset.filter (fun y => y ≠ 0)
      (SimpleFunc.range
        (SimpleFunc.restrict (StronglyMeasurable.approx hf_meas n) (spanningSets (Measure.restrict μ t) n ∩ t)))
⊢ ↑↑μ (S n ∩ t) < ⊤

tactic: rwa [Measure.restrict_apply' ht] at h_lt_top
state_before: case refine'_1
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
n : ℕ
y : β
hy :
  y ∈
    Finset.filter (fun y => y ≠ 0)
      (SimpleFunc.range
        (SimpleFunc.restrict (StronglyMeasurable.approx hf_meas n) (spanningSets (Measure.restrict μ t) n ∩ t)))
h_lt_top : ↑↑(Measure.restrict μ t) (spanningSets (Measure.restrict μ t) n) < ⊤
⊢ ↑↑μ (S n ∩ t) < ⊤

tactic: letI : (y : β) → Decidable (y = 0) := fun y => Classical.propDecidable _
state_before: case refine'_1
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
n : ℕ
y : β
hy :
  y ∈
    Finset.filter (fun y => y ≠ 0)
      (SimpleFunc.range
        (SimpleFunc.restrict (StronglyMeasurable.approx hf_meas n) (spanningSets (Measure.restrict μ t) n ∩ t)))
⊢ y ≠ 0

tactic: rw [Finset.mem_filter] at hy
state_before: case refine'_1
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this✝ : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
n : ℕ
y : β
hy :
  y ∈
    Finset.filter (fun y => y ≠ 0)
      (SimpleFunc.range
        (SimpleFunc.restrict (StronglyMeasurable.approx hf_meas n) (spanningSets (Measure.restrict μ t) n ∩ t)))
this : (y : β) → Decidable (y = 0) := fun y => Classical.propDecidable (y = 0)
⊢ y ≠ 0

tactic: exact hy.2
state_before: case refine'_1
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this✝ : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
n : ℕ
y : β
hy :
  y ∈
      SimpleFunc.range
        (SimpleFunc.restrict (StronglyMeasurable.approx hf_meas n) (spanningSets (Measure.restrict μ t) n ∩ t)) ∧
    y ≠ 0
this : (y : β) → Decidable (y = 0) := fun y => Classical.propDecidable (y = 0)
⊢ y ≠ 0

tactic: by_cases hxt : x ∈ t
state_before: case refine'_2
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
⊢ Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))

tactic: swap
state_before: case pos
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : x ∈ t
⊢ Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))

case neg
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : ¬x ∈ t
⊢ Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))

tactic: have h : Tendsto (fun n => (f_approx n) x) atTop (𝓝 (f x)) := hf_meas.tendsto_approx x
state_before: case pos
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : x ∈ t
⊢ Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))

tactic: rw [tendsto_atTop'] at h ⊢
state_before: case pos.intro
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : x ∈ t
h : Tendsto (fun n => ↑(f_approx n) x) atTop (𝓝 (f x))
n₁ : ℕ
hn₁ : ∀ (m_1 : ℕ), n₁ ≤ m_1 → ↑(fs m_1) x = ↑(f_approx m_1) x
⊢ Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))

tactic: intro s hs
state_before: case pos.intro
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : x ∈ t
h✝ : Tendsto (fun n => ↑(f_approx n) x) atTop (𝓝 (f x))
h : ∀ (s : Set β), s ∈ 𝓝 (f x) → ∃ a, ∀ (b : ℕ), b ≥ a → ↑(f_approx b) x ∈ s
n₁ : ℕ
hn₁ : ∀ (m_1 : ℕ), n₁ ≤ m_1 → ↑(fs m_1) x = ↑(f_approx m_1) x
⊢ ∀ (s : Set β), s ∈ 𝓝 (f x) → ∃ a, ∀ (b : ℕ), b ≥ a → ↑(fs b) x ∈ s

tactic: obtain ⟨n₂, hn₂⟩ := h s hs
state_before: case pos.intro
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : x ∈ t
h✝ : Tendsto (fun n => ↑(f_approx n) x) atTop (𝓝 (f x))
h : ∀ (s : Set β), s ∈ 𝓝 (f x) → ∃ a, ∀ (b : ℕ), b ≥ a → ↑(f_approx b) x ∈ s
n₁ : ℕ
hn₁ : ∀ (m_1 : ℕ), n₁ ≤ m_1 → ↑(fs m_1) x = ↑(f_approx m_1) x
s : Set β
hs : s ∈ 𝓝 (f x)
⊢ ∃ a, ∀ (b : ℕ), b ≥ a → ↑(fs b) x ∈ s

tactic: refine' ⟨max n₁ n₂, fun m hm => _⟩
state_before: case pos.intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : x ∈ t
h✝ : Tendsto (fun n => ↑(f_approx n) x) atTop (𝓝 (f x))
h : ∀ (s : Set β), s ∈ 𝓝 (f x) → ∃ a, ∀ (b : ℕ), b ≥ a → ↑(f_approx b) x ∈ s
n₁ : ℕ
hn₁ : ∀ (m_1 : ℕ), n₁ ≤ m_1 → ↑(fs m_1) x = ↑(f_approx m_1) x
s : Set β
hs : s ∈ 𝓝 (f x)
n₂ : ℕ
hn₂ : ∀ (b : ℕ), b ≥ n₂ → ↑(f_approx b) x ∈ s
⊢ ∃ a, ∀ (b : ℕ), b ≥ a → ↑(fs b) x ∈ s

tactic: rw [hn₁ m ((le_max_left _ _).trans hm.le)]
state_before: case pos.intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m✝ : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : x ∈ t
h✝ : Tendsto (fun n => ↑(f_approx n) x) atTop (𝓝 (f x))
h : ∀ (s : Set β), s ∈ 𝓝 (f x) → ∃ a, ∀ (b : ℕ), b ≥ a → ↑(f_approx b) x ∈ s
n₁ : ℕ
hn₁ : ∀ (m : ℕ), n₁ ≤ m → ↑(fs m) x = ↑(f_approx m) x
s : Set β
hs : s ∈ 𝓝 (f x)
n₂ : ℕ
hn₂ : ∀ (b : ℕ), b ≥ n₂ → ↑(f_approx b) x ∈ s
m : ℕ
hm : m ≥ max n₁ n₂
⊢ ↑(fs m) x ∈ s

tactic: exact hn₂ m ((le_max_right _ _).trans hm.le)
state_before: case pos.intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m✝ : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : x ∈ t
h✝ : Tendsto (fun n => ↑(f_approx n) x) atTop (𝓝 (f x))
h : ∀ (s : Set β), s ∈ 𝓝 (f x) → ∃ a, ∀ (b : ℕ), b ≥ a → ↑(f_approx b) x ∈ s
n₁ : ℕ
hn₁ : ∀ (m : ℕ), n₁ ≤ m → ↑(fs m) x = ↑(f_approx m) x
s : Set β
hs : s ∈ 𝓝 (f x)
n₂ : ℕ
hn₂ : ∀ (b : ℕ), b ≥ n₂ → ↑(f_approx b) x ∈ s
m : ℕ
hm : m ≥ max n₁ n₂
⊢ ↑(f_approx m) x ∈ s

tactic: rw [funext fun n => h_fs_t_compl n x hxt, hft_zero x hxt]
state_before: case neg
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : ¬x ∈ t
⊢ Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))

tactic: exact tendsto_const_nhds
state_before: case neg
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : ¬x ∈ t
⊢ Tendsto (fun n => 0) atTop (𝓝 0)

tactic: refine' ⟨n, fun m hnm => _⟩
state_before: case intro
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : x ∈ t
h : Tendsto (fun n => ↑(f_approx n) x) atTop (𝓝 (f x))
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → x ∈ S m ∩ t
⊢ ∃ n, ∀ (m_1 : ℕ), n ≤ m_1 → ↑(fs m_1) x = ↑(f_approx m_1) x

tactic: simp_rw [SimpleFunc.restrict_apply _ ((hS_meas m).inter ht),
  Set.indicator_of_mem (hn m hnm)]
state_before: case intro
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m✝ : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : x ∈ t
h : Tendsto (fun n => ↑(f_approx n) x) atTop (𝓝 (f x))
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → x ∈ S m ∩ t
m : ℕ
hnm : n ≤ m
⊢ ↑(fs m) x = ↑(f_approx m) x

tactic: rsuffices ⟨n, hn⟩ : ∃ n, ∀ m, n ≤ m → x ∈ S m
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : x ∈ t
h : Tendsto (fun n => ↑(f_approx n) x) atTop (𝓝 (f x))
⊢ ∃ n, ∀ (m : ℕ), n ≤ m → x ∈ S m ∩ t

tactic: rsuffices ⟨n, hn⟩ : ∃ n, x ∈ S n
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : x ∈ t
h : Tendsto (fun n => ↑(f_approx n) x) atTop (𝓝 (f x))
⊢ ∃ n, ∀ (m : ℕ), n ≤ m → x ∈ S m

tactic: rw [← Set.mem_iUnion, iUnion_spanningSets (μ.restrict t)]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : x ∈ t
h : Tendsto (fun n => ↑(f_approx n) x) atTop (𝓝 (f x))
⊢ ∃ n, x ∈ S n

tactic: trivial
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : x ∈ t
h : Tendsto (fun n => ↑(f_approx n) x) atTop (𝓝 (f x))
⊢ x ∈ univ

tactic: exact ⟨n, fun m hnm => Set.mem_inter (hn m hnm) hxt⟩
state_before: case intro
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : x ∈ t
h : Tendsto (fun n => ↑(f_approx n) x) atTop (𝓝 (f x))
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → x ∈ S m
⊢ ∃ n, ∀ (m : ℕ), n ≤ m → x ∈ S m ∩ t

tactic: exact ⟨n, fun m hnm => monotone_spanningSets (μ.restrict t) hnm hn⟩
state_before: case intro
α : Type u_2
β : Type u_1
γ : Type ?u.51589
ι : Type ?u.51592
inst✝² : Countable ι
f g : α → β
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
m : MeasurableSpace α
μ : Measure α
hf_meas : StronglyMeasurable f
t : Set α
ht : MeasurableSet t
hft_zero : ∀ (x : α), x ∈ tᶜ → f x = 0
htμ this : SigmaFinite (Measure.restrict μ t)
S : ℕ → Set α := spanningSets (Measure.restrict μ t)
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
f_approx : ℕ → α →ₛ β := StronglyMeasurable.approx hf_meas
fs : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (f_approx n) (S n ∩ t)
h_fs_t_compl : ∀ (n : ℕ) (x : α), ¬x ∈ t → ↑(fs n) x = 0
x : α
hxt : x ∈ t
h : Tendsto (fun n => ↑(f_approx n) x) atTop (𝓝 (f x))
n : ℕ
hn : x ∈ S n
⊢ ∃ n, ∀ (m : ℕ), n ≤ m → x ∈ S m