Theorem: MeasureTheory.L1.SimpleFunc.setToL1S_nonneg
File: Mathlib/MeasureTheory/Integral/SetToL1.lean

tactic: simp_rw [setToL1S]
state_before: α : Type u_1
E : Type ?u.738601
F : Type ?u.738604
F' : Type ?u.738607
G : Type ?u.738610
𝕜 : Type ?u.738613
p : ℝ≥0∞
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace ℝ F'
inst✝⁶ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝⁵ : NormedField 𝕜
inst✝⁴ : NormedSpace 𝕜 E
G'' : Type u_2
G' : Type u_3
inst✝³ : NormedLatticeAddCommGroup G'
inst✝² : NormedSpace ℝ G'
inst✝¹ : NormedLatticeAddCommGroup G''
inst✝ : NormedSpace ℝ G''
T : Set α → G'' →L[ℝ] G'
h_zero : ∀ (s : Set α), MeasurableSet s → ↑↑μ s = 0 → T s = 0
h_add : FinMeasAdditive μ T
hT_nonneg : ∀ (s : Set α), MeasurableSet s → ↑↑μ s < ⊤ → ∀ (x : G''), 0 ≤ x → 0 ≤ ↑(T s) x
f : { x // x ∈ simpleFunc G'' 1 μ }
hf : 0 ≤ f
⊢ 0 ≤ setToL1S T f

tactic: obtain ⟨f', hf', hff'⟩ : ∃ f' : α →ₛ G'', 0 ≤ f' ∧ simpleFunc.toSimpleFunc f =ᵐ[μ] f' := by
  obtain ⟨f'', hf'', hff''⟩ := exists_simpleFunc_nonneg_ae_eq hf
  exact ⟨f'', hf'', (Lp.simpleFunc.toSimpleFunc_eq_toFun f).trans hff''⟩
state_before: α : Type u_1
E : Type ?u.738601
F : Type ?u.738604
F' : Type ?u.738607
G : Type ?u.738610
𝕜 : Type ?u.738613
p : ℝ≥0∞
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace ℝ F'
inst✝⁶ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝⁵ : NormedField 𝕜
inst✝⁴ : NormedSpace 𝕜 E
G'' : Type u_2
G' : Type u_3
inst✝³ : NormedLatticeAddCommGroup G'
inst✝² : NormedSpace ℝ G'
inst✝¹ : NormedLatticeAddCommGroup G''
inst✝ : NormedSpace ℝ G''
T : Set α → G'' →L[ℝ] G'
h_zero : ∀ (s : Set α), MeasurableSet s → ↑↑μ s = 0 → T s = 0
h_add : FinMeasAdditive μ T
hT_nonneg : ∀ (s : Set α), MeasurableSet s → ↑↑μ s < ⊤ → ∀ (x : G''), 0 ≤ x → 0 ≤ ↑(T s) x
f : { x // x ∈ simpleFunc G'' 1 μ }
hf : 0 ≤ f
⊢ 0 ≤ SimpleFunc.setToSimpleFunc T (toSimpleFunc f)

tactic: rw [SimpleFunc.setToSimpleFunc_congr _ h_zero h_add (SimpleFunc.integrable _) hff']
state_before: case intro.intro
α : Type u_1
E : Type ?u.738601
F : Type ?u.738604
F' : Type ?u.738607
G : Type ?u.738610
𝕜 : Type ?u.738613
p : ℝ≥0∞
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace ℝ F'
inst✝⁶ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝⁵ : NormedField 𝕜
inst✝⁴ : NormedSpace 𝕜 E
G'' : Type u_2
G' : Type u_3
inst✝³ : NormedLatticeAddCommGroup G'
inst✝² : NormedSpace ℝ G'
inst✝¹ : NormedLatticeAddCommGroup G''
inst✝ : NormedSpace ℝ G''
T : Set α → G'' →L[ℝ] G'
h_zero : ∀ (s : Set α), MeasurableSet s → ↑↑μ s = 0 → T s = 0
h_add : FinMeasAdditive μ T
hT_nonneg : ∀ (s : Set α), MeasurableSet s → ↑↑μ s < ⊤ → ∀ (x : G''), 0 ≤ x → 0 ≤ ↑(T s) x
f : { x // x ∈ simpleFunc G'' 1 μ }
hf : 0 ≤ f
f' : α →ₛ G''
hf' : 0 ≤ f'
hff' : ↑(toSimpleFunc f) =ᵐ[μ] ↑f'
⊢ 0 ≤ SimpleFunc.setToSimpleFunc T (toSimpleFunc f)

tactic: exact
  SimpleFunc.setToSimpleFunc_nonneg' T hT_nonneg _ hf' ((SimpleFunc.integrable f).congr hff')
state_before: case intro.intro
α : Type u_1
E : Type ?u.738601
F : Type ?u.738604
F' : Type ?u.738607
G : Type ?u.738610
𝕜 : Type ?u.738613
p : ℝ≥0∞
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace ℝ F'
inst✝⁶ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝⁵ : NormedField 𝕜
inst✝⁴ : NormedSpace 𝕜 E
G'' : Type u_2
G' : Type u_3
inst✝³ : NormedLatticeAddCommGroup G'
inst✝² : NormedSpace ℝ G'
inst✝¹ : NormedLatticeAddCommGroup G''
inst✝ : NormedSpace ℝ G''
T : Set α → G'' →L[ℝ] G'
h_zero : ∀ (s : Set α), MeasurableSet s → ↑↑μ s = 0 → T s = 0
h_add : FinMeasAdditive μ T
hT_nonneg : ∀ (s : Set α), MeasurableSet s → ↑↑μ s < ⊤ → ∀ (x : G''), 0 ≤ x → 0 ≤ ↑(T s) x
f : { x // x ∈ simpleFunc G'' 1 μ }
hf : 0 ≤ f
f' : α →ₛ G''
hf' : 0 ≤ f'
hff' : ↑(toSimpleFunc f) =ᵐ[μ] ↑f'
⊢ 0 ≤ SimpleFunc.setToSimpleFunc (fun s => T s) f'

tactic: obtain ⟨f'', hf'', hff''⟩ := exists_simpleFunc_nonneg_ae_eq hf
state_before: α : Type u_1
E : Type ?u.738601
F : Type ?u.738604
F' : Type ?u.738607
G : Type ?u.738610
𝕜 : Type ?u.738613
p : ℝ≥0∞
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace ℝ F'
inst✝⁶ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝⁵ : NormedField 𝕜
inst✝⁴ : NormedSpace 𝕜 E
G'' : Type u_2
G' : Type u_3
inst✝³ : NormedLatticeAddCommGroup G'
inst✝² : NormedSpace ℝ G'
inst✝¹ : NormedLatticeAddCommGroup G''
inst✝ : NormedSpace ℝ G''
T : Set α → G'' →L[ℝ] G'
h_zero : ∀ (s : Set α), MeasurableSet s → ↑↑μ s = 0 → T s = 0
h_add : FinMeasAdditive μ T
hT_nonneg : ∀ (s : Set α), MeasurableSet s → ↑↑μ s < ⊤ → ∀ (x : G''), 0 ≤ x → 0 ≤ ↑(T s) x
f : { x // x ∈ simpleFunc G'' 1 μ }
hf : 0 ≤ f
⊢ ∃ f', 0 ≤ f' ∧ ↑(toSimpleFunc f) =ᵐ[μ] ↑f'

tactic: exact ⟨f'', hf'', (Lp.simpleFunc.toSimpleFunc_eq_toFun f).trans hff''⟩
state_before: case intro.intro
α : Type u_1
E : Type ?u.738601
F : Type ?u.738604
F' : Type ?u.738607
G : Type ?u.738610
𝕜 : Type ?u.738613
p : ℝ≥0∞
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace ℝ F'
inst✝⁶ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝⁵ : NormedField 𝕜
inst✝⁴ : NormedSpace 𝕜 E
G'' : Type u_2
G' : Type u_3
inst✝³ : NormedLatticeAddCommGroup G'
inst✝² : NormedSpace ℝ G'
inst✝¹ : NormedLatticeAddCommGroup G''
inst✝ : NormedSpace ℝ G''
T : Set α → G'' →L[ℝ] G'
h_zero : ∀ (s : Set α), MeasurableSet s → ↑↑μ s = 0 → T s = 0
h_add : FinMeasAdditive μ T
hT_nonneg : ∀ (s : Set α), MeasurableSet s → ↑↑μ s < ⊤ → ∀ (x : G''), 0 ≤ x → 0 ≤ ↑(T s) x
f : { x // x ∈ simpleFunc G'' 1 μ }
hf : 0 ≤ f
f'' : α →ₛ G''
hf'' : 0 ≤ f''
hff'' : ↑↑↑f =ᵐ[μ] ↑f''
⊢ ∃ f', 0 ≤ f' ∧ ↑(toSimpleFunc f) =ᵐ[μ] ↑f'