Skip to content

Commit e59d9d4

Browse files
committed
feat(Algebra/BigOperators/Expect): expectation of an indicator (leanprover-community#40388)
and replace the generic variable `M` with `K` in the `Semifield` section From MeanFourier
1 parent 0c97763 commit e59d9d4

1 file changed

Lines changed: 16 additions & 10 deletions

File tree

Mathlib/Algebra/BigOperators/Expect.lean

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ public import Mathlib.Data.Finset.Density
1414
public import Mathlib.Data.Fintype.BigOperators
1515
public 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
5153
open Fintype (card)
5254
open scoped Pointwise
5355

54-
variable {ι κ M N : Type*}
56+
variable {ι κ K M N : Type*}
5557

5658
local notation a " /ℚ " q => (q : ℚ≥0)⁻¹ • a
5759

@@ -350,26 +352,30 @@ lemma expect_pow (s : Finset ι) (f : ι → M) (n : ℕ) :
350352
end CommSemiring
351353

352354
section 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

375381
end Semifield

0 commit comments

Comments
 (0)