Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit a477dfd

Browse files
committed
feat(data/finite/card): Cardinality of union, image, and range (#17253)
This PR adds lemmas for the cardinality of union, image, and range.
1 parent 3256cf6 commit a477dfd

File tree

1 file changed

+27
-3
lines changed

1 file changed

+27
-3
lines changed

src/data/finite/card.lean

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ finite.card_pos_iff.mpr h
6262

6363
namespace finite
6464

65+
lemma cast_card_eq_mk {α : Type*} [finite α] : ↑(nat.card α) = cardinal.mk α :=
66+
cardinal.cast_to_nat_of_lt_aleph_0 (cardinal.lt_aleph_0_of_finite α)
67+
6568
lemma card_eq [finite α] [finite β] : nat.card α = nat.card β ↔ nonempty (α ≃ β) :=
6669
by { haveI := fintype.of_finite α, haveI := fintype.of_finite β, simp [fintype.card_eq] }
6770

@@ -137,12 +140,33 @@ card_eq_zero_of_injective f.2 h
137140
lemma card_sum [finite α] [finite β] : nat.card (α ⊕ β) = nat.card α + nat.card β :=
138141
by { haveI := fintype.of_finite α, haveI := fintype.of_finite β, simp }
139142

140-
end finite
143+
lemma card_image_le {s : set α} [finite s] (f : α → β) : nat.card (f '' s) ≤ nat.card s :=
144+
card_le_of_surjective _ set.surjective_onto_image
145+
146+
lemma card_range_le [finite α] (f : α → β) : nat.card (set.range f) ≤ nat.card α :=
147+
card_le_of_surjective _ set.surjective_onto_range
141148

142-
theorem finite.card_subtype_le [finite α] (p : α → Prop) :
149+
theorem card_subtype_le [finite α] (p : α → Prop) :
143150
nat.card {x // p x} ≤ nat.card α :=
144151
by { haveI := fintype.of_finite α, simpa using fintype.card_subtype_le p }
145152

146-
theorem finite.card_subtype_lt [finite α] {p : α → Prop} {x : α} (hx : ¬ p x) :
153+
theorem card_subtype_lt [finite α] {p : α → Prop} {x : α} (hx : ¬ p x) :
147154
nat.card {x // p x} < nat.card α :=
148155
by { haveI := fintype.of_finite α, simpa using fintype.card_subtype_lt hx }
156+
157+
end finite
158+
159+
namespace set
160+
161+
lemma card_union_le (s t : set α) : nat.card ↥(s ∪ t) ≤ nat.card s + nat.card t :=
162+
begin
163+
casesI _root_.finite_or_infinite ↥(s ∪ t) with h h,
164+
{ rw [finite_coe_iff, finite_union, ←finite_coe_iff, ←finite_coe_iff] at h,
165+
casesI h,
166+
rw [←cardinal.nat_cast_le, nat.cast_add,
167+
finite.cast_card_eq_mk, finite.cast_card_eq_mk, finite.cast_card_eq_mk],
168+
exact cardinal.mk_union_le s t },
169+
{ exact nat.card_eq_zero_of_infinite.trans_le (zero_le _) },
170+
end
171+
172+
end set

0 commit comments

Comments
 (0)