-- Mathlib/MeasureTheory/Integral/SetIntegral.lean
theorem integral_comp_comm [CompleteSpace E] (L : E →L[𝕜] F) {φ : X → E} (φ_int : Integrable φ μ) :
    ∫ x, L (φ x) ∂μ = L (∫ x, φ x ∂μ)

Proof state:
case h_ae
X : Type u_1
E : Type u_3
F : Type u_4
inst✝⁹ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
L : E →L[𝕜] F
φ : X → E
φ_int : Integrable φ μ
⊢ ∀ ⦃f g : X → E⦄,
    f =ᶠ[ae μ] g →
      Integrable f μ →
        (fun φ => ∫ (x : X), L (φ x) ∂μ = L (∫ (x : X), φ x ∂μ)) f →
          (fun φ => ∫ (x : X), L (φ x) ∂μ = L (∫ (x : X), φ x ∂μ)) g

Tactic:
intro f g hfg _ hf

Result:
case h_ae
X : Type u_1
E : Type u_3
F : Type u_4
inst✝⁹ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
L : E →L[𝕜] F
φ : X → E
φ_int : Integrable φ μ
f g : X → E
hfg : f =ᶠ[ae μ] g
a✝ : Integrable f μ
hf : ∫ (x : X), L (f x) ∂μ = L (∫ (x : X), f x ∂μ)
⊢ ∫ (x : X), L (g x) ∂μ = L (∫ (x : X), g x ∂μ)

Proof state:
case h_ind.e_f.h
X : Type u_1
E : Type u_3
F : Type u_4
inst✝⁹ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
L : E →L[𝕜] F
φ : X → E
φ_int : Integrable φ μ
e : E
s : Set X
s_meas : MeasurableSet s
a✝ : μ s < ⊤
a : X
⊢ L (s.indicator (fun x => e) a) = s.indicator (fun x => L e) a

Tactic:
rw [← Function.comp_def L, Set.indicator_comp_of_zero L.map_zero, Function.comp_apply]

Result:
no goals

Proof state:
case h_ind
X : Type u_1
E : Type u_3
F : Type u_4
inst✝⁹ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
L : E →L[𝕜] F
φ : X → E
φ_int : Integrable φ μ
e : E
s : Set X
s_meas : MeasurableSet s
a✝ : μ s < ⊤
⊢ ∫ (x : X), L (s.indicator (fun x => e) x) ∂μ = ∫ (x : X), s.indicator (fun x => L e) x ∂μ

Tactic:
congr 1 with a

Result:
case h_ind.e_f.h
X : Type u_1
E : Type u_3
F : Type u_4
inst✝⁹ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
L : E →L[𝕜] F
φ : X → E
φ_int : Integrable φ μ
e : E
s : Set X
s_meas : MeasurableSet s
a✝ : μ s < ⊤
a : X
⊢ L (s.indicator (fun x => e) a) = s.indicator (fun x => L e) a

Proof state:
case h_add
X : Type u_1
E : Type u_3
F : Type u_4
inst✝⁹ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
L : E →L[𝕜] F
φ : X → E
φ_int : Integrable φ μ
⊢ ∀ ⦃f g : X → E⦄,
    Disjoint (support f) (support g) →
      Integrable f μ →
        Integrable g μ →
          (fun φ => ∫ (x : X), L (φ x) ∂μ = L (∫ (x : X), φ x ∂μ)) f →
            (fun φ => ∫ (x : X), L (φ x) ∂μ = L (∫ (x : X), φ x ∂μ)) g →
              (fun φ => ∫ (x : X), L (φ x) ∂μ = L (∫ (x : X), φ x ∂μ)) (f + g)

Tactic:
intro f g _ f_int g_int hf hg

Result:
case h_add
X : Type u_1
E : Type u_3
F : Type u_4
inst✝⁹ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
L : E →L[𝕜] F
φ : X → E
φ_int : Integrable φ μ
f g : X → E
a✝ : Disjoint (support f) (support g)
f_int : Integrable f μ
g_int : Integrable g μ
hf : ∫ (x : X), L (f x) ∂μ = L (∫ (x : X), f x ∂μ)
hg : ∫ (x : X), L (g x) ∂μ = L (∫ (x : X), g x ∂μ)
⊢ ∫ (x : X), L ((f + g) x) ∂μ = L (∫ (x : X), (f + g) x ∂μ)

Proof state:
case h.e'_2
X : Type u_1
E : Type u_3
F : Type u_4
inst✝⁹ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
L : E →L[𝕜] F
φ : X → E
φ_int : Integrable φ μ
f g : X → E
hfg : f =ᶠ[ae μ] g
a✝ : Integrable f μ
⊢ ∫ (x : X), L (g x) ∂μ = ∫ (x : X), L (f x) ∂μ

Tactic:
exact integral_congr_ae (hfg.fun_comp L).symm

Result:
no goals

Proof state:
case h_add
X : Type u_1
E : Type u_3
F : Type u_4
inst✝⁹ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
L : E →L[𝕜] F
φ : X → E
φ_int : Integrable φ μ
f g : X → E
a✝ : Disjoint (support f) (support g)
f_int : Integrable f μ
g_int : Integrable g μ
hf : ∫ (x : X), L (f x) ∂μ = L (∫ (x : X), f x ∂μ)
hg : ∫ (x : X), L (g x) ∂μ = L (∫ (x : X), g x ∂μ)
⊢ ∫ (x : X), L ((f + g) x) ∂μ = L (∫ (x : X), (f + g) x ∂μ)

Tactic:
simp [L.map_add, integral_add (μ := μ) f_int g_int,
  integral_add (μ := μ) (L.integrable_comp f_int) (L.integrable_comp g_int), hf, hg]

Result:
no goals

Proof state:
case h_ae
X : Type u_1
E : Type u_3
F : Type u_4
inst✝⁹ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
L : E →L[𝕜] F
φ : X → E
φ_int : Integrable φ μ
f g : X → E
hfg : f =ᶠ[ae μ] g
a✝ : Integrable f μ
hf : ∫ (x : X), L (f x) ∂μ = L (∫ (x : X), f x ∂μ)
⊢ ∫ (x : X), L (g x) ∂μ = L (∫ (x : X), g x ∂μ)

Tactic:
convert hf using 1 <;> clear hf

Result:
case h.e'_2
X : Type u_1
E : Type u_3
F : Type u_4
inst✝⁹ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
L : E →L[𝕜] F
φ : X → E
φ_int : Integrable φ μ
f g : X → E
hfg : f =ᶠ[ae μ] g
a✝ : Integrable f μ
⊢ ∫ (x : X), L (g x) ∂μ = ∫ (x : X), L (f x) ∂μ

case h.e'_3
X : Type u_1
E : Type u_3
F : Type u_4
inst✝⁹ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
L : E →L[𝕜] F
φ : X → E
φ_int : Integrable φ μ
f g : X → E
hfg : f =ᶠ[ae μ] g
a✝ : Integrable f μ
⊢ L (∫ (x : X), g x ∂μ) = L (∫ (x : X), f x ∂μ)