[GOAL]
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : SecondCountableTopology α
⊢ SecondCountableTopology α
[PROOFSTEP]
infer_instance
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : SecondCountableTopology β
⊢ SecondCountableTopology β
[PROOFSTEP]
infer_instance
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
α : Type u_5
β : Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Subsingleton β
f : α → β
⊢ StronglyMeasurable f
[PROOFSTEP]
let f_sf : α →ₛ β := ⟨f, fun x => ?_, Set.Subsingleton.finite Set.subsingleton_of_subsingleton⟩
[GOAL]
case refine_2
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
α : Type u_5
β : Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Subsingleton β
f : α → β
f_sf : α →ₛ β :=
  { toFun := f, measurableSet_fiber' := (_ : ∀ (x : β), MeasurableSet (f ⁻¹' {x})),
    finite_range' := (_ : Set.Finite (range f)) }
⊢ StronglyMeasurable f
[PROOFSTEP]
exact ⟨fun _ => f_sf, fun x => tendsto_const_nhds⟩
[GOAL]
case refine_1
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
α : Type u_5
β : Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Subsingleton β
f : α → β
x : β
⊢ MeasurableSet (f ⁻¹' {x})
[PROOFSTEP]
have h_univ : f ⁻¹' { x } = Set.univ := by
  ext1 y
  simp
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
α : Type u_5
β : Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Subsingleton β
f : α → β
x : β
⊢ f ⁻¹' {x} = univ
[PROOFSTEP]
ext1 y
[GOAL]
case h
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
α : Type u_5
β : Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Subsingleton β
f : α → β
x : β
y : α
⊢ y ∈ f ⁻¹' {x} ↔ y ∈ univ
[PROOFSTEP]
simp
[GOAL]
case refine_1
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
α : Type u_5
β : Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Subsingleton β
f : α → β
x : β
h_univ : f ⁻¹' {x} = univ
⊢ MeasurableSet (f ⁻¹' {x})
[PROOFSTEP]
rw [h_univ]
[GOAL]
case refine_1
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
α : Type u_5
β : Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Subsingleton β
f : α → β
x : β
h_univ : f ⁻¹' {x} = univ
⊢ MeasurableSet univ
[PROOFSTEP]
exact MeasurableSet.univ
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
⊢ StronglyMeasurable f
[PROOFSTEP]
cases' isEmpty_or_nonempty α with _ h
[GOAL]
case inl
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
h✝ : IsEmpty α
⊢ StronglyMeasurable f
[PROOFSTEP]
exact stronglyMeasurable_of_isEmpty f
[GOAL]
case inr
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
h : Nonempty α
⊢ StronglyMeasurable f
[PROOFSTEP]
convert stronglyMeasurable_const (β := β) using 1
[GOAL]
case h.e'_5
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
h : Nonempty α
⊢ f = fun x => ?inr.convert_3
case inr.convert_3
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
h : Nonempty α
⊢ β
[PROOFSTEP]
exact funext fun x => hf x h.some
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
α : Type u_5
β : Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Subsingleton α
f : α → β
x y : α
⊢ f x = f y
[PROOFSTEP]
rw [Subsingleton.elim x y]
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
⊢ Tendsto (fun n => ↑(approxBounded hf c n) x) atTop (𝓝 (f x))
[PROOFSTEP]
have h_tendsto := hf.tendsto_approx x
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 (f x))
⊢ Tendsto (fun n => ↑(approxBounded hf c n) x) atTop (𝓝 (f x))
[PROOFSTEP]
simp only [StronglyMeasurable.approxBounded, SimpleFunc.coe_map, Function.comp_apply]
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 (f x))
⊢ Tendsto (fun n => min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖) • ↑(StronglyMeasurable.approx hf n) x) atTop
    (𝓝 (f x))
[PROOFSTEP]
by_cases hfx0 : ‖f x‖ = 0
[GOAL]
case pos
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 (f x))
hfx0 : ‖f x‖ = 0
⊢ Tendsto (fun n => min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖) • ↑(StronglyMeasurable.approx hf n) x) atTop
    (𝓝 (f x))
[PROOFSTEP]
rw [norm_eq_zero] at hfx0 
[GOAL]
case pos
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 (f x))
hfx0 : f x = 0
⊢ Tendsto (fun n => min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖) • ↑(StronglyMeasurable.approx hf n) x) atTop
    (𝓝 (f x))
[PROOFSTEP]
rw [hfx0] at h_tendsto ⊢
[GOAL]
case pos
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 0)
hfx0 : f x = 0
⊢ Tendsto (fun n => min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖) • ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 0)
[PROOFSTEP]
have h_tendsto_norm : Tendsto (fun n => ‖hf.approx n x‖) atTop (𝓝 0) :=
  by
  convert h_tendsto.norm
  rw [norm_zero]
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 0)
hfx0 : f x = 0
⊢ Tendsto (fun n => ‖↑(StronglyMeasurable.approx hf n) x‖) atTop (𝓝 0)
[PROOFSTEP]
convert h_tendsto.norm
[GOAL]
case h.e'_5.h.e'_3
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 0)
hfx0 : f x = 0
⊢ 0 = ‖0‖
[PROOFSTEP]
rw [norm_zero]
[GOAL]
case pos
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 0)
hfx0 : f x = 0
h_tendsto_norm : Tendsto (fun n => ‖↑(StronglyMeasurable.approx hf n) x‖) atTop (𝓝 0)
⊢ Tendsto (fun n => min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖) • ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 0)
[PROOFSTEP]
refine' squeeze_zero_norm (fun n => _) h_tendsto_norm
[GOAL]
case pos
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 0)
hfx0 : f x = 0
h_tendsto_norm : Tendsto (fun n => ‖↑(StronglyMeasurable.approx hf n) x‖) atTop (𝓝 0)
n : ℕ
⊢ ‖min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖) • ↑(StronglyMeasurable.approx hf n) x‖ ≤
    ‖↑(StronglyMeasurable.approx hf n) x‖
[PROOFSTEP]
calc
  ‖min 1 (c / ‖hf.approx n x‖) • hf.approx n x‖ = ‖min 1 (c / ‖hf.approx n x‖)‖ * ‖hf.approx n x‖ := norm_smul _ _
  _ ≤ ‖(1 : ℝ)‖ * ‖hf.approx n x‖ :=
    by
    refine' mul_le_mul_of_nonneg_right _ (norm_nonneg _)
    rw [norm_one, Real.norm_of_nonneg]
    · exact min_le_left _ _
    · exact le_min zero_le_one (div_nonneg ((norm_nonneg _).trans hfx) (norm_nonneg _))
  _ = ‖hf.approx n x‖ := by rw [norm_one, one_mul]
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 0)
hfx0 : f x = 0
h_tendsto_norm : Tendsto (fun n => ‖↑(StronglyMeasurable.approx hf n) x‖) atTop (𝓝 0)
n : ℕ
⊢ ‖min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖)‖ * ‖↑(StronglyMeasurable.approx hf n) x‖ ≤
    ‖1‖ * ‖↑(StronglyMeasurable.approx hf n) x‖
[PROOFSTEP]
refine' mul_le_mul_of_nonneg_right _ (norm_nonneg _)
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 0)
hfx0 : f x = 0
h_tendsto_norm : Tendsto (fun n => ‖↑(StronglyMeasurable.approx hf n) x‖) atTop (𝓝 0)
n : ℕ
⊢ ‖min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖)‖ ≤ ‖1‖
[PROOFSTEP]
rw [norm_one, Real.norm_of_nonneg]
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 0)
hfx0 : f x = 0
h_tendsto_norm : Tendsto (fun n => ‖↑(StronglyMeasurable.approx hf n) x‖) atTop (𝓝 0)
n : ℕ
⊢ min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖) ≤ 1
[PROOFSTEP]
exact min_le_left _ _
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 0)
hfx0 : f x = 0
h_tendsto_norm : Tendsto (fun n => ‖↑(StronglyMeasurable.approx hf n) x‖) atTop (𝓝 0)
n : ℕ
⊢ 0 ≤ min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖)
[PROOFSTEP]
exact le_min zero_le_one (div_nonneg ((norm_nonneg _).trans hfx) (norm_nonneg _))
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 0)
hfx0 : f x = 0
h_tendsto_norm : Tendsto (fun n => ‖↑(StronglyMeasurable.approx hf n) x‖) atTop (𝓝 0)
n : ℕ
⊢ ‖1‖ * ‖↑(StronglyMeasurable.approx hf n) x‖ = ‖↑(StronglyMeasurable.approx hf n) x‖
[PROOFSTEP]
rw [norm_one, one_mul]
[GOAL]
case neg
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 (f x))
hfx0 : ¬‖f x‖ = 0
⊢ Tendsto (fun n => min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖) • ↑(StronglyMeasurable.approx hf n) x) atTop
    (𝓝 (f x))
[PROOFSTEP]
rw [← one_smul ℝ (f x)]
[GOAL]
case neg
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 (f x))
hfx0 : ¬‖f x‖ = 0
⊢ Tendsto (fun n => min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖) • ↑(StronglyMeasurable.approx hf n) x) atTop
    (𝓝 (1 • f x))
[PROOFSTEP]
refine' Tendsto.smul _ h_tendsto
[GOAL]
case neg
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 (f x))
hfx0 : ¬‖f x‖ = 0
⊢ Tendsto (fun n => min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖)) atTop (𝓝 1)
[PROOFSTEP]
have : min 1 (c / ‖f x‖) = 1 :=
  by
  rw [min_eq_left_iff, one_le_div (lt_of_le_of_ne (norm_nonneg _) (Ne.symm hfx0))]
  exact hfx
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 (f x))
hfx0 : ¬‖f x‖ = 0
⊢ min 1 (c / ‖f x‖) = 1
[PROOFSTEP]
rw [min_eq_left_iff, one_le_div (lt_of_le_of_ne (norm_nonneg _) (Ne.symm hfx0))]
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 (f x))
hfx0 : ¬‖f x‖ = 0
⊢ ‖f x‖ ≤ c
[PROOFSTEP]
exact hfx
[GOAL]
case neg
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 (f x))
hfx0 : ¬‖f x‖ = 0
this : min 1 (c / ‖f x‖) = 1
⊢ Tendsto (fun n => min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖)) atTop (𝓝 1)
[PROOFSTEP]
nth_rw 2 [this.symm]
[GOAL]
case neg
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 (f x))
hfx0 : ¬‖f x‖ = 0
this : min 1 (c / ‖f x‖) = 1
⊢ Tendsto (fun n => min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖)) atTop (𝓝 (min 1 (c / ‖f x‖)))
[PROOFSTEP]
refine' Tendsto.min tendsto_const_nhds _
[GOAL]
case neg
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
hf : StronglyMeasurable f
c : ℝ
x : α
hfx : ‖f x‖ ≤ c
h_tendsto : Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 (f x))
hfx0 : ¬‖f x‖ = 0
this : min 1 (c / ‖f x‖) = 1
⊢ Tendsto (fun n => c / ‖↑(StronglyMeasurable.approx hf n) x‖) atTop (𝓝 (c / ‖f x‖))
[PROOFSTEP]
refine' Tendsto.div tendsto_const_nhds h_tendsto.norm hfx0
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m m0 : MeasurableSpace α
μ : Measure α
hf : StronglyMeasurable f
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
⊢ ∀ᵐ (x : α) ∂μ, Tendsto (fun n => ↑(approxBounded hf c n) x) atTop (𝓝 (f x))
[PROOFSTEP]
filter_upwards [hf_bound] with x hfx using tendsto_approxBounded_of_norm_le hf hfx
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : SeminormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
c : ℝ
hf : StronglyMeasurable f
hc : 0 ≤ c
n : ℕ
x : α
⊢ ‖↑(approxBounded hf c n) x‖ ≤ c
[PROOFSTEP]
simp only [StronglyMeasurable.approxBounded, SimpleFunc.coe_map, Function.comp_apply]
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : SeminormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
c : ℝ
hf : StronglyMeasurable f
hc : 0 ≤ c
n : ℕ
x : α
⊢ ‖min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖) • ↑(StronglyMeasurable.approx hf n) x‖ ≤ c
[PROOFSTEP]
refine' (norm_smul_le _ _).trans _
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : SeminormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
c : ℝ
hf : StronglyMeasurable f
hc : 0 ≤ c
n : ℕ
x : α
⊢ ‖min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖)‖ * ‖↑(StronglyMeasurable.approx hf n) x‖ ≤ c
[PROOFSTEP]
by_cases h0 : ‖hf.approx n x‖ = 0
[GOAL]
case pos
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : SeminormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
c : ℝ
hf : StronglyMeasurable f
hc : 0 ≤ c
n : ℕ
x : α
h0 : ‖↑(StronglyMeasurable.approx hf n) x‖ = 0
⊢ ‖min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖)‖ * ‖↑(StronglyMeasurable.approx hf n) x‖ ≤ c
[PROOFSTEP]
simp only [h0, _root_.div_zero, min_eq_right, zero_le_one, norm_zero, mul_zero]
[GOAL]
case pos
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : SeminormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
c : ℝ
hf : StronglyMeasurable f
hc : 0 ≤ c
n : ℕ
x : α
h0 : ‖↑(StronglyMeasurable.approx hf n) x‖ = 0
⊢ 0 ≤ c
[PROOFSTEP]
exact hc
[GOAL]
case neg
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : SeminormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
c : ℝ
hf : StronglyMeasurable f
hc : 0 ≤ c
n : ℕ
x : α
h0 : ¬‖↑(StronglyMeasurable.approx hf n) x‖ = 0
⊢ ‖min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖)‖ * ‖↑(StronglyMeasurable.approx hf n) x‖ ≤ c
[PROOFSTEP]
cases' le_total ‖hf.approx n x‖ c with h h
[GOAL]
case neg.inl
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : SeminormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
c : ℝ
hf : StronglyMeasurable f
hc : 0 ≤ c
n : ℕ
x : α
h0 : ¬‖↑(StronglyMeasurable.approx hf n) x‖ = 0
h : ‖↑(StronglyMeasurable.approx hf n) x‖ ≤ c
⊢ ‖min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖)‖ * ‖↑(StronglyMeasurable.approx hf n) x‖ ≤ c
[PROOFSTEP]
rw [min_eq_left _]
[GOAL]
case neg.inl
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : SeminormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
c : ℝ
hf : StronglyMeasurable f
hc : 0 ≤ c
n : ℕ
x : α
h0 : ¬‖↑(StronglyMeasurable.approx hf n) x‖ = 0
h : ‖↑(StronglyMeasurable.approx hf n) x‖ ≤ c
⊢ ‖1‖ * ‖↑(StronglyMeasurable.approx hf n) x‖ ≤ c
[PROOFSTEP]
simpa only [norm_one, one_mul] using h
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : SeminormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
c : ℝ
hf : StronglyMeasurable f
hc : 0 ≤ c
n : ℕ
x : α
h0 : ¬‖↑(StronglyMeasurable.approx hf n) x‖ = 0
h : ‖↑(StronglyMeasurable.approx hf n) x‖ ≤ c
⊢ 1 ≤ c / ‖↑(StronglyMeasurable.approx hf n) x‖
[PROOFSTEP]
rwa [one_le_div (lt_of_le_of_ne (norm_nonneg _) (Ne.symm h0))]
[GOAL]
case neg.inr
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : SeminormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
c : ℝ
hf : StronglyMeasurable f
hc : 0 ≤ c
n : ℕ
x : α
h0 : ¬‖↑(StronglyMeasurable.approx hf n) x‖ = 0
h : c ≤ ‖↑(StronglyMeasurable.approx hf n) x‖
⊢ ‖min 1 (c / ‖↑(StronglyMeasurable.approx hf n) x‖)‖ * ‖↑(StronglyMeasurable.approx hf n) x‖ ≤ c
[PROOFSTEP]
rw [min_eq_right _]
[GOAL]
case neg.inr
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : SeminormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
c : ℝ
hf : StronglyMeasurable f
hc : 0 ≤ c
n : ℕ
x : α
h0 : ¬‖↑(StronglyMeasurable.approx hf n) x‖ = 0
h : c ≤ ‖↑(StronglyMeasurable.approx hf n) x‖
⊢ ‖c / ‖↑(StronglyMeasurable.approx hf n) x‖‖ * ‖↑(StronglyMeasurable.approx hf n) x‖ ≤ c
[PROOFSTEP]
rw [norm_div, norm_norm, mul_comm, mul_div, div_eq_mul_inv, mul_comm, ← mul_assoc, inv_mul_cancel h0, one_mul,
  Real.norm_of_nonneg hc]
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β✝
inst✝² : TopologicalSpace β✝
β : Type u_5
f : α → β
inst✝¹ : SeminormedAddCommGroup β
inst✝ : NormedSpace ℝ β
m : MeasurableSpace α
c : ℝ
hf : StronglyMeasurable f
hc : 0 ≤ c
n : ℕ
x : α
h0 : ¬‖↑(StronglyMeasurable.approx hf n) x‖ = 0
h : c ≤ ‖↑(StronglyMeasurable.approx hf n) x‖
⊢ c / ‖↑(StronglyMeasurable.approx hf n) x‖ ≤ 1
[PROOFSTEP]
rwa [div_le_one (lt_of_le_of_ne (norm_nonneg _) (Ne.symm h0))]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
⊢ StronglyMeasurable f ↔ ∃ c, f = fun x => c
[PROOFSTEP]
cases' isEmpty_or_nonempty α with hα hα
[GOAL]
case inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : IsEmpty α
⊢ StronglyMeasurable f ↔ ∃ c, f = fun x => c
[PROOFSTEP]
simp only [@Subsingleton.stronglyMeasurable' _ _ ⊥ _ _ f, eq_iff_true_of_subsingleton, exists_const]
[GOAL]
case inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
⊢ StronglyMeasurable f ↔ ∃ c, f = fun x => c
[PROOFSTEP]
refine' ⟨fun hf => _, fun hf_eq => _⟩
[GOAL]
case inr.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
hf : StronglyMeasurable f
⊢ ∃ c, f = fun x => c
[PROOFSTEP]
refine' ⟨f hα.some, _⟩
[GOAL]
case inr.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
hf : StronglyMeasurable f
⊢ f = fun x => f (Nonempty.some hα)
[PROOFSTEP]
let fs := hf.approx
[GOAL]
case inr.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
hf : StronglyMeasurable f
fs : ℕ → α →ₛ β := StronglyMeasurable.approx hf
⊢ f = fun x => f (Nonempty.some hα)
[PROOFSTEP]
have h_fs_tendsto : ∀ x, Tendsto (fun n => fs n x) atTop (𝓝 (f x)) := hf.tendsto_approx
[GOAL]
case inr.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
hf : StronglyMeasurable f
fs : ℕ → α →ₛ β := StronglyMeasurable.approx hf
h_fs_tendsto : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
⊢ f = fun x => f (Nonempty.some hα)
[PROOFSTEP]
have : ∀ n, ∃ c, ∀ x, fs n x = c := fun n => SimpleFunc.simpleFunc_bot (fs n)
[GOAL]
case inr.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
hf : StronglyMeasurable f
fs : ℕ → α →ₛ β := StronglyMeasurable.approx hf
h_fs_tendsto : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
this : ∀ (n : ℕ), ∃ c, ∀ (x : α), ↑(fs n) x = c
⊢ f = fun x => f (Nonempty.some hα)
[PROOFSTEP]
let cs n := (this n).choose
[GOAL]
case inr.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
hf : StronglyMeasurable f
fs : ℕ → α →ₛ β := StronglyMeasurable.approx hf
h_fs_tendsto : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
this : ∀ (n : ℕ), ∃ c, ∀ (x : α), ↑(fs n) x = c
cs : ℕ → β := fun n => Exists.choose (_ : ∃ c, ∀ (x : α), ↑(fs n) x = c)
⊢ f = fun x => f (Nonempty.some hα)
[PROOFSTEP]
have h_cs_eq : ∀ n, ⇑(fs n) = fun _ => cs n := fun n => funext (this n).choose_spec
[GOAL]
case inr.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
hf : StronglyMeasurable f
fs : ℕ → α →ₛ β := StronglyMeasurable.approx hf
h_fs_tendsto : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
this : ∀ (n : ℕ), ∃ c, ∀ (x : α), ↑(fs n) x = c
cs : ℕ → β := fun n => Exists.choose (_ : ∃ c, ∀ (x : α), ↑(fs n) x = c)
h_cs_eq : ∀ (n : ℕ), ↑(fs n) = fun x => cs n
⊢ f = fun x => f (Nonempty.some hα)
[PROOFSTEP]
conv at h_fs_tendsto => enter [x, 1, n]; rw [h_cs_eq]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
hf : StronglyMeasurable f
fs : ℕ → α →ₛ β := StronglyMeasurable.approx hf
h_fs_tendsto : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
this : ∀ (n : ℕ), ∃ c, ∀ (x : α), ↑(fs n) x = c
cs : ℕ → β := fun n => Exists.choose (_ : ∃ c, ∀ (x : α), ↑(fs n) x = c)
h_cs_eq : ∀ (n : ℕ), ↑(fs n) = fun x => cs n
| ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
[PROOFSTEP]
enter [x, 1, n]; rw [h_cs_eq]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
hf : StronglyMeasurable f
fs : ℕ → α →ₛ β := StronglyMeasurable.approx hf
h_fs_tendsto : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
this : ∀ (n : ℕ), ∃ c, ∀ (x : α), ↑(fs n) x = c
cs : ℕ → β := fun n => Exists.choose (_ : ∃ c, ∀ (x : α), ↑(fs n) x = c)
h_cs_eq : ∀ (n : ℕ), ↑(fs n) = fun x => cs n
| ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
[PROOFSTEP]
enter [x, 1, n]; rw [h_cs_eq]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
hf : StronglyMeasurable f
fs : ℕ → α →ₛ β := StronglyMeasurable.approx hf
h_fs_tendsto : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
this : ∀ (n : ℕ), ∃ c, ∀ (x : α), ↑(fs n) x = c
cs : ℕ → β := fun n => Exists.choose (_ : ∃ c, ∀ (x : α), ↑(fs n) x = c)
h_cs_eq : ∀ (n : ℕ), ↑(fs n) = fun x => cs n
| ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
[PROOFSTEP]
enter [x, 1, n]
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
hf : StronglyMeasurable f
fs : ℕ → α →ₛ β := StronglyMeasurable.approx hf
h_fs_tendsto : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
this : ∀ (n : ℕ), ∃ c, ∀ (x : α), ↑(fs n) x = c
cs : ℕ → β := fun n => Exists.choose (_ : ∃ c, ∀ (x : α), ↑(fs n) x = c)
h_cs_eq : ∀ (n : ℕ), ↑(fs n) = fun x => cs n
x : α
n : ℕ
| ↑(fs n) x
[PROOFSTEP]
rw [h_cs_eq]
[GOAL]
case inr.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
hf : StronglyMeasurable f
fs : ℕ → α →ₛ β := StronglyMeasurable.approx hf
this : ∀ (n : ℕ), ∃ c, ∀ (x : α), ↑(fs n) x = c
cs : ℕ → β := fun n => Exists.choose (_ : ∃ c, ∀ (x : α), ↑(fs n) x = c)
h_fs_tendsto : ∀ (x : α), Tendsto (fun n => (fun x => cs n) x) atTop (𝓝 (f x))
h_cs_eq : ∀ (n : ℕ), ↑(fs n) = fun x => cs n
⊢ f = fun x => f (Nonempty.some hα)
[PROOFSTEP]
have h_tendsto : Tendsto cs atTop (𝓝 (f hα.some)) := h_fs_tendsto hα.some
[GOAL]
case inr.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
hf : StronglyMeasurable f
fs : ℕ → α →ₛ β := StronglyMeasurable.approx hf
this : ∀ (n : ℕ), ∃ c, ∀ (x : α), ↑(fs n) x = c
cs : ℕ → β := fun n => Exists.choose (_ : ∃ c, ∀ (x : α), ↑(fs n) x = c)
h_fs_tendsto : ∀ (x : α), Tendsto (fun n => (fun x => cs n) x) atTop (𝓝 (f x))
h_cs_eq : ∀ (n : ℕ), ↑(fs n) = fun x => cs n
h_tendsto : Tendsto cs atTop (𝓝 (f (Nonempty.some hα)))
⊢ f = fun x => f (Nonempty.some hα)
[PROOFSTEP]
ext1 x
[GOAL]
case inr.refine'_1.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
hf : StronglyMeasurable f
fs : ℕ → α →ₛ β := StronglyMeasurable.approx hf
this : ∀ (n : ℕ), ∃ c, ∀ (x : α), ↑(fs n) x = c
cs : ℕ → β := fun n => Exists.choose (_ : ∃ c, ∀ (x : α), ↑(fs n) x = c)
h_fs_tendsto : ∀ (x : α), Tendsto (fun n => (fun x => cs n) x) atTop (𝓝 (f x))
h_cs_eq : ∀ (n : ℕ), ↑(fs n) = fun x => cs n
h_tendsto : Tendsto cs atTop (𝓝 (f (Nonempty.some hα)))
x : α
⊢ f x = f (Nonempty.some hα)
[PROOFSTEP]
exact tendsto_nhds_unique (h_fs_tendsto x) h_tendsto
[GOAL]
case inr.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
hf_eq : ∃ c, f = fun x => c
⊢ StronglyMeasurable f
[PROOFSTEP]
obtain ⟨c, rfl⟩ := hf_eq
[GOAL]
case inr.refine'_2.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Nonempty β
inst✝ : T2Space β
hα : Nonempty α
c : β
⊢ StronglyMeasurable fun x => c
[PROOFSTEP]
exact stronglyMeasurable_const
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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 μ
[PROOFSTEP]
haveI : SigmaFinite (μ.restrict t) := htμ
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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 μ
[PROOFSTEP]
let S := spanningSets (μ.restrict t)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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 μ
[PROOFSTEP]
have hS_meas : ∀ n, MeasurableSet (S n) := measurable_spanningSets (μ.restrict t)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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 μ
[PROOFSTEP]
let f_approx := hf_meas.approx
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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 μ
[PROOFSTEP]
let fs n := SimpleFunc.restrict (f_approx n) (S n ∩ t)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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 μ
[PROOFSTEP]
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]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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
[PROOFSTEP]
intro n x hxt
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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
[PROOFSTEP]
rw [SimpleFunc.restrict_apply _ ((hS_meas n).inter ht)]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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
[PROOFSTEP]
refine' Set.indicator_of_not_mem _ _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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
[PROOFSTEP]
simp [hxt]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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 μ
[PROOFSTEP]
refine' ⟨fs, _, fun x => _⟩
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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)) < ⊤
[PROOFSTEP]
simp_rw [SimpleFunc.support_eq]
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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}) <
      ⊤
[PROOFSTEP]
refine' fun n => (measure_biUnion_finset_le _ _).trans_lt _
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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}) <
    ⊤
[PROOFSTEP]
refine' ENNReal.sum_lt_top_iff.mpr fun y hy => _
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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}) <
    ⊤
[PROOFSTEP]
rw [SimpleFunc.restrict_preimage_singleton _ ((hS_meas n).inter ht)]
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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
[PROOFSTEP]
swap
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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
[PROOFSTEP]
letI : (y : β) → Decidable (y = 0) := fun y => Classical.propDecidable _
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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
[PROOFSTEP]
rw [Finset.mem_filter] at hy 
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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
[PROOFSTEP]
exact hy.2
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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}) < ⊤
[PROOFSTEP]
refine' (measure_mono (Set.inter_subset_left _ _)).trans_lt _
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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) < ⊤
[PROOFSTEP]
have h_lt_top := measure_spanningSets_lt_top (μ.restrict t) n
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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) < ⊤
[PROOFSTEP]
rwa [Measure.restrict_apply' ht] at h_lt_top 
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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))
[PROOFSTEP]
by_cases hxt : x ∈ t
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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))
[PROOFSTEP]
swap
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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))
[PROOFSTEP]
rw [funext fun n => h_fs_t_compl n x hxt, hft_zero x hxt]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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)
[PROOFSTEP]
exact tendsto_const_nhds
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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))
[PROOFSTEP]
have h : Tendsto (fun n => (f_approx n) x) atTop (𝓝 (f x)) := hf_meas.tendsto_approx x
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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))
⊢ Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
[PROOFSTEP]
obtain ⟨n₁, hn₁⟩ : ∃ n, ∀ m, n ≤ m → fs m x = f_approx m x :=
  by
  obtain ⟨n, hn⟩ : ∃ n, ∀ m, n ≤ m → x ∈ S m ∩ t :=
    by
    rsuffices ⟨n, hn⟩ : ∃ n, ∀ m, n ≤ m → x ∈ S m
    · exact ⟨n, fun m hnm => Set.mem_inter (hn m hnm) hxt⟩
    rsuffices ⟨n, hn⟩ : ∃ n, x ∈ S n
    · exact ⟨n, fun m hnm => monotone_spanningSets (μ.restrict t) hnm hn⟩
    rw [← Set.mem_iUnion, iUnion_spanningSets (μ.restrict t)]
    trivial
  refine' ⟨n, fun m hnm => _⟩
  simp_rw [SimpleFunc.restrict_apply _ ((hS_meas m).inter ht), Set.indicator_of_mem (hn m hnm)]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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_1 : ℕ), n ≤ m_1 → ↑(fs m_1) x = ↑(f_approx m_1) x
[PROOFSTEP]
obtain ⟨n, hn⟩ : ∃ n, ∀ m, n ≤ m → x ∈ S m ∩ t :=
  by
  rsuffices ⟨n, hn⟩ : ∃ n, ∀ m, n ≤ m → x ∈ S m
  · exact ⟨n, fun m hnm => Set.mem_inter (hn m hnm) hxt⟩
  rsuffices ⟨n, hn⟩ : ∃ n, x ∈ S n
  · exact ⟨n, fun m hnm => monotone_spanningSets (μ.restrict t) hnm hn⟩
  rw [← Set.mem_iUnion, iUnion_spanningSets (μ.restrict t)]
  trivial
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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
[PROOFSTEP]
rsuffices ⟨n, hn⟩ : ∃ n, ∀ m, n ≤ m → x ∈ S m
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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
[PROOFSTEP]
exact ⟨n, fun m hnm => Set.mem_inter (hn m hnm) hxt⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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
[PROOFSTEP]
rsuffices ⟨n, hn⟩ : ∃ n, x ∈ S n
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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
[PROOFSTEP]
exact ⟨n, fun m hnm => monotone_spanningSets (μ.restrict t) hnm hn⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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
[PROOFSTEP]
rw [← Set.mem_iUnion, iUnion_spanningSets (μ.restrict t)]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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
[PROOFSTEP]
trivial
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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
[PROOFSTEP]
refine' ⟨n, fun m hnm => _⟩
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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
[PROOFSTEP]
simp_rw [SimpleFunc.restrict_apply _ ((hS_meas m).inter ht), Set.indicator_of_mem (hn m hnm)]
[GOAL]
case pos.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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))
[PROOFSTEP]
rw [tendsto_atTop'] at h ⊢
[GOAL]
case pos.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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 : ∀ (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
[PROOFSTEP]
intro s hs
[GOAL]
case pos.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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 : ∀ (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
[PROOFSTEP]
obtain ⟨n₂, hn₂⟩ := h s hs
[GOAL]
case pos.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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 : ∀ (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
[PROOFSTEP]
refine' ⟨max n₁ n₂, fun m hm => _⟩
[GOAL]
case pos.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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 : ∀ (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
[PROOFSTEP]
rw [hn₁ m ((le_max_left _ _).trans hm.le)]
[GOAL]
case pos.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
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 : ∀ (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
[PROOFSTEP]
exact hn₂ m ((le_max_right _ _).trans hm.le)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Zero β
m0 : MeasurableSpace α
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite μ
⊢ ∀ (x : α), x ∈ univᶜ → f x = 0
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : Zero β
m0 : MeasurableSpace α
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite μ
⊢ SigmaFinite (Measure.restrict μ univ)
[PROOFSTEP]
rwa [Measure.restrict_univ]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝² : One β
inst✝¹ : TopologicalSpace β
inst✝ : MetrizableSpace β
hf : StronglyMeasurable f
⊢ MeasurableSet (mulSupport f)
[PROOFSTEP]
borelize β
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝² : One β
inst✝¹ : TopologicalSpace β
inst✝ : MetrizableSpace β
hf : StronglyMeasurable f
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
⊢ MeasurableSet (mulSupport f)
[PROOFSTEP]
exact measurableSet_mulSupport hf.measurable
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m m' : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
h_mono : m' ≤ m
⊢ StronglyMeasurable f
[PROOFSTEP]
let f_approx : ℕ → @SimpleFunc α m β := fun n =>
  @SimpleFunc.mk α m β (hf.approx n) (fun x => h_mono _ (SimpleFunc.measurableSet_fiber' _ x))
    (SimpleFunc.finite_range (hf.approx n))
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m m' : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
h_mono : m' ≤ m
f_approx : ℕ → α →ₛ β :=
  fun n =>
    { toFun := ↑(StronglyMeasurable.approx hf n),
      measurableSet_fiber' := (_ : ∀ (x : β), MeasurableSet (↑(StronglyMeasurable.approx hf n) ⁻¹' {x})),
      finite_range' := (_ : Set.Finite (range ↑(StronglyMeasurable.approx hf n))) }
⊢ StronglyMeasurable f
[PROOFSTEP]
exact ⟨f_approx, hf.tendsto_approx⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f : α → β
g : α → γ
hf : StronglyMeasurable f
hg : StronglyMeasurable g
⊢ StronglyMeasurable fun x => (f x, g x)
[PROOFSTEP]
refine' ⟨fun n => SimpleFunc.pair (hf.approx n) (hg.approx n), fun x => _⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f : α → β
g : α → γ
hf : StronglyMeasurable f
hg : StronglyMeasurable g
x : α
⊢ Tendsto (fun n => ↑((fun n => SimpleFunc.pair (StronglyMeasurable.approx hf n) (StronglyMeasurable.approx hg n)) n) x)
    atTop (𝓝 ((fun x => (f x, g x)) x))
[PROOFSTEP]
rw [nhds_prod_eq]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f : α → β
g : α → γ
hf : StronglyMeasurable f
hg : StronglyMeasurable g
x : α
⊢ Tendsto (fun n => ↑((fun n => SimpleFunc.pair (StronglyMeasurable.approx hf n) (StronglyMeasurable.approx hg n)) n) x)
    atTop (𝓝 (f x) ×ˢ 𝓝 (g x))
[PROOFSTEP]
exact Tendsto.prod_mk (hf.tendsto_approx x) (hg.tendsto_approx x)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹⁰ : Countable ι
f g : α → β
M : Type u_5
G : Type u_6
G₀ : Type u_7
inst✝⁹ : TopologicalSpace β
inst✝⁸ : Monoid M
inst✝⁷ : MulAction M β
inst✝⁶ : ContinuousConstSMul M β
inst✝⁵ : Group G
inst✝⁴ : MulAction G β
inst✝³ : ContinuousConstSMul G β
inst✝² : GroupWithZero G₀
inst✝¹ : MulAction G₀ β
inst✝ : ContinuousConstSMul G₀ β
m : MeasurableSpace α
c : G
h : StronglyMeasurable fun x => c • f x
⊢ StronglyMeasurable f
[PROOFSTEP]
simpa only [inv_smul_smul] using h.const_smul' c⁻¹
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
M : Type u_5
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
m : MeasurableSpace α
l : List (α → M)
hl : ∀ (f : α → M), f ∈ l → StronglyMeasurable f
⊢ StronglyMeasurable (List.prod l)
[PROOFSTEP]
induction' l with f l ihl
[GOAL]
case nil
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
M : Type u_5
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
m : MeasurableSpace α
l : List (α → M)
hl✝ : ∀ (f : α → M), f ∈ l → StronglyMeasurable f
hl : ∀ (f : α → M), f ∈ [] → StronglyMeasurable f
⊢ StronglyMeasurable (List.prod [])
[PROOFSTEP]
exact stronglyMeasurable_one
[GOAL]
case cons
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β
M : Type u_5
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
m : MeasurableSpace α
l✝ : List (α → M)
hl✝ : ∀ (f : α → M), f ∈ l✝ → StronglyMeasurable f
f : α → M
l : List (α → M)
ihl : (∀ (f : α → M), f ∈ l → StronglyMeasurable f) → StronglyMeasurable (List.prod l)
hl : ∀ (f_1 : α → M), f_1 ∈ f :: l → StronglyMeasurable f_1
⊢ StronglyMeasurable (List.prod (f :: l))
[PROOFSTEP]
rw [List.forall_mem_cons] at hl 
[GOAL]
case cons
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β
M : Type u_5
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
m : MeasurableSpace α
l✝ : List (α → M)
hl✝ : ∀ (f : α → M), f ∈ l✝ → StronglyMeasurable f
f : α → M
l : List (α → M)
ihl : (∀ (f : α → M), f ∈ l → StronglyMeasurable f) → StronglyMeasurable (List.prod l)
hl : StronglyMeasurable f ∧ ∀ (x : α → M), x ∈ l → StronglyMeasurable x
⊢ StronglyMeasurable (List.prod (f :: l))
[PROOFSTEP]
rw [List.prod_cons]
[GOAL]
case cons
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f✝ g : α → β
M : Type u_5
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
m : MeasurableSpace α
l✝ : List (α → M)
hl✝ : ∀ (f : α → M), f ∈ l✝ → StronglyMeasurable f
f : α → M
l : List (α → M)
ihl : (∀ (f : α → M), f ∈ l → StronglyMeasurable f) → StronglyMeasurable (List.prod l)
hl : StronglyMeasurable f ∧ ∀ (x : α → M), x ∈ l → StronglyMeasurable x
⊢ StronglyMeasurable (f * List.prod l)
[PROOFSTEP]
exact hl.1.mul (ihl hl.2)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
M : Type u_5
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
m : MeasurableSpace α
l : List (α → M)
hl : ∀ (f : α → M), f ∈ l → StronglyMeasurable f
⊢ StronglyMeasurable fun x => List.prod (List.map (fun f => f x) l)
[PROOFSTEP]
simpa only [← Pi.list_prod_apply] using l.stronglyMeasurable_prod' hl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
M : Type u_5
inst✝² : CommMonoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
m : MeasurableSpace α
l : Multiset (α → M)
hl : ∀ (f : α → M), f ∈ l → StronglyMeasurable f
⊢ StronglyMeasurable (Multiset.prod l)
[PROOFSTEP]
rcases l with ⟨l⟩
[GOAL]
case mk
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
M : Type u_5
inst✝² : CommMonoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
m : MeasurableSpace α
l✝ : Multiset (α → M)
l : List (α → M)
hl : ∀ (f : α → M), f ∈ Quot.mk Setoid.r l → StronglyMeasurable f
⊢ StronglyMeasurable (Multiset.prod (Quot.mk Setoid.r l))
[PROOFSTEP]
simpa using l.stronglyMeasurable_prod' (by simpa using hl)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
M : Type u_5
inst✝² : CommMonoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
m : MeasurableSpace α
l✝ : Multiset (α → M)
l : List (α → M)
hl : ∀ (f : α → M), f ∈ Quot.mk Setoid.r l → StronglyMeasurable f
⊢ ∀ (f : α → M), f ∈ l → StronglyMeasurable f
[PROOFSTEP]
simpa using hl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
f g : α → β
M : Type u_5
inst✝² : CommMonoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
m : MeasurableSpace α
s : Multiset (α → M)
hs : ∀ (f : α → M), f ∈ s → StronglyMeasurable f
⊢ StronglyMeasurable fun x => Multiset.prod (Multiset.map (fun f => f x) s)
[PROOFSTEP]
simpa only [← Pi.multiset_prod_apply] using s.stronglyMeasurable_prod' hs
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝³ : Countable ι✝
f✝ g : α → β
M : Type u_5
inst✝² : CommMonoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
m : MeasurableSpace α
ι : Type u_6
f : ι → α → M
s : Finset ι
hf : ∀ (i : ι), i ∈ s → StronglyMeasurable (f i)
⊢ StronglyMeasurable fun a => ∏ i in s, f i a
[PROOFSTEP]
simpa only [← Finset.prod_apply] using s.stronglyMeasurable_prod' hf
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
⊢ IsSeparable (range f)
[PROOFSTEP]
have : IsSeparable (closure (⋃ n, range (hf.approx n))) :=
  (isSeparable_iUnion fun n => (SimpleFunc.finite_range (hf.approx n)).isSeparable).closure
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ (n : ℕ), range ↑(StronglyMeasurable.approx hf n)))
⊢ IsSeparable (range f)
[PROOFSTEP]
apply this.mono
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ (n : ℕ), range ↑(StronglyMeasurable.approx hf n)))
⊢ range f ⊆ closure (⋃ (n : ℕ), range ↑(StronglyMeasurable.approx hf n))
[PROOFSTEP]
rintro _ ⟨x, rfl⟩
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ (n : ℕ), range ↑(StronglyMeasurable.approx hf n)))
x : α
⊢ f x ∈ closure (⋃ (n : ℕ), range ↑(StronglyMeasurable.approx hf n))
[PROOFSTEP]
apply mem_closure_of_tendsto (hf.tendsto_approx x)
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ (n : ℕ), range ↑(StronglyMeasurable.approx hf n)))
x : α
⊢ ∀ᶠ (x_1 : ℕ) in atTop, ↑(StronglyMeasurable.approx hf x_1) x ∈ ⋃ (n : ℕ), range ↑(StronglyMeasurable.approx hf n)
[PROOFSTEP]
refine eventually_of_forall fun n => ?_
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ (n : ℕ), range ↑(StronglyMeasurable.approx hf n)))
x : α
n : ℕ
⊢ ↑(StronglyMeasurable.approx hf n) x ∈ ⋃ (n : ℕ), range ↑(StronglyMeasurable.approx hf n)
[PROOFSTEP]
apply mem_iUnion_of_mem n
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ (n : ℕ), range ↑(StronglyMeasurable.approx hf n)))
x : α
n : ℕ
⊢ ↑(StronglyMeasurable.approx hf n) x ∈ range ↑(StronglyMeasurable.approx hf n)
[PROOFSTEP]
exact mem_range_self _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f g : α → β
mα : MeasurableSpace α
inst✝⁴ : MeasurableSpace β
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : SecondCountableTopology β
inst✝ : OpensMeasurableSpace β
hf : Measurable f
⊢ StronglyMeasurable f
[PROOFSTEP]
letI := pseudoMetrizableSpacePseudoMetric β
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f g : α → β
mα : MeasurableSpace α
inst✝⁴ : MeasurableSpace β
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : SecondCountableTopology β
inst✝ : OpensMeasurableSpace β
hf : Measurable f
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
⊢ StronglyMeasurable f
[PROOFSTEP]
rcases isEmpty_or_nonempty β with ⟨⟩
[GOAL]
case inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f g : α → β
mα : MeasurableSpace α
inst✝⁴ : MeasurableSpace β
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : SecondCountableTopology β
inst✝ : OpensMeasurableSpace β
hf : Measurable f
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
h✝ : IsEmpty β
⊢ StronglyMeasurable f
[PROOFSTEP]
skip
[GOAL]
case inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f g : α → β
mα : MeasurableSpace α
inst✝⁴ : MeasurableSpace β
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : SecondCountableTopology β
inst✝ : OpensMeasurableSpace β
hf : Measurable f
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
h✝ : Nonempty β
⊢ StronglyMeasurable f
[PROOFSTEP]
skip
[GOAL]
case inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f g : α → β
mα : MeasurableSpace α
inst✝⁴ : MeasurableSpace β
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : SecondCountableTopology β
inst✝ : OpensMeasurableSpace β
hf : Measurable f
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
h✝ : IsEmpty β
⊢ StronglyMeasurable f
[PROOFSTEP]
exact Subsingleton.stronglyMeasurable f
[GOAL]
case inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f g : α → β
mα : MeasurableSpace α
inst✝⁴ : MeasurableSpace β
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : SecondCountableTopology β
inst✝ : OpensMeasurableSpace β
hf : Measurable f
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
h✝ : Nonempty β
⊢ StronglyMeasurable f
[PROOFSTEP]
inhabit β
[GOAL]
case inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f g : α → β
mα : MeasurableSpace α
inst✝⁴ : MeasurableSpace β
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : SecondCountableTopology β
inst✝ : OpensMeasurableSpace β
hf : Measurable f
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
h✝ : Nonempty β
inhabited_h : Inhabited β
⊢ StronglyMeasurable f
[PROOFSTEP]
exact
  ⟨SimpleFunc.approxOn f hf Set.univ default (Set.mem_univ _), fun x =>
    SimpleFunc.tendsto_approxOn hf (Set.mem_univ _) (by rw [closure_univ]; simp)⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f g : α → β
mα : MeasurableSpace α
inst✝⁴ : MeasurableSpace β
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : SecondCountableTopology β
inst✝ : OpensMeasurableSpace β
hf : Measurable f
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
h✝ : Nonempty β
inhabited_h : Inhabited β
x : α
⊢ f x ∈ closure univ
[PROOFSTEP]
rw [closure_univ]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f g : α → β
mα : MeasurableSpace α
inst✝⁴ : MeasurableSpace β
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : SecondCountableTopology β
inst✝ : OpensMeasurableSpace β
hf : Measurable f
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
h✝ : Nonempty β
inhabited_h : Inhabited β
x : α
⊢ f x ∈ univ
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
⊢ StronglyMeasurable f ↔ Measurable f ∧ IsSeparable (range f)
[PROOFSTEP]
refine' ⟨fun H => ⟨H.measurable, H.isSeparable_range⟩, _⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
⊢ Measurable f ∧ IsSeparable (range f) → StronglyMeasurable f
[PROOFSTEP]
rintro ⟨H, H'⟩
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
⊢ StronglyMeasurable f
[PROOFSTEP]
letI := pseudoMetrizableSpacePseudoMetric β
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
⊢ StronglyMeasurable f
[PROOFSTEP]
let g := codRestrict f (closure (range f)) fun x => subset_closure (mem_range_self x)
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
g : α → ↑(closure (range f)) := codRestrict f (closure (range f)) (_ : ∀ (x : α), f x ∈ closure (range f))
⊢ StronglyMeasurable f
[PROOFSTEP]
have fg : f = ((↑) : closure (range f) → β) ∘ g := by
  ext x
  rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
g : α → ↑(closure (range f)) := codRestrict f (closure (range f)) (_ : ∀ (x : α), f x ∈ closure (range f))
⊢ f = Subtype.val ∘ g
[PROOFSTEP]
ext x
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
g : α → ↑(closure (range f)) := codRestrict f (closure (range f)) (_ : ∀ (x : α), f x ∈ closure (range f))
x : α
⊢ f x = (Subtype.val ∘ g) x
[PROOFSTEP]
rfl
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
g : α → ↑(closure (range f)) := codRestrict f (closure (range f)) (_ : ∀ (x : α), f x ∈ closure (range f))
fg : f = Subtype.val ∘ g
⊢ StronglyMeasurable f
[PROOFSTEP]
have T : MeasurableEmbedding ((↑) : closure (range f) → β) :=
  by
  apply ClosedEmbedding.measurableEmbedding
  exact closedEmbedding_subtype_val isClosed_closure
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
g : α → ↑(closure (range f)) := codRestrict f (closure (range f)) (_ : ∀ (x : α), f x ∈ closure (range f))
fg : f = Subtype.val ∘ g
⊢ MeasurableEmbedding Subtype.val
[PROOFSTEP]
apply ClosedEmbedding.measurableEmbedding
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
g : α → ↑(closure (range f)) := codRestrict f (closure (range f)) (_ : ∀ (x : α), f x ∈ closure (range f))
fg : f = Subtype.val ∘ g
⊢ ClosedEmbedding Subtype.val
[PROOFSTEP]
exact closedEmbedding_subtype_val isClosed_closure
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
g : α → ↑(closure (range f)) := codRestrict f (closure (range f)) (_ : ∀ (x : α), f x ∈ closure (range f))
fg : f = Subtype.val ∘ g
T : MeasurableEmbedding Subtype.val
⊢ StronglyMeasurable f
[PROOFSTEP]
have g_meas : Measurable g := by
  rw [fg] at H 
  exact T.measurable_comp_iff.1 H
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
g : α → ↑(closure (range f)) := codRestrict f (closure (range f)) (_ : ∀ (x : α), f x ∈ closure (range f))
fg : f = Subtype.val ∘ g
T : MeasurableEmbedding Subtype.val
⊢ Measurable g
[PROOFSTEP]
rw [fg] at H 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H' : IsSeparable (range f)
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
g : α → ↑(closure (range f)) := codRestrict f (closure (range f)) (_ : ∀ (x : α), f x ∈ closure (range f))
H : Measurable (Subtype.val ∘ g)
fg : f = Subtype.val ∘ g
T : MeasurableEmbedding Subtype.val
⊢ Measurable g
[PROOFSTEP]
exact T.measurable_comp_iff.1 H
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
g : α → ↑(closure (range f)) := codRestrict f (closure (range f)) (_ : ∀ (x : α), f x ∈ closure (range f))
fg : f = Subtype.val ∘ g
T : MeasurableEmbedding Subtype.val
g_meas : Measurable g
⊢ StronglyMeasurable f
[PROOFSTEP]
have : SecondCountableTopology (closure (range f)) :=
  by
  suffices SeparableSpace (closure (range f)) by exact UniformSpace.secondCountable_of_separable _
  exact (IsSeparable.closure H').separableSpace
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
g : α → ↑(closure (range f)) := codRestrict f (closure (range f)) (_ : ∀ (x : α), f x ∈ closure (range f))
fg : f = Subtype.val ∘ g
T : MeasurableEmbedding Subtype.val
g_meas : Measurable g
⊢ SecondCountableTopology ↑(closure (range f))
[PROOFSTEP]
suffices SeparableSpace (closure (range f)) by exact UniformSpace.secondCountable_of_separable _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
this✝ : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
g : α → ↑(closure (range f)) := codRestrict f (closure (range f)) (_ : ∀ (x : α), f x ∈ closure (range f))
fg : f = Subtype.val ∘ g
T : MeasurableEmbedding Subtype.val
g_meas : Measurable g
this : SeparableSpace ↑(closure (range f))
⊢ SecondCountableTopology ↑(closure (range f))
[PROOFSTEP]
exact UniformSpace.secondCountable_of_separable _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
g : α → ↑(closure (range f)) := codRestrict f (closure (range f)) (_ : ∀ (x : α), f x ∈ closure (range f))
fg : f = Subtype.val ∘ g
T : MeasurableEmbedding Subtype.val
g_meas : Measurable g
⊢ SeparableSpace ↑(closure (range f))
[PROOFSTEP]
exact (IsSeparable.closure H').separableSpace
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
this✝ : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
g : α → ↑(closure (range f)) := codRestrict f (closure (range f)) (_ : ∀ (x : α), f x ∈ closure (range f))
fg : f = Subtype.val ∘ g
T : MeasurableEmbedding Subtype.val
g_meas : Measurable g
this : SecondCountableTopology ↑(closure (range f))
⊢ StronglyMeasurable f
[PROOFSTEP]
have g_smeas : StronglyMeasurable g := Measurable.stronglyMeasurable g_meas
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
this✝ : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
g : α → ↑(closure (range f)) := codRestrict f (closure (range f)) (_ : ∀ (x : α), f x ∈ closure (range f))
fg : f = Subtype.val ∘ g
T : MeasurableEmbedding Subtype.val
g_meas : Measurable g
this : SecondCountableTopology ↑(closure (range f))
g_smeas : StronglyMeasurable g
⊢ StronglyMeasurable f
[PROOFSTEP]
rw [fg]
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : Measurable f
H' : IsSeparable (range f)
this✝ : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
g : α → ↑(closure (range f)) := codRestrict f (closure (range f)) (_ : ∀ (x : α), f x ∈ closure (range f))
fg : f = Subtype.val ∘ g
T : MeasurableEmbedding Subtype.val
g_meas : Measurable g
this : SecondCountableTopology ↑(closure (range f))
g_smeas : StronglyMeasurable g
⊢ StronglyMeasurable (Subtype.val ∘ g)
[PROOFSTEP]
exact continuous_subtype_val.comp_stronglyMeasurable g_smeas
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f✝ g : α → β
inst✝⁴ : MeasurableSpace α
inst✝³ : TopologicalSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PseudoMetrizableSpace β
h : SecondCountableTopologyEither α β
f : α → β
hf : Continuous f
⊢ StronglyMeasurable f
[PROOFSTEP]
borelize β
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f✝ g : α → β
inst✝⁴ : MeasurableSpace α
inst✝³ : TopologicalSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PseudoMetrizableSpace β
h : SecondCountableTopologyEither α β
f : α → β
hf : Continuous f
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
⊢ StronglyMeasurable f
[PROOFSTEP]
cases h.out
[GOAL]
case inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f✝ g : α → β
inst✝⁴ : MeasurableSpace α
inst✝³ : TopologicalSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PseudoMetrizableSpace β
h : SecondCountableTopologyEither α β
f : α → β
hf : Continuous f
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
h✝ : SecondCountableTopology α
⊢ StronglyMeasurable f
[PROOFSTEP]
rw [stronglyMeasurable_iff_measurable_separable]
[GOAL]
case inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f✝ g : α → β
inst✝⁴ : MeasurableSpace α
inst✝³ : TopologicalSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PseudoMetrizableSpace β
h : SecondCountableTopologyEither α β
f : α → β
hf : Continuous f
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
h✝ : SecondCountableTopology α
⊢ Measurable f ∧ IsSeparable (range f)
[PROOFSTEP]
refine' ⟨hf.measurable, _⟩
[GOAL]
case inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f✝ g : α → β
inst✝⁴ : MeasurableSpace α
inst✝³ : TopologicalSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PseudoMetrizableSpace β
h : SecondCountableTopologyEither α β
f : α → β
hf : Continuous f
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
h✝ : SecondCountableTopology α
⊢ IsSeparable (range f)
[PROOFSTEP]
rw [← image_univ]
[GOAL]
case inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f✝ g : α → β
inst✝⁴ : MeasurableSpace α
inst✝³ : TopologicalSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PseudoMetrizableSpace β
h : SecondCountableTopologyEither α β
f : α → β
hf : Continuous f
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
h✝ : SecondCountableTopology α
⊢ IsSeparable (f '' univ)
[PROOFSTEP]
exact (isSeparable_of_separableSpace univ).image hf
[GOAL]
case inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f✝ g : α → β
inst✝⁴ : MeasurableSpace α
inst✝³ : TopologicalSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PseudoMetrizableSpace β
h : SecondCountableTopologyEither α β
f : α → β
hf : Continuous f
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
h✝ : SecondCountableTopology β
⊢ StronglyMeasurable f
[PROOFSTEP]
exact hf.measurable.stronglyMeasurable
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁸ : Countable ι
f✝ g : α → β
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace α
inst✝⁵ : OpensMeasurableSpace α
inst✝⁴ : MeasurableSpace β
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : BorelSpace β
inst✝ : Zero β
f : α → β
hf : Continuous f
h'f : HasCompactSupport f
⊢ StronglyMeasurable f
[PROOFSTEP]
letI : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁸ : Countable ι
f✝ g : α → β
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace α
inst✝⁵ : OpensMeasurableSpace α
inst✝⁴ : MeasurableSpace β
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : BorelSpace β
inst✝ : Zero β
f : α → β
hf : Continuous f
h'f : HasCompactSupport f
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
⊢ StronglyMeasurable f
[PROOFSTEP]
rw [stronglyMeasurable_iff_measurable_separable]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁸ : Countable ι
f✝ g : α → β
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace α
inst✝⁵ : OpensMeasurableSpace α
inst✝⁴ : MeasurableSpace β
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : BorelSpace β
inst✝ : Zero β
f : α → β
hf : Continuous f
h'f : HasCompactSupport f
this : PseudoMetricSpace β := pseudoMetrizableSpacePseudoMetric β
⊢ Measurable f ∧ IsSeparable (range f)
[PROOFSTEP]
refine ⟨hf.measurable, IsCompact.isSeparable (s := range f) (h'f.isCompact_range hf)⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
⊢ (StronglyMeasurable fun x => g (f x)) ↔ StronglyMeasurable f
[PROOFSTEP]
letI := pseudoMetrizableSpacePseudoMetric γ
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
⊢ (StronglyMeasurable fun x => g (f x)) ↔ StronglyMeasurable f
[PROOFSTEP]
borelize β γ
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
⊢ (StronglyMeasurable fun x => g (f x)) ↔ StronglyMeasurable f
[PROOFSTEP]
refine'
  ⟨fun H => stronglyMeasurable_iff_measurable_separable.2 ⟨_, _⟩, fun H => hg.continuous.comp_stronglyMeasurable H⟩
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : StronglyMeasurable fun x => g (f x)
⊢ Measurable f
[PROOFSTEP]
let G : β → range g := codRestrict g (range g) mem_range_self
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : StronglyMeasurable fun x => g (f x)
G : β → ↑(range g) := codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)
⊢ Measurable f
[PROOFSTEP]
have hG : ClosedEmbedding G :=
  { hg.codRestrict _ _ with
    closed_range := by
      convert isClosed_univ (α := ↥(range g))
      apply eq_univ_of_forall
      rintro ⟨-, ⟨x, rfl⟩⟩
      exact mem_range_self x }
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : StronglyMeasurable fun x => g (f x)
G : β → ↑(range g) := codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)
src✝ : _root_.Embedding (codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)) :=
  Embedding.codRestrict hg (range g) mem_range_self
⊢ IsClosed (range G)
[PROOFSTEP]
convert isClosed_univ (α := ↥(range g))
[GOAL]
case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : StronglyMeasurable fun x => g (f x)
G : β → ↑(range g) := codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)
src✝ : _root_.Embedding (codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)) :=
  Embedding.codRestrict hg (range g) mem_range_self
⊢ range G = univ
[PROOFSTEP]
apply eq_univ_of_forall
[GOAL]
case h.e'_3.a
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : StronglyMeasurable fun x => g (f x)
G : β → ↑(range g) := codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)
src✝ : _root_.Embedding (codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)) :=
  Embedding.codRestrict hg (range g) mem_range_self
⊢ ∀ (x : ↑(range g)), x ∈ range G
[PROOFSTEP]
rintro ⟨-, ⟨x, rfl⟩⟩
[GOAL]
case h.e'_3.a.mk.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : StronglyMeasurable fun x => g (f x)
G : β → ↑(range g) := codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)
src✝ : _root_.Embedding (codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)) :=
  Embedding.codRestrict hg (range g) mem_range_self
x : β
⊢ { val := g x, property := (_ : ∃ y, g y = g x) } ∈ range G
[PROOFSTEP]
exact mem_range_self x
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : StronglyMeasurable fun x => g (f x)
G : β → ↑(range g) := codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)
hG : ClosedEmbedding G
⊢ Measurable f
[PROOFSTEP]
have : Measurable (G ∘ f) := Measurable.subtype_mk H.measurable
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this✝⁴ : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : StronglyMeasurable fun x => g (f x)
G : β → ↑(range g) := codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)
hG : ClosedEmbedding G
this : Measurable (G ∘ f)
⊢ Measurable f
[PROOFSTEP]
exact hG.measurableEmbedding.measurable_comp_iff.1 this
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : StronglyMeasurable fun x => g (f x)
⊢ IsSeparable (range f)
[PROOFSTEP]
have : IsSeparable (g ⁻¹' range (g ∘ f)) := hg.isSeparable_preimage H.isSeparable_range
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this✝⁴ : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : StronglyMeasurable fun x => g (f x)
this : IsSeparable (g ⁻¹' range (g ∘ f))
⊢ IsSeparable (range f)
[PROOFSTEP]
convert this
[GOAL]
case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this✝⁴ : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : StronglyMeasurable fun x => g (f x)
this : IsSeparable (g ⁻¹' range (g ∘ f))
⊢ range f = g ⁻¹' range (g ∘ f)
[PROOFSTEP]
ext x
[GOAL]
case h.e'_3.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this✝⁴ : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : StronglyMeasurable fun x => g (f x)
this : IsSeparable (g ⁻¹' range (g ∘ f))
x : β
⊢ x ∈ range f ↔ x ∈ g ⁻¹' range (g ∘ f)
[PROOFSTEP]
simp [hg.inj.eq_iff]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁴ : Countable ι✝
f✝ g✝ : α → β
ι : Type u_5
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), StronglyMeasurable (f i)
lim : Tendsto f u (𝓝 g)
⊢ StronglyMeasurable g
[PROOFSTEP]
borelize β
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁴ : Countable ι✝
f✝ g✝ : α → β
ι : Type u_5
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), StronglyMeasurable (f i)
lim : Tendsto f u (𝓝 g)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
⊢ StronglyMeasurable g
[PROOFSTEP]
refine' stronglyMeasurable_iff_measurable_separable.2 ⟨_, _⟩
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁴ : Countable ι✝
f✝ g✝ : α → β
ι : Type u_5
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), StronglyMeasurable (f i)
lim : Tendsto f u (𝓝 g)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
⊢ Measurable g
[PROOFSTEP]
exact measurable_of_tendsto_metrizable' u (fun i => (hf i).measurable) lim
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁴ : Countable ι✝
f✝ g✝ : α → β
ι : Type u_5
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), StronglyMeasurable (f i)
lim : Tendsto f u (𝓝 g)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
⊢ IsSeparable (range g)
[PROOFSTEP]
rcases u.exists_seq_tendsto with ⟨v, hv⟩
[GOAL]
case refine'_2.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁴ : Countable ι✝
f✝ g✝ : α → β
ι : Type u_5
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), StronglyMeasurable (f i)
lim : Tendsto f u (𝓝 g)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
v : ℕ → ι
hv : Tendsto v atTop u
⊢ IsSeparable (range g)
[PROOFSTEP]
have : IsSeparable (closure (⋃ i, range (f (v i)))) :=
  (isSeparable_iUnion fun i => (hf (v i)).isSeparable_range).closure
[GOAL]
case refine'_2.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁴ : Countable ι✝
f✝ g✝ : α → β
ι : Type u_5
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), StronglyMeasurable (f i)
lim : Tendsto f u (𝓝 g)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
v : ℕ → ι
hv : Tendsto v atTop u
this : IsSeparable (closure (⋃ (i : ℕ), range (f (v i))))
⊢ IsSeparable (range g)
[PROOFSTEP]
apply this.mono
[GOAL]
case refine'_2.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁴ : Countable ι✝
f✝ g✝ : α → β
ι : Type u_5
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), StronglyMeasurable (f i)
lim : Tendsto f u (𝓝 g)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
v : ℕ → ι
hv : Tendsto v atTop u
this : IsSeparable (closure (⋃ (i : ℕ), range (f (v i))))
⊢ range g ⊆ closure (⋃ (i : ℕ), range (f (v i)))
[PROOFSTEP]
rintro _ ⟨x, rfl⟩
[GOAL]
case refine'_2.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁴ : Countable ι✝
f✝ g✝ : α → β
ι : Type u_5
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), StronglyMeasurable (f i)
lim : Tendsto f u (𝓝 g)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
v : ℕ → ι
hv : Tendsto v atTop u
this : IsSeparable (closure (⋃ (i : ℕ), range (f (v i))))
x : α
⊢ g x ∈ closure (⋃ (i : ℕ), range (f (v i)))
[PROOFSTEP]
rw [tendsto_pi_nhds] at lim 
[GOAL]
case refine'_2.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁴ : Countable ι✝
f✝ g✝ : α → β
ι : Type u_5
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), StronglyMeasurable (f i)
lim : ∀ (x : α), Tendsto (fun i => f i x) u (𝓝 (g x))
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
v : ℕ → ι
hv : Tendsto v atTop u
this : IsSeparable (closure (⋃ (i : ℕ), range (f (v i))))
x : α
⊢ g x ∈ closure (⋃ (i : ℕ), range (f (v i)))
[PROOFSTEP]
apply mem_closure_of_tendsto ((lim x).comp hv)
[GOAL]
case refine'_2.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁴ : Countable ι✝
f✝ g✝ : α → β
ι : Type u_5
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), StronglyMeasurable (f i)
lim : ∀ (x : α), Tendsto (fun i => f i x) u (𝓝 (g x))
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
v : ℕ → ι
hv : Tendsto v atTop u
this : IsSeparable (closure (⋃ (i : ℕ), range (f (v i))))
x : α
⊢ ∀ᶠ (x_1 : ℕ) in atTop, ((fun i => f i x) ∘ v) x_1 ∈ ⋃ (i : ℕ), range (f (v i))
[PROOFSTEP]
refine eventually_of_forall fun n => ?_
[GOAL]
case refine'_2.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁴ : Countable ι✝
f✝ g✝ : α → β
ι : Type u_5
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), StronglyMeasurable (f i)
lim : ∀ (x : α), Tendsto (fun i => f i x) u (𝓝 (g x))
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
v : ℕ → ι
hv : Tendsto v atTop u
this : IsSeparable (closure (⋃ (i : ℕ), range (f (v i))))
x : α
n : ℕ
⊢ ((fun i => f i x) ∘ v) n ∈ ⋃ (i : ℕ), range (f (v i))
[PROOFSTEP]
apply mem_iUnion_of_mem n
[GOAL]
case refine'_2.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁴ : Countable ι✝
f✝ g✝ : α → β
ι : Type u_5
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), StronglyMeasurable (f i)
lim : ∀ (x : α), Tendsto (fun i => f i x) u (𝓝 (g x))
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
v : ℕ → ι
hv : Tendsto v atTop u
this : IsSeparable (closure (⋃ (i : ℕ), range (f (v i))))
x : α
n : ℕ
⊢ ((fun i => f i x) ∘ v) n ∈ range (f (v n))
[PROOFSTEP]
exact mem_range_self _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
s : Set α
x✝ : DecidablePred fun x => x ∈ s
hs : MeasurableSet s
hf : StronglyMeasurable f
hg : StronglyMeasurable g
⊢ StronglyMeasurable (piecewise s f g)
[PROOFSTEP]
refine' ⟨fun n => SimpleFunc.piecewise s hs (hf.approx n) (hg.approx n), fun x => _⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
s : Set α
x✝ : DecidablePred fun x => x ∈ s
hs : MeasurableSet s
hf : StronglyMeasurable f
hg : StronglyMeasurable g
x : α
⊢ Tendsto
    (fun n =>
      ↑((fun n => SimpleFunc.piecewise s hs (StronglyMeasurable.approx hf n) (StronglyMeasurable.approx hg n)) n) x)
    atTop (𝓝 (piecewise s f g x))
[PROOFSTEP]
by_cases hx : x ∈ s
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
s : Set α
x✝ : DecidablePred fun x => x ∈ s
hs : MeasurableSet s
hf : StronglyMeasurable f
hg : StronglyMeasurable g
x : α
hx : x ∈ s
⊢ Tendsto
    (fun n =>
      ↑((fun n => SimpleFunc.piecewise s hs (StronglyMeasurable.approx hf n) (StronglyMeasurable.approx hg n)) n) x)
    atTop (𝓝 (piecewise s f g x))
[PROOFSTEP]
simpa [@Set.piecewise_eq_of_mem _ _ _ _ _ (fun _ => Classical.propDecidable _) _ hx, hx] using hf.tendsto_approx x
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
s : Set α
x✝ : DecidablePred fun x => x ∈ s
hs : MeasurableSet s
hf : StronglyMeasurable f
hg : StronglyMeasurable g
x : α
hx : ¬x ∈ s
⊢ Tendsto
    (fun n =>
      ↑((fun n => SimpleFunc.piecewise s hs (StronglyMeasurable.approx hf n) (StronglyMeasurable.approx hg n)) n) x)
    atTop (𝓝 (piecewise s f g x))
[PROOFSTEP]
simpa [@Set.piecewise_eq_of_not_mem _ _ _ _ _ (fun _ => Classical.propDecidable _) _ hx, hx] using hg.tendsto_approx x
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
⊢ StronglyMeasurable f
[PROOFSTEP]
classical
let f : ℕ → α →ₛ β := fun n =>
  { toFun := fun x => if hx : x ∈ s then hc.approx n ⟨x, hx⟩ else hd.approx n ⟨x, by simpa [hx] using h (mem_univ x)⟩
    measurableSet_fiber' := by
      intro x
      convert
        (hs.subtype_image ((hc.approx n).measurableSet_fiber x)).union
          ((ht.subtype_image ((hd.approx n).measurableSet_fiber x)).diff hs)
      ext1 y
      simp only [mem_union, mem_preimage, mem_singleton_iff, mem_image, SetCoe.exists, Subtype.coe_mk, exists_and_right,
        exists_eq_right, mem_diff]
      by_cases hy : y ∈ s
      · rw [dif_pos hy]
        simp only [hy, exists_true_left, not_true, and_false_iff, or_false_iff]
      · rw [dif_neg hy]
        have A : y ∈ t := by simpa [hy] using h (mem_univ y)
        simp only [A, hy, false_or_iff, IsEmpty.exists_iff, not_false_iff, and_true_iff, exists_true_left]
    finite_range' := by
      apply ((hc.approx n).finite_range.union (hd.approx n).finite_range).subset
      rintro - ⟨y, rfl⟩
      dsimp
      by_cases hy : y ∈ s
      · left
        rw [dif_pos hy]
        exact mem_range_self _
      · right
        rw [dif_neg hy]
        exact mem_range_self _ }
refine' ⟨f, fun y => _⟩
by_cases hy : y ∈ s
· convert hc.tendsto_approx ⟨y, hy⟩ using 1
  ext1 n
  simp only [dif_pos hy, SimpleFunc.apply_mk]
· have A : y ∈ t := by simpa [hy] using h (mem_univ y)
  convert hd.tendsto_approx ⟨y, A⟩ using 1
  ext1 n
  simp only [dif_neg hy, SimpleFunc.apply_mk]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
⊢ StronglyMeasurable f
[PROOFSTEP]
let f : ℕ → α →ₛ β := fun n =>
  { toFun := fun x => if hx : x ∈ s then hc.approx n ⟨x, hx⟩ else hd.approx n ⟨x, by simpa [hx] using h (mem_univ x)⟩
    measurableSet_fiber' := by
      intro x
      convert
        (hs.subtype_image ((hc.approx n).measurableSet_fiber x)).union
          ((ht.subtype_image ((hd.approx n).measurableSet_fiber x)).diff hs)
      ext1 y
      simp only [mem_union, mem_preimage, mem_singleton_iff, mem_image, SetCoe.exists, Subtype.coe_mk, exists_and_right,
        exists_eq_right, mem_diff]
      by_cases hy : y ∈ s
      · rw [dif_pos hy]
        simp only [hy, exists_true_left, not_true, and_false_iff, or_false_iff]
      · rw [dif_neg hy]
        have A : y ∈ t := by simpa [hy] using h (mem_univ y)
        simp only [A, hy, false_or_iff, IsEmpty.exists_iff, not_false_iff, and_true_iff, exists_true_left]
    finite_range' := by
      apply ((hc.approx n).finite_range.union (hd.approx n).finite_range).subset
      rintro - ⟨y, rfl⟩
      dsimp
      by_cases hy : y ∈ s
      · left
        rw [dif_pos hy]
        exact mem_range_self _
      · right
        rw [dif_neg hy]
        exact mem_range_self _ }
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : α
hx : ¬x ∈ s
⊢ x ∈ t
[PROOFSTEP]
simpa [hx] using h (mem_univ x)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
⊢ ∀ (x : β),
    MeasurableSet
      ((fun x =>
          if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
          else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
        {x})
[PROOFSTEP]
intro x
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
⊢ MeasurableSet
    ((fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
      {x})
[PROOFSTEP]
convert
  (hs.subtype_image ((hc.approx n).measurableSet_fiber x)).union
    ((ht.subtype_image ((hd.approx n).measurableSet_fiber x)).diff hs)
[GOAL]
case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
⊢ (fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
      {x} =
    Subtype.val '' (↑(StronglyMeasurable.approx hc n) ⁻¹' {x}) ∪
      Subtype.val '' (↑(StronglyMeasurable.approx hd n) ⁻¹' {x}) \ s
[PROOFSTEP]
ext1 y
[GOAL]
case h.e'_3.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
y : α
⊢ y ∈
      (fun x =>
          if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
          else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
        {x} ↔
    y ∈
      Subtype.val '' (↑(StronglyMeasurable.approx hc n) ⁻¹' {x}) ∪
        Subtype.val '' (↑(StronglyMeasurable.approx hd n) ⁻¹' {x}) \ s
[PROOFSTEP]
simp only [mem_union, mem_preimage, mem_singleton_iff, mem_image, SetCoe.exists, Subtype.coe_mk, exists_and_right,
  exists_eq_right, mem_diff]
[GOAL]
case h.e'_3.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
y : α
⊢ (if hx : y ∈ s then ↑(StronglyMeasurable.approx hc n) { val := y, property := hx }
      else ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) }) =
      x ↔
    (∃ x_1, ↑(StronglyMeasurable.approx hc n) { val := y, property := (_ : y ∈ s) } = x) ∨
      (∃ x_1, ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } = x) ∧ ¬y ∈ s
[PROOFSTEP]
by_cases hy : y ∈ s
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
y : α
hy : y ∈ s
⊢ (if hx : y ∈ s then ↑(StronglyMeasurable.approx hc n) { val := y, property := hx }
      else ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) }) =
      x ↔
    (∃ x_1, ↑(StronglyMeasurable.approx hc n) { val := y, property := (_ : y ∈ s) } = x) ∨
      (∃ x_1, ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } = x) ∧ ¬y ∈ s
[PROOFSTEP]
rw [dif_pos hy]
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
y : α
hy : y ∈ s
⊢ ↑(StronglyMeasurable.approx hc n) { val := y, property := hy } = x ↔
    (∃ x_1, ↑(StronglyMeasurable.approx hc n) { val := y, property := (_ : y ∈ s) } = x) ∨
      (∃ x_1, ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } = x) ∧ ¬y ∈ s
[PROOFSTEP]
simp only [hy, exists_true_left, not_true, and_false_iff, or_false_iff]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
y : α
hy : ¬y ∈ s
⊢ (if hx : y ∈ s then ↑(StronglyMeasurable.approx hc n) { val := y, property := hx }
      else ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) }) =
      x ↔
    (∃ x_1, ↑(StronglyMeasurable.approx hc n) { val := y, property := (_ : y ∈ s) } = x) ∨
      (∃ x_1, ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } = x) ∧ ¬y ∈ s
[PROOFSTEP]
rw [dif_neg hy]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
y : α
hy : ¬y ∈ s
⊢ ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } = x ↔
    (∃ x_1, ↑(StronglyMeasurable.approx hc n) { val := y, property := (_ : y ∈ s) } = x) ∨
      (∃ x_1, ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } = x) ∧ ¬y ∈ s
[PROOFSTEP]
have A : y ∈ t := by simpa [hy] using h (mem_univ y)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
y : α
hy : ¬y ∈ s
⊢ y ∈ t
[PROOFSTEP]
simpa [hy] using h (mem_univ y)
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
y : α
hy : ¬y ∈ s
A : y ∈ t
⊢ ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } = x ↔
    (∃ x_1, ↑(StronglyMeasurable.approx hc n) { val := y, property := (_ : y ∈ s) } = x) ∨
      (∃ x_1, ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } = x) ∧ ¬y ∈ s
[PROOFSTEP]
simp only [A, hy, false_or_iff, IsEmpty.exists_iff, not_false_iff, and_true_iff, exists_true_left]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
⊢ Set.Finite
    (range fun x =>
      if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
      else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })
[PROOFSTEP]
apply ((hc.approx n).finite_range.union (hd.approx n).finite_range).subset
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
⊢ (range fun x =>
      if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
      else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⊆
    range ↑(StronglyMeasurable.approx hc n) ∪ range ↑(StronglyMeasurable.approx hd n)
[PROOFSTEP]
rintro - ⟨y, rfl⟩
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
y : α
⊢ (fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })
      y ∈
    range ↑(StronglyMeasurable.approx hc n) ∪ range ↑(StronglyMeasurable.approx hd n)
[PROOFSTEP]
dsimp
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
y : α
⊢ (if hx : y ∈ s then ↑(StronglyMeasurable.approx hc n) { val := y, property := hx }
    else ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) }) ∈
    range ↑(StronglyMeasurable.approx hc n) ∪ range ↑(StronglyMeasurable.approx hd n)
[PROOFSTEP]
by_cases hy : y ∈ s
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
y : α
hy : y ∈ s
⊢ (if hx : y ∈ s then ↑(StronglyMeasurable.approx hc n) { val := y, property := hx }
    else ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) }) ∈
    range ↑(StronglyMeasurable.approx hc n) ∪ range ↑(StronglyMeasurable.approx hd n)
[PROOFSTEP]
left
[GOAL]
case pos.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
y : α
hy : y ∈ s
⊢ (if hx : y ∈ s then ↑(StronglyMeasurable.approx hc n) { val := y, property := hx }
    else ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) }) ∈
    range ↑(StronglyMeasurable.approx hc n)
[PROOFSTEP]
rw [dif_pos hy]
[GOAL]
case pos.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
y : α
hy : y ∈ s
⊢ ↑(StronglyMeasurable.approx hc n) { val := y, property := hy } ∈ range ↑(StronglyMeasurable.approx hc n)
[PROOFSTEP]
exact mem_range_self _
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
y : α
hy : ¬y ∈ s
⊢ (if hx : y ∈ s then ↑(StronglyMeasurable.approx hc n) { val := y, property := hx }
    else ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) }) ∈
    range ↑(StronglyMeasurable.approx hc n) ∪ range ↑(StronglyMeasurable.approx hd n)
[PROOFSTEP]
right
[GOAL]
case neg.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
y : α
hy : ¬y ∈ s
⊢ (if hx : y ∈ s then ↑(StronglyMeasurable.approx hc n) { val := y, property := hx }
    else ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) }) ∈
    range ↑(StronglyMeasurable.approx hd n)
[PROOFSTEP]
rw [dif_neg hy]
[GOAL]
case neg.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
y : α
hy : ¬y ∈ s
⊢ ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } ∈ range ↑(StronglyMeasurable.approx hd n)
[PROOFSTEP]
exact mem_range_self _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
⊢ StronglyMeasurable f✝
[PROOFSTEP]
refine' ⟨f, fun y => _⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
⊢ Tendsto (fun n => ↑(f n) y) atTop (𝓝 (f✝ y))
[PROOFSTEP]
by_cases hy : y ∈ s
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
hy : y ∈ s
⊢ Tendsto (fun n => ↑(f n) y) atTop (𝓝 (f✝ y))
[PROOFSTEP]
convert hc.tendsto_approx ⟨y, hy⟩ using 1
[GOAL]
case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
hy : y ∈ s
⊢ (fun n => ↑(f n) y) = fun n => ↑(StronglyMeasurable.approx hc n) { val := y, property := hy }
[PROOFSTEP]
ext1 n
[GOAL]
case h.e'_3.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
hy : y ∈ s
n : ℕ
⊢ ↑(f n) y = ↑(StronglyMeasurable.approx hc n) { val := y, property := hy }
[PROOFSTEP]
simp only [dif_pos hy, SimpleFunc.apply_mk]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
hy : ¬y ∈ s
⊢ Tendsto (fun n => ↑(f n) y) atTop (𝓝 (f✝ y))
[PROOFSTEP]
have A : y ∈ t := by simpa [hy] using h (mem_univ y)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
hy : ¬y ∈ s
⊢ y ∈ t
[PROOFSTEP]
simpa [hy] using h (mem_univ y)
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
hy : ¬y ∈ s
A : y ∈ t
⊢ Tendsto (fun n => ↑(f n) y) atTop (𝓝 (f✝ y))
[PROOFSTEP]
convert hd.tendsto_approx ⟨y, A⟩ using 1
[GOAL]
case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
hy : ¬y ∈ s
A : y ∈ t
⊢ (fun n => ↑(f n) y) = fun n => ↑(StronglyMeasurable.approx hd n) { val := y, property := A }
[PROOFSTEP]
ext1 n
[GOAL]
case h.e'_3.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
hy : ¬y ∈ s
A : y ∈ t
n : ℕ
⊢ ↑(f n) y = ↑(StronglyMeasurable.approx hd n) { val := y, property := A }
[PROOFSTEP]
simp only [dif_neg hy, SimpleFunc.apply_mk]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g✝ f : α → β
g : α → γ
g' : γ → β
mα : MeasurableSpace α
mγ : MeasurableSpace γ
inst✝ : TopologicalSpace β
hg : MeasurableEmbedding g
hf : StronglyMeasurable f
hg' : StronglyMeasurable g'
⊢ StronglyMeasurable (Function.extend g f g')
[PROOFSTEP]
refine' ⟨fun n => SimpleFunc.extend (hf.approx n) g hg (hg'.approx n), _⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g✝ f : α → β
g : α → γ
g' : γ → β
mα : MeasurableSpace α
mγ : MeasurableSpace γ
inst✝ : TopologicalSpace β
hg : MeasurableEmbedding g
hf : StronglyMeasurable f
hg' : StronglyMeasurable g'
⊢ ∀ (x : γ),
    Tendsto
      (fun n =>
        ↑((fun n => SimpleFunc.extend (StronglyMeasurable.approx hf n) g hg (StronglyMeasurable.approx hg' n)) n) x)
      atTop (𝓝 (Function.extend g f g' x))
[PROOFSTEP]
intro x
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g✝ f : α → β
g : α → γ
g' : γ → β
mα : MeasurableSpace α
mγ : MeasurableSpace γ
inst✝ : TopologicalSpace β
hg : MeasurableEmbedding g
hf : StronglyMeasurable f
hg' : StronglyMeasurable g'
x : γ
⊢ Tendsto
    (fun n =>
      ↑((fun n => SimpleFunc.extend (StronglyMeasurable.approx hf n) g hg (StronglyMeasurable.approx hg' n)) n) x)
    atTop (𝓝 (Function.extend g f g' x))
[PROOFSTEP]
by_cases hx : ∃ y, g y = x
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g✝ f : α → β
g : α → γ
g' : γ → β
mα : MeasurableSpace α
mγ : MeasurableSpace γ
inst✝ : TopologicalSpace β
hg : MeasurableEmbedding g
hf : StronglyMeasurable f
hg' : StronglyMeasurable g'
x : γ
hx : ∃ y, g y = x
⊢ Tendsto
    (fun n =>
      ↑((fun n => SimpleFunc.extend (StronglyMeasurable.approx hf n) g hg (StronglyMeasurable.approx hg' n)) n) x)
    atTop (𝓝 (Function.extend g f g' x))
[PROOFSTEP]
rcases hx with ⟨y, rfl⟩
[GOAL]
case pos.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g✝ f : α → β
g : α → γ
g' : γ → β
mα : MeasurableSpace α
mγ : MeasurableSpace γ
inst✝ : TopologicalSpace β
hg : MeasurableEmbedding g
hf : StronglyMeasurable f
hg' : StronglyMeasurable g'
y : α
⊢ Tendsto
    (fun n =>
      ↑((fun n => SimpleFunc.extend (StronglyMeasurable.approx hf n) g hg (StronglyMeasurable.approx hg' n)) n) (g y))
    atTop (𝓝 (Function.extend g f g' (g y)))
[PROOFSTEP]
simpa only [SimpleFunc.extend_apply, hg.injective, Injective.extend_apply] using hf.tendsto_approx y
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f✝ g✝ f : α → β
g : α → γ
g' : γ → β
mα : MeasurableSpace α
mγ : MeasurableSpace γ
inst✝ : TopologicalSpace β
hg : MeasurableEmbedding g
hf : StronglyMeasurable f
hg' : StronglyMeasurable g'
x : γ
hx : ¬∃ y, g y = x
⊢ Tendsto
    (fun n =>
      ↑((fun n => SimpleFunc.extend (StronglyMeasurable.approx hf n) g hg (StronglyMeasurable.approx hg' n)) n) x)
    atTop (𝓝 (Function.extend g f g' x))
[PROOFSTEP]
simpa only [hx, SimpleFunc.extend_apply', not_false_iff, extend_apply'] using hg'.tendsto_approx x
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
E : Type u_5
inst✝¹ : TopologicalSpace E
inst✝ : MetrizableSpace E
f g : α → E
hf : StronglyMeasurable f
hg : StronglyMeasurable g
⊢ MeasurableSet {x | f x = g x}
[PROOFSTEP]
borelize (E × E)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
E : Type u_5
inst✝¹ : TopologicalSpace E
inst✝ : MetrizableSpace E
f g : α → E
hf : StronglyMeasurable f
hg : StronglyMeasurable g
this✝¹ : MeasurableSpace (E × E) := borel (E × E)
this✝ : BorelSpace (E × E)
⊢ MeasurableSet {x | f x = g x}
[PROOFSTEP]
exact (hf.prod_mk hg).measurable isClosed_diagonal.measurableSet
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : LinearOrder β
inst✝¹ : OrderClosedTopology β
inst✝ : PseudoMetrizableSpace β
f g : α → β
hf : StronglyMeasurable f
hg : StronglyMeasurable g
⊢ MeasurableSet {a | f a < g a}
[PROOFSTEP]
borelize (β × β)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : LinearOrder β
inst✝¹ : OrderClosedTopology β
inst✝ : PseudoMetrizableSpace β
f g : α → β
hf : StronglyMeasurable f
hg : StronglyMeasurable g
this✝¹ : MeasurableSpace (β × β) := borel (β × β)
this✝ : BorelSpace (β × β)
⊢ MeasurableSet {a | f a < g a}
[PROOFSTEP]
exact (hf.prod_mk hg).measurable isOpen_lt_prod.measurableSet
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : Preorder β
inst✝¹ : OrderClosedTopology β
inst✝ : PseudoMetrizableSpace β
f g : α → β
hf : StronglyMeasurable f
hg : StronglyMeasurable g
⊢ MeasurableSet {a | f a ≤ g a}
[PROOFSTEP]
borelize (β × β)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : Preorder β
inst✝¹ : OrderClosedTopology β
inst✝ : PseudoMetrizableSpace β
f g : α → β
hf : StronglyMeasurable f
hg : StronglyMeasurable g
this✝¹ : MeasurableSpace (β × β) := borel (β × β)
this✝ : BorelSpace (β × β)
⊢ MeasurableSet {a | f a ≤ g a}
[PROOFSTEP]
exact (hf.prod_mk hg).measurable isClosed_le_prod.measurableSet
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
s : Set α
f : α → β
hs : MeasurableSet s
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
⊢ ∃ fs, (∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))) ∧ ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(fs n) x = 0
[PROOFSTEP]
let g_seq_s : ℕ → @SimpleFunc α m β := fun n => (hf.approx n).restrict s
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
s : Set α
f : α → β
hs : MeasurableSet s
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
g_seq_s : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (StronglyMeasurable.approx hf n) s
⊢ ∃ fs, (∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))) ∧ ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(fs n) x = 0
[PROOFSTEP]
have hg_eq : ∀ x ∈ s, ∀ n, g_seq_s n x = hf.approx n x :=
  by
  intro x hx n
  rw [SimpleFunc.coe_restrict _ hs, Set.indicator_of_mem hx]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
s : Set α
f : α → β
hs : MeasurableSet s
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
g_seq_s : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (StronglyMeasurable.approx hf n) s
⊢ ∀ (x : α), x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = ↑(StronglyMeasurable.approx hf n) x
[PROOFSTEP]
intro x hx n
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
s : Set α
f : α → β
hs : MeasurableSet s
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
g_seq_s : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (StronglyMeasurable.approx hf n) s
x : α
hx : x ∈ s
n : ℕ
⊢ ↑(g_seq_s n) x = ↑(StronglyMeasurable.approx hf n) x
[PROOFSTEP]
rw [SimpleFunc.coe_restrict _ hs, Set.indicator_of_mem hx]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
s : Set α
f : α → β
hs : MeasurableSet s
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
g_seq_s : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (StronglyMeasurable.approx hf n) s
hg_eq : ∀ (x : α), x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = ↑(StronglyMeasurable.approx hf n) x
⊢ ∃ fs, (∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))) ∧ ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(fs n) x = 0
[PROOFSTEP]
have hg_zero : ∀ (x) (_ : x ∉ s), ∀ n, g_seq_s n x = 0 :=
  by
  intro x hx n
  rw [SimpleFunc.coe_restrict _ hs, Set.indicator_of_not_mem hx]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
s : Set α
f : α → β
hs : MeasurableSet s
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
g_seq_s : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (StronglyMeasurable.approx hf n) s
hg_eq : ∀ (x : α), x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = ↑(StronglyMeasurable.approx hf n) x
⊢ ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
[PROOFSTEP]
intro x hx n
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
s : Set α
f : α → β
hs : MeasurableSet s
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
g_seq_s : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (StronglyMeasurable.approx hf n) s
hg_eq : ∀ (x : α), x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = ↑(StronglyMeasurable.approx hf n) x
x : α
hx : ¬x ∈ s
n : ℕ
⊢ ↑(g_seq_s n) x = 0
[PROOFSTEP]
rw [SimpleFunc.coe_restrict _ hs, Set.indicator_of_not_mem hx]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
s : Set α
f : α → β
hs : MeasurableSet s
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
g_seq_s : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (StronglyMeasurable.approx hf n) s
hg_eq : ∀ (x : α), x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = ↑(StronglyMeasurable.approx hf n) x
hg_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
⊢ ∃ fs, (∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))) ∧ ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(fs n) x = 0
[PROOFSTEP]
refine' ⟨g_seq_s, fun x => _, hg_zero⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
s : Set α
f : α → β
hs : MeasurableSet s
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
g_seq_s : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (StronglyMeasurable.approx hf n) s
hg_eq : ∀ (x : α), x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = ↑(StronglyMeasurable.approx hf n) x
hg_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
x : α
⊢ Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
[PROOFSTEP]
by_cases hx : x ∈ s
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
s : Set α
f : α → β
hs : MeasurableSet s
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
g_seq_s : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (StronglyMeasurable.approx hf n) s
hg_eq : ∀ (x : α), x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = ↑(StronglyMeasurable.approx hf n) x
hg_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
x : α
hx : x ∈ s
⊢ Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
[PROOFSTEP]
simp_rw [hg_eq x hx]
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
s : Set α
f : α → β
hs : MeasurableSet s
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
g_seq_s : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (StronglyMeasurable.approx hf n) s
hg_eq : ∀ (x : α), x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = ↑(StronglyMeasurable.approx hf n) x
hg_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
x : α
hx : x ∈ s
⊢ Tendsto (fun n => ↑(StronglyMeasurable.approx hf n) x) atTop (𝓝 (f x))
[PROOFSTEP]
exact hf.tendsto_approx x
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
s : Set α
f : α → β
hs : MeasurableSet s
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
g_seq_s : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (StronglyMeasurable.approx hf n) s
hg_eq : ∀ (x : α), x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = ↑(StronglyMeasurable.approx hf n) x
hg_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
x : α
hx : ¬x ∈ s
⊢ Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
[PROOFSTEP]
simp_rw [hg_zero x hx, hf_zero x hx]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : Zero β
s : Set α
f : α → β
hs : MeasurableSet s
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
g_seq_s : ℕ → α →ₛ β := fun n => SimpleFunc.restrict (StronglyMeasurable.approx hf n) s
hg_eq : ∀ (x : α), x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = ↑(StronglyMeasurable.approx hf n) x
hg_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
x : α
hx : ¬x ∈ s
⊢ Tendsto (fun n => 0) atTop (𝓝 0)
[PROOFSTEP]
exact tendsto_const_nhds
[GOAL]
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
⊢ StronglyMeasurable f
[PROOFSTEP]
have hs_m₂ : MeasurableSet[m₂] s := by
  rw [← Set.inter_univ s]
  refine' hs Set.univ _
  rwa [Set.inter_univ]
[GOAL]
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
⊢ MeasurableSet s
[PROOFSTEP]
rw [← Set.inter_univ s]
[GOAL]
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
⊢ MeasurableSet (s ∩ univ)
[PROOFSTEP]
refine' hs Set.univ _
[GOAL]
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
⊢ MeasurableSet (s ∩ univ)
[PROOFSTEP]
rwa [Set.inter_univ]
[GOAL]
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
⊢ StronglyMeasurable f
[PROOFSTEP]
obtain ⟨g_seq_s, hg_seq_tendsto, hg_seq_zero⟩ := stronglyMeasurable_in_set hs_m hf hf_zero
[GOAL]
case intro.intro
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
⊢ StronglyMeasurable f
[PROOFSTEP]
let g_seq_s₂ : ℕ → @SimpleFunc α m₂ E := fun n =>
  { toFun := g_seq_s n
    measurableSet_fiber' := fun x =>
      by
      rw [← Set.inter_univ (g_seq_s n ⁻¹' { x }), ← Set.union_compl_self s, Set.inter_union_distrib_left,
        Set.inter_comm (g_seq_s n ⁻¹' { x })]
      refine' MeasurableSet.union (hs _ (hs_m.inter _)) _
      · exact @SimpleFunc.measurableSet_fiber _ _ m _ _
      by_cases hx : x = 0
      · suffices g_seq_s n ⁻¹' { x } ∩ sᶜ = sᶜ by
          rw [this]
          exact hs_m₂.compl
        ext1 y
        rw [hx, Set.mem_inter_iff, Set.mem_preimage, Set.mem_singleton_iff]
        exact ⟨fun h => h.2, fun h => ⟨hg_seq_zero y h n, h⟩⟩
      · suffices g_seq_s n ⁻¹' { x } ∩ sᶜ = ∅ by
          rw [this]
          exact MeasurableSet.empty
        ext1 y
        simp only [mem_inter_iff, mem_preimage, mem_singleton_iff, mem_compl_iff, mem_empty_iff_false, iff_false_iff,
          not_and, not_not_mem]
        refine' Function.mtr fun hys => _
        rw [hg_seq_zero y hys n]
        exact Ne.symm hx
    finite_range' := @SimpleFunc.finite_range _ _ m (g_seq_s n) }
[GOAL]
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
⊢ MeasurableSet (↑(g_seq_s n) ⁻¹' {x})
[PROOFSTEP]
rw [← Set.inter_univ (g_seq_s n ⁻¹' { x }), ← Set.union_compl_self s, Set.inter_union_distrib_left,
  Set.inter_comm (g_seq_s n ⁻¹' { x })]
[GOAL]
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
⊢ MeasurableSet (s ∩ ↑(g_seq_s n) ⁻¹' {x} ∪ ↑(g_seq_s n) ⁻¹' {x} ∩ sᶜ)
[PROOFSTEP]
refine' MeasurableSet.union (hs _ (hs_m.inter _)) _
[GOAL]
case refine'_1
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
⊢ MeasurableSet (↑(g_seq_s n) ⁻¹' {x})
[PROOFSTEP]
exact @SimpleFunc.measurableSet_fiber _ _ m _ _
[GOAL]
case refine'_2
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
⊢ MeasurableSet (↑(g_seq_s n) ⁻¹' {x} ∩ sᶜ)
[PROOFSTEP]
by_cases hx : x = 0
[GOAL]
case pos
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
hx : x = 0
⊢ MeasurableSet (↑(g_seq_s n) ⁻¹' {x} ∩ sᶜ)
[PROOFSTEP]
suffices g_seq_s n ⁻¹' { x } ∩ sᶜ = sᶜ by
  rw [this]
  exact hs_m₂.compl
[GOAL]
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
hx : x = 0
this : ↑(g_seq_s n) ⁻¹' {x} ∩ sᶜ = sᶜ
⊢ MeasurableSet (↑(g_seq_s n) ⁻¹' {x} ∩ sᶜ)
[PROOFSTEP]
rw [this]
[GOAL]
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
hx : x = 0
this : ↑(g_seq_s n) ⁻¹' {x} ∩ sᶜ = sᶜ
⊢ MeasurableSet sᶜ
[PROOFSTEP]
exact hs_m₂.compl
[GOAL]
case pos
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
hx : x = 0
⊢ ↑(g_seq_s n) ⁻¹' {x} ∩ sᶜ = sᶜ
[PROOFSTEP]
ext1 y
[GOAL]
case pos.h
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
hx : x = 0
y : α
⊢ y ∈ ↑(g_seq_s n) ⁻¹' {x} ∩ sᶜ ↔ y ∈ sᶜ
[PROOFSTEP]
rw [hx, Set.mem_inter_iff, Set.mem_preimage, Set.mem_singleton_iff]
[GOAL]
case pos.h
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
hx : x = 0
y : α
⊢ ↑(g_seq_s n) y = 0 ∧ y ∈ sᶜ ↔ y ∈ sᶜ
[PROOFSTEP]
exact ⟨fun h => h.2, fun h => ⟨hg_seq_zero y h n, h⟩⟩
[GOAL]
case neg
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
hx : ¬x = 0
⊢ MeasurableSet (↑(g_seq_s n) ⁻¹' {x} ∩ sᶜ)
[PROOFSTEP]
suffices g_seq_s n ⁻¹' { x } ∩ sᶜ = ∅ by
  rw [this]
  exact MeasurableSet.empty
[GOAL]
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
hx : ¬x = 0
this : ↑(g_seq_s n) ⁻¹' {x} ∩ sᶜ = ∅
⊢ MeasurableSet (↑(g_seq_s n) ⁻¹' {x} ∩ sᶜ)
[PROOFSTEP]
rw [this]
[GOAL]
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
hx : ¬x = 0
this : ↑(g_seq_s n) ⁻¹' {x} ∩ sᶜ = ∅
⊢ MeasurableSet ∅
[PROOFSTEP]
exact MeasurableSet.empty
[GOAL]
case neg
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
hx : ¬x = 0
⊢ ↑(g_seq_s n) ⁻¹' {x} ∩ sᶜ = ∅
[PROOFSTEP]
ext1 y
[GOAL]
case neg.h
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
hx : ¬x = 0
y : α
⊢ y ∈ ↑(g_seq_s n) ⁻¹' {x} ∩ sᶜ ↔ y ∈ ∅
[PROOFSTEP]
simp only [mem_inter_iff, mem_preimage, mem_singleton_iff, mem_compl_iff, mem_empty_iff_false, iff_false_iff, not_and,
  not_not_mem]
[GOAL]
case neg.h
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
hx : ¬x = 0
y : α
⊢ ↑(g_seq_s n) y = x → y ∈ s
[PROOFSTEP]
refine' Function.mtr fun hys => _
[GOAL]
case neg.h
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
hx : ¬x = 0
y : α
hys : ¬y ∈ s
⊢ ¬↑(g_seq_s n) y = x
[PROOFSTEP]
rw [hg_seq_zero y hys n]
[GOAL]
case neg.h
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
n : ℕ
x : E
hx : ¬x = 0
y : α
hys : ¬y ∈ s
⊢ ¬0 = x
[PROOFSTEP]
exact Ne.symm hx
[GOAL]
case intro.intro
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g : α✝ → β
α : Type u_5
E : Type u_6
m m₂ : MeasurableSpace α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : StronglyMeasurable f
hf_zero : ∀ (x : α), ¬x ∈ s → f x = 0
hs_m₂ : MeasurableSet s
g_seq_s : ℕ → α →ₛ E
hg_seq_tendsto : ∀ (x : α), Tendsto (fun n => ↑(g_seq_s n) x) atTop (𝓝 (f x))
hg_seq_zero : ∀ (x : α), ¬x ∈ s → ∀ (n : ℕ), ↑(g_seq_s n) x = 0
g_seq_s₂ : ℕ → α →ₛ E :=
  fun n =>
    { toFun := ↑(g_seq_s n), measurableSet_fiber' := (_ : ∀ (x : E), MeasurableSet (↑(g_seq_s n) ⁻¹' {x})),
      finite_range' := (_ : Set.Finite (range ↑(g_seq_s n))) }
⊢ StronglyMeasurable f
[PROOFSTEP]
exact ⟨g_seq_s₂, hg_seq_tendsto⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
⊢ ∃ s, (∀ (n : ℕ), MeasurableSet (s n) ∧ ↑↑μ (s n) < ⊤ ∧ ∀ (x : α), x ∈ s n → ‖f x‖ ≤ ↑n) ∧ ⋃ (i : ℕ), s i = univ
[PROOFSTEP]
let sigma_finite_sets := spanningSets (μ.trim hm)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
⊢ ∃ s, (∀ (n : ℕ), MeasurableSet (s n) ∧ ↑↑μ (s n) < ⊤ ∧ ∀ (x : α), x ∈ s n → ‖f x‖ ≤ ↑n) ∧ ⋃ (i : ℕ), s i = univ
[PROOFSTEP]
let norm_sets := fun n : ℕ => {x | ‖f x‖ ≤ n}
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
⊢ ∃ s, (∀ (n : ℕ), MeasurableSet (s n) ∧ ↑↑μ (s n) < ⊤ ∧ ∀ (x : α), x ∈ s n → ‖f x‖ ≤ ↑n) ∧ ⋃ (i : ℕ), s i = univ
[PROOFSTEP]
have norm_sets_spanning : ⋃ n, norm_sets n = Set.univ :=
  by
  ext1 x
  simp only [Set.mem_iUnion, Set.mem_setOf_eq, Set.mem_univ, iff_true_iff]
  exact ⟨⌈‖f x‖⌉₊, Nat.le_ceil ‖f x‖⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
⊢ ⋃ (n : ℕ), norm_sets n = univ
[PROOFSTEP]
ext1 x
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
x : α
⊢ x ∈ ⋃ (n : ℕ), norm_sets n ↔ x ∈ univ
[PROOFSTEP]
simp only [Set.mem_iUnion, Set.mem_setOf_eq, Set.mem_univ, iff_true_iff]
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
x : α
⊢ ∃ i, ‖f x‖ ≤ ↑i
[PROOFSTEP]
exact ⟨⌈‖f x‖⌉₊, Nat.le_ceil ‖f x‖⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
norm_sets_spanning : ⋃ (n : ℕ), norm_sets n = univ
⊢ ∃ s, (∀ (n : ℕ), MeasurableSet (s n) ∧ ↑↑μ (s n) < ⊤ ∧ ∀ (x : α), x ∈ s n → ‖f x‖ ≤ ↑n) ∧ ⋃ (i : ℕ), s i = univ
[PROOFSTEP]
let sets n := sigma_finite_sets n ∩ norm_sets n
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
norm_sets_spanning : ⋃ (n : ℕ), norm_sets n = univ
sets : ℕ → Set α := fun n => sigma_finite_sets n ∩ norm_sets n
⊢ ∃ s, (∀ (n : ℕ), MeasurableSet (s n) ∧ ↑↑μ (s n) < ⊤ ∧ ∀ (x : α), x ∈ s n → ‖f x‖ ≤ ↑n) ∧ ⋃ (i : ℕ), s i = univ
[PROOFSTEP]
have h_meas : ∀ n, MeasurableSet[m] (sets n) :=
  by
  refine' fun n => MeasurableSet.inter _ _
  · exact measurable_spanningSets (μ.trim hm) n
  · exact hf.norm.measurableSet_le stronglyMeasurable_const
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
norm_sets_spanning : ⋃ (n : ℕ), norm_sets n = univ
sets : ℕ → Set α := fun n => sigma_finite_sets n ∩ norm_sets n
⊢ ∀ (n : ℕ), MeasurableSet (sets n)
[PROOFSTEP]
refine' fun n => MeasurableSet.inter _ _
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
norm_sets_spanning : ⋃ (n : ℕ), norm_sets n = univ
sets : ℕ → Set α := fun n => sigma_finite_sets n ∩ norm_sets n
n : ℕ
⊢ MeasurableSet (sigma_finite_sets n)
[PROOFSTEP]
exact measurable_spanningSets (μ.trim hm) n
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
norm_sets_spanning : ⋃ (n : ℕ), norm_sets n = univ
sets : ℕ → Set α := fun n => sigma_finite_sets n ∩ norm_sets n
n : ℕ
⊢ MeasurableSet (norm_sets n)
[PROOFSTEP]
exact hf.norm.measurableSet_le stronglyMeasurable_const
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
norm_sets_spanning : ⋃ (n : ℕ), norm_sets n = univ
sets : ℕ → Set α := fun n => sigma_finite_sets n ∩ norm_sets n
h_meas : ∀ (n : ℕ), MeasurableSet (sets n)
⊢ ∃ s, (∀ (n : ℕ), MeasurableSet (s n) ∧ ↑↑μ (s n) < ⊤ ∧ ∀ (x : α), x ∈ s n → ‖f x‖ ≤ ↑n) ∧ ⋃ (i : ℕ), s i = univ
[PROOFSTEP]
have h_finite : ∀ n, μ (sets n) < ∞ :=
  by
  refine' fun n => (measure_mono (Set.inter_subset_left _ _)).trans_lt _
  exact (le_trim hm).trans_lt (measure_spanningSets_lt_top (μ.trim hm) n)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
norm_sets_spanning : ⋃ (n : ℕ), norm_sets n = univ
sets : ℕ → Set α := fun n => sigma_finite_sets n ∩ norm_sets n
h_meas : ∀ (n : ℕ), MeasurableSet (sets n)
⊢ ∀ (n : ℕ), ↑↑μ (sets n) < ⊤
[PROOFSTEP]
refine' fun n => (measure_mono (Set.inter_subset_left _ _)).trans_lt _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
norm_sets_spanning : ⋃ (n : ℕ), norm_sets n = univ
sets : ℕ → Set α := fun n => sigma_finite_sets n ∩ norm_sets n
h_meas : ∀ (n : ℕ), MeasurableSet (sets n)
n : ℕ
⊢ ↑↑μ (sigma_finite_sets n) < ⊤
[PROOFSTEP]
exact (le_trim hm).trans_lt (measure_spanningSets_lt_top (μ.trim hm) n)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
norm_sets_spanning : ⋃ (n : ℕ), norm_sets n = univ
sets : ℕ → Set α := fun n => sigma_finite_sets n ∩ norm_sets n
h_meas : ∀ (n : ℕ), MeasurableSet (sets n)
h_finite : ∀ (n : ℕ), ↑↑μ (sets n) < ⊤
⊢ ∃ s, (∀ (n : ℕ), MeasurableSet (s n) ∧ ↑↑μ (s n) < ⊤ ∧ ∀ (x : α), x ∈ s n → ‖f x‖ ≤ ↑n) ∧ ⋃ (i : ℕ), s i = univ
[PROOFSTEP]
refine' ⟨sets, fun n => ⟨h_meas n, h_finite n, _⟩, _⟩
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
norm_sets_spanning : ⋃ (n : ℕ), norm_sets n = univ
sets : ℕ → Set α := fun n => sigma_finite_sets n ∩ norm_sets n
h_meas : ∀ (n : ℕ), MeasurableSet (sets n)
h_finite : ∀ (n : ℕ), ↑↑μ (sets n) < ⊤
n : ℕ
⊢ ∀ (x : α), x ∈ sets n → ‖f x‖ ≤ ↑n
[PROOFSTEP]
exact fun x hx => hx.2
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
norm_sets_spanning : ⋃ (n : ℕ), norm_sets n = univ
sets : ℕ → Set α := fun n => sigma_finite_sets n ∩ norm_sets n
h_meas : ∀ (n : ℕ), MeasurableSet (sets n)
h_finite : ∀ (n : ℕ), ↑↑μ (sets n) < ⊤
⊢ ⋃ (i : ℕ), sets i = univ
[PROOFSTEP]
have : ⋃ i, sigma_finite_sets i ∩ norm_sets i = (⋃ i, sigma_finite_sets i) ∩ ⋃ i, norm_sets i :=
  by
  refine' Set.iUnion_inter_of_monotone (monotone_spanningSets (μ.trim hm)) fun i j hij x => _
  simp only [Set.mem_setOf_eq]
  refine' fun hif => hif.trans _
  exact_mod_cast hij
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
norm_sets_spanning : ⋃ (n : ℕ), norm_sets n = univ
sets : ℕ → Set α := fun n => sigma_finite_sets n ∩ norm_sets n
h_meas : ∀ (n : ℕ), MeasurableSet (sets n)
h_finite : ∀ (n : ℕ), ↑↑μ (sets n) < ⊤
⊢ ⋃ (i : ℕ), sigma_finite_sets i ∩ norm_sets i = (⋃ (i : ℕ), sigma_finite_sets i) ∩ ⋃ (i : ℕ), norm_sets i
[PROOFSTEP]
refine' Set.iUnion_inter_of_monotone (monotone_spanningSets (μ.trim hm)) fun i j hij x => _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
norm_sets_spanning : ⋃ (n : ℕ), norm_sets n = univ
sets : ℕ → Set α := fun n => sigma_finite_sets n ∩ norm_sets n
h_meas : ∀ (n : ℕ), MeasurableSet (sets n)
h_finite : ∀ (n : ℕ), ↑↑μ (sets n) < ⊤
i j : ℕ
hij : i ≤ j
x : α
⊢ x ∈ norm_sets i → x ∈ norm_sets j
[PROOFSTEP]
simp only [Set.mem_setOf_eq]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
norm_sets_spanning : ⋃ (n : ℕ), norm_sets n = univ
sets : ℕ → Set α := fun n => sigma_finite_sets n ∩ norm_sets n
h_meas : ∀ (n : ℕ), MeasurableSet (sets n)
h_finite : ∀ (n : ℕ), ↑↑μ (sets n) < ⊤
i j : ℕ
hij : i ≤ j
x : α
⊢ ‖f x‖ ≤ ↑i → ‖f x‖ ≤ ↑j
[PROOFSTEP]
refine' fun hif => hif.trans _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
norm_sets_spanning : ⋃ (n : ℕ), norm_sets n = univ
sets : ℕ → Set α := fun n => sigma_finite_sets n ∩ norm_sets n
h_meas : ∀ (n : ℕ), MeasurableSet (sets n)
h_finite : ∀ (n : ℕ), ↑↑μ (sets n) < ⊤
i j : ℕ
hij : i ≤ j
x : α
hif : ‖f x‖ ≤ ↑i
⊢ ↑i ≤ ↑j
[PROOFSTEP]
exact_mod_cast hij
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f g : α → β
inst✝¹ : SeminormedAddCommGroup β
m m0 : MeasurableSpace α
hm : m ≤ m0
hf : StronglyMeasurable f
μ : Measure α
inst✝ : SigmaFinite (trim μ hm)
sigma_finite_sets : ℕ → Set α := spanningSets (trim μ hm)
norm_sets : ℕ → Set α := fun n => {x | ‖f x‖ ≤ ↑n}
norm_sets_spanning : ⋃ (n : ℕ), norm_sets n = univ
sets : ℕ → Set α := fun n => sigma_finite_sets n ∩ norm_sets n
h_meas : ∀ (n : ℕ), MeasurableSet (sets n)
h_finite : ∀ (n : ℕ), ↑↑μ (sets n) < ⊤
this : ⋃ (i : ℕ), sigma_finite_sets i ∩ norm_sets i = (⋃ (i : ℕ), sigma_finite_sets i) ∩ ⋃ (i : ℕ), norm_sets i
⊢ ⋃ (i : ℕ), sets i = univ
[PROOFSTEP]
rw [this, norm_sets_spanning, iUnion_spanningSets (μ.trim hm), Set.inter_univ]
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
μ : Measure α
inst✝¹ : Zero β
inst✝ : TopologicalSpace β
⊢ ∀ (n : ℕ), ↑↑μ (support ↑(OfNat.ofNat 0 n)) < ⊤
[PROOFSTEP]
simp only [Pi.zero_apply, SimpleFunc.coe_zero, support_zero', measure_empty, WithTop.zero_lt_top, forall_const]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
hf : FinStronglyMeasurable f μ
⊢ ∃ t, MeasurableSet t ∧ (∀ (x : α), x ∈ tᶜ → f x = 0) ∧ SigmaFinite (Measure.restrict μ t)
[PROOFSTEP]
rcases hf with ⟨fs, hT_lt_top, h_approx⟩
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
fs : ℕ → α →ₛ β
hT_lt_top : ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤
h_approx : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
⊢ ∃ t, MeasurableSet t ∧ (∀ (x : α), x ∈ tᶜ → f x = 0) ∧ SigmaFinite (Measure.restrict μ t)
[PROOFSTEP]
let T n := support (fs n)
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
fs : ℕ → α →ₛ β
hT_lt_top : ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤
h_approx : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
T : ℕ → Set α := fun n => support ↑(fs n)
⊢ ∃ t, MeasurableSet t ∧ (∀ (x : α), x ∈ tᶜ → f x = 0) ∧ SigmaFinite (Measure.restrict μ t)
[PROOFSTEP]
have hT_meas : ∀ n, MeasurableSet (T n) := fun n => SimpleFunc.measurableSet_support (fs n)
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
fs : ℕ → α →ₛ β
hT_lt_top : ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤
h_approx : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
T : ℕ → Set α := fun n => support ↑(fs n)
hT_meas : ∀ (n : ℕ), MeasurableSet (T n)
⊢ ∃ t, MeasurableSet t ∧ (∀ (x : α), x ∈ tᶜ → f x = 0) ∧ SigmaFinite (Measure.restrict μ t)
[PROOFSTEP]
let t := ⋃ n, T n
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
fs : ℕ → α →ₛ β
hT_lt_top : ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤
h_approx : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
T : ℕ → Set α := fun n => support ↑(fs n)
hT_meas : ∀ (n : ℕ), MeasurableSet (T n)
t : Set α := ⋃ (n : ℕ), T n
⊢ ∃ t, MeasurableSet t ∧ (∀ (x : α), x ∈ tᶜ → f x = 0) ∧ SigmaFinite (Measure.restrict μ t)
[PROOFSTEP]
refine' ⟨t, MeasurableSet.iUnion hT_meas, _, _⟩
[GOAL]
case intro.intro.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
fs : ℕ → α →ₛ β
hT_lt_top : ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤
h_approx : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
T : ℕ → Set α := fun n => support ↑(fs n)
hT_meas : ∀ (n : ℕ), MeasurableSet (T n)
t : Set α := ⋃ (n : ℕ), T n
⊢ ∀ (x : α), x ∈ tᶜ → f x = 0
[PROOFSTEP]
have h_fs_zero : ∀ n, ∀ x ∈ tᶜ, fs n x = 0 := by
  intro n x hxt
  rw [Set.mem_compl_iff, Set.mem_iUnion, not_exists] at hxt 
  simpa using hxt n
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
fs : ℕ → α →ₛ β
hT_lt_top : ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤
h_approx : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
T : ℕ → Set α := fun n => support ↑(fs n)
hT_meas : ∀ (n : ℕ), MeasurableSet (T n)
t : Set α := ⋃ (n : ℕ), T n
⊢ ∀ (n : ℕ) (x : α), x ∈ tᶜ → ↑(fs n) x = 0
[PROOFSTEP]
intro n x hxt
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
fs : ℕ → α →ₛ β
hT_lt_top : ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤
h_approx : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
T : ℕ → Set α := fun n => support ↑(fs n)
hT_meas : ∀ (n : ℕ), MeasurableSet (T n)
t : Set α := ⋃ (n : ℕ), T n
n : ℕ
x : α
hxt : x ∈ tᶜ
⊢ ↑(fs n) x = 0
[PROOFSTEP]
rw [Set.mem_compl_iff, Set.mem_iUnion, not_exists] at hxt 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
fs : ℕ → α →ₛ β
hT_lt_top : ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤
h_approx : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
T : ℕ → Set α := fun n => support ↑(fs n)
hT_meas : ∀ (n : ℕ), MeasurableSet (T n)
t : Set α := ⋃ (n : ℕ), T n
n : ℕ
x : α
hxt : ∀ (x_1 : ℕ), ¬x ∈ T x_1
⊢ ↑(fs n) x = 0
[PROOFSTEP]
simpa using hxt n
[GOAL]
case intro.intro.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
fs : ℕ → α →ₛ β
hT_lt_top : ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤
h_approx : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
T : ℕ → Set α := fun n => support ↑(fs n)
hT_meas : ∀ (n : ℕ), MeasurableSet (T n)
t : Set α := ⋃ (n : ℕ), T n
h_fs_zero : ∀ (n : ℕ) (x : α), x ∈ tᶜ → ↑(fs n) x = 0
⊢ ∀ (x : α), x ∈ tᶜ → f x = 0
[PROOFSTEP]
refine' fun x hxt => tendsto_nhds_unique (h_approx x) _
[GOAL]
case intro.intro.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
fs : ℕ → α →ₛ β
hT_lt_top : ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤
h_approx : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
T : ℕ → Set α := fun n => support ↑(fs n)
hT_meas : ∀ (n : ℕ), MeasurableSet (T n)
t : Set α := ⋃ (n : ℕ), T n
h_fs_zero : ∀ (n : ℕ) (x : α), x ∈ tᶜ → ↑(fs n) x = 0
x : α
hxt : x ∈ tᶜ
⊢ Tendsto (fun n => ↑(fs n) x) atTop (𝓝 0)
[PROOFSTEP]
rw [funext fun n => h_fs_zero n x hxt]
[GOAL]
case intro.intro.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
fs : ℕ → α →ₛ β
hT_lt_top : ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤
h_approx : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
T : ℕ → Set α := fun n => support ↑(fs n)
hT_meas : ∀ (n : ℕ), MeasurableSet (T n)
t : Set α := ⋃ (n : ℕ), T n
h_fs_zero : ∀ (n : ℕ) (x : α), x ∈ tᶜ → ↑(fs n) x = 0
x : α
hxt : x ∈ tᶜ
⊢ Tendsto (fun n => 0) atTop (𝓝 0)
[PROOFSTEP]
exact tendsto_const_nhds
[GOAL]
case intro.intro.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
fs : ℕ → α →ₛ β
hT_lt_top : ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤
h_approx : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
T : ℕ → Set α := fun n => support ↑(fs n)
hT_meas : ∀ (n : ℕ), MeasurableSet (T n)
t : Set α := ⋃ (n : ℕ), T n
⊢ SigmaFinite (Measure.restrict μ t)
[PROOFSTEP]
refine' ⟨⟨⟨fun n => tᶜ ∪ T n, fun _ => trivial, fun n => _, _⟩⟩⟩
[GOAL]
case intro.intro.refine'_2.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
fs : ℕ → α →ₛ β
hT_lt_top : ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤
h_approx : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
T : ℕ → Set α := fun n => support ↑(fs n)
hT_meas : ∀ (n : ℕ), MeasurableSet (T n)
t : Set α := ⋃ (n : ℕ), T n
n : ℕ
⊢ ↑↑(Measure.restrict μ t) ((fun n => tᶜ ∪ T n) n) < ⊤
[PROOFSTEP]
rw [Measure.restrict_apply' (MeasurableSet.iUnion hT_meas), Set.union_inter_distrib_right, Set.compl_inter_self t,
  Set.empty_union]
[GOAL]
case intro.intro.refine'_2.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
fs : ℕ → α →ₛ β
hT_lt_top : ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤
h_approx : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
T : ℕ → Set α := fun n => support ↑(fs n)
hT_meas : ∀ (n : ℕ), MeasurableSet (T n)
t : Set α := ⋃ (n : ℕ), T n
n : ℕ
⊢ ↑↑μ (T n ∩ ⋃ (b : ℕ), T b) < ⊤
[PROOFSTEP]
exact (measure_mono (Set.inter_subset_left _ _)).trans_lt (hT_lt_top n)
[GOAL]
case intro.intro.refine'_2.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
fs : ℕ → α →ₛ β
hT_lt_top : ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤
h_approx : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
T : ℕ → Set α := fun n => support ↑(fs n)
hT_meas : ∀ (n : ℕ), MeasurableSet (T n)
t : Set α := ⋃ (n : ℕ), T n
⊢ ⋃ (i : ℕ), (fun n => tᶜ ∪ T n) i = univ
[PROOFSTEP]
rw [← Set.union_iUnion tᶜ T]
[GOAL]
case intro.intro.refine'_2.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : Zero β
inst✝¹ : TopologicalSpace β
inst✝ : T2Space β
fs : ℕ → α →ₛ β
hT_lt_top : ∀ (n : ℕ), ↑↑μ (support ↑(fs n)) < ⊤
h_approx : ∀ (x : α), Tendsto (fun n => ↑(fs n) x) atTop (𝓝 (f x))
T : ℕ → Set α := fun n => support ↑(fs n)
hT_meas : ∀ (n : ℕ), MeasurableSet (T n)
t : Set α := ⋃ (n : ℕ), T n
⊢ tᶜ ∪ ⋃ (i : ℕ), T i = univ
[PROOFSTEP]
exact Set.compl_union_self _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : MonoidWithZero β
inst✝ : ContinuousMul β
hf : FinStronglyMeasurable f μ
hg : FinStronglyMeasurable g μ
⊢ FinStronglyMeasurable (f * g) μ
[PROOFSTEP]
refine' ⟨fun n => hf.approx n * hg.approx n, _, fun x => (hf.tendsto_approx x).mul (hg.tendsto_approx x)⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : MonoidWithZero β
inst✝ : ContinuousMul β
hf : FinStronglyMeasurable f μ
hg : FinStronglyMeasurable g μ
⊢ ∀ (n : ℕ), ↑↑μ (support ↑((fun n => FinStronglyMeasurable.approx hf n * FinStronglyMeasurable.approx hg n) n)) < ⊤
[PROOFSTEP]
intro n
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : MonoidWithZero β
inst✝ : ContinuousMul β
hf : FinStronglyMeasurable f μ
hg : FinStronglyMeasurable g μ
n : ℕ
⊢ ↑↑μ (support ↑((fun n => FinStronglyMeasurable.approx hf n * FinStronglyMeasurable.approx hg n) n)) < ⊤
[PROOFSTEP]
exact (measure_mono (support_mul_subset_left _ _)).trans_lt (hf.fin_support_approx n)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : AddGroup β
inst✝ : TopologicalAddGroup β
hf : FinStronglyMeasurable f μ
⊢ FinStronglyMeasurable (-f) μ
[PROOFSTEP]
refine' ⟨fun n => -hf.approx n, fun n => _, fun x => (hf.tendsto_approx x).neg⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : AddGroup β
inst✝ : TopologicalAddGroup β
hf : FinStronglyMeasurable f μ
n : ℕ
⊢ ↑↑μ (support ↑((fun n => -FinStronglyMeasurable.approx hf n) n)) < ⊤
[PROOFSTEP]
suffices μ (Function.support fun x => -(hf.approx n) x) < ∞ by convert this
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : AddGroup β
inst✝ : TopologicalAddGroup β
hf : FinStronglyMeasurable f μ
n : ℕ
this : ↑↑μ (support fun x => -↑(FinStronglyMeasurable.approx hf n) x) < ⊤
⊢ ↑↑μ (support ↑((fun n => -FinStronglyMeasurable.approx hf n) n)) < ⊤
[PROOFSTEP]
convert this
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : AddGroup β
inst✝ : TopologicalAddGroup β
hf : FinStronglyMeasurable f μ
n : ℕ
⊢ ↑↑μ (support fun x => -↑(FinStronglyMeasurable.approx hf n) x) < ⊤
[PROOFSTEP]
rw [Function.support_neg (hf.approx n)]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝² : TopologicalSpace β
inst✝¹ : AddGroup β
inst✝ : TopologicalAddGroup β
hf : FinStronglyMeasurable f μ
n : ℕ
⊢ ↑↑μ (support ↑(FinStronglyMeasurable.approx hf n)) < ⊤
[PROOFSTEP]
exact hf.fin_support_approx n
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁶ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝⁵ : TopologicalSpace β
𝕜 : Type u_5
inst✝⁴ : TopologicalSpace 𝕜
inst✝³ : AddMonoid β
inst✝² : Monoid 𝕜
inst✝¹ : DistribMulAction 𝕜 β
inst✝ : ContinuousSMul 𝕜 β
hf : FinStronglyMeasurable f μ
c : 𝕜
⊢ FinStronglyMeasurable (c • f) μ
[PROOFSTEP]
refine' ⟨fun n => c • hf.approx n, fun n => _, fun x => (hf.tendsto_approx x).const_smul c⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁶ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝⁵ : TopologicalSpace β
𝕜 : Type u_5
inst✝⁴ : TopologicalSpace 𝕜
inst✝³ : AddMonoid β
inst✝² : Monoid 𝕜
inst✝¹ : DistribMulAction 𝕜 β
inst✝ : ContinuousSMul 𝕜 β
hf : FinStronglyMeasurable f μ
c : 𝕜
n : ℕ
⊢ ↑↑μ (support ↑((fun n => c • FinStronglyMeasurable.approx hf n) n)) < ⊤
[PROOFSTEP]
rw [SimpleFunc.coe_smul]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁶ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝⁵ : TopologicalSpace β
𝕜 : Type u_5
inst✝⁴ : TopologicalSpace 𝕜
inst✝³ : AddMonoid β
inst✝² : Monoid 𝕜
inst✝¹ : DistribMulAction 𝕜 β
inst✝ : ContinuousSMul 𝕜 β
hf : FinStronglyMeasurable f μ
c : 𝕜
n : ℕ
⊢ ↑↑μ (support (c • ↑(FinStronglyMeasurable.approx hf n))) < ⊤
[PROOFSTEP]
refine' (measure_mono (support_smul_subset_right c _)).trans_lt (hf.fin_support_approx n)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝³ : TopologicalSpace β
inst✝² : Zero β
inst✝¹ : SemilatticeSup β
inst✝ : ContinuousSup β
hf : FinStronglyMeasurable f μ
hg : FinStronglyMeasurable g μ
⊢ FinStronglyMeasurable (f ⊔ g) μ
[PROOFSTEP]
refine'
  ⟨fun n => hf.approx n ⊔ hg.approx n, fun n => _, fun x => (hf.tendsto_approx x).sup_right_nhds (hg.tendsto_approx x)⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝³ : TopologicalSpace β
inst✝² : Zero β
inst✝¹ : SemilatticeSup β
inst✝ : ContinuousSup β
hf : FinStronglyMeasurable f μ
hg : FinStronglyMeasurable g μ
n : ℕ
⊢ ↑↑μ (support ↑((fun n => FinStronglyMeasurable.approx hf n ⊔ FinStronglyMeasurable.approx hg n) n)) < ⊤
[PROOFSTEP]
refine' (measure_mono (support_sup _ _)).trans_lt _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝³ : TopologicalSpace β
inst✝² : Zero β
inst✝¹ : SemilatticeSup β
inst✝ : ContinuousSup β
hf : FinStronglyMeasurable f μ
hg : FinStronglyMeasurable g μ
n : ℕ
⊢ ↑↑μ
      ((support fun x => ↑(FinStronglyMeasurable.approx hf n) x) ∪
        support fun x => ↑(FinStronglyMeasurable.approx hg n) x) <
    ⊤
[PROOFSTEP]
exact measure_union_lt_top_iff.mpr ⟨hf.fin_support_approx n, hg.fin_support_approx n⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝³ : TopologicalSpace β
inst✝² : Zero β
inst✝¹ : SemilatticeInf β
inst✝ : ContinuousInf β
hf : FinStronglyMeasurable f μ
hg : FinStronglyMeasurable g μ
⊢ FinStronglyMeasurable (f ⊓ g) μ
[PROOFSTEP]
refine'
  ⟨fun n => hf.approx n ⊓ hg.approx n, fun n => _, fun x => (hf.tendsto_approx x).inf_right_nhds (hg.tendsto_approx x)⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝³ : TopologicalSpace β
inst✝² : Zero β
inst✝¹ : SemilatticeInf β
inst✝ : ContinuousInf β
hf : FinStronglyMeasurable f μ
hg : FinStronglyMeasurable g μ
n : ℕ
⊢ ↑↑μ (support ↑((fun n => FinStronglyMeasurable.approx hf n ⊓ FinStronglyMeasurable.approx hg n) n)) < ⊤
[PROOFSTEP]
refine' (measure_mono (support_inf _ _)).trans_lt _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝³ : TopologicalSpace β
inst✝² : Zero β
inst✝¹ : SemilatticeInf β
inst✝ : ContinuousInf β
hf : FinStronglyMeasurable f μ
hg : FinStronglyMeasurable g μ
n : ℕ
⊢ ↑↑μ
      ((support fun x => ↑(FinStronglyMeasurable.approx hf n) x) ∪
        support fun x => ↑(FinStronglyMeasurable.approx hg n) x) <
    ⊤
[PROOFSTEP]
exact measure_union_lt_top_iff.mpr ⟨hf.fin_support_approx n, hg.fin_support_approx n⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
inst✝¹ : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
⊢ AEStronglyMeasurable f 0
[PROOFSTEP]
nontriviality α
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
inst✝¹ : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
✝ : Nontrivial α
⊢ AEStronglyMeasurable f 0
[PROOFSTEP]
inhabit α
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
inst✝¹ : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
✝ : Nontrivial α
inhabited_h : Inhabited α
⊢ AEStronglyMeasurable f 0
[PROOFSTEP]
exact ⟨fun _ => f default, stronglyMeasurable_const, rfl⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f g : α → β
M : Type u_5
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
l : List (α → M)
hl : ∀ (f : α → M), f ∈ l → AEStronglyMeasurable f μ
⊢ AEStronglyMeasurable (List.prod l) μ
[PROOFSTEP]
induction' l with f l ihl
[GOAL]
case nil
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f g : α → β
M : Type u_5
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
l : List (α → M)
hl✝ : ∀ (f : α → M), f ∈ l → AEStronglyMeasurable f μ
hl : ∀ (f : α → M), f ∈ [] → AEStronglyMeasurable f μ
⊢ AEStronglyMeasurable (List.prod []) μ
[PROOFSTEP]
exact aestronglyMeasurable_one
[GOAL]
case cons
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g : α → β
M : Type u_5
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
l✝ : List (α → M)
hl✝ : ∀ (f : α → M), f ∈ l✝ → AEStronglyMeasurable f μ
f : α → M
l : List (α → M)
ihl : (∀ (f : α → M), f ∈ l → AEStronglyMeasurable f μ) → AEStronglyMeasurable (List.prod l) μ
hl : ∀ (f_1 : α → M), f_1 ∈ f :: l → AEStronglyMeasurable f_1 μ
⊢ AEStronglyMeasurable (List.prod (f :: l)) μ
[PROOFSTEP]
rw [List.forall_mem_cons] at hl 
[GOAL]
case cons
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g : α → β
M : Type u_5
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
l✝ : List (α → M)
hl✝ : ∀ (f : α → M), f ∈ l✝ → AEStronglyMeasurable f μ
f : α → M
l : List (α → M)
ihl : (∀ (f : α → M), f ∈ l → AEStronglyMeasurable f μ) → AEStronglyMeasurable (List.prod l) μ
hl : AEStronglyMeasurable f μ ∧ ∀ (x : α → M), x ∈ l → AEStronglyMeasurable x μ
⊢ AEStronglyMeasurable (List.prod (f :: l)) μ
[PROOFSTEP]
rw [List.prod_cons]
[GOAL]
case cons
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g : α → β
M : Type u_5
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
l✝ : List (α → M)
hl✝ : ∀ (f : α → M), f ∈ l✝ → AEStronglyMeasurable f μ
f : α → M
l : List (α → M)
ihl : (∀ (f : α → M), f ∈ l → AEStronglyMeasurable f μ) → AEStronglyMeasurable (List.prod l) μ
hl : AEStronglyMeasurable f μ ∧ ∀ (x : α → M), x ∈ l → AEStronglyMeasurable x μ
⊢ AEStronglyMeasurable (f * List.prod l) μ
[PROOFSTEP]
exact hl.1.mul (ihl hl.2)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f g : α → β
M : Type u_5
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
l : List (α → M)
hl : ∀ (f : α → M), f ∈ l → AEStronglyMeasurable f μ
⊢ AEStronglyMeasurable (fun x => List.prod (List.map (fun f => f x) l)) μ
[PROOFSTEP]
simpa only [← Pi.list_prod_apply] using l.aestronglyMeasurable_prod' hl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f g : α → β
M : Type u_5
inst✝² : CommMonoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
l : Multiset (α → M)
hl : ∀ (f : α → M), f ∈ l → AEStronglyMeasurable f μ
⊢ AEStronglyMeasurable (Multiset.prod l) μ
[PROOFSTEP]
rcases l with ⟨l⟩
[GOAL]
case mk
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f g : α → β
M : Type u_5
inst✝² : CommMonoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
l✝ : Multiset (α → M)
l : List (α → M)
hl : ∀ (f : α → M), f ∈ Quot.mk Setoid.r l → AEStronglyMeasurable f μ
⊢ AEStronglyMeasurable (Multiset.prod (Quot.mk Setoid.r l)) μ
[PROOFSTEP]
simpa using l.aestronglyMeasurable_prod' (by simpa using hl)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f g : α → β
M : Type u_5
inst✝² : CommMonoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
l✝ : Multiset (α → M)
l : List (α → M)
hl : ∀ (f : α → M), f ∈ Quot.mk Setoid.r l → AEStronglyMeasurable f μ
⊢ ∀ (f : α → M), f ∈ l → AEStronglyMeasurable f μ
[PROOFSTEP]
simpa using hl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f g : α → β
M : Type u_5
inst✝² : CommMonoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
s : Multiset (α → M)
hs : ∀ (f : α → M), f ∈ s → AEStronglyMeasurable f μ
⊢ AEStronglyMeasurable (fun x => Multiset.prod (Multiset.map (fun f => f x) s)) μ
[PROOFSTEP]
simpa only [← Pi.multiset_prod_apply] using s.aestronglyMeasurable_prod' hs
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁵ : Countable ι✝
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g : α → β
M : Type u_5
inst✝² : CommMonoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
ι : Type u_6
f : ι → α → M
s : Finset ι
hf : ∀ (i : ι), i ∈ s → AEStronglyMeasurable (f i) μ
⊢ AEStronglyMeasurable (fun a => ∏ i in s, f i a) μ
[PROOFSTEP]
simpa only [← Finset.prod_apply] using s.aestronglyMeasurable_prod' hf
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : Zero β
s : Set α
hs : MeasurableSet s
⊢ AEStronglyMeasurable (indicator s f) μ ↔ AEStronglyMeasurable f (Measure.restrict μ s)
[PROOFSTEP]
constructor
[GOAL]
case mp
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : Zero β
s : Set α
hs : MeasurableSet s
⊢ AEStronglyMeasurable (indicator s f) μ → AEStronglyMeasurable f (Measure.restrict μ s)
[PROOFSTEP]
intro h
[GOAL]
case mp
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : Zero β
s : Set α
hs : MeasurableSet s
h : AEStronglyMeasurable (indicator s f) μ
⊢ AEStronglyMeasurable f (Measure.restrict μ s)
[PROOFSTEP]
exact (h.mono_measure Measure.restrict_le_self).congr (indicator_ae_eq_restrict hs)
[GOAL]
case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : Zero β
s : Set α
hs : MeasurableSet s
⊢ AEStronglyMeasurable f (Measure.restrict μ s) → AEStronglyMeasurable (indicator s f) μ
[PROOFSTEP]
intro h
[GOAL]
case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : Zero β
s : Set α
hs : MeasurableSet s
h : AEStronglyMeasurable f (Measure.restrict μ s)
⊢ AEStronglyMeasurable (indicator s f) μ
[PROOFSTEP]
refine' ⟨indicator s (h.mk f), h.stronglyMeasurable_mk.indicator hs, _⟩
[GOAL]
case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : Zero β
s : Set α
hs : MeasurableSet s
h : AEStronglyMeasurable f (Measure.restrict μ s)
⊢ indicator s f =ᶠ[ae μ] indicator s (AEStronglyMeasurable.mk f h)
[PROOFSTEP]
have A : s.indicator f =ᵐ[μ.restrict s] s.indicator (h.mk f) :=
  (indicator_ae_eq_restrict hs).trans (h.ae_eq_mk.trans <| (indicator_ae_eq_restrict hs).symm)
[GOAL]
case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : Zero β
s : Set α
hs : MeasurableSet s
h : AEStronglyMeasurable f (Measure.restrict μ s)
A : indicator s f =ᶠ[ae (Measure.restrict μ s)] indicator s (AEStronglyMeasurable.mk f h)
⊢ indicator s f =ᶠ[ae μ] indicator s (AEStronglyMeasurable.mk f h)
[PROOFSTEP]
have B : s.indicator f =ᵐ[μ.restrict sᶜ] s.indicator (h.mk f) :=
  (indicator_ae_eq_restrict_compl hs).trans (indicator_ae_eq_restrict_compl hs).symm
[GOAL]
case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : Zero β
s : Set α
hs : MeasurableSet s
h : AEStronglyMeasurable f (Measure.restrict μ s)
A : indicator s f =ᶠ[ae (Measure.restrict μ s)] indicator s (AEStronglyMeasurable.mk f h)
B : indicator s f =ᶠ[ae (Measure.restrict μ sᶜ)] indicator s (AEStronglyMeasurable.mk f h)
⊢ indicator s f =ᶠ[ae μ] indicator s (AEStronglyMeasurable.mk f h)
[PROOFSTEP]
exact ae_of_ae_restrict_of_ae_restrict_compl _ A B
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : TopologicalSpace E
inst✝ : MetrizableSpace E
f g : α → E
hf : AEStronglyMeasurable f μ
hg : AEStronglyMeasurable g μ
⊢ NullMeasurableSet {x | f x = g x}
[PROOFSTEP]
apply (hf.stronglyMeasurable_mk.measurableSet_eq_fun hg.stronglyMeasurable_mk).nullMeasurableSet.congr
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : TopologicalSpace E
inst✝ : MetrizableSpace E
f g : α → E
hf : AEStronglyMeasurable f μ
hg : AEStronglyMeasurable g μ
⊢ {x | AEStronglyMeasurable.mk f hf x = AEStronglyMeasurable.mk g hg x} =ᶠ[ae μ] {x | f x = g x}
[PROOFSTEP]
filter_upwards [hf.ae_eq_mk, hg.ae_eq_mk] with x hfx hgx
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : TopologicalSpace E
inst✝ : MetrizableSpace E
f g : α → E
hf : AEStronglyMeasurable f μ
hg : AEStronglyMeasurable g μ
x : α
hfx : f x = AEStronglyMeasurable.mk f hf x
hgx : g x = AEStronglyMeasurable.mk g hg x
⊢ setOf (fun x => AEStronglyMeasurable.mk f hf x = AEStronglyMeasurable.mk g hg x) x = setOf (fun x => f x = g x) x
[PROOFSTEP]
change (hf.mk f x = hg.mk g x) = (f x = g x)
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : TopologicalSpace E
inst✝ : MetrizableSpace E
f g : α → E
hf : AEStronglyMeasurable f μ
hg : AEStronglyMeasurable g μ
x : α
hfx : f x = AEStronglyMeasurable.mk f hf x
hgx : g x = AEStronglyMeasurable.mk g hg x
⊢ (AEStronglyMeasurable.mk f hf x = AEStronglyMeasurable.mk g hg x) = (f x = g x)
[PROOFSTEP]
simp only [hfx, hgx]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
inst✝² : LinearOrder β
inst✝¹ : OrderClosedTopology β
inst✝ : PseudoMetrizableSpace β
f g : α → β
hf : AEStronglyMeasurable f μ
hg : AEStronglyMeasurable g μ
⊢ NullMeasurableSet {a | f a < g a}
[PROOFSTEP]
apply (hf.stronglyMeasurable_mk.measurableSet_lt hg.stronglyMeasurable_mk).nullMeasurableSet.congr
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
inst✝² : LinearOrder β
inst✝¹ : OrderClosedTopology β
inst✝ : PseudoMetrizableSpace β
f g : α → β
hf : AEStronglyMeasurable f μ
hg : AEStronglyMeasurable g μ
⊢ {a | AEStronglyMeasurable.mk f hf a < AEStronglyMeasurable.mk g hg a} =ᶠ[ae μ] {a | f a < g a}
[PROOFSTEP]
filter_upwards [hf.ae_eq_mk, hg.ae_eq_mk] with x hfx hgx
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
inst✝² : LinearOrder β
inst✝¹ : OrderClosedTopology β
inst✝ : PseudoMetrizableSpace β
f g : α → β
hf : AEStronglyMeasurable f μ
hg : AEStronglyMeasurable g μ
x : α
hfx : f x = AEStronglyMeasurable.mk f hf x
hgx : g x = AEStronglyMeasurable.mk g hg x
⊢ setOf (fun a => AEStronglyMeasurable.mk f hf a < AEStronglyMeasurable.mk g hg a) x = setOf (fun a => f a < g a) x
[PROOFSTEP]
change (hf.mk f x < hg.mk g x) = (f x < g x)
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
inst✝² : LinearOrder β
inst✝¹ : OrderClosedTopology β
inst✝ : PseudoMetrizableSpace β
f g : α → β
hf : AEStronglyMeasurable f μ
hg : AEStronglyMeasurable g μ
x : α
hfx : f x = AEStronglyMeasurable.mk f hf x
hgx : g x = AEStronglyMeasurable.mk g hg x
⊢ (AEStronglyMeasurable.mk f hf x < AEStronglyMeasurable.mk g hg x) = (f x < g x)
[PROOFSTEP]
simp only [hfx, hgx]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
inst✝² : Preorder β
inst✝¹ : OrderClosedTopology β
inst✝ : PseudoMetrizableSpace β
f g : α → β
hf : AEStronglyMeasurable f μ
hg : AEStronglyMeasurable g μ
⊢ NullMeasurableSet {a | f a ≤ g a}
[PROOFSTEP]
apply (hf.stronglyMeasurable_mk.measurableSet_le hg.stronglyMeasurable_mk).nullMeasurableSet.congr
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
inst✝² : Preorder β
inst✝¹ : OrderClosedTopology β
inst✝ : PseudoMetrizableSpace β
f g : α → β
hf : AEStronglyMeasurable f μ
hg : AEStronglyMeasurable g μ
⊢ {a | AEStronglyMeasurable.mk f hf a ≤ AEStronglyMeasurable.mk g hg a} =ᶠ[ae μ] {a | f a ≤ g a}
[PROOFSTEP]
filter_upwards [hf.ae_eq_mk, hg.ae_eq_mk] with x hfx hgx
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
inst✝² : Preorder β
inst✝¹ : OrderClosedTopology β
inst✝ : PseudoMetrizableSpace β
f g : α → β
hf : AEStronglyMeasurable f μ
hg : AEStronglyMeasurable g μ
x : α
hfx : f x = AEStronglyMeasurable.mk f hf x
hgx : g x = AEStronglyMeasurable.mk g hg x
⊢ setOf (fun a => AEStronglyMeasurable.mk f hf a ≤ AEStronglyMeasurable.mk g hg a) x = setOf (fun a => f a ≤ g a) x
[PROOFSTEP]
change (hf.mk f x ≤ hg.mk g x) = (f x ≤ g x)
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
inst✝² : Preorder β
inst✝¹ : OrderClosedTopology β
inst✝ : PseudoMetrizableSpace β
f g : α → β
hf : AEStronglyMeasurable f μ
hg : AEStronglyMeasurable g μ
x : α
hfx : f x = AEStronglyMeasurable.mk f hf x
hgx : g x = AEStronglyMeasurable.mk g hg x
⊢ (AEStronglyMeasurable.mk f hf x ≤ AEStronglyMeasurable.mk g hg x) = (f x ≤ g x)
[PROOFSTEP]
simp only [hfx, hgx]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f g : α → β
hf : AEStronglyMeasurable f μ
⊢ ∃ t, IsSeparable t ∧ ∀ᵐ (x : α) ∂μ, f x ∈ t
[PROOFSTEP]
refine' ⟨range (hf.mk f), hf.stronglyMeasurable_mk.isSeparable_range, _⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f g : α → β
hf : AEStronglyMeasurable f μ
⊢ ∀ᵐ (x : α) ∂μ, f x ∈ range (AEStronglyMeasurable.mk f hf)
[PROOFSTEP]
filter_upwards [hf.ae_eq_mk] with x hx
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f g : α → β
hf : AEStronglyMeasurable f μ
x : α
hx : f x = AEStronglyMeasurable.mk f hf x
⊢ f x ∈ range (AEStronglyMeasurable.mk f hf)
[PROOFSTEP]
simp [hx]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f g : α → β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
⊢ AEStronglyMeasurable f μ ↔ AEMeasurable f ∧ ∃ t, IsSeparable t ∧ ∀ᵐ (x : α) ∂μ, f x ∈ t
[PROOFSTEP]
refine' ⟨fun H => ⟨H.aemeasurable, H.isSeparable_ae_range⟩, _⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f g : α → β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
⊢ (AEMeasurable f ∧ ∃ t, IsSeparable t ∧ ∀ᵐ (x : α) ∂μ, f x ∈ t) → AEStronglyMeasurable f μ
[PROOFSTEP]
rintro ⟨H, ⟨t, t_sep, ht⟩⟩
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f g : α → β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : AEMeasurable f
t : Set β
t_sep : IsSeparable t
ht : ∀ᵐ (x : α) ∂μ, f x ∈ t
⊢ AEStronglyMeasurable f μ
[PROOFSTEP]
rcases eq_empty_or_nonempty t with (rfl | h₀)
[GOAL]
case intro.intro.intro.inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f g : α → β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : AEMeasurable f
t_sep : IsSeparable ∅
ht : ∀ᵐ (x : α) ∂μ, f x ∈ ∅
⊢ AEStronglyMeasurable f μ
[PROOFSTEP]
simp only [mem_empty_iff_false, eventually_false_iff_eq_bot, ae_eq_bot] at ht 
[GOAL]
case intro.intro.intro.inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f g : α → β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : AEMeasurable f
t_sep : IsSeparable ∅
ht : μ = 0
⊢ AEStronglyMeasurable f μ
[PROOFSTEP]
rw [ht]
[GOAL]
case intro.intro.intro.inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f g : α → β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : AEMeasurable f
t_sep : IsSeparable ∅
ht : μ = 0
⊢ AEStronglyMeasurable f 0
[PROOFSTEP]
exact aestronglyMeasurable_zero_measure f
[GOAL]
case intro.intro.intro.inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f g : α → β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : AEMeasurable f
t : Set β
t_sep : IsSeparable t
ht : ∀ᵐ (x : α) ∂μ, f x ∈ t
h₀ : Set.Nonempty t
⊢ AEStronglyMeasurable f μ
[PROOFSTEP]
obtain ⟨g, g_meas, gt, fg⟩ : ∃ g : α → β, Measurable g ∧ range g ⊆ t ∧ f =ᵐ[μ] g := H.exists_ae_eq_range_subset ht h₀
[GOAL]
case intro.intro.intro.inr.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f g✝ : α → β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : AEMeasurable f
t : Set β
t_sep : IsSeparable t
ht : ∀ᵐ (x : α) ∂μ, f x ∈ t
h₀ : Set.Nonempty t
g : α → β
g_meas : Measurable g
gt : range g ⊆ t
fg : f =ᶠ[ae μ] g
⊢ AEStronglyMeasurable f μ
[PROOFSTEP]
refine' ⟨g, _, fg⟩
[GOAL]
case intro.intro.intro.inr.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f g✝ : α → β
inst✝² : PseudoMetrizableSpace β
inst✝¹ : MeasurableSpace β
inst✝ : BorelSpace β
H : AEMeasurable f
t : Set β
t_sep : IsSeparable t
ht : ∀ᵐ (x : α) ∂μ, f x ∈ t
h₀ : Set.Nonempty t
g : α → β
g_meas : Measurable g
gt : range g ⊆ t
fg : f =ᶠ[ae μ] g
⊢ StronglyMeasurable g
[PROOFSTEP]
exact stronglyMeasurable_iff_measurable_separable.2 ⟨g_meas, t_sep.mono gt⟩
[GOAL]
α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
inst✝² : Countable ι
m : MeasurableSpace α
μ✝ : Measure α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ✝
f✝ g✝ : α → β
γ : Type u_5
mγ : MeasurableSpace γ
mα : MeasurableSpace α
f : γ → α
μ : Measure γ
hf : MeasurableEmbedding f
g : α → β
⊢ AEStronglyMeasurable g (Measure.map f μ) ↔ AEStronglyMeasurable (g ∘ f) μ
[PROOFSTEP]
refine' ⟨fun H => H.comp_measurable hf.measurable, _⟩
[GOAL]
α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
inst✝² : Countable ι
m : MeasurableSpace α
μ✝ : Measure α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ✝
f✝ g✝ : α → β
γ : Type u_5
mγ : MeasurableSpace γ
mα : MeasurableSpace α
f : γ → α
μ : Measure γ
hf : MeasurableEmbedding f
g : α → β
⊢ AEStronglyMeasurable (g ∘ f) μ → AEStronglyMeasurable g (Measure.map f μ)
[PROOFSTEP]
rintro ⟨g₁, hgm₁, heq⟩
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
inst✝² : Countable ι
m : MeasurableSpace α
μ✝ : Measure α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ✝
f✝ g✝ : α → β
γ : Type u_5
mγ : MeasurableSpace γ
mα : MeasurableSpace α
f : γ → α
μ : Measure γ
hf : MeasurableEmbedding f
g : α → β
g₁ : γ → β
hgm₁ : StronglyMeasurable g₁
heq : g ∘ f =ᶠ[ae μ] g₁
⊢ AEStronglyMeasurable g (Measure.map f μ)
[PROOFSTEP]
rcases hf.exists_stronglyMeasurable_extend hgm₁ fun x => ⟨g x⟩ with ⟨g₂, hgm₂, rfl⟩
[GOAL]
case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
inst✝² : Countable ι
m : MeasurableSpace α
μ✝ : Measure α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ✝
f✝ g✝ : α → β
γ : Type u_5
mγ : MeasurableSpace γ
mα : MeasurableSpace α
f : γ → α
μ : Measure γ
hf : MeasurableEmbedding f
g g₂ : α → β
hgm₂ : StronglyMeasurable g₂
hgm₁ : StronglyMeasurable (g₂ ∘ f)
heq : g ∘ f =ᶠ[ae μ] g₂ ∘ f
⊢ AEStronglyMeasurable g (Measure.map f μ)
[PROOFSTEP]
exact ⟨g₂, hgm₂, hf.ae_map_iff.2 heq⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
⊢ AEStronglyMeasurable (fun x => g (f x)) μ ↔ AEStronglyMeasurable f μ
[PROOFSTEP]
letI := pseudoMetrizableSpacePseudoMetric γ
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
⊢ AEStronglyMeasurable (fun x => g (f x)) μ ↔ AEStronglyMeasurable f μ
[PROOFSTEP]
borelize β γ
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
⊢ AEStronglyMeasurable (fun x => g (f x)) μ ↔ AEStronglyMeasurable f μ
[PROOFSTEP]
refine'
  ⟨fun H => aestronglyMeasurable_iff_aemeasurable_separable.2 ⟨_, _⟩, fun H =>
    hg.continuous.comp_aestronglyMeasurable H⟩
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : AEStronglyMeasurable (fun x => g (f x)) μ
⊢ AEMeasurable f
[PROOFSTEP]
let G : β → range g := codRestrict g (range g) mem_range_self
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : AEStronglyMeasurable (fun x => g (f x)) μ
G : β → ↑(range g) := codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)
⊢ AEMeasurable f
[PROOFSTEP]
have hG : ClosedEmbedding G :=
  { hg.codRestrict _ _ with
    closed_range := by
      convert isClosed_univ (α := ↥(range g))
      apply eq_univ_of_forall
      rintro ⟨-, ⟨x, rfl⟩⟩
      exact mem_range_self x }
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : AEStronglyMeasurable (fun x => g (f x)) μ
G : β → ↑(range g) := codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)
src✝ : _root_.Embedding (codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)) :=
  Embedding.codRestrict hg (range g) mem_range_self
⊢ IsClosed (range G)
[PROOFSTEP]
convert isClosed_univ (α := ↥(range g))
[GOAL]
case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : AEStronglyMeasurable (fun x => g (f x)) μ
G : β → ↑(range g) := codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)
src✝ : _root_.Embedding (codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)) :=
  Embedding.codRestrict hg (range g) mem_range_self
⊢ range G = univ
[PROOFSTEP]
apply eq_univ_of_forall
[GOAL]
case h.e'_3.a
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : AEStronglyMeasurable (fun x => g (f x)) μ
G : β → ↑(range g) := codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)
src✝ : _root_.Embedding (codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)) :=
  Embedding.codRestrict hg (range g) mem_range_self
⊢ ∀ (x : ↑(range g)), x ∈ range G
[PROOFSTEP]
rintro ⟨-, ⟨x, rfl⟩⟩
[GOAL]
case h.e'_3.a.mk.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : AEStronglyMeasurable (fun x => g (f x)) μ
G : β → ↑(range g) := codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)
src✝ : _root_.Embedding (codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)) :=
  Embedding.codRestrict hg (range g) mem_range_self
x : β
⊢ { val := g x, property := (_ : ∃ y, g y = g x) } ∈ range G
[PROOFSTEP]
exact mem_range_self x
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : AEStronglyMeasurable (fun x => g (f x)) μ
G : β → ↑(range g) := codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)
hG : ClosedEmbedding G
⊢ AEMeasurable f
[PROOFSTEP]
have : AEMeasurable (G ∘ f) μ := AEMeasurable.subtype_mk H.aemeasurable
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this✝⁴ : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : AEStronglyMeasurable (fun x => g (f x)) μ
G : β → ↑(range g) := codRestrict g (range g) (_ : ∀ (i : β), g i ∈ range fun x => g x)
hG : ClosedEmbedding G
this : AEMeasurable (G ∘ f)
⊢ AEMeasurable f
[PROOFSTEP]
exact hG.measurableEmbedding.aemeasurable_comp_iff.1 this
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : AEStronglyMeasurable (fun x => g (f x)) μ
⊢ ∃ t, IsSeparable t ∧ ∀ᵐ (x : α) ∂μ, f x ∈ t
[PROOFSTEP]
rcases(aestronglyMeasurable_iff_aemeasurable_separable.1 H).2 with ⟨t, ht, h't⟩
[GOAL]
case refine'_2.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : PseudoMetrizableSpace γ
g : β → γ
f : α → β
hg : _root_.Embedding g
this : PseudoMetricSpace γ := pseudoMetrizableSpacePseudoMetric γ
this✝³ : MeasurableSpace β := borel β
this✝² : BorelSpace β
this✝¹ : MeasurableSpace γ := borel γ
this✝ : BorelSpace γ
H : AEStronglyMeasurable (fun x => g (f x)) μ
t : Set γ
ht : IsSeparable t
h't : ∀ᵐ (x : α) ∂μ, g (f x) ∈ t
⊢ ∃ t, IsSeparable t ∧ ∀ᵐ (x : α) ∂μ, f x ∈ t
[PROOFSTEP]
exact ⟨g ⁻¹' t, hg.isSeparable_preimage ht, h't⟩
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝¹ : TopologicalSpace β✝
inst✝ : TopologicalSpace γ
f✝ g✝ : α → β✝
β : Type u_5
f : α → β
mα : MeasurableSpace α
μa : Measure α
mβ : MeasurableSpace β
μb : Measure β
hf : MeasurePreserving f
h₂ : MeasurableEmbedding f
g : β → γ
⊢ AEStronglyMeasurable (g ∘ f) μa ↔ AEStronglyMeasurable g μb
[PROOFSTEP]
rw [← hf.map_eq, h₂.aestronglyMeasurable_map_iff]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁵ : Countable ι✝
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
ι : Type u_5
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), AEStronglyMeasurable (f i) μ
lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) u (𝓝 (g x))
⊢ AEStronglyMeasurable g μ
[PROOFSTEP]
borelize β
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁵ : Countable ι✝
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
ι : Type u_5
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), AEStronglyMeasurable (f i) μ
lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) u (𝓝 (g x))
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
⊢ AEStronglyMeasurable g μ
[PROOFSTEP]
refine' aestronglyMeasurable_iff_aemeasurable_separable.2 ⟨_, _⟩
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁵ : Countable ι✝
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
ι : Type u_5
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), AEStronglyMeasurable (f i) μ
lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) u (𝓝 (g x))
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
⊢ AEMeasurable g
[PROOFSTEP]
exact aemeasurable_of_tendsto_metrizable_ae _ (fun n => (hf n).aemeasurable) lim
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁵ : Countable ι✝
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
ι : Type u_5
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), AEStronglyMeasurable (f i) μ
lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) u (𝓝 (g x))
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
⊢ ∃ t, IsSeparable t ∧ ∀ᵐ (x : α) ∂μ, g x ∈ t
[PROOFSTEP]
rcases u.exists_seq_tendsto with ⟨v, hv⟩
[GOAL]
case refine'_2.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁵ : Countable ι✝
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
ι : Type u_5
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), AEStronglyMeasurable (f i) μ
lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) u (𝓝 (g x))
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
v : ℕ → ι
hv : Tendsto v atTop u
⊢ ∃ t, IsSeparable t ∧ ∀ᵐ (x : α) ∂μ, g x ∈ t
[PROOFSTEP]
have : ∀ n : ℕ, ∃ t : Set β, IsSeparable t ∧ f (v n) ⁻¹' t ∈ μ.ae := fun n =>
  (aestronglyMeasurable_iff_aemeasurable_separable.1 (hf (v n))).2
[GOAL]
case refine'_2.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁵ : Countable ι✝
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
ι : Type u_5
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), AEStronglyMeasurable (f i) μ
lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) u (𝓝 (g x))
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
v : ℕ → ι
hv : Tendsto v atTop u
this : ∀ (n : ℕ), ∃ t, IsSeparable t ∧ f (v n) ⁻¹' t ∈ ae μ
⊢ ∃ t, IsSeparable t ∧ ∀ᵐ (x : α) ∂μ, g x ∈ t
[PROOFSTEP]
choose t t_sep ht using this
[GOAL]
case refine'_2.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁵ : Countable ι✝
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
ι : Type u_5
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), AEStronglyMeasurable (f i) μ
lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) u (𝓝 (g x))
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
v : ℕ → ι
hv : Tendsto v atTop u
t : ℕ → Set β
t_sep : ∀ (n : ℕ), IsSeparable (t n)
ht : ∀ (n : ℕ), f (v n) ⁻¹' t n ∈ ae μ
⊢ ∃ t, IsSeparable t ∧ ∀ᵐ (x : α) ∂μ, g x ∈ t
[PROOFSTEP]
refine' ⟨closure (⋃ i, t i), (isSeparable_iUnion fun i => t_sep i).closure, _⟩
[GOAL]
case refine'_2.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁵ : Countable ι✝
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
ι : Type u_5
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), AEStronglyMeasurable (f i) μ
lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) u (𝓝 (g x))
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
v : ℕ → ι
hv : Tendsto v atTop u
t : ℕ → Set β
t_sep : ∀ (n : ℕ), IsSeparable (t n)
ht : ∀ (n : ℕ), f (v n) ⁻¹' t n ∈ ae μ
⊢ ∀ᵐ (x : α) ∂μ, g x ∈ closure (⋃ (i : ℕ), t i)
[PROOFSTEP]
filter_upwards [ae_all_iff.2 ht, lim] with x hx h'x
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁵ : Countable ι✝
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
ι : Type u_5
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), AEStronglyMeasurable (f i) μ
lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) u (𝓝 (g x))
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
v : ℕ → ι
hv : Tendsto v atTop u
t : ℕ → Set β
t_sep : ∀ (n : ℕ), IsSeparable (t n)
ht : ∀ (n : ℕ), f (v n) ⁻¹' t n ∈ ae μ
x : α
hx : ∀ (i : ℕ), f (v i) x ∈ t i
h'x : Tendsto (fun n => f n x) u (𝓝 (g x))
⊢ g x ∈ closure (⋃ (i : ℕ), t i)
[PROOFSTEP]
apply mem_closure_of_tendsto (h'x.comp hv)
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁵ : Countable ι✝
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
ι : Type u_5
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), AEStronglyMeasurable (f i) μ
lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) u (𝓝 (g x))
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
v : ℕ → ι
hv : Tendsto v atTop u
t : ℕ → Set β
t_sep : ∀ (n : ℕ), IsSeparable (t n)
ht : ∀ (n : ℕ), f (v n) ⁻¹' t n ∈ ae μ
x : α
hx : ∀ (i : ℕ), f (v i) x ∈ t i
h'x : Tendsto (fun n => f n x) u (𝓝 (g x))
⊢ ∀ᶠ (x_1 : ℕ) in atTop, ((fun n => f n x) ∘ v) x_1 ∈ ⋃ (i : ℕ), t i
[PROOFSTEP]
refine eventually_of_forall fun n => ?_
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁵ : Countable ι✝
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
ι : Type u_5
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), AEStronglyMeasurable (f i) μ
lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) u (𝓝 (g x))
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
v : ℕ → ι
hv : Tendsto v atTop u
t : ℕ → Set β
t_sep : ∀ (n : ℕ), IsSeparable (t n)
ht : ∀ (n : ℕ), f (v n) ⁻¹' t n ∈ ae μ
x : α
hx : ∀ (i : ℕ), f (v i) x ∈ t i
h'x : Tendsto (fun n => f n x) u (𝓝 (g x))
n : ℕ
⊢ ((fun n => f n x) ∘ v) n ∈ ⋃ (i : ℕ), t i
[PROOFSTEP]
apply mem_iUnion_of_mem n
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁵ : Countable ι✝
m : MeasurableSpace α
μ : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
f✝ g✝ : α → β
ι : Type u_5
inst✝² : PseudoMetrizableSpace β
u : Filter ι
inst✝¹ : NeBot u
inst✝ : IsCountablyGenerated u
f : ι → α → β
g : α → β
hf : ∀ (i : ι), AEStronglyMeasurable (f i) μ
lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) u (𝓝 (g x))
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
v : ℕ → ι
hv : Tendsto v atTop u
t : ℕ → Set β
t_sep : ∀ (n : ℕ), IsSeparable (t n)
ht : ∀ (n : ℕ), f (v n) ⁻¹' t n ∈ ae μ
x : α
hx : ∀ (i : ℕ), f (v i) x ∈ t i
h'x : Tendsto (fun n => f n x) u (𝓝 (g x))
n : ℕ
⊢ ((fun n => f n x) ∘ v) n ∈ t n
[PROOFSTEP]
exact hx n
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f✝ g : α → β
inst✝ : PseudoMetrizableSpace β
f : ℕ → α → β
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
h_ae_tendsto : ∀ᵐ (x : α) ∂μ, ∃ l, Tendsto (fun n => f n x) atTop (𝓝 l)
⊢ ∃ f_lim hf_lim_meas, ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
[PROOFSTEP]
borelize β
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f✝ g : α → β
inst✝ : PseudoMetrizableSpace β
f : ℕ → α → β
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
h_ae_tendsto : ∀ᵐ (x : α) ∂μ, ∃ l, Tendsto (fun n => f n x) atTop (𝓝 l)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
⊢ ∃ f_lim hf_lim_meas, ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
[PROOFSTEP]
obtain ⟨g, _, hg⟩ : ∃ (g : α → β) (_ : Measurable g), ∀ᵐ x ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (g x)) :=
  measurable_limit_of_tendsto_metrizable_ae (fun n => (hf n).aemeasurable) h_ae_tendsto
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f✝ g✝ : α → β
inst✝ : PseudoMetrizableSpace β
f : ℕ → α → β
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
h_ae_tendsto : ∀ᵐ (x : α) ∂μ, ∃ l, Tendsto (fun n => f n x) atTop (𝓝 l)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
g : α → β
w✝ : Measurable g
hg : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (g x))
⊢ ∃ f_lim hf_lim_meas, ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
[PROOFSTEP]
have Hg : AEStronglyMeasurable g μ := aestronglyMeasurable_of_tendsto_ae _ hf hg
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f✝ g✝ : α → β
inst✝ : PseudoMetrizableSpace β
f : ℕ → α → β
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
h_ae_tendsto : ∀ᵐ (x : α) ∂μ, ∃ l, Tendsto (fun n => f n x) atTop (𝓝 l)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
g : α → β
w✝ : Measurable g
hg : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (g x))
Hg : AEStronglyMeasurable g μ
⊢ ∃ f_lim hf_lim_meas, ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
[PROOFSTEP]
refine' ⟨Hg.mk g, Hg.stronglyMeasurable_mk, _⟩
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f✝ g✝ : α → β
inst✝ : PseudoMetrizableSpace β
f : ℕ → α → β
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
h_ae_tendsto : ∀ᵐ (x : α) ∂μ, ∃ l, Tendsto (fun n => f n x) atTop (𝓝 l)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
g : α → β
w✝ : Measurable g
hg : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (g x))
Hg : AEStronglyMeasurable g μ
⊢ ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (AEStronglyMeasurable.mk g Hg x))
[PROOFSTEP]
filter_upwards [hg, Hg.ae_eq_mk] with x hx h'x
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f✝ g✝ : α → β
inst✝ : PseudoMetrizableSpace β
f : ℕ → α → β
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
h_ae_tendsto : ∀ᵐ (x : α) ∂μ, ∃ l, Tendsto (fun n => f n x) atTop (𝓝 l)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
g : α → β
w✝ : Measurable g
hg : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (g x))
Hg : AEStronglyMeasurable g μ
x : α
hx : Tendsto (fun n => f n x) atTop (𝓝 (g x))
h'x : g x = AEStronglyMeasurable.mk g Hg x
⊢ Tendsto (fun n => f n x) atTop (𝓝 (AEStronglyMeasurable.mk g Hg x))
[PROOFSTEP]
rwa [h'x] at hx 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m✝ : MeasurableSpace α
μ✝ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : PseudoMetrizableSpace β
m : MeasurableSpace α
μ : ι → Measure α
h : ∀ (i : ι), AEStronglyMeasurable f (μ i)
⊢ AEStronglyMeasurable f (sum μ)
[PROOFSTEP]
borelize β
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m✝ : MeasurableSpace α
μ✝ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : PseudoMetrizableSpace β
m : MeasurableSpace α
μ : ι → Measure α
h : ∀ (i : ι), AEStronglyMeasurable f (μ i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
⊢ AEStronglyMeasurable f (sum μ)
[PROOFSTEP]
refine' aestronglyMeasurable_iff_aemeasurable_separable.2 ⟨AEMeasurable.sum_measure fun i => (h i).aemeasurable, _⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m✝ : MeasurableSpace α
μ✝ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : PseudoMetrizableSpace β
m : MeasurableSpace α
μ : ι → Measure α
h : ∀ (i : ι), AEStronglyMeasurable f (μ i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
⊢ ∃ t, IsSeparable t ∧ ∀ᵐ (x : α) ∂sum μ, f x ∈ t
[PROOFSTEP]
have A : ∀ i : ι, ∃ t : Set β, IsSeparable t ∧ f ⁻¹' t ∈ (μ i).ae := fun i =>
  (aestronglyMeasurable_iff_aemeasurable_separable.1 (h i)).2
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m✝ : MeasurableSpace α
μ✝ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : PseudoMetrizableSpace β
m : MeasurableSpace α
μ : ι → Measure α
h : ∀ (i : ι), AEStronglyMeasurable f (μ i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
A : ∀ (i : ι), ∃ t, IsSeparable t ∧ f ⁻¹' t ∈ ae (μ i)
⊢ ∃ t, IsSeparable t ∧ ∀ᵐ (x : α) ∂sum μ, f x ∈ t
[PROOFSTEP]
choose t t_sep ht using A
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m✝ : MeasurableSpace α
μ✝ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : PseudoMetrizableSpace β
m : MeasurableSpace α
μ : ι → Measure α
h : ∀ (i : ι), AEStronglyMeasurable f (μ i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t : ι → Set β
t_sep : ∀ (i : ι), IsSeparable (t i)
ht : ∀ (i : ι), f ⁻¹' t i ∈ ae (μ i)
⊢ ∃ t, IsSeparable t ∧ ∀ᵐ (x : α) ∂sum μ, f x ∈ t
[PROOFSTEP]
refine' ⟨⋃ i, t i, isSeparable_iUnion t_sep, _⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m✝ : MeasurableSpace α
μ✝ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : PseudoMetrizableSpace β
m : MeasurableSpace α
μ : ι → Measure α
h : ∀ (i : ι), AEStronglyMeasurable f (μ i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t : ι → Set β
t_sep : ∀ (i : ι), IsSeparable (t i)
ht : ∀ (i : ι), f ⁻¹' t i ∈ ae (μ i)
⊢ ∀ᵐ (x : α) ∂sum μ, f x ∈ ⋃ (i : ι), t i
[PROOFSTEP]
simp only [Measure.ae_sum_eq, mem_iUnion, eventually_iSup]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m✝ : MeasurableSpace α
μ✝ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : PseudoMetrizableSpace β
m : MeasurableSpace α
μ : ι → Measure α
h : ∀ (i : ι), AEStronglyMeasurable f (μ i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t : ι → Set β
t_sep : ∀ (i : ι), IsSeparable (t i)
ht : ∀ (i : ι), f ⁻¹' t i ∈ ae (μ i)
⊢ ∀ (b : ι), ∀ᵐ (x : α) ∂μ b, ∃ i, f x ∈ t i
[PROOFSTEP]
intro i
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m✝ : MeasurableSpace α
μ✝ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : PseudoMetrizableSpace β
m : MeasurableSpace α
μ : ι → Measure α
h : ∀ (i : ι), AEStronglyMeasurable f (μ i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t : ι → Set β
t_sep : ∀ (i : ι), IsSeparable (t i)
ht : ∀ (i : ι), f ⁻¹' t i ∈ ae (μ i)
i : ι
⊢ ∀ᵐ (x : α) ∂μ i, ∃ i, f x ∈ t i
[PROOFSTEP]
filter_upwards [ht i] with x hx
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m✝ : MeasurableSpace α
μ✝ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : PseudoMetrizableSpace β
m : MeasurableSpace α
μ : ι → Measure α
h : ∀ (i : ι), AEStronglyMeasurable f (μ i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t : ι → Set β
t_sep : ∀ (i : ι), IsSeparable (t i)
ht : ∀ (i : ι), f ⁻¹' t i ∈ ae (μ i)
i : ι
x : α
hx : x ∈ f ⁻¹' t i
⊢ ∃ i, f x ∈ t i
[PROOFSTEP]
exact ⟨i, hx⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : PseudoMetrizableSpace β
ν : Measure α
⊢ AEStronglyMeasurable f (μ + ν) ↔ AEStronglyMeasurable f μ ∧ AEStronglyMeasurable f ν
[PROOFSTEP]
rw [← sum_cond, aestronglyMeasurable_sum_measure_iff, Bool.forall_bool, and_comm]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : PseudoMetrizableSpace β
ν : Measure α
⊢ AEStronglyMeasurable f (bif true then μ else ν) ∧ AEStronglyMeasurable f (bif false then μ else ν) ↔
    AEStronglyMeasurable f μ ∧ AEStronglyMeasurable f ν
[PROOFSTEP]
rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : PseudoMetrizableSpace β
s t : Set α
⊢ AEStronglyMeasurable f (Measure.restrict μ (s ∪ t)) ↔
    AEStronglyMeasurable f (Measure.restrict μ s) ∧ AEStronglyMeasurable f (Measure.restrict μ t)
[PROOFSTEP]
simp only [union_eq_iUnion, aestronglyMeasurable_iUnion_iff, Bool.forall_bool, cond, and_comm]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g : α → β
inst✝¹ : LinearOrder α
inst✝ : PseudoMetrizableSpace β
f : α → β
a b : α
⊢ AEStronglyMeasurable f (Measure.restrict μ (Ι a b)) ↔
    AEStronglyMeasurable f (Measure.restrict μ (Ioc a b)) ∧ AEStronglyMeasurable f (Measure.restrict μ (Ioc b a))
[PROOFSTEP]
rw [uIoc_eq_union, aestronglyMeasurable_union_iff]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹¹ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝¹⁰ : TopologicalSpace β
inst✝⁹ : TopologicalSpace γ
f g : α → β
M : Type u_5
G : Type u_6
G₀ : Type u_7
inst✝⁸ : Monoid M
inst✝⁷ : MulAction M β
inst✝⁶ : ContinuousConstSMul M β
inst✝⁵ : Group G
inst✝⁴ : MulAction G β
inst✝³ : ContinuousConstSMul G β
inst✝² : GroupWithZero G₀
inst✝¹ : MulAction G₀ β
inst✝ : ContinuousConstSMul G₀ β
c : G
h : AEStronglyMeasurable (fun x => c • f x) μ
⊢ AEStronglyMeasurable f μ
[PROOFSTEP]
simpa only [inv_smul_smul] using h.const_smul' c⁻¹
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g : α → E
⊢ AEStronglyMeasurable g (withDensity μ fun x => ↑(f x)) ↔ AEStronglyMeasurable (fun x => ↑(f x) • g x) μ
[PROOFSTEP]
constructor
[GOAL]
case mp
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g : α → E
⊢ AEStronglyMeasurable g (withDensity μ fun x => ↑(f x)) → AEStronglyMeasurable (fun x => ↑(f x) • g x) μ
[PROOFSTEP]
rintro ⟨g', g'meas, hg'⟩
[GOAL]
case mp.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
⊢ AEStronglyMeasurable (fun x => ↑(f x) • g x) μ
[PROOFSTEP]
have A : MeasurableSet {x : α | f x ≠ 0} := (hf (measurableSet_singleton 0)).compl
[GOAL]
case mp.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
⊢ AEStronglyMeasurable (fun x => ↑(f x) • g x) μ
[PROOFSTEP]
refine' ⟨fun x => (f x : ℝ) • g' x, hf.coe_nnreal_real.stronglyMeasurable.smul g'meas, _⟩
[GOAL]
case mp.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
⊢ (fun x => ↑(f x) • g x) =ᶠ[ae μ] fun x => ↑(f x) • g' x
[PROOFSTEP]
apply @ae_of_ae_restrict_of_ae_restrict_compl _ _ _ {x | f x ≠ 0}
[GOAL]
case mp.intro.intro.ht
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ {x | f x ≠ 0}, (fun x => ↑(f x) • g x) x = (fun x => ↑(f x) • g' x) x
[PROOFSTEP]
rw [EventuallyEq, ae_withDensity_iff hf.coe_nnreal_ennreal] at hg' 
[GOAL]
case mp.intro.intro.ht
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ {x | f x ≠ 0}, (fun x => ↑(f x) • g x) x = (fun x => ↑(f x) • g' x) x
[PROOFSTEP]
rw [ae_restrict_iff' A]
[GOAL]
case mp.intro.intro.ht
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
⊢ ∀ᵐ (x : α) ∂μ, x ∈ {x | f x ≠ 0} → (fun x => ↑(f x) • g x) x = (fun x => ↑(f x) • g' x) x
[PROOFSTEP]
filter_upwards [hg'] with a ha h'a
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
a : α
ha : ↑(f a) ≠ 0 → g a = g' a
h'a : f a ≠ 0
⊢ ↑(f a) • g a = ↑(f a) • g' a
[PROOFSTEP]
have : (f a : ℝ≥0∞) ≠ 0 := by simpa only [Ne.def, ENNReal.coe_eq_zero] using h'a
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
a : α
ha : ↑(f a) ≠ 0 → g a = g' a
h'a : f a ≠ 0
⊢ ↑(f a) ≠ 0
[PROOFSTEP]
simpa only [Ne.def, ENNReal.coe_eq_zero] using h'a
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
a : α
ha : ↑(f a) ≠ 0 → g a = g' a
h'a : f a ≠ 0
this : ↑(f a) ≠ 0
⊢ ↑(f a) • g a = ↑(f a) • g' a
[PROOFSTEP]
rw [ha this]
[GOAL]
case mp.intro.intro.htc
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ {x | f x ≠ 0}ᶜ, (fun x => ↑(f x) • g x) x = (fun x => ↑(f x) • g' x) x
[PROOFSTEP]
filter_upwards [ae_restrict_mem A.compl] with x hx
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
x : α
hx : x ∈ {x | f x ≠ 0}ᶜ
⊢ ↑(f x) • g x = ↑(f x) • g' x
[PROOFSTEP]
simp only [Classical.not_not, mem_setOf_eq, mem_compl_iff] at hx 
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
x : α
hx : f x = 0
⊢ ↑(f x) • g x = ↑(f x) • g' x
[PROOFSTEP]
simp [hx]
[GOAL]
case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g : α → E
⊢ AEStronglyMeasurable (fun x => ↑(f x) • g x) μ → AEStronglyMeasurable g (withDensity μ fun x => ↑(f x))
[PROOFSTEP]
rintro ⟨g', g'meas, hg'⟩
[GOAL]
case mpr.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : (fun x => ↑(f x) • g x) =ᶠ[ae μ] g'
⊢ AEStronglyMeasurable g (withDensity μ fun x => ↑(f x))
[PROOFSTEP]
refine' ⟨fun x => (f x : ℝ)⁻¹ • g' x, hf.coe_nnreal_real.inv.stronglyMeasurable.smul g'meas, _⟩
[GOAL]
case mpr.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : (fun x => ↑(f x) • g x) =ᶠ[ae μ] g'
⊢ g =ᶠ[ae (withDensity μ fun x => ↑(f x))] fun x => (↑(f x))⁻¹ • g' x
[PROOFSTEP]
rw [EventuallyEq, ae_withDensity_iff hf.coe_nnreal_ennreal]
[GOAL]
case mpr.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : (fun x => ↑(f x) • g x) =ᶠ[ae μ] g'
⊢ ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = (↑(f x))⁻¹ • g' x
[PROOFSTEP]
filter_upwards [hg'] with x hx h'x
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : (fun x => ↑(f x) • g x) =ᶠ[ae μ] g'
x : α
hx : ↑(f x) • g x = g' x
h'x : ↑(f x) ≠ 0
⊢ g x = (↑(f x))⁻¹ • g' x
[PROOFSTEP]
rw [← hx, smul_smul, _root_.inv_mul_cancel, one_smul]
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : (fun x => ↑(f x) • g x) =ᶠ[ae μ] g'
x : α
hx : ↑(f x) • g x = g' x
h'x : ↑(f x) ≠ 0
⊢ ↑(f x) ≠ 0
[PROOFSTEP]
simp only [Ne.def, ENNReal.coe_eq_zero] at h'x 
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g g' : α → E
g'meas : StronglyMeasurable g'
hg' : (fun x => ↑(f x) • g x) =ᶠ[ae μ] g'
x : α
hx : ↑(f x) • g x = g' x
h'x : ¬f x = 0
⊢ ↑(f x) ≠ 0
[PROOFSTEP]
simpa only [NNReal.coe_eq_zero, Ne.def] using h'x
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
f g : α → β
inst✝¹ : Zero β
inst✝ : T2Space β
hf : AEFinStronglyMeasurable f μ
⊢ ∃ t, MeasurableSet t ∧ f =ᶠ[ae (Measure.restrict μ tᶜ)] 0 ∧ SigmaFinite (Measure.restrict μ t)
[PROOFSTEP]
rcases hf with ⟨g, hg, hfg⟩
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
f g✝ : α → β
inst✝¹ : Zero β
inst✝ : T2Space β
g : α → β
hg : FinStronglyMeasurable g μ
hfg : f =ᶠ[ae μ] g
⊢ ∃ t, MeasurableSet t ∧ f =ᶠ[ae (Measure.restrict μ tᶜ)] 0 ∧ SigmaFinite (Measure.restrict μ t)
[PROOFSTEP]
obtain ⟨t, ht, hgt_zero, htμ⟩ := hg.exists_set_sigmaFinite
[GOAL]
case intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
f g✝ : α → β
inst✝¹ : Zero β
inst✝ : T2Space β
g : α → β
hg : FinStronglyMeasurable g μ
hfg : f =ᶠ[ae μ] g
t : Set α
ht : MeasurableSet t
hgt_zero : ∀ (x : α), x ∈ tᶜ → g x = 0
htμ : SigmaFinite (Measure.restrict μ t)
⊢ ∃ t, MeasurableSet t ∧ f =ᶠ[ae (Measure.restrict μ tᶜ)] 0 ∧ SigmaFinite (Measure.restrict μ t)
[PROOFSTEP]
refine' ⟨t, ht, _, htμ⟩
[GOAL]
case intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
f g✝ : α → β
inst✝¹ : Zero β
inst✝ : T2Space β
g : α → β
hg : FinStronglyMeasurable g μ
hfg : f =ᶠ[ae μ] g
t : Set α
ht : MeasurableSet t
hgt_zero : ∀ (x : α), x ∈ tᶜ → g x = 0
htμ : SigmaFinite (Measure.restrict μ t)
⊢ f =ᶠ[ae (Measure.restrict μ tᶜ)] 0
[PROOFSTEP]
refine' EventuallyEq.trans (ae_restrict_of_ae hfg) _
[GOAL]
case intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
f g✝ : α → β
inst✝¹ : Zero β
inst✝ : T2Space β
g : α → β
hg : FinStronglyMeasurable g μ
hfg : f =ᶠ[ae μ] g
t : Set α
ht : MeasurableSet t
hgt_zero : ∀ (x : α), x ∈ tᶜ → g x = 0
htμ : SigmaFinite (Measure.restrict μ t)
⊢ (fun x => g x) =ᶠ[ae (Measure.restrict μ tᶜ)] 0
[PROOFSTEP]
rw [EventuallyEq, ae_restrict_iff' ht.compl]
[GOAL]
case intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
f g✝ : α → β
inst✝¹ : Zero β
inst✝ : T2Space β
g : α → β
hg : FinStronglyMeasurable g μ
hfg : f =ᶠ[ae μ] g
t : Set α
ht : MeasurableSet t
hgt_zero : ∀ (x : α), x ∈ tᶜ → g x = 0
htμ : SigmaFinite (Measure.restrict μ t)
⊢ ∀ᵐ (x : α) ∂μ, x ∈ tᶜ → g x = OfNat.ofNat 0 x
[PROOFSTEP]
exact eventually_of_forall hgt_zero
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
G : Type u_5
p : ℝ≥0∞
m m0 : MeasurableSpace α
μ✝ : Measure α
inst✝⁴ : SeminormedAddCommGroup G
inst✝³ : MeasurableSpace G
inst✝² : BorelSpace G
inst✝¹ : SecondCountableTopology G
f : α → G
_m0 : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
⊢ AEFinStronglyMeasurable f μ ↔ AEMeasurable f
[PROOFSTEP]
simp_rw [AEFinStronglyMeasurable, AEMeasurable, finStronglyMeasurable_iff_measurable]
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
⊢ Measurable (uncurry u)
[PROOFSTEP]
obtain ⟨t_sf, ht_sf⟩ : ∃ t : ℕ → SimpleFunc ι ι, ∀ j x, Tendsto (fun n => u (t n j) x) atTop (𝓝 <| u j x) :=
  by
  have h_str_meas : StronglyMeasurable (id : ι → ι) := stronglyMeasurable_id
  refine' ⟨h_str_meas.approx, fun j x => _⟩
  exact ((hu_cont x).tendsto j).comp (h_str_meas.tendsto_approx j)
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
⊢ ∃ t, ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t n) j) x) atTop (𝓝 (u j x))
[PROOFSTEP]
have h_str_meas : StronglyMeasurable (id : ι → ι) := stronglyMeasurable_id
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
h_str_meas : StronglyMeasurable id
⊢ ∃ t, ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t n) j) x) atTop (𝓝 (u j x))
[PROOFSTEP]
refine' ⟨h_str_meas.approx, fun j x => _⟩
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
h_str_meas : StronglyMeasurable id
j : ι
x : α
⊢ Tendsto (fun n => u (↑(StronglyMeasurable.approx h_str_meas n) j) x) atTop (𝓝 (u j x))
[PROOFSTEP]
exact ((hu_cont x).tendsto j).comp (h_str_meas.tendsto_approx j)
[GOAL]
case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
⊢ Measurable (uncurry u)
[PROOFSTEP]
let U (n : ℕ) (p : ι × α) := u (t_sf n p.fst) p.snd
[GOAL]
case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
⊢ Measurable (uncurry u)
[PROOFSTEP]
have h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd) :=
  by
  rw [tendsto_pi_nhds]
  exact fun p => ht_sf p.fst p.snd
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
⊢ Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
[PROOFSTEP]
rw [tendsto_pi_nhds]
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
⊢ ∀ (x : ι × α), Tendsto (fun i => U i x) atTop (𝓝 (u x.fst x.snd))
[PROOFSTEP]
exact fun p => ht_sf p.fst p.snd
[GOAL]
case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
⊢ Measurable (uncurry u)
[PROOFSTEP]
refine' measurable_of_tendsto_metrizable (fun n => _) h_tendsto
[GOAL]
case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
⊢ Measurable (U n)
[PROOFSTEP]
have h_meas : Measurable fun p : (t_sf n).range × α => u (↑p.fst) p.snd :=
  by
  have :
    (fun p : ↥(t_sf n).range × α => u (↑p.fst) p.snd) = (fun p : α × (t_sf n).range => u (↑p.snd) p.fst) ∘ Prod.swap :=
    rfl
  rw [this, @measurable_swap_iff α (↥(t_sf n).range) β m]
  exact measurable_from_prod_countable fun j => h j
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
⊢ Measurable fun p => u (↑p.fst) p.snd
[PROOFSTEP]
have :
  (fun p : ↥(t_sf n).range × α => u (↑p.fst) p.snd) = (fun p : α × (t_sf n).range => u (↑p.snd) p.fst) ∘ Prod.swap :=
  rfl
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
this : (fun p => u (↑p.fst) p.snd) = (fun p => u (↑p.snd) p.fst) ∘ Prod.swap
⊢ Measurable fun p => u (↑p.fst) p.snd
[PROOFSTEP]
rw [this, @measurable_swap_iff α (↥(t_sf n).range) β m]
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
this : (fun p => u (↑p.fst) p.snd) = (fun p => u (↑p.snd) p.fst) ∘ Prod.swap
⊢ Measurable fun p => u (↑p.snd) p.fst
[PROOFSTEP]
exact measurable_from_prod_countable fun j => h j
[GOAL]
case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
h_meas : Measurable fun p => u (↑p.fst) p.snd
⊢ Measurable (U n)
[PROOFSTEP]
have :
  (fun p : ι × α => u (t_sf n p.fst) p.snd) =
    (fun p : ↥(t_sf n).range × α => u p.fst p.snd) ∘ fun p : ι × α =>
      (⟨t_sf n p.fst, SimpleFunc.mem_range_self _ _⟩, p.snd) :=
  rfl
[GOAL]
case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
h_meas : Measurable fun p => u (↑p.fst) p.snd
this :
  (fun p => u (↑(t_sf n) p.fst) p.snd) =
    (fun p => u (↑p.fst) p.snd) ∘ fun p =>
      ({ val := ↑(t_sf n) p.fst, property := (_ : ↑(t_sf n) p.fst ∈ SimpleFunc.range (t_sf n)) }, p.snd)
⊢ Measurable (U n)
[PROOFSTEP]
simp_rw [this]
[GOAL]
case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
h_meas : Measurable fun p => u (↑p.fst) p.snd
this :
  (fun p => u (↑(t_sf n) p.fst) p.snd) =
    (fun p => u (↑p.fst) p.snd) ∘ fun p =>
      ({ val := ↑(t_sf n) p.fst, property := (_ : ↑(t_sf n) p.fst ∈ SimpleFunc.range (t_sf n)) }, p.snd)
⊢ Measurable
    ((fun p => u (↑p.fst) p.snd) ∘ fun p =>
      ({ val := ↑(t_sf n) p.fst, property := (_ : ↑(t_sf n) p.fst ∈ SimpleFunc.range (t_sf n)) }, p.snd))
[PROOFSTEP]
refine' h_meas.comp (Measurable.prod_mk _ measurable_snd)
[GOAL]
case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
mβ : MeasurableSpace β
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : BorelSpace β
m : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), Measurable (u i)
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
h_meas : Measurable fun p => u (↑p.fst) p.snd
this :
  (fun p => u (↑(t_sf n) p.fst) p.snd) =
    (fun p => u (↑p.fst) p.snd) ∘ fun p =>
      ({ val := ↑(t_sf n) p.fst, property := (_ : ↑(t_sf n) p.fst ∈ SimpleFunc.range (t_sf n)) }, p.snd)
⊢ Measurable fun p => { val := ↑(t_sf n) p.fst, property := (_ : ↑(t_sf n) p.fst ∈ SimpleFunc.range (t_sf n)) }
[PROOFSTEP]
exact ((t_sf n).measurable.comp measurable_fst).subtype_mk
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
⊢ StronglyMeasurable (uncurry u)
[PROOFSTEP]
borelize β
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
⊢ StronglyMeasurable (uncurry u)
[PROOFSTEP]
obtain ⟨t_sf, ht_sf⟩ : ∃ t : ℕ → SimpleFunc ι ι, ∀ j x, Tendsto (fun n => u (t n j) x) atTop (𝓝 <| u j x) :=
  by
  have h_str_meas : StronglyMeasurable (id : ι → ι) := stronglyMeasurable_id
  refine' ⟨h_str_meas.approx, fun j x => _⟩
  exact ((hu_cont x).tendsto j).comp (h_str_meas.tendsto_approx j)
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
⊢ ∃ t, ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t n) j) x) atTop (𝓝 (u j x))
[PROOFSTEP]
have h_str_meas : StronglyMeasurable (id : ι → ι) := stronglyMeasurable_id
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
h_str_meas : StronglyMeasurable id
⊢ ∃ t, ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t n) j) x) atTop (𝓝 (u j x))
[PROOFSTEP]
refine' ⟨h_str_meas.approx, fun j x => _⟩
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
h_str_meas : StronglyMeasurable id
j : ι
x : α
⊢ Tendsto (fun n => u (↑(StronglyMeasurable.approx h_str_meas n) j) x) atTop (𝓝 (u j x))
[PROOFSTEP]
exact ((hu_cont x).tendsto j).comp (h_str_meas.tendsto_approx j)
[GOAL]
case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
⊢ StronglyMeasurable (uncurry u)
[PROOFSTEP]
let U (n : ℕ) (p : ι × α) := u (t_sf n p.fst) p.snd
[GOAL]
case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
⊢ StronglyMeasurable (uncurry u)
[PROOFSTEP]
have h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd) :=
  by
  rw [tendsto_pi_nhds]
  exact fun p => ht_sf p.fst p.snd
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
⊢ Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
[PROOFSTEP]
rw [tendsto_pi_nhds]
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
⊢ ∀ (x : ι × α), Tendsto (fun i => U i x) atTop (𝓝 (u x.fst x.snd))
[PROOFSTEP]
exact fun p => ht_sf p.fst p.snd
[GOAL]
case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
⊢ StronglyMeasurable (uncurry u)
[PROOFSTEP]
refine' stronglyMeasurable_of_tendsto _ (fun n => _) h_tendsto
[GOAL]
case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
⊢ StronglyMeasurable (U n)
[PROOFSTEP]
have h_str_meas : StronglyMeasurable fun p : (t_sf n).range × α => u (↑p.fst) p.snd :=
  by
  refine' stronglyMeasurable_iff_measurable_separable.2 ⟨_, _⟩
  · have :
      (fun p : ↥(t_sf n).range × α => u (↑p.fst) p.snd) =
        (fun p : α × (t_sf n).range => u (↑p.snd) p.fst) ∘ Prod.swap :=
      rfl
    rw [this, measurable_swap_iff]
    exact measurable_from_prod_countable fun j => (h j).measurable
  · have : IsSeparable (⋃ i : (t_sf n).range, range (u i)) := isSeparable_iUnion fun i => (h i).isSeparable_range
    apply this.mono
    rintro _ ⟨⟨i, x⟩, rfl⟩
    simp only [mem_iUnion, mem_range]
    exact ⟨i, x, rfl⟩
[GOAL]
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
⊢ StronglyMeasurable fun p => u (↑p.fst) p.snd
[PROOFSTEP]
refine' stronglyMeasurable_iff_measurable_separable.2 ⟨_, _⟩
[GOAL]
case refine'_1
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
⊢ Measurable fun p => u (↑p.fst) p.snd
[PROOFSTEP]
have :
  (fun p : ↥(t_sf n).range × α => u (↑p.fst) p.snd) = (fun p : α × (t_sf n).range => u (↑p.snd) p.fst) ∘ Prod.swap :=
  rfl
[GOAL]
case refine'_1
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
this : (fun p => u (↑p.fst) p.snd) = (fun p => u (↑p.snd) p.fst) ∘ Prod.swap
⊢ Measurable fun p => u (↑p.fst) p.snd
[PROOFSTEP]
rw [this, measurable_swap_iff]
[GOAL]
case refine'_1
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
this : (fun p => u (↑p.fst) p.snd) = (fun p => u (↑p.snd) p.fst) ∘ Prod.swap
⊢ Measurable fun p => u (↑p.snd) p.fst
[PROOFSTEP]
exact measurable_from_prod_countable fun j => (h j).measurable
[GOAL]
case refine'_2
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
⊢ IsSeparable (range fun p => u (↑p.fst) p.snd)
[PROOFSTEP]
have : IsSeparable (⋃ i : (t_sf n).range, range (u i)) := isSeparable_iUnion fun i => (h i).isSeparable_range
[GOAL]
case refine'_2
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
this : IsSeparable (⋃ (i : { x // x ∈ SimpleFunc.range (t_sf n) }), range (u ↑i))
⊢ IsSeparable (range fun p => u (↑p.fst) p.snd)
[PROOFSTEP]
apply this.mono
[GOAL]
case refine'_2
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
this : IsSeparable (⋃ (i : { x // x ∈ SimpleFunc.range (t_sf n) }), range (u ↑i))
⊢ (range fun p => u (↑p.fst) p.snd) ⊆ ⋃ (i : { x // x ∈ SimpleFunc.range (t_sf n) }), range (u ↑i)
[PROOFSTEP]
rintro _ ⟨⟨i, x⟩, rfl⟩
[GOAL]
case refine'_2.intro.mk
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
this : IsSeparable (⋃ (i : { x // x ∈ SimpleFunc.range (t_sf n) }), range (u ↑i))
i : { x // x ∈ SimpleFunc.range (t_sf n) }
x : α
⊢ (fun p => u (↑p.fst) p.snd) (i, x) ∈ ⋃ (i : { x // x ∈ SimpleFunc.range (t_sf n) }), range (u ↑i)
[PROOFSTEP]
simp only [mem_iUnion, mem_range]
[GOAL]
case refine'_2.intro.mk
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
this : IsSeparable (⋃ (i : { x // x ∈ SimpleFunc.range (t_sf n) }), range (u ↑i))
i : { x // x ∈ SimpleFunc.range (t_sf n) }
x : α
⊢ ∃ i_1 y, u (↑i_1) y = u (↑i) x
[PROOFSTEP]
exact ⟨i, x, rfl⟩
[GOAL]
case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
h_str_meas : StronglyMeasurable fun p => u (↑p.fst) p.snd
⊢ StronglyMeasurable (U n)
[PROOFSTEP]
have :
  (fun p : ι × α => u (t_sf n p.fst) p.snd) =
    (fun p : ↥(t_sf n).range × α => u p.fst p.snd) ∘ fun p : ι × α =>
      (⟨t_sf n p.fst, SimpleFunc.mem_range_self _ _⟩, p.snd) :=
  rfl
[GOAL]
case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
h_str_meas : StronglyMeasurable fun p => u (↑p.fst) p.snd
this :
  (fun p => u (↑(t_sf n) p.fst) p.snd) =
    (fun p => u (↑p.fst) p.snd) ∘ fun p =>
      ({ val := ↑(t_sf n) p.fst, property := (_ : ↑(t_sf n) p.fst ∈ SimpleFunc.range (t_sf n)) }, p.snd)
⊢ StronglyMeasurable (U n)
[PROOFSTEP]
simp_rw [this]
[GOAL]
case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
h_str_meas : StronglyMeasurable fun p => u (↑p.fst) p.snd
this :
  (fun p => u (↑(t_sf n) p.fst) p.snd) =
    (fun p => u (↑p.fst) p.snd) ∘ fun p =>
      ({ val := ↑(t_sf n) p.fst, property := (_ : ↑(t_sf n) p.fst ∈ SimpleFunc.range (t_sf n)) }, p.snd)
⊢ StronglyMeasurable
    ((fun p => u (↑p.fst) p.snd) ∘ fun p =>
      ({ val := ↑(t_sf n) p.fst, property := (_ : ↑(t_sf n) p.fst ∈ SimpleFunc.range (t_sf n)) }, p.snd))
[PROOFSTEP]
refine' h_str_meas.comp_measurable (Measurable.prod_mk _ measurable_snd)
[GOAL]
case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι✝ : Type u_4
inst✝⁸ : Countable ι✝
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : TopologicalSpace ι
inst✝⁶ : MetrizableSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : SecondCountableTopology ι
inst✝³ : OpensMeasurableSpace ι
inst✝² : TopologicalSpace β
inst✝¹ : PseudoMetrizableSpace β
inst✝ : MeasurableSpace α
u : ι → α → β
hu_cont : ∀ (x : α), Continuous fun i => u i x
h : ∀ (i : ι), StronglyMeasurable (u i)
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
t_sf : ℕ → ι →ₛ ι
ht_sf : ∀ (j : ι) (x : α), Tendsto (fun n => u (↑(t_sf n) j) x) atTop (𝓝 (u j x))
U : ℕ → ι × α → β := fun n p => u (↑(t_sf n) p.fst) p.snd
h_tendsto : Tendsto U atTop (𝓝 fun p => u p.fst p.snd)
n : ℕ
h_str_meas : StronglyMeasurable fun p => u (↑p.fst) p.snd
this :
  (fun p => u (↑(t_sf n) p.fst) p.snd) =
    (fun p => u (↑p.fst) p.snd) ∘ fun p =>
      ({ val := ↑(t_sf n) p.fst, property := (_ : ↑(t_sf n) p.fst ∈ SimpleFunc.range (t_sf n)) }, p.snd)
⊢ Measurable fun p => { val := ↑(t_sf n) p.fst, property := (_ : ↑(t_sf n) p.fst ∈ SimpleFunc.range (t_sf n)) }
[PROOFSTEP]
exact ((t_sf n).measurable.comp measurable_fst).subtype_mk
