Skip to content

Commit 58a6689

Browse files
committed
feat: some measure preserving equivalences on pi-types (#7751)
* Also fix the statement of some lemmas of an earlier PR. * From the Sobolev project * There are more that depend on #7341 Co-authored-by: Heather Macbeth 25316162+hrmacbeth@users.noreply.github.com
1 parent 36114b7 commit 58a6689

File tree

2 files changed

+50
-8
lines changed

2 files changed

+50
-8
lines changed

Mathlib/MeasureTheory/Constructions/Pi.lean

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -728,9 +728,10 @@ measures of corresponding sets (images or preimages) have equal measures and fun
728728

729729
section MeasurePreserving
730730

731-
theorem measurePreserving_piEquivPiSubtypeProd {ι : Type u} {α : ι → Type v} [Fintype ι]
732-
{m : ∀ i, MeasurableSpace (α i)} (μ : ∀ i, Measure (α i)) [∀ i, SigmaFinite (μ i)]
733-
(p : ι → Prop) [DecidablePred p] :
731+
variable {m : ∀ i, MeasurableSpace (α i)} (μ : ∀ i, Measure (α i)) [∀ i, SigmaFinite (μ i)]
732+
variable [Fintype ι']
733+
734+
theorem measurePreserving_piEquivPiSubtypeProd (p : ι → Prop) [DecidablePred p] :
734735
MeasurePreserving (MeasurableEquiv.piEquivPiSubtypeProd α p) (Measure.pi μ)
735736
((Measure.pi fun i : Subtype p => μ i).prod (Measure.pi fun i => μ i)) := by
736737
set e := (MeasurableEquiv.piEquivPiSubtypeProd α p).symm
@@ -743,12 +744,53 @@ theorem measurePreserving_piEquivPiSubtypeProd {ι : Type u} {α : ι → Type v
743744
exact Fintype.prod_subtype_mul_prod_subtype p fun i => μ i (s i)
744745
#align measure_theory.measure_preserving_pi_equiv_pi_subtype_prod MeasureTheory.measurePreserving_piEquivPiSubtypeProd
745746

746-
theorem volume_preserving_piEquivPiSubtypeProd {ι : Type*} (α : ι → Type*) [Fintype ι]
747+
theorem volume_preserving_piEquivPiSubtypeProd (α : ι → Type*)
747748
[∀ i, MeasureSpace (α i)] [∀ i, SigmaFinite (volume : Measure (α i))] (p : ι → Prop)
748749
[DecidablePred p] : MeasurePreserving (MeasurableEquiv.piEquivPiSubtypeProd α p) :=
749750
measurePreserving_piEquivPiSubtypeProd (fun _ => volume) p
750751
#align measure_theory.volume_preserving_pi_equiv_pi_subtype_prod MeasureTheory.volume_preserving_piEquivPiSubtypeProd
751752

753+
theorem measurePreserving_piCongrLeft (f : ι' ≃ ι) :
754+
MeasurePreserving (MeasurableEquiv.piCongrLeft α f)
755+
(Measure.pi fun i' => μ (f i')) (Measure.pi μ) where
756+
measurable := (MeasurableEquiv.piCongrLeft α f).measurable
757+
map_eq := by
758+
refine' (pi_eq fun s _ => _).symm
759+
rw [MeasurableEquiv.map_apply, MeasurableEquiv.coe_piCongrLeft f,
760+
Equiv.piCongrLeft_preimage_univ_pi, pi_pi _ _, f.prod_comp (fun i => μ i (s i))]
761+
762+
theorem volume_measurePreserving_piCongrLeft (α : ι → Type*) (f : ι' ≃ ι)
763+
[∀ i, MeasureSpace (α i)] [∀ i, SigmaFinite (volume : Measure (α i))] :
764+
MeasurePreserving (MeasurableEquiv.piCongrLeft α f) volume volume :=
765+
measurePreserving_piCongrLeft (fun _ ↦ volume) f
766+
767+
theorem measurePreserving_sumPiEquivProdPi_symm {π : ι ⊕ ι' → Type*} [∀ i, MeasurableSpace (π i)]
768+
(μ : ∀ i, Measure (π i)) [∀ i, SigmaFinite (μ i)] :
769+
MeasurePreserving (MeasurableEquiv.sumPiEquivProdPi π).symm
770+
((Measure.pi fun i => μ (.inl i)).prod (Measure.pi fun i => μ (.inr i))) (Measure.pi μ) where
771+
measurable := (MeasurableEquiv.sumPiEquivProdPi π).symm.measurable
772+
map_eq := by
773+
refine' (pi_eq fun s _ => _).symm
774+
simp_rw [MeasurableEquiv.map_apply, MeasurableEquiv.coe_sumPiEquivProdPi_symm,
775+
Equiv.sumPiEquivProdPi_symm_preimage_univ_pi, Measure.prod_prod, Measure.pi_pi,
776+
Fintype.prod_sum_type]
777+
778+
theorem volume_measurePreserving_sumPiEquivProdPi_symm (π : ι ⊕ ι' → Type*)
779+
[∀ i, MeasureSpace (π i)] [∀ i, SigmaFinite (volume : Measure (π i))] :
780+
MeasurePreserving (MeasurableEquiv.sumPiEquivProdPi π).symm volume volume :=
781+
measurePreserving_sumPiEquivProdPi_symm (fun _ ↦ volume)
782+
783+
theorem measurePreserving_sumPiEquivProdPi {π : ι ⊕ ι' → Type*} [∀ i, MeasurableSpace (π i)]
784+
(μ : ∀ i, Measure (π i)) [∀ i, SigmaFinite (μ i)] :
785+
MeasurePreserving (MeasurableEquiv.sumPiEquivProdPi π)
786+
(Measure.pi μ) ((Measure.pi fun i => μ (.inl i)).prod (Measure.pi fun i => μ (.inr i))) :=
787+
measurePreserving_sumPiEquivProdPi_symm μ |>.symm
788+
789+
theorem volume_measurePreserving_sumPiEquivProdPi (π : ι ⊕ ι' → Type*)
790+
[∀ i, MeasureSpace (π i)] [∀ i, SigmaFinite (volume : Measure (π i))] :
791+
MeasurePreserving (MeasurableEquiv.sumPiEquivProdPi π) volume volume :=
792+
measurePreserving_sumPiEquivProdPi (fun _ ↦ volume)
793+
752794
theorem measurePreserving_piFinSuccAboveEquiv {n : ℕ} {α : Fin (n + 1) → Type u}
753795
{m : ∀ i, MeasurableSpace (α i)} (μ : ∀ i, Measure (α i)) [∀ i, SigmaFinite (μ i)]
754796
(i : Fin (n + 1)) :

Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1614,8 +1614,8 @@ def piCongrLeft (f : δ ≃ δ') : (∀ b, π (f b)) ≃ᵐ ∀ a, π a := by
16141614
rw [measurable_pi_iff]
16151615
exact fun i => measurable_pi_apply (f i)
16161616

1617-
theorem piCongrLeft_eq (f : δ ≃ δ') :
1618-
MeasurableEquiv.piCongrLeft π f = f.piCongrLeft π := by rfl
1617+
theorem coe_piCongrLeft (f : δ ≃ δ') :
1618+
MeasurableEquiv.piCongrLeft π f = f.piCongrLeft π := by rfl
16191619

16201620
/-- Pi-types are measurably equivalent to iterated products. -/
16211621
@[simps! (config := { fullyApplied := false })]
@@ -1686,10 +1686,10 @@ def sumPiEquivProdPi (α : δ ⊕ δ' → Type*) [∀ i, MeasurableSpace (α i)]
16861686
exact measurable_pi_iff.1 measurable_snd _
16871687

16881688
theorem coe_sumPiEquivProdPi (α : δ ⊕ δ' → Type*) [∀ i, MeasurableSpace (α i)] :
1689-
MeasurableEquiv.sumPiEquivProdPi α = Equiv.sumPiEquivProdPi α := by rfl
1689+
MeasurableEquiv.sumPiEquivProdPi α = Equiv.sumPiEquivProdPi α := by rfl
16901690

16911691
theorem coe_sumPiEquivProdPi_symm (α : δ ⊕ δ' → Type*) [∀ i, MeasurableSpace (α i)] :
1692-
(MeasurableEquiv.sumPiEquivProdPi α).symm = (Equiv.sumPiEquivProdPi α).symm := by rfl
1692+
(MeasurableEquiv.sumPiEquivProdPi α).symm = (Equiv.sumPiEquivProdPi α).symm := by rfl
16931693

16941694
/-- If `s` is a measurable set in a measurable space, that space is equivalent
16951695
to the sum of `s` and `sᶜ`.-/

0 commit comments

Comments
 (0)