forked from leanprover-community/mathlib4
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUnivLE.lean
More file actions
44 lines (34 loc) · 1.33 KB
/
UnivLE.lean
File metadata and controls
44 lines (34 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/-
Copyright (c) 2023 Junyan Xu. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Junyan Xu
-/
module
public import Mathlib.Logic.UnivLE
public import Mathlib.SetTheory.Ordinal.Basic
/-!
# UnivLE and cardinals
-/
public section
noncomputable section
universe u v
open Cardinal
theorem univLE_iff_cardinal_le : UnivLE.{u, v} ↔ univ.{u, v + 1} ≤ univ.{v, u + 1} := by
simp_rw [univLE_iff, small_iff_lift_mk_lt_univ]
contrapose!
-- strange: simp_rw [univ_umax.{v,u}] doesn't work
refine ⟨fun ⟨α, le⟩ ↦ ?_, fun h ↦ ?_⟩
· rw [univ_umax.{v, u}, ← lift_le.{u + 1}, lift_univ, lift_lift] at le
exact le.trans_lt (lift_lt_univ'.{u, v + 1} #α)
· obtain ⟨⟨α⟩, h⟩ := lt_univ'.mp h; use α
rw [univ_umax.{v, u}, ← lift_le.{u + 1}, lift_univ, lift_lift]
exact h.le
theorem univLE_iff_exists_embedding : UnivLE.{u, v} ↔ Nonempty (Ordinal.{u} ↪ Ordinal.{v}) := by
rw [univLE_iff_cardinal_le]
exact lift_mk_le'
theorem Ordinal.univLE_of_injective {f : Ordinal.{u} → Ordinal.{v}} (h : f.Injective) :
UnivLE.{u, v} :=
univLE_iff_exists_embedding.2 ⟨f, h⟩
/-- Together with transitivity, this shows `UnivLE` is a total preorder. -/
theorem univLE_total : UnivLE.{u, v} ∨ UnivLE.{v, u} := by
simp_rw [univLE_iff_cardinal_le]; apply le_total