Theorem: MeasureTheory.Lp.simpleFunc.denseEmbedding
File: Mathlib/MeasureTheory/Function/SimpleFuncDenseLp.lean

tactic: borelize E
state_before: α : Type u_1
β : Type ?u.1653495
ι : Type ?u.1653498
E : Type u_2
F : Type ?u.1653504
𝕜 : Type ?u.1653507
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
p : ℝ≥0∞
μ : Measure α
inst✝ : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
⊢ DenseEmbedding Subtype.val

tactic: apply simpleFunc.uniformEmbedding.denseEmbedding
state_before: α : Type u_1
β : Type ?u.1653495
ι : Type ?u.1653498
E : Type u_2
F : Type ?u.1653504
𝕜 : Type ?u.1653507
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
p : ℝ≥0∞
μ : Measure α
inst✝ : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
⊢ DenseEmbedding Subtype.val

tactic: intro f
state_before: α : Type u_1
β : Type ?u.1653495
ι : Type ?u.1653498
E : Type u_2
F : Type ?u.1653504
𝕜 : Type ?u.1653507
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
p : ℝ≥0∞
μ : Measure α
inst✝ : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
⊢ DenseRange Subtype.val

tactic: rw [mem_closure_iff_seq_limit]
state_before: α : Type u_1
β : Type ?u.1653495
ι : Type ?u.1653498
E : Type u_2
F : Type ?u.1653504
𝕜 : Type ?u.1653507
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
p : ℝ≥0∞
μ : Measure α
inst✝ : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
f : { x // x ∈ Lp E p }
⊢ f ∈ closure (Set.range Subtype.val)

tactic: have hfi' : Memℒp f p μ := Lp.memℒp f
state_before: α : Type u_1
β : Type ?u.1653495
ι : Type ?u.1653498
E : Type u_2
F : Type ?u.1653504
𝕜 : Type ?u.1653507
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
p : ℝ≥0∞
μ : Measure α
inst✝ : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
f : { x // x ∈ Lp E p }
⊢ ∃ x, (∀ (n : ℕ), x n ∈ Set.range Subtype.val) ∧ Tendsto x atTop (𝓝 f)

tactic: haveI : SeparableSpace (range f ∪ {0} : Set E) :=
  (Lp.stronglyMeasurable f).separableSpace_range_union_singleton
state_before: α : Type u_1
β : Type ?u.1653495
ι : Type ?u.1653498
E : Type u_2
F : Type ?u.1653504
𝕜 : Type ?u.1653507
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
p : ℝ≥0∞
μ : Measure α
inst✝ : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
f : { x // x ∈ Lp E p }
hfi' : Memℒp (↑↑f) p
⊢ ∃ x, (∀ (n : ℕ), x n ∈ Set.range Subtype.val) ∧ Tendsto x atTop (𝓝 f)

tactic: refine'
  ⟨fun n =>
    toLp
      (SimpleFunc.approxOn f (Lp.stronglyMeasurable f).measurable (range f ∪ {0}) 0 _ n)
      (SimpleFunc.memℒp_approxOn_range (Lp.stronglyMeasurable f).measurable hfi' n),
    fun n => mem_range_self _, _⟩
state_before: α : Type u_1
β : Type ?u.1653495
ι : Type ?u.1653498
E : Type u_2
F : Type ?u.1653504
𝕜 : Type ?u.1653507
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
p : ℝ≥0∞
μ : Measure α
inst✝ : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
f : { x // x ∈ Lp E p }
hfi' : Memℒp (↑↑f) p
this : SeparableSpace ↑(Set.range ↑↑f ∪ {0})
⊢ ∃ x, (∀ (n : ℕ), x n ∈ Set.range Subtype.val) ∧ Tendsto x atTop (𝓝 f)

tactic: convert SimpleFunc.tendsto_approxOn_range_Lp hp_ne_top (Lp.stronglyMeasurable f).measurable hfi'
state_before: α : Type u_1
β : Type ?u.1653495
ι : Type ?u.1653498
E : Type u_2
F : Type ?u.1653504
𝕜 : Type ?u.1653507
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
p : ℝ≥0∞
μ : Measure α
inst✝ : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
f : { x // x ∈ Lp E p }
hfi' : Memℒp (↑↑f) p
this : SeparableSpace ↑(Set.range ↑↑f ∪ {0})
⊢ Tendsto
    (fun n =>
      ↑(toLp (SimpleFunc.approxOn ↑↑f (_ : Measurable ↑↑f) (Set.range ↑↑f ∪ {0}) 0 (_ : 0 ∈ Set.range ↑↑f ∪ {0}) n)
          (_ :
            Memℒp
              (↑(SimpleFunc.approxOn ↑↑f (_ : Measurable ↑↑f) (Set.range ↑↑f ∪ {0}) 0 (_ : 0 ∈ Set.range ↑↑f ∪ {0}) n))
              p)))
    atTop (𝓝 f)

tactic: rw [toLp_coeFn f (Lp.memℒp f)]
state_before: case h.e'_5.h.e'_3
α : Type u_1
β : Type ?u.1653495
ι : Type ?u.1653498
E : Type u_2
F : Type ?u.1653504
𝕜 : Type ?u.1653507
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
p : ℝ≥0∞
μ : Measure α
inst✝ : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
f : { x // x ∈ Lp E p }
hfi' : Memℒp (↑↑f) p
this : SeparableSpace ↑(Set.range ↑↑f ∪ {0})
⊢ f = Memℒp.toLp (↑↑f) hfi'