Documentation

Mathlib.SetTheory.ZFC.PSet

Pre-sets #

A pre-set is inductively defined by its indexing type and its members, which are themselves pre-sets.

After defining pre-sets we define extensional equality over them, also inductively. We construct a Setoid instance from it, and in Mathlib.SetTheory.ZFC.Basic we define ZFC sets as the quotient of pre-sets by extensional equality.

Main definitions #

inductive PSet :
Type (u + 1)

The type of pre-sets in universe u. A pre-set is a family of pre-sets indexed by a type in Type u. The ZFC universe is defined as a quotient of this to ensure extensionality.

Instances For

    The underlying type of a pre-set

    Equations
    Instances For

      The underlying pre-set family of a pre-set

      Equations
      Instances For
        @[simp]
        theorem PSet.mk_type (α : Type u_1) (A : αPSet.{u_1}) :
        (mk α A).Type = α
        @[simp]
        theorem PSet.mk_func (α : Type u_1) (A : αPSet.{u_1}) :
        (mk α A).Func = A
        @[simp]
        theorem PSet.eta (x : PSet.{u_1}) :
        mk x.Type x.Func = x

        Two pre-sets are extensionally equivalent if every element of the first family is extensionally equivalent to some element of the second family and vice-versa.

        Equations
        Instances For
          theorem PSet.equiv_iff {x : PSet.{u_1}} {y : PSet.{u_2}} :
          x.Equiv y (∀ (i : x.Type), ∃ (j : y.Type), (x.Func i).Equiv (y.Func j)) ∀ (j : y.Type), ∃ (i : x.Type), (x.Func i).Equiv (y.Func j)
          theorem PSet.Equiv.exists_left {x : PSet.{u_1}} {y : PSet.{u_2}} (h : x.Equiv y) (i : x.Type) :
          ∃ (j : y.Type), (x.Func i).Equiv (y.Func j)
          theorem PSet.Equiv.exists_right {x : PSet.{u_1}} {y : PSet.{u_2}} (h : x.Equiv y) (j : y.Type) :
          ∃ (i : x.Type), (x.Func i).Equiv (y.Func j)
          theorem PSet.Equiv.euc {x : PSet.{u_1}} {y : PSet.{u_2}} {z : PSet.{u_3}} :
          x.Equiv yz.Equiv yx.Equiv z
          theorem PSet.Equiv.symm {x : PSet.{u_1}} {y : PSet.{u_2}} :
          x.Equiv yy.Equiv x
          theorem PSet.Equiv.trans {x : PSet.{u_1}} {y : PSet.{u_2}} {z : PSet.{u_3}} (h1 : x.Equiv y) (h2 : y.Equiv z) :
          x.Equiv z

          A pre-set is a subset of another pre-set if every element of the first family is extensionally equivalent to some element of the second family.

          Equations
          Instances For
            theorem PSet.Equiv.ext (x y : PSet.{u_1}) :
            x.Equiv y x y y x
            theorem PSet.Subset.congr_left {x y z : PSet.{u_1}} :
            x.Equiv y → (x z y z)
            theorem PSet.Subset.congr_right {x y z : PSet.{u_1}} :
            x.Equiv y → (z x z y)
            def PSet.Mem (y x : PSet.{u}) :

            x ∈ y as pre-sets if x is extensionally equivalent to a member of the family y.

            Equations
            Instances For
              theorem PSet.Mem.mk {α : Type u} (A : αPSet.{u}) (a : α) :
              A a PSet.mk α A
              theorem PSet.func_mem (x : PSet.{u_1}) (i : x.Type) :
              x.Func i x
              theorem PSet.Mem.ext {x y : PSet.{u}} :
              (∀ (w : PSet.{u}), w x w y)x.Equiv y
              theorem PSet.Mem.congr_right {x y : PSet.{u}} :
              x.Equiv y∀ {w : PSet.{u}}, w x w y
              theorem PSet.equiv_iff_mem {x y : PSet.{u}} :
              x.Equiv y ∀ {w : PSet.{u}}, w x w y
              theorem PSet.Mem.congr_left {x y : PSet.{u}} :
              x.Equiv y∀ {w : PSet.{u}}, x w y w
              theorem PSet.mem_of_subset {x y z : PSet.{u_1}} :
              x yz xz y
              theorem PSet.subset_iff {x y : PSet.{u_1}} :
              x y ∀ ⦃z : PSet.{u_1}⦄, z xz y
              theorem PSet.mem_wf :
              WellFounded fun (x1 x2 : PSet.{u_1}) => x1 x2
              theorem PSet.mem_asymm {x y : PSet.{u_1}} :
              x yyx
              theorem PSet.mem_irrefl (x : PSet.{u_1}) :
              xx
              theorem PSet.not_subset_of_mem {x y : PSet.{u_1}} (h : x y) :
              ¬y x
              theorem PSet.not_mem_of_subset {x y : PSet.{u_1}} (h : x y) :
              yx

              Convert a pre-set to a Set of pre-sets.

              Equations
              Instances For
                @[simp]
                theorem PSet.mem_toSet (a u : PSet.{u}) :
                a u.toSet a u

                A nonempty set is one that contains some element.

                Equations
                Instances For
                  theorem PSet.nonempty_of_mem {x u : PSet.{u_1}} (h : x u) :
                  theorem PSet.Equiv.eq {x y : PSet.{u_1}} :

                  Two pre-sets are equivalent iff they have the same members.

                  The empty pre-set

                  Equations
                  Instances For
                    @[simp]
                    theorem PSet.not_mem_empty (x : PSet.{u}) :
                    x
                    @[simp]

                    Insert an element into a pre-set

                    Equations
                    Instances For
                      @[simp]
                      theorem PSet.mem_insert_iff {x y z : PSet.{u}} :
                      x insert y z x.Equiv y x z
                      theorem PSet.mem_insert_of_mem {y z : PSet.{u_1}} (x : PSet.{u_1}) (h : z y) :
                      z insert x y
                      @[simp]
                      theorem PSet.mem_singleton {x y : PSet.{u_1}} :
                      x {y} x.Equiv y
                      theorem PSet.mem_pair {x y z : PSet.{u_1}} :
                      x {y, z} x.Equiv y x.Equiv z

                      The n-th von Neumann ordinal

                      Equations
                      Instances For

                        The von Neumann ordinal ω

                        Equations
                        Instances For

                          The pre-set separation operation {x ∈ a | p x}

                          Equations
                          Instances For
                            theorem PSet.mem_sep {p : PSet.{u_1}Prop} (H : ∀ (x y : PSet.{u_1}), x.Equiv yp xp y) {x y : PSet.{u_1}} :
                            y PSet.sep p x y x p y

                            The pre-set powerset operator

                            Equations
                            Instances For
                              @[simp]
                              theorem PSet.mem_powerset {x y : PSet.{u_1}} :

                              The pre-set union operator

                              Equations
                              Instances For

                                The pre-set union operator

                                Equations
                                Instances For
                                  @[simp]
                                  theorem PSet.mem_sUnion {x y : PSet.{u}} :
                                  y ⋃₀ x zx, y z

                                  The image of a function from pre-sets to pre-sets.

                                  Equations
                                  Instances For
                                    theorem PSet.mem_image {f : PSet.{u}PSet.{u}} (H : ∀ (x y : PSet.{u}), x.Equiv y(f x).Equiv (f y)) {x y : PSet.{u}} :
                                    y image f x zx, y.Equiv (f z)

                                    Universe lift operation

                                    Equations
                                    Instances For

                                      Embedding of one universe in another

                                      Equations
                                      Instances For