Theorem: MeasureTheory.L1.SimpleFunc.integral_eq_norm_posPart_sub
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: have ae_eq₁ : (toSimpleFunc f).posPart =ᵐ[μ] (toSimpleFunc (posPart f)).map norm := by
  filter_upwards [posPart_toSimpleFunc f] with _ h
  rw [SimpleFunc.map_apply, h]
  conv_lhs => rw [← SimpleFunc.posPart_map_norm, SimpleFunc.map_apply]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
⊢ integral f = ‖posPart f‖ - ‖negPart f‖
state_after: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
⊢ integral f = ‖posPart f‖ - ‖negPart f‖

tactic: have ae_eq₂ : (toSimpleFunc f).negPart =ᵐ[μ] (toSimpleFunc (negPart f)).map norm := by
  filter_upwards [negPart_toSimpleFunc f] with _ h
  rw [SimpleFunc.map_apply, h]
  conv_lhs => rw [← SimpleFunc.negPart_map_norm, SimpleFunc.map_apply]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
⊢ integral f = ‖posPart f‖ - ‖negPart f‖
state_after: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
⊢ integral f = ‖posPart f‖ - ‖negPart f‖

tactic: rw [integral, norm_eq_integral, norm_eq_integral, ← SimpleFunc.integral_sub]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
⊢ integral f = ‖posPart f‖ - ‖negPart f‖
state_after: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
⊢ MeasureTheory.SimpleFunc.integral μ (toSimpleFunc f) =
    MeasureTheory.SimpleFunc.integral μ
      (SimpleFunc.map norm (toSimpleFunc (posPart f)) - SimpleFunc.map norm (toSimpleFunc (negPart f)))

case hf
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
⊢ Integrable (↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))) μ

case hg
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
⊢ Integrable (↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))) μ

tactic: filter_upwards [posPart_toSimpleFunc f] with _ h
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
⊢ ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
state_after: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
a✝ : α
h : ↑(toSimpleFunc (posPart f)) a✝ = ↑(toSimpleFunc f).posPart a✝
⊢ ↑(toSimpleFunc f).posPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (posPart f))) a✝

tactic: rw [SimpleFunc.map_apply, h]
state_before: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
a✝ : α
h : ↑(toSimpleFunc (posPart f)) a✝ = ↑(toSimpleFunc f).posPart a✝
⊢ ↑(toSimpleFunc f).posPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (posPart f))) a✝
state_after: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
a✝ : α
h : ↑(toSimpleFunc (posPart f)) a✝ = ↑(toSimpleFunc f).posPart a✝
⊢ ↑(toSimpleFunc f).posPart a✝ = ‖↑(toSimpleFunc f).posPart a✝‖

tactic: conv_lhs => rw [← SimpleFunc.posPart_map_norm, SimpleFunc.map_apply]
state_before: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
a✝ : α
h : ↑(toSimpleFunc (posPart f)) a✝ = ↑(toSimpleFunc f).posPart a✝
⊢ ↑(toSimpleFunc f).posPart a✝ = ‖↑(toSimpleFunc f).posPart a✝‖
state_after: no goals

tactic: filter_upwards [negPart_toSimpleFunc f] with _ h
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
⊢ ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
state_after: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
a✝ : α
h : ↑(toSimpleFunc (negPart f)) a✝ = ↑(toSimpleFunc f).negPart a✝
⊢ ↑(toSimpleFunc f).negPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (negPart f))) a✝

tactic: rw [SimpleFunc.map_apply, h]
state_before: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
a✝ : α
h : ↑(toSimpleFunc (negPart f)) a✝ = ↑(toSimpleFunc f).negPart a✝
⊢ ↑(toSimpleFunc f).negPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (negPart f))) a✝
state_after: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
a✝ : α
h : ↑(toSimpleFunc (negPart f)) a✝ = ↑(toSimpleFunc f).negPart a✝
⊢ ↑(toSimpleFunc f).negPart a✝ = ‖↑(toSimpleFunc f).negPart a✝‖

tactic: conv_lhs => rw [← SimpleFunc.negPart_map_norm, SimpleFunc.map_apply]
state_before: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
a✝ : α
h : ↑(toSimpleFunc (negPart f)) a✝ = ↑(toSimpleFunc f).negPart a✝
⊢ ↑(toSimpleFunc f).negPart a✝ = ‖↑(toSimpleFunc f).negPart a✝‖
state_after: no goals

tactic: apply MeasureTheory.SimpleFunc.integral_congr (SimpleFunc.integrable f)
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
⊢ MeasureTheory.SimpleFunc.integral μ (toSimpleFunc f) =
    MeasureTheory.SimpleFunc.integral μ
      (SimpleFunc.map norm (toSimpleFunc (posPart f)) - SimpleFunc.map norm (toSimpleFunc (negPart f)))
state_after: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
⊢ ↑(toSimpleFunc f) =ᶠ[ae μ]
    ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)) - SimpleFunc.map norm (toSimpleFunc (negPart f)))

tactic: filter_upwards [ae_eq₁, ae_eq₂] with _ h₁ h₂
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
⊢ ↑(toSimpleFunc f) =ᶠ[ae μ]
    ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)) - SimpleFunc.map norm (toSimpleFunc (negPart f)))
state_after: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
a✝ : α
h₁ : ↑(toSimpleFunc f).posPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (posPart f))) a✝
h₂ : ↑(toSimpleFunc f).negPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (negPart f))) a✝
⊢ ↑(toSimpleFunc f) a✝ =
    ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)) - SimpleFunc.map norm (toSimpleFunc (negPart f))) a✝

tactic: show _ = _ - _
state_before: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
a✝ : α
h₁ : ↑(toSimpleFunc f).posPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (posPart f))) a✝
h₂ : ↑(toSimpleFunc f).negPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (negPart f))) a✝
⊢ ↑(toSimpleFunc f) a✝ =
    ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)) - SimpleFunc.map norm (toSimpleFunc (negPart f))) a✝
state_after: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
a✝ : α
h₁ : ↑(toSimpleFunc f).posPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (posPart f))) a✝
h₂ : ↑(toSimpleFunc f).negPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (negPart f))) a✝
⊢ ↑(toSimpleFunc f) a✝ =
    ↑(SimpleFunc.map norm (toSimpleFunc (posPart f))) a✝ - ↑(SimpleFunc.map norm (toSimpleFunc (negPart f))) a✝

tactic: rw [← h₁, ← h₂]
state_before: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
a✝ : α
h₁ : ↑(toSimpleFunc f).posPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (posPart f))) a✝
h₂ : ↑(toSimpleFunc f).negPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (negPart f))) a✝
⊢ ↑(toSimpleFunc f) a✝ =
    ↑(SimpleFunc.map norm (toSimpleFunc (posPart f))) a✝ - ↑(SimpleFunc.map norm (toSimpleFunc (negPart f))) a✝
state_after: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
a✝ : α
h₁ : ↑(toSimpleFunc f).posPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (posPart f))) a✝
h₂ : ↑(toSimpleFunc f).negPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (negPart f))) a✝
⊢ ↑(toSimpleFunc f) a✝ = ↑(toSimpleFunc f).posPart a✝ - ↑(toSimpleFunc f).negPart a✝

tactic: have := (toSimpleFunc f).posPart_sub_negPart
state_before: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
a✝ : α
h₁ : ↑(toSimpleFunc f).posPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (posPart f))) a✝
h₂ : ↑(toSimpleFunc f).negPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (negPart f))) a✝
⊢ ↑(toSimpleFunc f) a✝ = ↑(toSimpleFunc f).posPart a✝ - ↑(toSimpleFunc f).negPart a✝
state_after: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
a✝ : α
h₁ : ↑(toSimpleFunc f).posPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (posPart f))) a✝
h₂ : ↑(toSimpleFunc f).negPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (negPart f))) a✝
this : (toSimpleFunc f).posPart - (toSimpleFunc f).negPart = toSimpleFunc f
⊢ ↑(toSimpleFunc f) a✝ = ↑(toSimpleFunc f).posPart a✝ - ↑(toSimpleFunc f).negPart a✝

tactic: conv_lhs => rw [← this]
state_before: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
a✝ : α
h₁ : ↑(toSimpleFunc f).posPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (posPart f))) a✝
h₂ : ↑(toSimpleFunc f).negPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (negPart f))) a✝
this : (toSimpleFunc f).posPart - (toSimpleFunc f).negPart = toSimpleFunc f
⊢ ↑(toSimpleFunc f) a✝ = ↑(toSimpleFunc f).posPart a✝ - ↑(toSimpleFunc f).negPart a✝
state_after: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
a✝ : α
h₁ : ↑(toSimpleFunc f).posPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (posPart f))) a✝
h₂ : ↑(toSimpleFunc f).negPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (negPart f))) a✝
this : (toSimpleFunc f).posPart - (toSimpleFunc f).negPart = toSimpleFunc f
⊢ ↑((toSimpleFunc f).posPart - (toSimpleFunc f).negPart) a✝ =
    ↑(toSimpleFunc f).posPart a✝ - ↑(toSimpleFunc f).negPart a✝

tactic: rfl
state_before: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
a✝ : α
h₁ : ↑(toSimpleFunc f).posPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (posPart f))) a✝
h₂ : ↑(toSimpleFunc f).negPart a✝ = ↑(SimpleFunc.map norm (toSimpleFunc (negPart f))) a✝
this : (toSimpleFunc f).posPart - (toSimpleFunc f).negPart = toSimpleFunc f
⊢ ↑((toSimpleFunc f).posPart - (toSimpleFunc f).negPart) a✝ =
    ↑(toSimpleFunc f).posPart a✝ - ↑(toSimpleFunc f).negPart a✝
state_after: no goals

tactic: exact (SimpleFunc.integrable f).pos_part.congr ae_eq₁
state_before: case hf
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
⊢ Integrable (↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))) μ
state_after: no goals

tactic: exact (SimpleFunc.integrable f).neg_part.congr ae_eq₂
state_before: case hg
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
F' : Type u_5
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
E' : Type u_6
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : NormedSpace 𝕜 E'
f : ↥(simpleFunc ℝ 1 μ)
ae_eq₁ : ↑(toSimpleFunc f).posPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (posPart f)))
ae_eq₂ : ↑(toSimpleFunc f).negPart =ᶠ[ae μ] ↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))
⊢ Integrable (↑(SimpleFunc.map norm (toSimpleFunc (negPart f)))) μ
state_after: no goals