Theorem: MeasureTheory.Measure.pi_eq_generateFrom
File: Mathlib/MeasureTheory/Constructions/Pi.lean

tactic: apply_assumption
state_before: ι : Type ?u.2834565
ι' : Type ?u.2834568
α : ι → Type ?u.2834573
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
C : (i : ι) → Set (Set (α i))
i : ι
⊢ MeasurableSpace (α i)

tactic: have h4C : ∀ (i) (s : Set (α i)), s ∈ C i → MeasurableSet s := by
  intro i s hs; rw [← hC]; exact measurableSet_generateFrom hs
state_before: ι : Type u_2
ι' : Type ?u.2834568
α : ι → Type u_1
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
C : (i : ι) → Set (Set (α i))
hC : ∀ (i : ι), generateFrom (C i) = inst✝ i
h2C : ∀ (i : ι), IsPiSystem (C i)
h3C : (i : ι) → FiniteSpanningSetsIn (μ i) (C i)
μν : Measure ((i : ι) → α i)
h₁ : ∀ (s : (i : ι) → Set (α i)), (∀ (i : ι), s i ∈ C i) → ↑↑μν (Set.pi univ s) = ∏ i : ι, ↑↑(μ i) (s i)
⊢ Measure.pi μ = μν

tactic: refine'
  (FiniteSpanningSetsIn.pi h3C).ext
    (generateFrom_eq_pi hC fun i => (h3C i).isCountablySpanning).symm (IsPiSystem.pi h2C) _
state_before: ι : Type u_2
ι' : Type ?u.2834568
α : ι → Type u_1
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
C : (i : ι) → Set (Set (α i))
hC : ∀ (i : ι), generateFrom (C i) = inst✝ i
h2C : ∀ (i : ι), IsPiSystem (C i)
h3C : (i : ι) → FiniteSpanningSetsIn (μ i) (C i)
μν : Measure ((i : ι) → α i)
h₁ : ∀ (s : (i : ι) → Set (α i)), (∀ (i : ι), s i ∈ C i) → ↑↑μν (Set.pi univ s) = ∏ i : ι, ↑↑(μ i) (s i)
h4C : ∀ (i : ι) (s : Set (α i)), s ∈ C i → MeasurableSet s
⊢ Measure.pi μ = μν

tactic: rintro _ ⟨s, hs, rfl⟩
state_before: ι : Type u_2
ι' : Type ?u.2834568
α : ι → Type u_1
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
C : (i : ι) → Set (Set (α i))
hC : ∀ (i : ι), generateFrom (C i) = inst✝ i
h2C : ∀ (i : ι), IsPiSystem (C i)
h3C : (i : ι) → FiniteSpanningSetsIn (μ i) (C i)
μν : Measure ((i : ι) → α i)
h₁ : ∀ (s : (i : ι) → Set (α i)), (∀ (i : ι), s i ∈ C i) → ↑↑μν (Set.pi univ s) = ∏ i : ι, ↑↑(μ i) (s i)
h4C : ∀ (i : ι) (s : Set (α i)), s ∈ C i → MeasurableSet s
⊢ ∀ (s : Set ((i : ι) → α i)), (s ∈ Set.pi univ '' Set.pi univ fun i => C i) → ↑↑(Measure.pi μ) s = ↑↑μν s

tactic: rw [mem_univ_pi] at hs
state_before: case intro.intro
ι : Type u_2
ι' : Type ?u.2834568
α : ι → Type u_1
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
C : (i : ι) → Set (Set (α i))
hC : ∀ (i : ι), generateFrom (C i) = inst✝ i
h2C : ∀ (i : ι), IsPiSystem (C i)
h3C : (i : ι) → FiniteSpanningSetsIn (μ i) (C i)
μν : Measure ((i : ι) → α i)
h₁ : ∀ (s : (i : ι) → Set (α i)), (∀ (i : ι), s i ∈ C i) → ↑↑μν (Set.pi univ s) = ∏ i : ι, ↑↑(μ i) (s i)
h4C : ∀ (i : ι) (s : Set (α i)), s ∈ C i → MeasurableSet s
s : (i : ι) → Set (α i)
hs : s ∈ Set.pi univ fun i => C i
⊢ ↑↑(Measure.pi μ) (Set.pi univ s) = ↑↑μν (Set.pi univ s)

tactic: haveI := fun i => (h3C i).sigmaFinite
state_before: case intro.intro
ι : Type u_2
ι' : Type ?u.2834568
α : ι → Type u_1
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
C : (i : ι) → Set (Set (α i))
hC : ∀ (i : ι), generateFrom (C i) = inst✝ i
h2C : ∀ (i : ι), IsPiSystem (C i)
h3C : (i : ι) → FiniteSpanningSetsIn (μ i) (C i)
μν : Measure ((i : ι) → α i)
h₁ : ∀ (s : (i : ι) → Set (α i)), (∀ (i : ι), s i ∈ C i) → ↑↑μν (Set.pi univ s) = ∏ i : ι, ↑↑(μ i) (s i)
h4C : ∀ (i : ι) (s : Set (α i)), s ∈ C i → MeasurableSet s
s : (i : ι) → Set (α i)
hs : ∀ (i : ι), s i ∈ C i
⊢ ↑↑(Measure.pi μ) (Set.pi univ s) = ↑↑μν (Set.pi univ s)

tactic: simp_rw [h₁ s hs, pi_pi_aux μ s fun i => h4C i _ (hs i)]
state_before: case intro.intro
ι : Type u_2
ι' : Type ?u.2834568
α : ι → Type u_1
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
C : (i : ι) → Set (Set (α i))
hC : ∀ (i : ι), generateFrom (C i) = inst✝ i
h2C : ∀ (i : ι), IsPiSystem (C i)
h3C : (i : ι) → FiniteSpanningSetsIn (μ i) (C i)
μν : Measure ((i : ι) → α i)
h₁ : ∀ (s : (i : ι) → Set (α i)), (∀ (i : ι), s i ∈ C i) → ↑↑μν (Set.pi univ s) = ∏ i : ι, ↑↑(μ i) (s i)
h4C : ∀ (i : ι) (s : Set (α i)), s ∈ C i → MeasurableSet s
s : (i : ι) → Set (α i)
hs : ∀ (i : ι), s i ∈ C i
this : ∀ (i : ι), SigmaFinite (μ i)
⊢ ↑↑(Measure.pi μ) (Set.pi univ s) = ↑↑μν (Set.pi univ s)

tactic: intro i s hs
state_before: ι : Type u_2
ι' : Type ?u.2834568
α : ι → Type u_1
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
C : (i : ι) → Set (Set (α i))
hC : ∀ (i : ι), generateFrom (C i) = inst✝ i
h2C : ∀ (i : ι), IsPiSystem (C i)
h3C : (i : ι) → FiniteSpanningSetsIn (μ i) (C i)
μν : Measure ((i : ι) → α i)
h₁ : ∀ (s : (i : ι) → Set (α i)), (∀ (i : ι), s i ∈ C i) → ↑↑μν (Set.pi univ s) = ∏ i : ι, ↑↑(μ i) (s i)
⊢ ∀ (i : ι) (s : Set (α i)), s ∈ C i → MeasurableSet s

tactic: rw [← hC]
state_before: ι : Type u_2
ι' : Type ?u.2834568
α : ι → Type u_1
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
C : (i : ι) → Set (Set (α i))
hC : ∀ (i : ι), generateFrom (C i) = inst✝ i
h2C : ∀ (i : ι), IsPiSystem (C i)
h3C : (i : ι) → FiniteSpanningSetsIn (μ i) (C i)
μν : Measure ((i : ι) → α i)
h₁ : ∀ (s : (i : ι) → Set (α i)), (∀ (i : ι), s i ∈ C i) → ↑↑μν (Set.pi univ s) = ∏ i : ι, ↑↑(μ i) (s i)
i : ι
s : Set (α i)
hs : s ∈ C i
⊢ MeasurableSet s

tactic: exact measurableSet_generateFrom hs
state_before: ι : Type u_2
ι' : Type ?u.2834568
α : ι → Type u_1
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
C : (i : ι) → Set (Set (α i))
hC : ∀ (i : ι), generateFrom (C i) = inst✝ i
h2C : ∀ (i : ι), IsPiSystem (C i)
h3C : (i : ι) → FiniteSpanningSetsIn (μ i) (C i)
μν : Measure ((i : ι) → α i)
h₁ : ∀ (s : (i : ι) → Set (α i)), (∀ (i : ι), s i ∈ C i) → ↑↑μν (Set.pi univ s) = ∏ i : ι, ↑↑(μ i) (s i)
i : ι
s : Set (α i)
hs : s ∈ C i
⊢ MeasurableSet s