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

tactic: refine' fun f => (Lp.simpleFunc.denseRange hp_ne_top).induction_on f h_closed _
state_before: α : Type u_1
β : Type ?u.3290795
ι : Type ?u.3290798
E : Type u_2
F : Type ?u.3290804
𝕜 : Type ?u.3290807
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f : α → E
p : ℝ≥0∞
μ : Measure α
_i : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
P : { x // x ∈ Lp E p } → Prop
h_ind :
  ∀ (c : E) {s : Set α} (hs : MeasurableSet s) (hμs : ↑↑μ s < ⊤), P ↑(simpleFunc.indicatorConst p hs (_ : ↑↑μ s ≠ ⊤) 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 : { x // x ∈ Lp E p }), P f

tactic: refine' Lp.simpleFunc.induction (α := α) (E := E) (lt_of_lt_of_le zero_lt_one _i.elim).ne'
  hp_ne_top _ _
state_before: α : Type u_1
β : Type ?u.3290795
ι : Type ?u.3290798
E : Type u_2
F : Type ?u.3290804
𝕜 : Type ?u.3290807
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f✝ : α → E
p : ℝ≥0∞
μ : Measure α
_i : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
P : { x // x ∈ Lp E p } → Prop
h_ind :
  ∀ (c : E) {s : Set α} (hs : MeasurableSet s) (hμs : ↑↑μ s < ⊤), P ↑(simpleFunc.indicatorConst p hs (_ : ↑↑μ s ≠ ⊤) 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 : { x // x ∈ Lp E p }
⊢ ∀ (a : { x // x ∈ ↑(simpleFunc E p μ) }), P ↑a

tactic: exact fun c s => h_ind c
state_before: case refine'_1
α : Type u_1
β : Type ?u.3290795
ι : Type ?u.3290798
E : Type u_2
F : Type ?u.3290804
𝕜 : Type ?u.3290807
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f✝ : α → E
p : ℝ≥0∞
μ : Measure α
_i : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
P : { x // x ∈ Lp E p } → Prop
h_ind :
  ∀ (c : E) {s : Set α} (hs : MeasurableSet s) (hμs : ↑↑μ s < ⊤), P ↑(simpleFunc.indicatorConst p hs (_ : ↑↑μ s ≠ ⊤) 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 : { x // x ∈ Lp E p }
⊢ ∀ (c : E) {s : Set α} (hs : MeasurableSet s) (hμs : ↑↑μ s < ⊤), P ↑(simpleFunc.indicatorConst p hs (_ : ↑↑μ s ≠ ⊤) c)

tactic: exact fun f g hf hg => h_add hf hg
state_before: case refine'_2
α : Type u_1
β : Type ?u.3290795
ι : Type ?u.3290798
E : Type u_2
F : Type ?u.3290804
𝕜 : Type ?u.3290807
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f✝ : α → E
p : ℝ≥0∞
μ : Measure α
_i : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
P : { x // x ∈ Lp E p } → Prop
h_ind :
  ∀ (c : E) {s : Set α} (hs : MeasurableSet s) (hμs : ↑↑μ s < ⊤), P ↑(simpleFunc.indicatorConst p hs (_ : ↑↑μ s ≠ ⊤) 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 : { x // x ∈ 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)