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 #

noncomputable def PSet.rank :

The ordinal rank of a pre-set

Equations
Instances For
    theorem PSet.rank_congr {x : PSet} {y : PSet} :
    x.Equiv yx.rank = y.rank
    theorem PSet.rank_lt_of_mem {x : PSet} {y : PSet} :
    y xy.rank < x.rank
    theorem PSet.rank_le_iff {o : Ordinal.{u_1}} {x : PSet} :
    x.rank o ∀ ⦃y : PSet⦄, y xy.rank < o
    theorem PSet.lt_rank_iff {o : Ordinal.{u_1}} {x : PSet} :
    o < x.rank yx, o y.rank
    theorem PSet.rank_mono {x : PSet} {y : PSet} (h : x y) :
    x.rank y.rank
    @[simp]
    theorem PSet.rank_empty :
    .rank = 0
    @[simp]
    theorem PSet.rank_insert {x : PSet} {y : PSet} :
    (insert x y).rank = max (Order.succ x.rank) y.rank
    @[simp]
    theorem PSet.rank_singleton {x : PSet} :
    {x}.rank = Order.succ x.rank
    theorem PSet.rank_pair {x : PSet} {y : PSet} :
    {x, y}.rank = max (Order.succ x.rank) (Order.succ y.rank)
    @[simp]
    theorem PSet.rank_powerset {x : PSet} :
    x.powerset.rank = Order.succ x.rank
    theorem PSet.rank_sUnion_le {x : PSet} :
    (⋃₀ 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} :
    Ordinal.lift.{u + 1, u} x.rank = IsWellFounded.rank (fun (x1 x2 : PSet) => x1 x2) x

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

    noncomputable def ZFSet.rank :

    The ordinal rank of a ZFC set

    Equations
    Instances For
      theorem ZFSet.rank_lt_of_mem {x : ZFSet} {y : ZFSet} :
      y xy.rank < x.rank
      theorem ZFSet.rank_le_iff {x : ZFSet} {o : Ordinal.{u}} :
      x.rank o ∀ ⦃y : ZFSet⦄, y xy.rank < o
      theorem ZFSet.lt_rank_iff {x : ZFSet} {o : Ordinal.{u}} :
      o < x.rank yx, o y.rank
      theorem ZFSet.rank_mono {x : ZFSet} {y : ZFSet} (h : x y) :
      x.rank y.rank
      @[simp]
      theorem ZFSet.rank_empty :
      .rank = 0
      @[simp]
      theorem ZFSet.rank_insert {x : ZFSet} {y : ZFSet} :
      (insert x y).rank = max (Order.succ x.rank) y.rank
      @[simp]
      theorem ZFSet.rank_singleton {x : ZFSet} :
      {x}.rank = Order.succ x.rank
      theorem ZFSet.rank_pair {x : ZFSet} {y : ZFSet} :
      {x, y}.rank = max (Order.succ x.rank) (Order.succ y.rank)
      @[simp]
      theorem ZFSet.rank_union {x : ZFSet} {y : ZFSet} :
      (x y).rank = max x.rank y.rank
      @[simp]
      theorem ZFSet.rank_powerset {x : ZFSet} :
      x.powerset.rank = Order.succ x.rank
      theorem ZFSet.rank_sUnion_le {x : ZFSet} :
      (⋃₀ 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} {f : αZFSet} :
      (ZFSet.range f).rank = Ordinal.lsub fun (i : α) => (f i).rank
      theorem ZFSet.rank_eq_wfRank {x : ZFSet} :
      Ordinal.lift.{u + 1, u} x.rank = IsWellFounded.rank (fun (x1 x2 : ZFSet) => x1 x2) x

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