Skip to main content
teorth/PFR
Source indexedlemma · leanprover/lean4:v4.33.0-rc1

multiDist_of_perm

PFR.MoreRuzsaDist · PFR/MoreRuzsaDist.lean:967 to 1013

Source documentation

If φ : {1, ..., m} → {1, ...,m} is a bijection, then D[X_[m]] = D[(X_φ(1), ..., X_φ(m))].

Exact Lean statement

lemma multiDist_of_perm {m : ℕ} {Ω : Fin m → Type*}
    (hΩ : ∀ i, MeasureSpace (Ω i)) (hΩprob : ∀ i, IsProbabilityMeasure (hΩ i).volume)
    (X : ∀ i, Ω i → G) (φ : Equiv.Perm (Fin m)) :
    D[fun i ↦ X (φ i); fun i ↦ hΩ (φ i)] = D[X ; hΩ]

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma multiDist_of_perm {m : } {Ω : Fin m  Type*}    (hΩ :  i, MeasureSpace (Ω i)) (hΩprob :  i, IsProbabilityMeasure (hΩ i).volume)    (X :  i, Ω i  G) (φ : Equiv.Perm (Fin m)) :    D[fun i  X (φ i); fun i  hΩ (φ i)] = D[X ; hΩ] := by  simp only [multiDist]  congr 1  · apply IdentDistrib.entropy_congr    refine {      aemeasurable_fst := by fun_prop      aemeasurable_snd := by fun_prop      map_eq := ?_    }    let sum := fun x : Fin m  G  ∑ i, x i    let perm := MeasurableEquiv.piCongrLeft (fun _  G) φ    have perm_apply :  (i : Fin m) (x : Fin m  G), perm x i = x (φ.symm i) := by          intro i x          simp only [perm]          rw [MeasurableEquiv.coe_piCongrLeft, Equiv.piCongrLeft_apply]          simp only [eq_rec_constant]    have invar : sum ∘ perm = sum := by      ext x      rw [comp_apply]      convert Finset.sum_bijective φ.symm φ.symm.bijective ?_ ?_      · simp only [Finset.mem_univ, implies_true]      intro i _      rw [perm_apply i x]    calc      _ = Measure.map (sum ∘ perm) (.pi fun i  .map (X (φ i)) ℙ) := by rw [invar]      _ = Measure.map sum (.map perm (.pi fun i  .map (X (φ i)) ℙ)) := by        rw [Measure.map_map]        · apply Finset.measurable_sum          intro i _          exact measurable_pi_apply i        apply measurable_pi_lambda        intro i        have : (fun x : Fin m  G  perm x i) = (fun x : Fin m  G  x (φ.symm i)) := by          ext x          exact perm_apply i x        rw [this]        exact measurable_pi_apply ((Equiv.symm φ) i)      _ = _ := by        congr        exact (MeasureTheory.measurePreserving_piCongrLeft (fun i  .map (X i) ℙ) φ).map_eq  congr 1  convert Finset.sum_bijective φ (Equiv.bijective φ) ?_ ?_  · simp only [Finset.mem_univ, implies_true]  simp only [Finset.mem_univ, imp_self, implies_true]