Documentation

Mathlib.SetTheory.ZFC.Ordinal

Von Neumann ordinals #

This file works towards the development of von Neumann ordinals, i.e. transitive sets, well-ordered under .

Definitions #

Transitive sets #

A transitive set is one where every element is a subset.

This is equivalent to being an infinite-open interval in the transitive closure of membership.

Equations
    Instances For
      theorem ZFSet.IsTransitive.mem_trans {z : ZFSet.{u}} :
      z.IsTransitive∀ {x y : ZFSet.{u}}, x yy zx z

      Alias of the forward direction of ZFSet.isTransitive_iff_mem_trans.

      The union of a transitive set is transitive.

      The union of transitive sets is transitive.

      theorem ZFSet.IsTransitive.iUnion {α : Type u_1} [Small.{u, u_1} α] {f : αZFSet.{u}} (hf : ∀ (i : α), (f i).IsTransitive) :
      (iUnion fun (i : α) => f i).IsTransitive

      Ordinals #

      A set x is a von Neumann ordinal when it's a transitive set, that's transitive under . We prove that this further implies that x is well-ordered under in isOrdinal_iff_isWellOrder.

      The transitivity condition a ∈ b → b ∈ c → a ∈ c can be written without assuming a ∈ x and b ∈ x. The lemma isOrdinal_iff_isTrans shows this condition is equivalent to the usual one.

      • isTransitive : x.IsTransitive

        An ordinal is a transitive set.

      • mem_trans' {y z w : ZFSet.{u_1}} : y zz ww xy w

        The membership operation within an ordinal is transitive.

      Instances For
        theorem ZFSet.IsOrdinal.mem_trans {x y z : ZFSet.{u}} (h : z.IsOrdinal) :
        x yy zx z
        theorem ZFSet.IsOrdinal.isTrans {x : ZFSet.{u}} (h : x.IsOrdinal) :
        IsTrans { x_1 : ZFSet.{u} // x_1 x } (Subrel (fun (x1 x2 : ZFSet.{u}) => x1 x2) fun (x_1 : ZFSet.{u}) => x_1 x)
        theorem ZFSet.isOrdinal_iff_isTrans {x : ZFSet.{u}} :
        x.IsOrdinal x.IsTransitive IsTrans { x_1 : ZFSet.{u} // x_1 x } (Subrel (fun (x1 x2 : ZFSet.{u}) => x1 x2) fun (x_1 : ZFSet.{u}) => x_1 x)

        The simplified form of transitivity used within IsOrdinal yields an equivalent definition to the standard one.

        theorem ZFSet.IsOrdinal.mem {x y : ZFSet.{u}} (hx : x.IsOrdinal) (hy : y x) :

        An ordinal is a transitive set of transitive sets.

        An ordinal is a transitive set of ordinals.

        theorem ZFSet.IsOrdinal.eq_or_mem_of_subset {x y : ZFSet.{u}} (hx : x.IsOrdinal) (hy : y.IsOrdinal) :
        x yx = y x y

        Alias of the forward direction of ZFSet.IsOrdinal.subset_iff_eq_or_mem.

        theorem ZFSet.IsOrdinal.mem_of_subset_of_mem {x y z : ZFSet.{u}} (h : x.IsOrdinal) (hz : z.IsOrdinal) (hx : x y) (hy : y z) :
        x z
        theorem ZFSet.IsOrdinal.trichotomous {x : ZFSet.{u}} (h : x.IsOrdinal) :
        Std.Trichotomous (Subrel (fun (x1 x2 : ZFSet.{u}) => x1 x2) fun (x_1 : ZFSet.{u}) => x_1 x)
        @[deprecated ZFSet.IsOrdinal.trichotomous (since := "2026-01-24")]
        theorem ZFSet.IsOrdinal.isTrichotomous {x : ZFSet.{u}} (h : x.IsOrdinal) :
        Std.Trichotomous (Subrel (fun (x1 x2 : ZFSet.{u}) => x1 x2) fun (x_1 : ZFSet.{u}) => x_1 x)

        Alias of ZFSet.IsOrdinal.trichotomous.

        theorem ZFSet.isOrdinal_iff_trichotomous {x : ZFSet.{u}} :
        x.IsOrdinal x.IsTransitive Std.Trichotomous (Subrel (fun (x1 x2 : ZFSet.{u}) => x1 x2) fun (x_1 : ZFSet.{u}) => x_1 x)

        An ordinal is a transitive set, trichotomous under membership.

        @[deprecated ZFSet.isOrdinal_iff_trichotomous (since := "2026-01-24")]
        theorem ZFSet.isOrdinal_iff_isTrichotomous {x : ZFSet.{u}} :
        x.IsOrdinal x.IsTransitive Std.Trichotomous (Subrel (fun (x1 x2 : ZFSet.{u}) => x1 x2) fun (x_1 : ZFSet.{u}) => x_1 x)

        Alias of ZFSet.isOrdinal_iff_trichotomous.


        An ordinal is a transitive set, trichotomous under membership.

        theorem ZFSet.IsOrdinal.isWellOrder {x : ZFSet.{u}} (h : x.IsOrdinal) :
        IsWellOrder { x_1 : ZFSet.{u} // x_1 x } (Subrel (fun (x1 x2 : ZFSet.{u}) => x1 x2) fun (x_1 : ZFSet.{u}) => x_1 x)
        theorem ZFSet.isOrdinal_iff_isWellOrder {x : ZFSet.{u}} :
        x.IsOrdinal x.IsTransitive IsWellOrder { x_1 : ZFSet.{u} // x_1 x } (Subrel (fun (x1 x2 : ZFSet.{u}) => x1 x2) fun (x_1 : ZFSet.{u}) => x_1 x)

        An ordinal is a transitive set, well-ordered under membership.

        Type-theoretic ordinals to von Neumann ordinals #

        @[irreducible]
        noncomputable def Ordinal.toPSet (o : Ordinal.{u}) :

        The von Neumann ordinal corresponding to a given Ordinal, as a PSet.

        The elements of o.toPSet are all a.toPSet with a < o.

        Equations
          Instances For
            @[simp, irreducible]
            noncomputable def Ordinal.toZFSet (o : Ordinal.{u}) :

            The von Neumann ordinal corresponding to a given Ordinal, as a ZFSet.

            The elements of o.toZFSet are all a.toZFSet with a < o.

            Equations
              Instances For

                Ordinal is order-equivalent to the type of von Neumann ordinals.

                Equations
                  Instances For