/- 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