@@ -14,6 +14,8 @@ public import Mathlib.Data.Finset.Density
1414public import Mathlib.Data.Fintype.BigOperators
1515public import Mathlib.Algebra.Group.Pointwise.Finset.Basic
1616
17+ import Mathlib.Algebra.BigOperators.Group.Finset.Indicator
18+
1719/-!
1820# Average over a finset
1921
@@ -51,7 +53,7 @@ open Finset Function
5153open Fintype (card)
5254open scoped Pointwise
5355
54- variable {ι κ M N : Type *}
56+ variable {ι κ K M N : Type *}
5557
5658local notation a " /ℚ " q => (q : ℚ≥0 )⁻¹ • a
5759
@@ -350,26 +352,30 @@ lemma expect_pow (s : Finset ι) (f : ι → M) (n : ℕ) :
350352end CommSemiring
351353
352354section Semifield
353- variable [Semifield M] [CharZero M]
355+ variable [Semifield K] [CharZero K]
356+
357+ @[simp] lemma expect_indicator_one [Fintype ι] (s : Finset ι) :
358+ 𝔼 i : ι, (Set.indicator s 1 i : K) = s.dens := by
359+ classical simp [expect, sum_indicator_eq_sum_inter, dens, div_eq_inv_mul, NNRat.smul_def]
354360
355- lemma expect_boole_mul [Fintype ι] [Nonempty ι] [DecidableEq ι] (f : ι → M ) (i : ι) :
356- 𝔼 j, ite (i = j) (Fintype.card ι : M ) 0 * f j = f i := by
361+ lemma expect_boole_mul [Fintype ι] [Nonempty ι] [DecidableEq ι] (f : ι → K ) (i : ι) :
362+ 𝔼 j, ite (i = j) (Fintype.card ι : K ) 0 * f j = f i := by
357363 simp_rw [expect_univ, ite_mul, zero_mul, sum_ite_eq, if_pos (mem_univ _)]
358- rw [← @NNRat.cast_natCast M , ← NNRat.smul_def, inv_smul_smul₀]
364+ rw [← @NNRat.cast_natCast K , ← NNRat.smul_def, inv_smul_smul₀]
359365 simp [Fintype.card_ne_zero]
360366
361- lemma expect_boole_mul' [Fintype ι] [Nonempty ι] [DecidableEq ι] (f : ι → M ) (i : ι) :
362- 𝔼 j, ite (j = i) (Fintype.card ι : M ) 0 * f j = f i := by
367+ lemma expect_boole_mul' [Fintype ι] [Nonempty ι] [DecidableEq ι] (f : ι → K ) (i : ι) :
368+ 𝔼 j, ite (j = i) (Fintype.card ι : K ) 0 * f j = f i := by
363369 simp_rw [@eq_comm _ _ i, expect_boole_mul]
364370
365- lemma expect_eq_sum_div_card (s : Finset ι) (f : ι → M ) :
371+ lemma expect_eq_sum_div_card (s : Finset ι) (f : ι → K ) :
366372 𝔼 i ∈ s, f i = (∑ i ∈ s, f i) / #s := by
367373 rw [expect, NNRat.smul_def, div_eq_inv_mul, NNRat.cast_inv, NNRat.cast_natCast]
368374
369- lemma _root_.Fintype.expect_eq_sum_div_card [Fintype ι] (f : ι → M ) :
375+ lemma _root_.Fintype.expect_eq_sum_div_card [Fintype ι] (f : ι → K ) :
370376 𝔼 i, f i = (∑ i, f i) / Fintype.card ι := Finset.expect_eq_sum_div_card _ _
371377
372- lemma expect_div (s : Finset ι) (f : ι → M ) (a : M ) : (𝔼 i ∈ s, f i) / a = 𝔼 i ∈ s, f i / a := by
378+ lemma expect_div (s : Finset ι) (f : ι → K ) (a : K ) : (𝔼 i ∈ s, f i) / a = 𝔼 i ∈ s, f i / a := by
373379 simp_rw [div_eq_mul_inv, expect_mul]
374380
375381end Semifield
0 commit comments