Theorem: MeasureTheory.measurePreserving_piUnique
File: Mathlib/MeasureTheory/Constructions/Pi.lean

tactic: set e := MeasurableEquiv.piUnique π
state_before: ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝³ : Fintype ι
m✝¹ : (i : ι) → OuterMeasure (α i)
m✝ : (i : ι) → MeasurableSpace (α i)
μ✝ : (i : ι) → Measure (α i)
inst✝² : ∀ (i : ι), SigmaFinite (μ✝ i)
inst✝¹ : Fintype ι'
π : ι → Type u_4
inst✝ : Unique ι
m : (i : ι) → MeasurableSpace (π i)
μ : (i : ι) → Measure (π i)
⊢ Measure.map (⇑(MeasurableEquiv.piUnique π)) (Measure.pi μ) = μ default
state_after: ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝³ : Fintype ι
m✝¹ : (i : ι) → OuterMeasure (α i)
m✝ : (i : ι) → MeasurableSpace (α i)
μ✝ : (i : ι) → Measure (α i)
inst✝² : ∀ (i : ι), SigmaFinite (μ✝ i)
inst✝¹ : Fintype ι'
π : ι → Type u_4
inst✝ : Unique ι
m : (i : ι) → MeasurableSpace (π i)
μ : (i : ι) → Measure (π i)
e : ((i : ι) → π i) ≃ᵐ π default := MeasurableEquiv.piUnique π
⊢ Measure.map (⇑e) (Measure.pi μ) = μ default

tactic: have : (piPremeasure fun i => (μ i).toOuterMeasure) = Measure.map e.symm (μ default) := by
  ext1 s
  rw [piPremeasure, Fintype.prod_unique, e.symm.map_apply, coe_toOuterMeasure]
  congr 1; exact e.toEquiv.image_eq_preimage s
state_before: ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝³ : Fintype ι
m✝¹ : (i : ι) → OuterMeasure (α i)
m✝ : (i : ι) → MeasurableSpace (α i)
μ✝ : (i : ι) → Measure (α i)
inst✝² : ∀ (i : ι), SigmaFinite (μ✝ i)
inst✝¹ : Fintype ι'
π : ι → Type u_4
inst✝ : Unique ι
m : (i : ι) → MeasurableSpace (π i)
μ : (i : ι) → Measure (π i)
e : ((i : ι) → π i) ≃ᵐ π default := MeasurableEquiv.piUnique π
⊢ Measure.map (⇑e) (Measure.pi μ) = μ default
state_after: ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝³ : Fintype ι
m✝¹ : (i : ι) → OuterMeasure (α i)
m✝ : (i : ι) → MeasurableSpace (α i)
μ✝ : (i : ι) → Measure (α i)
inst✝² : ∀ (i : ι), SigmaFinite (μ✝ i)
inst✝¹ : Fintype ι'
π : ι → Type u_4
inst✝ : Unique ι
m : (i : ι) → MeasurableSpace (π i)
μ : (i : ι) → Measure (π i)
e : ((i : ι) → π i) ≃ᵐ π default := MeasurableEquiv.piUnique π
this : (piPremeasure fun i => (μ i).toOuterMeasure) = ⇑(Measure.map (⇑e.symm) (μ default))
⊢ Measure.map (⇑e) (Measure.pi μ) = μ default

tactic: simp_rw [Measure.pi, OuterMeasure.pi, this, ← coe_toOuterMeasure, boundedBy_eq_self,
  toOuterMeasure_toMeasure, MeasurableEquiv.map_map_symm]
state_before: ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝³ : Fintype ι
m✝¹ : (i : ι) → OuterMeasure (α i)
m✝ : (i : ι) → MeasurableSpace (α i)
μ✝ : (i : ι) → Measure (α i)
inst✝² : ∀ (i : ι), SigmaFinite (μ✝ i)
inst✝¹ : Fintype ι'
π : ι → Type u_4
inst✝ : Unique ι
m : (i : ι) → MeasurableSpace (π i)
μ : (i : ι) → Measure (π i)
e : ((i : ι) → π i) ≃ᵐ π default := MeasurableEquiv.piUnique π
this : (piPremeasure fun i => (μ i).toOuterMeasure) = ⇑(Measure.map (⇑e.symm) (μ default))
⊢ Measure.map (⇑e) (Measure.pi μ) = μ default
state_after: no goals

tactic: ext1 s
state_before: ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝³ : Fintype ι
m✝¹ : (i : ι) → OuterMeasure (α i)
m✝ : (i : ι) → MeasurableSpace (α i)
μ✝ : (i : ι) → Measure (α i)
inst✝² : ∀ (i : ι), SigmaFinite (μ✝ i)
inst✝¹ : Fintype ι'
π : ι → Type u_4
inst✝ : Unique ι
m : (i : ι) → MeasurableSpace (π i)
μ : (i : ι) → Measure (π i)
e : ((i : ι) → π i) ≃ᵐ π default := MeasurableEquiv.piUnique π
⊢ (piPremeasure fun i => (μ i).toOuterMeasure) = ⇑(Measure.map (⇑e.symm) (μ default))
state_after: case h
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝³ : Fintype ι
m✝¹ : (i : ι) → OuterMeasure (α i)
m✝ : (i : ι) → MeasurableSpace (α i)
μ✝ : (i : ι) → Measure (α i)
inst✝² : ∀ (i : ι), SigmaFinite (μ✝ i)
inst✝¹ : Fintype ι'
π : ι → Type u_4
inst✝ : Unique ι
m : (i : ι) → MeasurableSpace (π i)
μ : (i : ι) → Measure (π i)
e : ((i : ι) → π i) ≃ᵐ π default := MeasurableEquiv.piUnique π
s : Set ((i : ι) → π i)
⊢ piPremeasure (fun i => (μ i).toOuterMeasure) s = (Measure.map (⇑e.symm) (μ default)) s

tactic: rw [piPremeasure, Fintype.prod_unique, e.symm.map_apply, coe_toOuterMeasure]
state_before: case h
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝³ : Fintype ι
m✝¹ : (i : ι) → OuterMeasure (α i)
m✝ : (i : ι) → MeasurableSpace (α i)
μ✝ : (i : ι) → Measure (α i)
inst✝² : ∀ (i : ι), SigmaFinite (μ✝ i)
inst✝¹ : Fintype ι'
π : ι → Type u_4
inst✝ : Unique ι
m : (i : ι) → MeasurableSpace (π i)
μ : (i : ι) → Measure (π i)
e : ((i : ι) → π i) ≃ᵐ π default := MeasurableEquiv.piUnique π
s : Set ((i : ι) → π i)
⊢ piPremeasure (fun i => (μ i).toOuterMeasure) s = (Measure.map (⇑e.symm) (μ default)) s
state_after: case h
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝³ : Fintype ι
m✝¹ : (i : ι) → OuterMeasure (α i)
m✝ : (i : ι) → MeasurableSpace (α i)
μ✝ : (i : ι) → Measure (α i)
inst✝² : ∀ (i : ι), SigmaFinite (μ✝ i)
inst✝¹ : Fintype ι'
π : ι → Type u_4
inst✝ : Unique ι
m : (i : ι) → MeasurableSpace (π i)
μ : (i : ι) → Measure (π i)
e : ((i : ι) → π i) ≃ᵐ π default := MeasurableEquiv.piUnique π
s : Set ((i : ι) → π i)
⊢ (μ default) (eval default '' s) = (μ default) (⇑e.symm ⁻¹' s)

tactic: congr 1
state_before: case h
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝³ : Fintype ι
m✝¹ : (i : ι) → OuterMeasure (α i)
m✝ : (i : ι) → MeasurableSpace (α i)
μ✝ : (i : ι) → Measure (α i)
inst✝² : ∀ (i : ι), SigmaFinite (μ✝ i)
inst✝¹ : Fintype ι'
π : ι → Type u_4
inst✝ : Unique ι
m : (i : ι) → MeasurableSpace (π i)
μ : (i : ι) → Measure (π i)
e : ((i : ι) → π i) ≃ᵐ π default := MeasurableEquiv.piUnique π
s : Set ((i : ι) → π i)
⊢ (μ default) (eval default '' s) = (μ default) (⇑e.symm ⁻¹' s)
state_after: case h.h.e_6.h
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝³ : Fintype ι
m✝¹ : (i : ι) → OuterMeasure (α i)
m✝ : (i : ι) → MeasurableSpace (α i)
μ✝ : (i : ι) → Measure (α i)
inst✝² : ∀ (i : ι), SigmaFinite (μ✝ i)
inst✝¹ : Fintype ι'
π : ι → Type u_4
inst✝ : Unique ι
m : (i : ι) → MeasurableSpace (π i)
μ : (i : ι) → Measure (π i)
e : ((i : ι) → π i) ≃ᵐ π default := MeasurableEquiv.piUnique π
s : Set ((i : ι) → π i)
⊢ eval default '' s = ⇑e.symm ⁻¹' s

tactic: exact e.toEquiv.image_eq_preimage s
state_before: case h.h.e_6.h
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝³ : Fintype ι
m✝¹ : (i : ι) → OuterMeasure (α i)
m✝ : (i : ι) → MeasurableSpace (α i)
μ✝ : (i : ι) → Measure (α i)
inst✝² : ∀ (i : ι), SigmaFinite (μ✝ i)
inst✝¹ : Fintype ι'
π : ι → Type u_4
inst✝ : Unique ι
m : (i : ι) → MeasurableSpace (π i)
μ : (i : ι) → Measure (π i)
e : ((i : ι) → π i) ≃ᵐ π default := MeasurableEquiv.piUnique π
s : Set ((i : ι) → π i)
⊢ eval default '' s = ⇑e.symm ⁻¹' s
state_after: no goals