-- 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:
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 φ μ
⊢ ∫ (x : X), L (φ x) ∂μ = L (∫ (x : X), φ x ∂μ)

Tactic:
apply φ_int.induction (P := fun φ => ∫ x, L (φ x) ∂μ = L (∫ x, φ x ∂μ))

Result:
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 φ μ
⊢ ∀ (c : E) ⦃s : Set X⦄,
    MeasurableSet s → μ s < ⊤ → (fun φ => ∫ (x : X), L (φ x) ∂μ = L (∫ (x : X), φ x ∂μ)) (s.indicator fun x => c)

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)

case h_closed
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 φ μ
⊢ IsClosed {f | (fun φ => ∫ (x : X), L (φ x) ∂μ = L (∫ (x : X), φ x ∂μ)) ↑↑f}

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

Proof state:
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 ∂μ)

Tactic:
rw [integral_congr_ae hfg.symm]

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) ∂μ = L (∫ (x : X), s.indicator (fun x => e) x ∂μ)

Tactic:
rw [integral_indicator_const e s_meas, ← @smul_one_smul E ℝ 𝕜 _ _ _ _ _ (μ s).toReal e,
  ContinuousLinearMap.map_smul, @smul_one_smul F ℝ 𝕜 _ _ _ _ _ (μ s).toReal (L e), ←
  integral_indicator_const (L e) s_meas]

Result:
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 ∂μ

Proof state:
case h_closed
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 φ μ
⊢ IsClosed {f | (fun φ => ∫ (x : X), L (φ x) ∂μ = L (∫ (x : X), φ x ∂μ)) ↑↑f}

Tactic:
exact isClosed_eq L.continuous_integral_comp_L1 (L.continuous.comp continuous_integral)

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 φ μ
⊢ ∀ (c : E) ⦃s : Set X⦄,
    MeasurableSet s → μ s < ⊤ → (fun φ => ∫ (x : X), L (φ x) ∂μ = L (∫ (x : X), φ x ∂μ)) (s.indicator fun x => c)

Tactic:
intro e s s_meas _

Result:
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) ∂μ = L (∫ (x : X), s.indicator (fun x => e) x ∂μ)