Skip to content

Commit 6972320

Browse files
committed
feat(MeasureTheory): mass of count.real (leanprover-community#40367)
From MeanFourier
1 parent 8bba420 commit 6972320

6 files changed

Lines changed: 36 additions & 5 deletions

File tree

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7148,6 +7148,7 @@ public import Mathlib.SetTheory.Cardinal.Continuum
71487148
public import Mathlib.SetTheory.Cardinal.CountableCover
71497149
public import Mathlib.SetTheory.Cardinal.Defs
71507150
public import Mathlib.SetTheory.Cardinal.Divisibility
7151+
public import Mathlib.SetTheory.Cardinal.ENNReal
71517152
public import Mathlib.SetTheory.Cardinal.ENat
71527153
public import Mathlib.SetTheory.Cardinal.Embedding
71537154
public import Mathlib.SetTheory.Cardinal.EventuallyConst

Mathlib/Data/Real/ENatENNReal.lean

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ theorem toENNReal_strictMono : StrictMono ((↑) : ℕ∞ → ℝ≥0∞) :=
8787
theorem toENNReal_zero : ((0 : ℕ∞) : ℝ≥0∞) = 0 :=
8888
map_zero toENNRealRingHom
8989

90+
@[simp] lemma toENNReal_eq_zero : toENNReal n = 0 ↔ n = 0 := by rw [← toENNReal_zero, toENNReal_inj]
91+
9092
@[simp, norm_cast]
9193
theorem toENNReal_add (m n : ℕ∞) : ↑(m + n) = (m + n : ℝ≥0∞) :=
9294
map_add toENNRealRingHom m n

Mathlib/MeasureTheory/Measure/Count.lean

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ module
77

88
public import Mathlib.MeasureTheory.Measure.Dirac
99

10+
import Mathlib.SetTheory.Cardinal.ENNReal
11+
1012
/-!
1113
# Counting measure
1214
@@ -162,6 +164,11 @@ instance count.isFiniteMeasure [Finite α] :
162164
@[simp]
163165
lemma count_univ : count (univ : Set α) = ENat.card α := by simp [count_apply .univ, encard_univ]
164166

167+
@[simp] lemma count_real_univ : count.real (.univ : Set α) = Nat.card α := by simp [Measure.real]
168+
169+
instance neZero_count [Nonempty α] : NeZero (count : Measure α) where
170+
out := by rintro h; simpa using congr($h .univ)
171+
165172
lemma _root_.Subsingleton.count_eq_dirac [Subsingleton α] (i : α) :
166173
count = dirac i := by
167174
calc count

Mathlib/RingTheory/Length.lean

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -264,9 +264,7 @@ lemma Module.length_of_free [Module.Free R M] :
264264
nontriviality R
265265
nontriviality M
266266
by_cases H : Module.length R R = ⊤
267-
· rw [b.repr.length_eq, Module.length_finsupp, H, ENat.mul_top', ENat.mul_top']
268-
congr 1
269-
simp [ENat.card_eq_zero_iff_empty, rank_pos_of_free.ne']
267+
· simp [b.repr.length_eq, H, rank_pos_of_free.ne']
270268
rw [← ne_eq, Module.length_ne_top_iff, isFiniteLength_iff_isNoetherian_isArtinian] at H
271269
cases H
272270
let b := Module.Free.chooseBasis R M
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/-
2+
Copyright (c) 2026 Yaël Dillies. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Yaël Dillies
5+
-/
6+
module
7+
8+
public import Mathlib.Data.Real.ENatENNReal
9+
public import Mathlib.SetTheory.Cardinal.NatCard
10+
11+
/-!
12+
# Lemmas about `Nat.card` and `ENNReal`
13+
-/
14+
15+
public section
16+
17+
namespace ENNReal
18+
19+
@[simp] lemma toReal_enatCard (α : Type*) : ENNReal.toReal (ENat.card α) = Nat.card α := by
20+
cases finite_or_infinite α <;> simp [ENat.card_eq_coe_natCard]
21+
22+
end ENNReal

Mathlib/SetTheory/Cardinal/Finite.lean

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,14 +352,15 @@ theorem card_eq_zero_iff_empty (α : Type*) : card α = 0 ↔ IsEmpty α := by
352352
theorem card_ne_zero_iff_nonempty (α : Type*) : card α ≠ 0 ↔ Nonempty α := by
353353
simp [card_eq_zero_iff_empty]
354354

355+
@[simp] lemma card_ne_zero [Nonempty α] : card α ≠ 0 := (card_ne_zero_iff_nonempty _).2 ‹_›
356+
355357
theorem card_pos_iff_nonempty (α : Type*) : 0 < card α ↔ Nonempty α := by
356358
rw [pos_iff_ne_zero, card_ne_zero_iff_nonempty]
357359

358360
theorem one_le_card_iff_nonempty (α : Type*) : 1 ≤ card α ↔ Nonempty α := by
359361
simp [Order.one_le_iff_ne_zero, card_eq_zero_iff_empty]
360362

361-
@[simp] lemma card_pos [Nonempty α] : 0 < card α := by
362-
simpa [pos_iff_ne_zero, card_ne_zero_iff_nonempty]
363+
@[simp] lemma card_pos [Nonempty α] : 0 < card α := by simp [pos_iff_ne_zero]
363364

364365
theorem card_le_one_iff_subsingleton (α : Type*) : card α ≤ 1 ↔ Subsingleton α := by
365366
rw [← le_one_iff_subsingleton]

0 commit comments

Comments
 (0)