Theorem: MeasureTheory.SimpleFunc.hasBoxIntegral
File: Mathlib/Analysis/BoxIntegral/Integrability.lean

tactic: induction' f using MeasureTheory.SimpleFunc.induction with y s hs f g _ hfi hgi
state_before: ι : Type u
E : Type v
inst✝³ : Fintype ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
f : SimpleFunc (ι → ℝ) E
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
I : Box ι
l : IntegrationParams
hl : l.bRiemann = false
⊢ HasIntegral I l (↑f) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) f)
state_after: case h_ind
ι : Type u
E : Type v
inst✝³ : Fintype ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
I : Box ι
l : IntegrationParams
hl : l.bRiemann = false
y : E
s : Set (ι → ℝ)
hs : MeasurableSet s
⊢ HasIntegral I l (↑(piecewise s hs (const (ι → ℝ) y) (const (ι → ℝ) 0))) μ.toBoxAdditive.toSMul
    (integral (μ.restrict ↑I) (piecewise s hs (const (ι → ℝ) y) (const (ι → ℝ) 0)))

case h_add
ι : Type u
E : Type v
inst✝³ : Fintype ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
I : Box ι
l : IntegrationParams
hl : l.bRiemann = false
f g : SimpleFunc (ι → ℝ) E
a✝ : Disjoint (Function.support ↑f) (Function.support ↑g)
hfi : HasIntegral I l (↑f) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) f)
hgi : HasIntegral I l (↑g) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) g)
⊢ HasIntegral I l (↑(f + g)) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) (f + g))

tactic: simpa only [Measure.restrict_apply hs, const_zero, integral_piecewise_zero, integral_const,
  Measure.restrict_apply, MeasurableSet.univ, Set.univ_inter] using
  BoxIntegral.hasIntegralIndicatorConst l hl hs I y μ
state_before: case h_ind
ι : Type u
E : Type v
inst✝³ : Fintype ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
I : Box ι
l : IntegrationParams
hl : l.bRiemann = false
y : E
s : Set (ι → ℝ)
hs : MeasurableSet s
⊢ HasIntegral I l (↑(piecewise s hs (const (ι → ℝ) y) (const (ι → ℝ) 0))) μ.toBoxAdditive.toSMul
    (integral (μ.restrict ↑I) (piecewise s hs (const (ι → ℝ) y) (const (ι → ℝ) 0)))
state_after: no goals

tactic: borelize E
state_before: case h_add
ι : Type u
E : Type v
inst✝³ : Fintype ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
I : Box ι
l : IntegrationParams
hl : l.bRiemann = false
f g : SimpleFunc (ι → ℝ) E
a✝ : Disjoint (Function.support ↑f) (Function.support ↑g)
hfi : HasIntegral I l (↑f) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) f)
hgi : HasIntegral I l (↑g) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) g)
⊢ HasIntegral I l (↑(f + g)) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) (f + g))
state_after: case h_add
ι : Type u
E : Type v
inst✝³ : Fintype ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
I : Box ι
l : IntegrationParams
hl : l.bRiemann = false
f g : SimpleFunc (ι → ℝ) E
a✝ : Disjoint (Function.support ↑f) (Function.support ↑g)
hfi : HasIntegral I l (↑f) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) f)
hgi : HasIntegral I l (↑g) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) g)
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
⊢ HasIntegral I l (↑(f + g)) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) (f + g))

tactic: haveI := Fact.mk (I.measure_coe_lt_top μ)
state_before: case h_add
ι : Type u
E : Type v
inst✝³ : Fintype ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
I : Box ι
l : IntegrationParams
hl : l.bRiemann = false
f g : SimpleFunc (ι → ℝ) E
a✝ : Disjoint (Function.support ↑f) (Function.support ↑g)
hfi : HasIntegral I l (↑f) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) f)
hgi : HasIntegral I l (↑g) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) g)
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
⊢ HasIntegral I l (↑(f + g)) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) (f + g))
state_after: case h_add
ι : Type u
E : Type v
inst✝³ : Fintype ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
I : Box ι
l : IntegrationParams
hl : l.bRiemann = false
f g : SimpleFunc (ι → ℝ) E
a✝ : Disjoint (Function.support ↑f) (Function.support ↑g)
hfi : HasIntegral I l (↑f) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) f)
hgi : HasIntegral I l (↑g) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) g)
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
this : Fact (μ ↑I < ⊤)
⊢ HasIntegral I l (↑(f + g)) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) (f + g))

tactic: rw [integral_add]
state_before: case h_add
ι : Type u
E : Type v
inst✝³ : Fintype ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
I : Box ι
l : IntegrationParams
hl : l.bRiemann = false
f g : SimpleFunc (ι → ℝ) E
a✝ : Disjoint (Function.support ↑f) (Function.support ↑g)
hfi : HasIntegral I l (↑f) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) f)
hgi : HasIntegral I l (↑g) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) g)
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
this : Fact (μ ↑I < ⊤)
⊢ HasIntegral I l (↑(f + g)) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) (f + g))
state_after: case h_add
ι : Type u
E : Type v
inst✝³ : Fintype ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
I : Box ι
l : IntegrationParams
hl : l.bRiemann = false
f g : SimpleFunc (ι → ℝ) E
a✝ : Disjoint (Function.support ↑f) (Function.support ↑g)
hfi : HasIntegral I l (↑f) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) f)
hgi : HasIntegral I l (↑g) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) g)
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
this : Fact (μ ↑I < ⊤)
⊢ HasIntegral I l (↑(f + g)) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) f + integral (μ.restrict ↑I) g)

case h_add.hf
ι : Type u
E : Type v
inst✝³ : Fintype ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
I : Box ι
l : IntegrationParams
hl : l.bRiemann = false
f g : SimpleFunc (ι → ℝ) E
a✝ : Disjoint (Function.support ↑f) (Function.support ↑g)
hfi : HasIntegral I l (↑f) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) f)
hgi : HasIntegral I l (↑g) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) g)
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
this : Fact (μ ↑I < ⊤)
⊢ Integrable (↑f) (μ.restrict ↑I)

case h_add.hg
ι : Type u
E : Type v
inst✝³ : Fintype ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
I : Box ι
l : IntegrationParams
hl : l.bRiemann = false
f g : SimpleFunc (ι → ℝ) E
a✝ : Disjoint (Function.support ↑f) (Function.support ↑g)
hfi : HasIntegral I l (↑f) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) f)
hgi : HasIntegral I l (↑g) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) g)
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
this : Fact (μ ↑I < ⊤)
⊢ Integrable (↑g) (μ.restrict ↑I)

tactic: exacts [hfi.add hgi, integrable_iff.2 fun _ _ => measure_lt_top _ _,
  integrable_iff.2 fun _ _ => measure_lt_top _ _]
state_before: case h_add
ι : Type u
E : Type v
inst✝³ : Fintype ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
I : Box ι
l : IntegrationParams
hl : l.bRiemann = false
f g : SimpleFunc (ι → ℝ) E
a✝ : Disjoint (Function.support ↑f) (Function.support ↑g)
hfi : HasIntegral I l (↑f) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) f)
hgi : HasIntegral I l (↑g) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) g)
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
this : Fact (μ ↑I < ⊤)
⊢ HasIntegral I l (↑(f + g)) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) f + integral (μ.restrict ↑I) g)

case h_add.hf
ι : Type u
E : Type v
inst✝³ : Fintype ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
I : Box ι
l : IntegrationParams
hl : l.bRiemann = false
f g : SimpleFunc (ι → ℝ) E
a✝ : Disjoint (Function.support ↑f) (Function.support ↑g)
hfi : HasIntegral I l (↑f) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) f)
hgi : HasIntegral I l (↑g) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) g)
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
this : Fact (μ ↑I < ⊤)
⊢ Integrable (↑f) (μ.restrict ↑I)

case h_add.hg
ι : Type u
E : Type v
inst✝³ : Fintype ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
I : Box ι
l : IntegrationParams
hl : l.bRiemann = false
f g : SimpleFunc (ι → ℝ) E
a✝ : Disjoint (Function.support ↑f) (Function.support ↑g)
hfi : HasIntegral I l (↑f) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) f)
hgi : HasIntegral I l (↑g) μ.toBoxAdditive.toSMul (integral (μ.restrict ↑I) g)
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
this : Fact (μ ↑I < ⊤)
⊢ Integrable (↑g) (μ.restrict ↑I)
state_after: no goals