Documentation

Mathlib.SetTheory.ZFC.Rank

Ordinal ranks of PSet and ZFSet #

In this file, we define the ordinal ranks of PSet and ZFSet. These ranks are the same as IsWellFounded.rank over , but are defined in a way that the universe levels of ranks are the same as the indexing types.

Definitions #

PSet rank #

noncomputable def PSet.rank :

The ordinal rank of a pre-set

Equations
Instances For
    theorem PSet.rank_congr {x y : PSet.{u_1}} :
    x.Equiv yx.rank = y.rank
    theorem PSet.rank_lt_of_mem {x y : PSet.{u_1}} :
    y xy.rank < x.rank
    theorem PSet.rank_le_iff {o : Ordinal.{u_1}} {x : PSet.{u_1}} :
    x.rank o ∀ ⦃y : PSet.{u_1}⦄, y xy.rank < o
    theorem PSet.lt_rank_iff {o : Ordinal.{u_1}} {x : PSet.{u_1}} :
    o < x.rank yx, o y.rank
    theorem PSet.rank_mono {x y : PSet.{u}} (h : x y) :
    x.rank y.rank
    @[simp]
    theorem PSet.rank_empty :
    .rank = 0
    @[simp]
    theorem PSet.rank_insert (x y : PSet.{u_1}) :
    (insert x y).rank = Order.succ x.rank y.rank
    @[simp]
    theorem PSet.rank_singleton (x : PSet.{u_1}) :
    {x}.rank = Order.succ x.rank
    theorem PSet.rank_pair (x y : PSet.{u_1}) :
    {x, y}.rank = Order.succ x.rank Order.succ y.rank
    @[simp]
    theorem PSet.rank_powerset (x : PSet.{u_1}) :
    x.powerset.rank = Order.succ x.rank
    theorem PSet.rank_sUnion_le (x : PSet.{u_1}) :
    (⋃₀ x).rank x.rank

    For the rank of ⋃₀ x, we only have rank (⋃₀ x) ≤ rank x ≤ rank (⋃₀ x) + 1.

    This inequality is split into rank_sUnion_le and le_succ_rank_sUnion.

    theorem PSet.rank_eq_wfRank {x : PSet.{u}} :
    Ordinal.lift.{u + 1, u} x.rank = IsWellFounded.rank (fun (x1 x2 : PSet.{u}) => x1 x2) x

    PSet.rank is equal to the IsWellFounded.rank over .

    ZFSet rank #

    noncomputable def ZFSet.rank :

    The ordinal rank of a ZFC set

    Equations
    Instances For
      theorem ZFSet.rank_lt_of_mem {x y : ZFSet.{u}} :
      y xy.rank < x.rank
      theorem ZFSet.rank_le_iff {x : ZFSet.{u}} {o : Ordinal.{u}} :
      x.rank o ∀ ⦃y : ZFSet.{u}⦄, y xy.rank < o
      theorem ZFSet.lt_rank_iff {x : ZFSet.{u}} {o : Ordinal.{u}} :
      o < x.rank yx, o y.rank
      theorem ZFSet.rank_mono {x y : ZFSet.{u}} (h : x y) :
      x.rank y.rank
      @[simp]
      theorem ZFSet.rank_empty :
      .rank = 0
      @[simp]
      theorem ZFSet.rank_insert (x y : ZFSet.{u_1}) :
      (insert x y).rank = Order.succ x.rank y.rank
      @[simp]
      theorem ZFSet.rank_singleton (x : ZFSet.{u_1}) :
      {x}.rank = Order.succ x.rank
      theorem ZFSet.rank_pair (x y : ZFSet.{u_1}) :
      {x, y}.rank = Order.succ x.rank Order.succ y.rank
      @[simp]
      theorem ZFSet.rank_union (x y : ZFSet.{u_1}) :
      (x y).rank = x.rank y.rank
      @[simp]
      theorem ZFSet.rank_powerset (x : ZFSet.{u_1}) :
      x.powerset.rank = Order.succ x.rank
      theorem ZFSet.rank_sUnion_le (x : ZFSet.{u_1}) :
      (⋃₀ x).rank x.rank

      For the rank of ⋃₀ x, we only have rank (⋃₀ x) ≤ rank x ≤ rank (⋃₀ x) + 1.

      This inequality is split into rank_sUnion_le and le_succ_rank_sUnion.

      @[simp]
      theorem ZFSet.rank_range {α : Type u_1} [Small.{u, u_1} α] (f : αZFSet.{u}) :
      (ZFSet.range f).rank = ⨆ (i : α), Order.succ (f i).rank

      ZFSet.rank is equal to the IsWellFounded.rank over .