@@ -62,6 +62,9 @@ finite.card_pos_iff.mpr h
62
62
63
63
namespace finite
64
64
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
+
65
68
lemma card_eq [finite α] [finite β] : nat.card α = nat.card β ↔ nonempty (α ≃ β) :=
66
69
by { haveI := fintype.of_finite α, haveI := fintype.of_finite β, simp [fintype.card_eq] }
67
70
@@ -137,12 +140,33 @@ card_eq_zero_of_injective f.2 h
137
140
lemma card_sum [finite α] [finite β] : nat.card (α ⊕ β) = nat.card α + nat.card β :=
138
141
by { haveI := fintype.of_finite α, haveI := fintype.of_finite β, simp }
139
142
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
141
148
142
- theorem finite. card_subtype_le [finite α] (p : α → Prop ) :
149
+ theorem card_subtype_le [finite α] (p : α → Prop ) :
143
150
nat.card {x // p x} ≤ nat.card α :=
144
151
by { haveI := fintype.of_finite α, simpa using fintype.card_subtype_le p }
145
152
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) :
147
154
nat.card {x // p x} < nat.card α :=
148
155
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