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

tactic: refine'
  (h3C.prod h3D).ext
    (generateFrom_eq_prod hC hD h3C.isCountablySpanning h3D.isCountablySpanning).symm
    (h2C.prod h2D) _
state_before: α : Type u_1
α' : Type ?u.4454031
β : Type u_2
β' : Type ?u.4454037
γ : Type ?u.4454040
E : Type ?u.4454043
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ
μ✝ μ' : Measure α
ν✝ ν' : Measure β
τ : Measure γ
inst✝² : NormedAddCommGroup E
inst✝¹ : SigmaFinite ν✝
inst✝ : SigmaFinite μ✝
μ : Measure α
ν : Measure β
C : Set (Set α)
D : Set (Set β)
hC : generateFrom C = inst✝⁷
hD : generateFrom D = inst✝⁵
h2C : IsPiSystem C
h2D : IsPiSystem D
h3C : FiniteSpanningSetsIn μ C
h3D : FiniteSpanningSetsIn ν D
μν : Measure (α × β)
h₁ : ∀ (s : Set α), s ∈ C → ∀ (t : Set β), t ∈ D → ↑↑μν (s ×ˢ t) = ↑↑μ s * ↑↑ν t
⊢ Measure.prod μ ν = μν

tactic: rintro _ ⟨s, t, hs, ht, rfl⟩
state_before: α : Type u_1
α' : Type ?u.4454031
β : Type u_2
β' : Type ?u.4454037
γ : Type ?u.4454040
E : Type ?u.4454043
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ
μ✝ μ' : Measure α
ν✝ ν' : Measure β
τ : Measure γ
inst✝² : NormedAddCommGroup E
inst✝¹ : SigmaFinite ν✝
inst✝ : SigmaFinite μ✝
μ : Measure α
ν : Measure β
C : Set (Set α)
D : Set (Set β)
hC : generateFrom C = inst✝⁷
hD : generateFrom D = inst✝⁵
h2C : IsPiSystem C
h2D : IsPiSystem D
h3C : FiniteSpanningSetsIn μ C
h3D : FiniteSpanningSetsIn ν D
μν : Measure (α × β)
h₁ : ∀ (s : Set α), s ∈ C → ∀ (t : Set β), t ∈ D → ↑↑μν (s ×ˢ t) = ↑↑μ s * ↑↑ν t
⊢ ∀ (s : Set (α × β)), s ∈ image2 (fun x x_1 => x ×ˢ x_1) C D → ↑↑(Measure.prod μ ν) s = ↑↑μν s

tactic: haveI := h3D.sigmaFinite
state_before: case intro.intro.intro.intro
α : Type u_1
α' : Type ?u.4454031
β : Type u_2
β' : Type ?u.4454037
γ : Type ?u.4454040
E : Type ?u.4454043
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ
μ✝ μ' : Measure α
ν✝ ν' : Measure β
τ : Measure γ
inst✝² : NormedAddCommGroup E
inst✝¹ : SigmaFinite ν✝
inst✝ : SigmaFinite μ✝
μ : Measure α
ν : Measure β
C : Set (Set α)
D : Set (Set β)
hC : generateFrom C = inst✝⁷
hD : generateFrom D = inst✝⁵
h2C : IsPiSystem C
h2D : IsPiSystem D
h3C : FiniteSpanningSetsIn μ C
h3D : FiniteSpanningSetsIn ν D
μν : Measure (α × β)
h₁ : ∀ (s : Set α), s ∈ C → ∀ (t : Set β), t ∈ D → ↑↑μν (s ×ˢ t) = ↑↑μ s * ↑↑ν t
s : Set α
t : Set β
hs : s ∈ C
ht : t ∈ D
⊢ ↑↑(Measure.prod μ ν) ((fun x x_1 => x ×ˢ x_1) s t) = ↑↑μν ((fun x x_1 => x ×ˢ x_1) s t)

tactic: rw [h₁ s hs t ht, prod_prod]
state_before: case intro.intro.intro.intro
α : Type u_1
α' : Type ?u.4454031
β : Type u_2
β' : Type ?u.4454037
γ : Type ?u.4454040
E : Type ?u.4454043
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ
μ✝ μ' : Measure α
ν✝ ν' : Measure β
τ : Measure γ
inst✝² : NormedAddCommGroup E
inst✝¹ : SigmaFinite ν✝
inst✝ : SigmaFinite μ✝
μ : Measure α
ν : Measure β
C : Set (Set α)
D : Set (Set β)
hC : generateFrom C = inst✝⁷
hD : generateFrom D = inst✝⁵
h2C : IsPiSystem C
h2D : IsPiSystem D
h3C : FiniteSpanningSetsIn μ C
h3D : FiniteSpanningSetsIn ν D
μν : Measure (α × β)
h₁ : ∀ (s : Set α), s ∈ C → ∀ (t : Set β), t ∈ D → ↑↑μν (s ×ˢ t) = ↑↑μ s * ↑↑ν t
s : Set α
t : Set β
hs : s ∈ C
ht : t ∈ D
this : SigmaFinite ν
⊢ ↑↑(Measure.prod μ ν) ((fun x x_1 => x ×ˢ x_1) s t) = ↑↑μν ((fun x x_1 => x ×ˢ x_1) s t)