@@ -5,6 +5,7 @@ Authors: Johannes Hölzl, Mario Carneiro, Floris van Doorn
5
5
-/
6
6
import data.nat.enat
7
7
import data.set.countable
8
+ import logic.small
8
9
import order.conditionally_complete_lattice
9
10
import set_theory.schroeder_bernstein
10
11
@@ -184,6 +185,12 @@ theorem le_mk_iff_exists_set {c : cardinal} {α : Type u} :
184
185
⟨set.range f, (equiv.of_injective f hf).cardinal_eq.symm⟩,
185
186
λ ⟨p, e⟩, e ▸ ⟨⟨subtype.val, λ a b, subtype.eq⟩⟩⟩
186
187
188
+ theorem mk_subtype_le {α : Type u} (p : α → Prop ) : #(subtype p) ≤ #α :=
189
+ ⟨embedding.subtype p⟩
190
+
191
+ theorem mk_set_le (s : set α) : #s ≤ #α :=
192
+ mk_subtype_le s
193
+
187
194
theorem out_embedding {c c' : cardinal} : c ≤ c' ↔ nonempty (c.out ↪ c'.out) :=
188
195
by { transitivity _, rw [←quotient.out_eq c, ←quotient.out_eq c'], refl }
189
196
@@ -614,14 +621,38 @@ lemma mk_le_mk_mul_of_mk_preimage_le {c : cardinal} (f : α → β) (hf : ∀ b
614
621
by simpa only [←mk_congr (@equiv.sigma_preimage_equiv α β f), mk_sigma, ←sum_const']
615
622
using sum_le_sum _ _ hf
616
623
624
+ /-- The range of an indexed cardinal function, whose outputs live in a higher universe than the
625
+ inputs, is always bounded above. -/
626
+ theorem bdd_above_range {ι : Type u} (f : ι → cardinal.{max u v}) : bdd_above (set.range f) :=
627
+ ⟨_, by { rintros a ⟨i, rfl⟩, exact le_sum f i }⟩
628
+
629
+ instance (a : cardinal.{u}) : small.{u} (set.Iic a) :=
630
+ begin
631
+ rw ←mk_out a,
632
+ apply @small_of_surjective (set a.out) (Iic (#a.out)) _ (λ x, ⟨#x, mk_set_le x⟩),
633
+ rintro ⟨x, hx⟩,
634
+ simpa using le_mk_iff_exists_set.1 hx
635
+ end
636
+
637
+ /-- A set of cardinals is bounded above iff it's small, i.e. it corresponds to an usual ZFC set. -/
638
+ theorem bdd_above_iff_small (s : set cardinal.{u}) : bdd_above s ↔ small.{u} s :=
639
+ ⟨λ ⟨a, ha⟩, @small_subset _ (Iic a) s (λ x h, ha h) _, begin
640
+ rintro ⟨ι, ⟨e⟩⟩,
641
+ suffices : range (λ x : ι, (e.symm x).1 ) = s,
642
+ { rw ←this ,
643
+ apply bdd_above_range.{u u} },
644
+ ext x,
645
+ refine ⟨_, λ hx, ⟨e ⟨x, hx⟩, _⟩⟩,
646
+ { rintro ⟨a, rfl⟩,
647
+ exact (e.symm a).prop },
648
+ { simp_rw [subtype.val_eq_coe, equiv.symm_apply_apply], refl }
649
+ end ⟩
650
+
617
651
/-- The indexed supremum of cardinals is the smallest cardinal above
618
652
everything in the family. -/
619
653
def sup {ι : Type u} (f : ι → cardinal.{max u v}) : cardinal :=
620
654
Sup (set.range f)
621
655
622
- theorem bdd_above_range {ι : Type u} (f : ι → cardinal.{max u v}) : bdd_above (set.range f) :=
623
- ⟨_, by { rintros a ⟨i, rfl⟩, exact le_sum f i }⟩
624
-
625
656
theorem le_sup {ι} (f : ι → cardinal.{max u v}) (i) : f i ≤ sup f :=
626
657
le_cSup (bdd_above_range f) (mem_range_self i)
627
658
@@ -1227,9 +1258,6 @@ mk_le_of_surjective quot.exists_rep
1227
1258
theorem mk_quotient_le {α : Type u} {s : setoid α} : #(quotient s) ≤ #α :=
1228
1259
mk_quot_le
1229
1260
1230
- theorem mk_subtype_le {α : Type u} (p : α → Prop ) : #(subtype p) ≤ #α :=
1231
- ⟨embedding.subtype p⟩
1232
-
1233
1261
theorem mk_subtype_le_of_subset {α : Type u} {p q : α → Prop } (h : ∀ ⦃x⦄, p x → q x) :
1234
1262
#(subtype p) ≤ #(subtype q) :=
1235
1263
⟨embedding.subtype_map (embedding.refl α) h⟩
@@ -1338,9 +1366,6 @@ lemma mk_le_mk_of_subset {α} {s t : set α} (h : s ⊆ t) : #s ≤ #t :=
1338
1366
lemma mk_subtype_mono {p q : α → Prop } (h : ∀x, p x → q x) : #{x // p x} ≤ #{x // q x} :=
1339
1367
⟨embedding_of_subset _ _ h⟩
1340
1368
1341
- lemma mk_set_le (s : set α) : #s ≤ #α :=
1342
- mk_subtype_le s
1343
-
1344
1369
lemma mk_union_le_omega {α} {P Q : set α} : #((P ∪ Q : set α)) ≤ ω ↔ #P ≤ ω ∧ #Q ≤ ω :=
1345
1370
by simp
1346
1371
0 commit comments