Documentation

Mathlib.SetTheory.Cardinal.Aleph

Omega, aleph, and beth functions #

Notation #

The following notations are scoped to the Ordinal namespace.

The following notations are scoped to the Cardinal namespace.

Omega ordinals #

An ordinal is initial when it is the first ordinal with a given cardinality.

This is written as o.card.ord = o, i.e. o is the smallest ordinal with cardinality o.card.

Equations
  • o.IsInitial = (o.card.ord = o)
Instances For
    theorem Ordinal.IsInitial.ord_card {o : Ordinal.{u_1}} (h : o.IsInitial) :
    o.card.ord = o
    theorem Ordinal.IsInitial.card_le_card {a b : Ordinal.{u_1}} (ha : a.IsInitial) :
    a.card b.card a b
    theorem Ordinal.IsInitial.card_lt_card {a b : Ordinal.{u_1}} (hb : b.IsInitial) :
    a.card < b.card a < b
    theorem Ordinal.isInitial_ord (c : Cardinal.{u_1}) :
    c.ord.IsInitial
    theorem Ordinal.isInitial_natCast (n : ) :
    (↑n).IsInitial

    Initial ordinals are order-isomorphic to the cardinals.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[simp]
      theorem Ordinal.isInitialIso_apply (x : { x : Ordinal.{u_1} // x.IsInitial }) :
      Ordinal.isInitialIso x = (↑x).card

      The "pre-omega" function gives the initial ordinals listed by their ordinal index. preOmega n = n, preOmega ω = ω, preOmega (ω + 1) = ω₁, etc.

      For the more common omega function skipping over finite ordinals, see Ordinal.omega.

      Equations
      Instances For
        theorem Ordinal.preOmega_lt_preOmega {o₁ o₂ : Ordinal.{u_1}} :
        Ordinal.preOmega o₁ < Ordinal.preOmega o₂ o₁ < o₂
        theorem Ordinal.preOmega_le_preOmega {o₁ o₂ : Ordinal.{u_1}} :
        Ordinal.preOmega o₁ Ordinal.preOmega o₂ o₁ o₂
        theorem Ordinal.preOmega_max (o₁ o₂ : Ordinal.{u_1}) :
        Ordinal.preOmega (o₁ o₂) = Ordinal.preOmega o₁ Ordinal.preOmega o₂
        theorem Ordinal.isInitial_preOmega (o : Ordinal.{u_1}) :
        (Ordinal.preOmega o).IsInitial
        theorem Ordinal.le_preOmega_self (o : Ordinal.{u_1}) :
        o Ordinal.preOmega o
        @[simp]
        theorem Ordinal.preOmega_zero :
        Ordinal.preOmega 0 = 0
        @[simp]
        theorem Ordinal.preOmega_natCast (n : ) :
        Ordinal.preOmega n = n
        @[simp]
        theorem Ordinal.preOmega_ofNat (n : ) [n.AtLeastTwo] :
        Ordinal.preOmega (OfNat.ofNat n) = n
        theorem Ordinal.preOmega_le_of_forall_lt {o a : Ordinal.{u_1}} (ha : a.IsInitial) (H : b < o, Ordinal.preOmega b < a) :
        Ordinal.preOmega o a

        The omega function gives the infinite initial ordinals listed by their ordinal index. omega 0 = ω, omega 1 = ω₁ is the first uncountable ordinal, and so on.

        This is not to be confused with the first infinite ordinal Ordinal.omega0.

        For a version including finite ordinals, see Ordinal.preOmega.

        Equations
        Instances For

          The omega function gives the infinite initial ordinals listed by their ordinal index. omega 0 = ω, omega 1 = ω₁ is the first uncountable ordinal, and so on.

          This is not to be confused with the first infinite ordinal Ordinal.omega0.

          For a version including finite ordinals, see Ordinal.preOmega.

          Equations
          Instances For

            ω₁ is the first uncountable ordinal.

            Equations
            Instances For
              theorem Ordinal.omega_eq_preOmega (o : Ordinal.{u_1}) :
              Ordinal.omega o = Ordinal.preOmega (Ordinal.omega0 + o)
              theorem Ordinal.omega_lt_omega {o₁ o₂ : Ordinal.{u_1}} :
              Ordinal.omega o₁ < Ordinal.omega o₂ o₁ < o₂
              theorem Ordinal.omega_le_omega {o₁ o₂ : Ordinal.{u_1}} :
              Ordinal.omega o₁ Ordinal.omega o₂ o₁ o₂
              theorem Ordinal.omega_max (o₁ o₂ : Ordinal.{u_1}) :
              Ordinal.omega (o₁ o₂) = Ordinal.omega o₁ Ordinal.omega o₂
              theorem Ordinal.preOmega_le_omega (o : Ordinal.{u_1}) :
              Ordinal.preOmega o Ordinal.omega o
              theorem Ordinal.isInitial_omega (o : Ordinal.{u_1}) :
              (Ordinal.omega o).IsInitial
              theorem Ordinal.le_omega_self (o : Ordinal.{u_1}) :
              o Ordinal.omega o
              @[simp]
              theorem Ordinal.omega_zero :
              Ordinal.omega 0 = Ordinal.omega0
              theorem Ordinal.omega_pos (o : Ordinal.{u_1}) :
              0 < Ordinal.omega o

              For the theorem 0 < ω, see omega0_pos.

              @[deprecated Ordinal.omega0_lt_omega1]
              theorem Ordinal.omega_lt_omega1 :
              Ordinal.omega0 < Ordinal.omega 1

              Alias of Ordinal.omega0_lt_omega1.

              Aleph cardinals #

              The "pre-aleph" function gives the cardinals listed by their ordinal index. preAleph n = n, preAleph ω = ℵ₀, preAleph (ω + 1) = succ ℵ₀, etc.

              For the more common aleph function skipping over finite cardinals, see Cardinal.aleph.

              Equations
              Instances For
                @[simp]
                theorem Ordinal.card_preOmega (o : Ordinal.{u_1}) :
                (Ordinal.preOmega o).card = Cardinal.preAleph o
                @[simp]
                theorem Cardinal.ord_preAleph (o : Ordinal.{u_1}) :
                (Cardinal.preAleph o).ord = Ordinal.preOmega o
                theorem Cardinal.preAleph_lt_preAleph {o₁ o₂ : Ordinal.{u_1}} :
                Cardinal.preAleph o₁ < Cardinal.preAleph o₂ o₁ < o₂
                theorem Cardinal.preAleph_le_preAleph {o₁ o₂ : Ordinal.{u_1}} :
                Cardinal.preAleph o₁ Cardinal.preAleph o₂ o₁ o₂
                theorem Cardinal.preAleph_max (o₁ o₂ : Ordinal.{u_1}) :
                Cardinal.preAleph (o₁ o₂) = Cardinal.preAleph o₁ Cardinal.preAleph o₂
                @[simp]
                theorem Cardinal.preAleph_zero :
                Cardinal.preAleph 0 = 0
                @[simp]
                theorem Cardinal.preAleph_succ (o : Ordinal.{u_1}) :
                Cardinal.preAleph (Order.succ o) = Order.succ (Cardinal.preAleph o)
                @[simp]
                theorem Cardinal.preAleph_nat (n : ) :
                Cardinal.preAleph n = n
                @[simp]
                theorem Cardinal.preAleph_pos {o : Ordinal.{u_1}} :
                0 < Cardinal.preAleph o 0 < o
                @[simp]
                theorem Cardinal.lift_preAleph (o : Ordinal.{u}) :
                Cardinal.lift.{v, u} (Cardinal.preAleph o) = Cardinal.preAleph (Ordinal.lift.{v, u} o)
                @[simp]
                theorem Ordinal.lift_preOmega (o : Ordinal.{u}) :
                Ordinal.lift.{v, u} (Ordinal.preOmega o) = Ordinal.preOmega (Ordinal.lift.{v, u} o)
                theorem Cardinal.preAleph_le_of_isLimit {o : Ordinal.{u_1}} (l : o.IsLimit) {c : Cardinal.{u_1}} :
                Cardinal.preAleph o c o' < o, Cardinal.preAleph o' c
                theorem Cardinal.preAleph_limit {o : Ordinal.{u_1}} (ho : o.IsLimit) :
                Cardinal.preAleph o = ⨆ (a : (Set.Iio o)), Cardinal.preAleph a

                The aleph function gives the infinite cardinals listed by their ordinal index. aleph 0 = ℵ₀, aleph 1 = succ ℵ₀ is the first uncountable cardinal, and so on.

                For a version including finite cardinals, see Cardinal.aleph'.

                Equations
                Instances For

                  The aleph function gives the infinite cardinals listed by their ordinal index. aleph 0 = ℵ₀, aleph 1 = succ ℵ₀ is the first uncountable cardinal, and so on.

                  For a version including finite cardinals, see Cardinal.aleph'.

                  Equations
                  Instances For

                    ℵ₁ is the first uncountable cardinal.

                    Equations
                    Instances For
                      theorem Cardinal.aleph_eq_preAleph (o : Ordinal.{u_1}) :
                      Cardinal.aleph o = Cardinal.preAleph (Ordinal.omega0 + o)
                      @[simp]
                      theorem Ordinal.card_omega (o : Ordinal.{u_1}) :
                      (Ordinal.omega o).card = Cardinal.aleph o
                      @[simp]
                      theorem Cardinal.ord_aleph (o : Ordinal.{u_1}) :
                      (Cardinal.aleph o).ord = Ordinal.omega o
                      theorem Cardinal.aleph_lt_aleph {o₁ o₂ : Ordinal.{u_1}} :
                      Cardinal.aleph o₁ < Cardinal.aleph o₂ o₁ < o₂
                      @[deprecated Cardinal.aleph_lt_aleph]
                      theorem Cardinal.aleph_lt {o₁ o₂ : Ordinal.{u_1}} :
                      Cardinal.aleph o₁ < Cardinal.aleph o₂ o₁ < o₂

                      Alias of Cardinal.aleph_lt_aleph.

                      theorem Cardinal.aleph_le_aleph {o₁ o₂ : Ordinal.{u_1}} :
                      Cardinal.aleph o₁ Cardinal.aleph o₂ o₁ o₂
                      @[deprecated Cardinal.aleph_le_aleph]
                      theorem Cardinal.aleph_le {o₁ o₂ : Ordinal.{u_1}} :
                      Cardinal.aleph o₁ Cardinal.aleph o₂ o₁ o₂

                      Alias of Cardinal.aleph_le_aleph.

                      theorem Cardinal.aleph_max (o₁ o₂ : Ordinal.{u_1}) :
                      Cardinal.aleph (o₁ o₂) = Cardinal.aleph o₁ Cardinal.aleph o₂
                      @[deprecated Cardinal.aleph_max]
                      theorem Cardinal.max_aleph_eq (o₁ o₂ : Ordinal.{u_1}) :
                      Cardinal.aleph o₁ Cardinal.aleph o₂ = Cardinal.aleph (o₁ o₂)
                      theorem Cardinal.preAleph_le_aleph (o : Ordinal.{u_1}) :
                      Cardinal.preAleph o Cardinal.aleph o
                      @[simp]
                      theorem Cardinal.aleph_succ (o : Ordinal.{u_1}) :
                      Cardinal.aleph (Order.succ o) = Order.succ (Cardinal.aleph o)
                      @[simp]
                      theorem Cardinal.aleph_zero :
                      Cardinal.aleph 0 = Cardinal.aleph0
                      @[simp]
                      theorem Cardinal.lift_aleph (o : Ordinal.{u}) :
                      Cardinal.lift.{v, u} (Cardinal.aleph o) = Cardinal.aleph (Ordinal.lift.{v, u} o)
                      @[simp]
                      theorem Ordinal.lift_omega (o : Ordinal.{u}) :
                      Ordinal.lift.{v, u} (Ordinal.omega o) = Ordinal.omega (Ordinal.lift.{v, u} o)

                      For the theorem lift ω = ω, see lift_omega0.

                      theorem Cardinal.aleph_limit {o : Ordinal.{u_1}} (ho : o.IsLimit) :
                      Cardinal.aleph o = ⨆ (a : (Set.Iio o)), Cardinal.aleph a
                      theorem Cardinal.aleph_pos (o : Ordinal.{u_1}) :
                      0 < Cardinal.aleph o
                      @[simp]
                      theorem Cardinal.aleph_toNat (o : Ordinal.{u_1}) :
                      Cardinal.toNat (Cardinal.aleph o) = 0
                      @[simp]
                      theorem Cardinal.aleph_toPartENat (o : Ordinal.{u_1}) :
                      Cardinal.toPartENat (Cardinal.aleph o) =
                      instance Cardinal.nonempty_toType_aleph (o : Ordinal.{u_1}) :
                      Nonempty (Cardinal.aleph o).ord.toType
                      Equations
                      • =
                      theorem Cardinal.isLimit_omega (o : Ordinal.{u_1}) :
                      (Ordinal.omega o).IsLimit
                      @[deprecated Cardinal.isLimit_omega]
                      theorem Cardinal.ord_aleph_isLimit (o : Ordinal.{u_1}) :
                      (Cardinal.aleph o).ord.IsLimit
                      @[deprecated Cardinal.mem_range_aleph_iff]
                      theorem Cardinal.exists_aleph {c : Cardinal.{u_1}} :
                      Cardinal.aleph0 c ∃ (o : Ordinal.{u_1}), c = Cardinal.aleph o
                      @[deprecated Ordinal.isNormal_preOmega]
                      @[deprecated Ordinal.isNormal_omega]
                      @[simp]
                      theorem Cardinal.countable_iff_lt_aleph_one {α : Type u_1} (s : Set α) :
                      s.Countable Cardinal.mk s < Cardinal.aleph 1
                      @[simp]
                      theorem Cardinal.aleph1_le_lift {c : Cardinal.{u}} :
                      Cardinal.aleph 1 Cardinal.lift.{v, u} c Cardinal.aleph 1 c
                      @[simp]
                      theorem Cardinal.lift_le_aleph1 {c : Cardinal.{u}} :
                      Cardinal.lift.{v, u} c Cardinal.aleph 1 c Cardinal.aleph 1
                      @[simp]
                      theorem Cardinal.aleph1_lt_lift {c : Cardinal.{u}} :
                      Cardinal.aleph 1 < Cardinal.lift.{v, u} c Cardinal.aleph 1 < c
                      @[simp]
                      theorem Cardinal.lift_lt_aleph1 {c : Cardinal.{u}} :
                      Cardinal.lift.{v, u} c < Cardinal.aleph 1 c < Cardinal.aleph 1
                      @[simp]
                      theorem Cardinal.aleph1_eq_lift {c : Cardinal.{u}} :
                      Cardinal.aleph 1 = Cardinal.lift.{v, u} c Cardinal.aleph 1 = c
                      @[simp]
                      theorem Cardinal.lift_eq_aleph1 {c : Cardinal.{u}} :
                      Cardinal.lift.{v, u} c = Cardinal.aleph 1 c = Cardinal.aleph 1
                      @[deprecated Cardinal.preAleph]

                      Alias of Cardinal.preAleph.


                      The "pre-aleph" function gives the cardinals listed by their ordinal index. preAleph n = n, preAleph ω = ℵ₀, preAleph (ω + 1) = succ ℵ₀, etc.

                      For the more common aleph function skipping over finite cardinals, see Cardinal.aleph.

                      Equations
                      Instances For
                        @[deprecated Cardinal.preAleph]
                        def Cardinal.alephIdx.initialSeg :
                        (fun (x1 x2 : Cardinal.{u_1}) => x1 < x2) ≼i fun (x1 x2 : Ordinal.{u_1}) => x1 < x2

                        The aleph' index function, which gives the ordinal index of a cardinal. (The aleph' part is because unlike aleph this counts also the finite stages. So alephIdx n = n, alephIdx ω = ω, alephIdx ℵ₁ = ω + 1 and so on.) In this definition, we register additionally that this function is an initial segment, i.e., it is order preserving and its range is an initial segment of the ordinals. For the basic function version, see alephIdx. For an upgraded version stating that the range is everything, see AlephIdx.rel_iso.

                        Equations
                        Instances For
                          @[deprecated Cardinal.preAleph]
                          def Cardinal.alephIdx.relIso :
                          (fun (x1 x2 : Cardinal.{u}) => x1 < x2) ≃r fun (x1 x2 : Ordinal.{u}) => x1 < x2

                          The aleph' index function, which gives the ordinal index of a cardinal. (The aleph' part is because unlike aleph this counts also the finite stages. So alephIdx n = n, alephIdx ℵ₀ = ω, alephIdx ℵ₁ = ω + 1 and so on.) In this version, we register additionally that this function is an order isomorphism between cardinals and ordinals. For the basic function version, see alephIdx.

                          Equations
                          Instances For
                            @[deprecated Cardinal.aleph']

                            The aleph' index function, which gives the ordinal index of a cardinal. (The aleph' part is because unlike aleph this counts also the finite stages. So alephIdx n = n, alephIdx ω = ω, alephIdx ℵ₁ = ω + 1 and so on.) For an upgraded version stating that the range is everything, see AlephIdx.rel_iso.

                            Equations
                            Instances For
                              @[deprecated Cardinal.aleph']

                              The aleph' function gives the cardinals listed by their ordinal index, and is the inverse of aleph_idx. aleph' n = n, aleph' ω = ω, aleph' (ω + 1) = succ ℵ₀, etc. In this version, we register additionally that this function is an order isomorphism between ordinals and cardinals. For the basic function version, see aleph'.

                              Equations
                              Instances For
                                @[deprecated Cardinal.preAleph_lt_preAleph]
                                theorem Cardinal.aleph'_lt {o₁ o₂ : Ordinal.{u_1}} :
                                Cardinal.aleph' o₁ < Cardinal.aleph' o₂ o₁ < o₂
                                @[deprecated Cardinal.preAleph_le_preAleph]
                                theorem Cardinal.aleph'_le {o₁ o₂ : Ordinal.{u_1}} :
                                Cardinal.aleph' o₁ Cardinal.aleph' o₂ o₁ o₂
                                @[deprecated Cardinal.preAleph_max]
                                theorem Cardinal.aleph'_max (o₁ o₂ : Ordinal.{u_1}) :
                                Cardinal.aleph' (o₁ o₂) = Cardinal.aleph' o₁ Cardinal.aleph' o₂
                                @[deprecated]
                                theorem Cardinal.aleph'_alephIdx (c : Cardinal.{u_1}) :
                                Cardinal.aleph' c.alephIdx = c
                                @[deprecated]
                                theorem Cardinal.alephIdx_aleph' (o : Ordinal.{u_1}) :
                                (Cardinal.aleph' o).alephIdx = o
                                @[deprecated Cardinal.preAleph_zero]
                                theorem Cardinal.aleph'_zero :
                                Cardinal.aleph' 0 = 0
                                @[deprecated Cardinal.preAleph_succ]
                                theorem Cardinal.aleph'_succ (o : Ordinal.{u_1}) :
                                Cardinal.aleph' (Order.succ o) = Order.succ (Cardinal.aleph' o)
                                @[deprecated Cardinal.preAleph_nat]
                                theorem Cardinal.aleph'_nat (n : ) :
                                Cardinal.aleph' n = n
                                @[deprecated Cardinal.lift_preAleph]
                                theorem Cardinal.lift_aleph' (o : Ordinal.{u}) :
                                Cardinal.lift.{v, u} (Cardinal.aleph' o) = Cardinal.aleph' (Ordinal.lift.{v, u} o)
                                @[deprecated Cardinal.preAleph_le_of_isLimit]
                                theorem Cardinal.aleph'_le_of_limit {o : Ordinal.{u_1}} (l : o.IsLimit) {c : Cardinal.{u_1}} :
                                Cardinal.aleph' o c o' < o, Cardinal.aleph' o' c
                                @[deprecated Cardinal.preAleph_limit]
                                theorem Cardinal.aleph'_limit {o : Ordinal.{u_1}} (ho : o.IsLimit) :
                                Cardinal.aleph' o = ⨆ (a : (Set.Iio o)), Cardinal.aleph' a
                                @[deprecated Cardinal.preAleph_omega0]
                                @[deprecated Cardinal.aleph'_omega0]

                                Alias of Cardinal.aleph'_omega0.

                                @[deprecated Cardinal.aleph']

                                aleph' and aleph_idx form an equivalence between Ordinal and Cardinal

                                Equations
                                Instances For
                                  @[deprecated Cardinal.aleph_eq_preAleph]
                                  theorem Cardinal.aleph_eq_aleph' (o : Ordinal.{u_1}) :
                                  Cardinal.aleph o = Cardinal.preAleph (Ordinal.omega0 + o)
                                  @[deprecated Cardinal.aleph0_le_preAleph]
                                  @[deprecated Cardinal.preAleph_pos]
                                  theorem Cardinal.aleph'_pos {o : Ordinal.{u_1}} (ho : 0 < o) :
                                  0 < Cardinal.aleph' o
                                  @[deprecated Cardinal.preAleph_isNormal]
                                  @[deprecated]
                                  theorem Cardinal.ord_card_unbounded :
                                  Set.Unbounded (fun (x1 x2 : Ordinal.{u_1}) => x1 < x2) {b : Ordinal.{u_1} | b.card.ord = b}

                                  Ordinals that are cardinals are unbounded.

                                  @[deprecated]
                                  theorem Cardinal.eq_aleph'_of_eq_card_ord {o : Ordinal.{u_1}} (ho : o.card.ord = o) :
                                  ∃ (a : Ordinal.{u_1}), (Cardinal.aleph' a).ord = o
                                  @[deprecated]
                                  theorem Cardinal.ord_card_unbounded' :
                                  Set.Unbounded (fun (x1 x2 : Ordinal.{u_1}) => x1 < x2) {b : Ordinal.{u_1} | b.card.ord = b Ordinal.omega0 b}

                                  Infinite ordinals that are cardinals are unbounded.

                                  @[deprecated]
                                  theorem Cardinal.eq_aleph_of_eq_card_ord {o : Ordinal.{u_1}} (ho : o.card.ord = o) (ho' : Ordinal.omega0 o) :
                                  ∃ (a : Ordinal.{u_1}), (Cardinal.aleph a).ord = o

                                  Beth cardinals #

                                  Beth numbers are defined so that beth 0 = ℵ₀, beth (succ o) = 2 ^ beth o, and when o is a limit ordinal, beth o is the supremum of beth o' for o' < o.

                                  Assuming the generalized continuum hypothesis, which is undecidable in ZFC, beth o = aleph o for every o.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For

                                    Beth numbers are defined so that beth 0 = ℵ₀, beth (succ o) = 2 ^ beth o, and when o is a limit ordinal, beth o is the supremum of beth o' for o' < o.

                                    Assuming the generalized continuum hypothesis, which is undecidable in ZFC, beth o = aleph o for every o.

                                    Equations
                                    Instances For
                                      theorem Cardinal.beth_limit {o : Ordinal.{u_1}} :
                                      o.IsLimitCardinal.beth o = ⨆ (a : (Set.Iio o)), Cardinal.beth a
                                      @[simp]
                                      theorem Cardinal.beth_lt {o₁ o₂ : Ordinal.{u_1}} :
                                      Cardinal.beth o₁ < Cardinal.beth o₂ o₁ < o₂
                                      @[simp]
                                      theorem Cardinal.beth_le {o₁ o₂ : Ordinal.{u_1}} :
                                      Cardinal.beth o₁ Cardinal.beth o₂ o₁ o₂
                                      @[deprecated Cardinal.isNormal_beth]