Theorem: MeasureTheory.Lp.induction
File: Mathlib/MeasureTheory/Function/SimpleFuncDenseLp.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f : α → E
p : ℝ≥0∞
μ : Measure α
_i : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
P : ↥(Lp E p μ) → Prop
h_ind : ∀ (c : E) {s : Set α} (hs : MeasurableSet s) (hμs : μ s < ⊤), P ↑(simpleFunc.indicatorConst p hs ⋯ c)
h_add :
  ∀ ⦃f g : α → E⦄ (hf : Memℒp f p μ) (hg : Memℒp g p μ),
    Disjoint (support f) (support g) → P (Memℒp.toLp f hf) → P (Memℒp.toLp g hg) → P (Memℒp.toLp f hf + Memℒp.toLp g hg)
h_closed : IsClosed {f | P f}
⊢ ∀ (f : ↥(Lp E p μ)), P f
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f✝ : α → E
p : ℝ≥0∞
μ : Measure α
_i : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
P : ↥(Lp E p μ) → Prop
h_ind : ∀ (c : E) {s : Set α} (hs : MeasurableSet s) (hμs : μ s < ⊤), P ↑(simpleFunc.indicatorConst p hs ⋯ c)
h_add :
  ∀ ⦃f g : α → E⦄ (hf : Memℒp f p μ) (hg : Memℒp g p μ),
    Disjoint (support f) (support g) → P (Memℒp.toLp f hf) → P (Memℒp.toLp g hg) → P (Memℒp.toLp f hf + Memℒp.toLp g hg)
h_closed : IsClosed {f | P f}
f : ↥(Lp E p μ)
⊢ ∀ (a : { x // x ∈ ↑(simpleFunc E p μ) }), P ↑a
tactic: refine fun f => (Lp.simpleFunc.denseRange hp_ne_top).induction_on f h_closed ?_
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f✝ : α → E
p : ℝ≥0∞
μ : Measure α
_i : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
P : ↥(Lp E p μ) → Prop
h_ind : ∀ (c : E) {s : Set α} (hs : MeasurableSet s) (hμs : μ s < ⊤), P ↑(simpleFunc.indicatorConst p hs ⋯ c)
h_add :
  ∀ ⦃f g : α → E⦄ (hf : Memℒp f p μ) (hg : Memℒp g p μ),
    Disjoint (support f) (support g) → P (Memℒp.toLp f hf) → P (Memℒp.toLp g hg) → P (Memℒp.toLp f hf + Memℒp.toLp g hg)
h_closed : IsClosed {f | P f}
f : ↥(Lp E p μ)
⊢ ∀ (a : { x // x ∈ ↑(simpleFunc E p μ) }), P ↑a
state_after: case refine_1
α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f✝ : α → E
p : ℝ≥0∞
μ : Measure α
_i : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
P : ↥(Lp E p μ) → Prop
h_ind : ∀ (c : E) {s : Set α} (hs : MeasurableSet s) (hμs : μ s < ⊤), P ↑(simpleFunc.indicatorConst p hs ⋯ c)
h_add :
  ∀ ⦃f g : α → E⦄ (hf : Memℒp f p μ) (hg : Memℒp g p μ),
    Disjoint (support f) (support g) → P (Memℒp.toLp f hf) → P (Memℒp.toLp g hg) → P (Memℒp.toLp f hf + Memℒp.toLp g hg)
h_closed : IsClosed {f | P f}
f : ↥(Lp E p μ)
⊢ ∀ (c : E) {s : Set α} (hs : MeasurableSet s) (hμs : μ s < ⊤), P ↑(simpleFunc.indicatorConst p hs ⋯ c)

case refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f✝ : α → E
p : ℝ≥0∞
μ : Measure α
_i : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
P : ↥(Lp E p μ) → Prop
h_ind : ∀ (c : E) {s : Set α} (hs : MeasurableSet s) (hμs : μ s < ⊤), P ↑(simpleFunc.indicatorConst p hs ⋯ c)
h_add :
  ∀ ⦃f g : α → E⦄ (hf : Memℒp f p μ) (hg : Memℒp g p μ),
    Disjoint (support f) (support g) → P (Memℒp.toLp f hf) → P (Memℒp.toLp g hg) → P (Memℒp.toLp f hf + Memℒp.toLp g hg)
h_closed : IsClosed {f | P f}
f : ↥(Lp E p μ)
⊢ ∀ ⦃f g : α →ₛ E⦄ (hf : Memℒp (↑f) p μ) (hg : Memℒp (↑g) p μ),
    Disjoint (support ↑f) (support ↑g) →
      P ↑(simpleFunc.toLp f hf) → P ↑(simpleFunc.toLp g hg) → P ↑(simpleFunc.toLp f hf + simpleFunc.toLp g hg)
tactic: refine Lp.simpleFunc.induction (α := α) (E := E) (lt_of_lt_of_le zero_lt_one _i.elim).ne'
    hp_ne_top ?_ ?_