Theorem: MeasureTheory.Measure.add_prod
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

Proof steps:
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁸ : MeasurableSpace α
inst✝⁷ : MeasurableSpace α'
inst✝⁶ : MeasurableSpace β
inst✝⁵ : MeasurableSpace β'
inst✝⁴ : MeasurableSpace γ
μ μ'✝ : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝³ : NormedAddCommGroup E
inst✝² : SFinite ν
inst✝¹ : SFinite μ
μ' : Measure α
inst✝ : SFinite μ'
⊢ (μ + μ').prod ν = μ.prod ν + μ'.prod ν
state_after: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁸ : MeasurableSpace α
inst✝⁷ : MeasurableSpace α'
inst✝⁶ : MeasurableSpace β
inst✝⁵ : MeasurableSpace β'
inst✝⁴ : MeasurableSpace γ
μ μ'✝ : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝³ : NormedAddCommGroup E
inst✝² : SFinite ν
inst✝¹ : SFinite μ
μ' : Measure α
inst✝ : SFinite μ'
⊢ (sum fun p => (sFiniteSeq μ p.1 + sFiniteSeq μ' p.1).prod (sFiniteSeq ν p.2)) =
    sum fun n => (sFiniteSeq μ n.1).prod (sFiniteSeq ν n.2) + (sFiniteSeq μ' n.1).prod (sFiniteSeq ν n.2)
tactic: simp_rw [← sum_sFiniteSeq μ, ← sum_sFiniteSeq μ', sum_add_sum, ← sum_sFiniteSeq ν, prod_sum,
    sum_add_sum]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁸ : MeasurableSpace α
inst✝⁷ : MeasurableSpace α'
inst✝⁶ : MeasurableSpace β
inst✝⁵ : MeasurableSpace β'
inst✝⁴ : MeasurableSpace γ
μ μ'✝ : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝³ : NormedAddCommGroup E
inst✝² : SFinite ν
inst✝¹ : SFinite μ
μ' : Measure α
inst✝ : SFinite μ'
⊢ (sum fun p => (sFiniteSeq μ p.1 + sFiniteSeq μ' p.1).prod (sFiniteSeq ν p.2)) =
    sum fun n => (sFiniteSeq μ n.1).prod (sFiniteSeq ν n.2) + (sFiniteSeq μ' n.1).prod (sFiniteSeq ν n.2)
state_after: case e_f
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁸ : MeasurableSpace α
inst✝⁷ : MeasurableSpace α'
inst✝⁶ : MeasurableSpace β
inst✝⁵ : MeasurableSpace β'
inst✝⁴ : MeasurableSpace γ
μ μ'✝ : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝³ : NormedAddCommGroup E
inst✝² : SFinite ν
inst✝¹ : SFinite μ
μ' : Measure α
inst✝ : SFinite μ'
⊢ (fun p => (sFiniteSeq μ p.1 + sFiniteSeq μ' p.1).prod (sFiniteSeq ν p.2)) = fun n =>
    (sFiniteSeq μ n.1).prod (sFiniteSeq ν n.2) + (sFiniteSeq μ' n.1).prod (sFiniteSeq ν n.2)
tactic: congr
state_before: case e_f
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁸ : MeasurableSpace α
inst✝⁷ : MeasurableSpace α'
inst✝⁶ : MeasurableSpace β
inst✝⁵ : MeasurableSpace β'
inst✝⁴ : MeasurableSpace γ
μ μ'✝ : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝³ : NormedAddCommGroup E
inst✝² : SFinite ν
inst✝¹ : SFinite μ
μ' : Measure α
inst✝ : SFinite μ'
⊢ (fun p => (sFiniteSeq μ p.1 + sFiniteSeq μ' p.1).prod (sFiniteSeq ν p.2)) = fun n =>
    (sFiniteSeq μ n.1).prod (sFiniteSeq ν n.2) + (sFiniteSeq μ' n.1).prod (sFiniteSeq ν n.2)
state_after: case e_f.h
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁸ : MeasurableSpace α
inst✝⁷ : MeasurableSpace α'
inst✝⁶ : MeasurableSpace β
inst✝⁵ : MeasurableSpace β'
inst✝⁴ : MeasurableSpace γ
μ μ'✝ : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝³ : NormedAddCommGroup E
inst✝² : SFinite ν
inst✝¹ : SFinite μ
μ' : Measure α
inst✝ : SFinite μ'
i : ℕ × ℕ
⊢ (sFiniteSeq μ i.1 + sFiniteSeq μ' i.1).prod (sFiniteSeq ν i.2) =
    (sFiniteSeq μ i.1).prod (sFiniteSeq ν i.2) + (sFiniteSeq μ' i.1).prod (sFiniteSeq ν i.2)
tactic: ext1 i
state_before: case e_f.h
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁸ : MeasurableSpace α
inst✝⁷ : MeasurableSpace α'
inst✝⁶ : MeasurableSpace β
inst✝⁵ : MeasurableSpace β'
inst✝⁴ : MeasurableSpace γ
μ μ'✝ : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝³ : NormedAddCommGroup E
inst✝² : SFinite ν
inst✝¹ : SFinite μ
μ' : Measure α
inst✝ : SFinite μ'
i : ℕ × ℕ
⊢ (sFiniteSeq μ i.1 + sFiniteSeq μ' i.1).prod (sFiniteSeq ν i.2) =
    (sFiniteSeq μ i.1).prod (sFiniteSeq ν i.2) + (sFiniteSeq μ' i.1).prod (sFiniteSeq ν i.2)
state_after: case e_f.h
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁸ : MeasurableSpace α
inst✝⁷ : MeasurableSpace α'
inst✝⁶ : MeasurableSpace β
inst✝⁵ : MeasurableSpace β'
inst✝⁴ : MeasurableSpace γ
μ μ'✝ : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝³ : NormedAddCommGroup E
inst✝² : SFinite ν
inst✝¹ : SFinite μ
μ' : Measure α
inst✝ : SFinite μ'
i : ℕ × ℕ
s : Set α
t : Set β
x✝¹ : MeasurableSet s
x✝ : MeasurableSet t
⊢ ((sFiniteSeq μ i.1).prod (sFiniteSeq ν i.2) + (sFiniteSeq μ' i.1).prod (sFiniteSeq ν i.2)) (s ×ˢ t) =
    (sFiniteSeq μ i.1 + sFiniteSeq μ' i.1) s * (sFiniteSeq ν i.2) t
tactic: refine prod_eq fun s t _ _ => ?_
state_before: case e_f.h
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁸ : MeasurableSpace α
inst✝⁷ : MeasurableSpace α'
inst✝⁶ : MeasurableSpace β
inst✝⁵ : MeasurableSpace β'
inst✝⁴ : MeasurableSpace γ
μ μ'✝ : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝³ : NormedAddCommGroup E
inst✝² : SFinite ν
inst✝¹ : SFinite μ
μ' : Measure α
inst✝ : SFinite μ'
i : ℕ × ℕ
s : Set α
t : Set β
x✝¹ : MeasurableSet s
x✝ : MeasurableSet t
⊢ ((sFiniteSeq μ i.1).prod (sFiniteSeq ν i.2) + (sFiniteSeq μ' i.1).prod (sFiniteSeq ν i.2)) (s ×ˢ t) =
    (sFiniteSeq μ i.1 + sFiniteSeq μ' i.1) s * (sFiniteSeq ν i.2) t
state_after: no goals
tactic: simp_rw [add_apply, prod_prod, right_distrib]