ZFC classes #
Classes in set theory are usually defined as collections of elements satisfying some property.
We model this by defining ZFClass as Set ZFSet.
Main definitions #
ZFClass: Defined asSet ZFSet.ZFClass.iota: Definite description operator.ZFSet.isOrdinal_notCMem_univ: The Burali-Forti paradox. Ordinals form a proper class.
The collection of all classes.
Equations
Instances For
Membership of classes. A ᶜ∈ B if A is a ZFC set which satisfies B.
Note that the A ∈ B notation is already taken for the case where A : ZFSet instead
(the OutParam in Mem forces the type of A to be uniquely inferrable from the type of B).
Equations
- ZFClass.«term_ᶜ∈_» = Lean.ParserDescr.trailingNode `ZFClass.«term_ᶜ∈_» 50 50 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ᶜ∈ ") (Lean.ParserDescr.cat `term 50))
Instances For
Negated membership of classes, see ZFClass.CMem.
Conventions for notations in identifiers:
- The recommended spelling of
ᶜ∉in identifiers isnotCMem.
Equations
- ZFClass.«term_ᶜ∉_» = Lean.ParserDescr.trailingNode `ZFClass.«term_ᶜ∉_» 50 50 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ᶜ∉ ") (Lean.ParserDescr.cat `term 50))
Instances For
Equations
- ZFClass.instWellFoundedRelation = { rel := fun (x1 x2 : ZFClass.{?u.1}) => x1.CMem x2, wf := ZFClass.instWellFoundedRelation._proof_1 }
Convert a conglomerate (a collection of classes) into a class
Equations
Instances For
Convert a class into a conglomerate (a collection of classes)
Equations
- x.classToCong = {y : ZFClass.{?u.1} | y.CMem x}
Instances For
The power class of a class is the class of all subclasses that are ZFC sets
Equations
- x.powerset = ZFClass.congToClass (𝒫 x)
Instances For
The union of a class is the class of all members of ZFC sets in the class. Uses ⋃₀ notation,
scoped under the ZFClass namespace.
Equations
- x.sUnion = sSup x.classToCong
Instances For
The union of a class is the class of all members of ZFC sets in the class. Uses ⋃₀ notation,
scoped under the ZFClass namespace.
Equations
- ZFClass.«term⋃₀_» = Lean.ParserDescr.node `ZFClass.«term⋃₀_» 110 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⋃₀ ") (Lean.ParserDescr.cat `term 110))
Instances For
The intersection of a class is the class of all members of ZFC sets in the class .
Uses ⋂₀ notation, scoped under the ZFClass namespace.
Equations
- x.sInter = sInf x.classToCong
Instances For
The intersection of a class is the class of all members of ZFC sets in the class .
Uses ⋂₀ notation, scoped under the ZFClass namespace.
Equations
- ZFClass.«term⋂₀_» = Lean.ParserDescr.node `ZFClass.«term⋂₀_» 110 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⋂₀ ") (Lean.ParserDescr.cat `term 110))
Instances For
An induction principle for sets. If every subset of a class is a member, then the class is universal.
The definite description operator, which is {x} if A = {x} and ∅ otherwise.
Equations
- A.iota = ZFClass.sUnion {x : ZFSet.{?u.1} | ∀ (y : ZFSet.{?u.1}), ZFClass.CMem (↑y) A ↔ y = x}
Instances For
Function value
Equations
- F ′ A = ZFClass.iota {y : ZFSet.{?u.1} | A.CMem {x : ZFSet.{?u.1} | ZFClass.CMem (↑(x.pair y)) F}}
Instances For
Function value
Equations
- ZFClass.«term_′_» = Lean.ParserDescr.trailingNode `ZFClass.«term_′_» 100 100 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ′ ") (Lean.ParserDescr.cat `term 101))
Instances For
The collection of all classes.
We define Class as Set ZFSet, as this allows us to get many instances automatically. However, in
practice, we treat it as (the definitionally equal) ZFSet → Prop. This means, the preferred way to
state that x : ZFSet belongs to A : Class is to write A x. This is poor practice, and one of
the reasons why Class is deprecated in favor of ZFClass.
Equations
Instances For
Equations
- instLEClass = { le := instLEClass._aux_1 }
Equations
- instEmptyCollectionClass = { emptyCollection := instEmptyCollectionClass._aux_1 }
Equations
- instUnionClass = { union := instUnionClass._aux_1 }
Equations
- instInterClass = { inter := instInterClass._aux_1 }
Equations
- instComplClass = { compl := instComplClass._aux_1 }
Equations
- instSDiffClass = { sdiff := instSDiffClass._aux_1 }
Equations
- instInsertZFSetClass = { insert := Set.insert }
Class is treated as (the definitionally equal) ZFSet → Prop, so that A x means that the
ZFC set x belongs to the class A.
Equations
- instCoeFunClassForallZFSetProp = { coe := Set.Mem }
{x ∈ A | p x} is the class of elements in A satisfying p
Instances For
Equations
- Class.instCoeZFSet = { coe := Class.coe }
The universal class
Equations
Instances For
Equations
- Class.instTop = { top := Class.univ }
Equations
- One or more equations did not get rendered due to their size.
Assert that A is a ZFC set satisfying B
Instances For
Equations
- Class.instMembership = { mem := Class.Mem }
Equations
- Class.instWellFoundedRelation = { rel := fun (x1 x2 : Class.{?u.1}) => x1 ∈ x2, wf := Class.mem_wf }
Convert a conglomerate (a collection of classes) into a class
Equations
- Class.congToClass x = {y : ZFSet.{?u.1} | ↑y ∈ x}
Instances For
Convert a class into a conglomerate (a collection of classes)
Equations
- x.classToCong = {y : Class.{?u.1} | y ∈ x}
Instances For
The power class of a class is the class of all subclasses that are ZFC sets
Equations
- x.powerset = Class.congToClass (𝒫 x)
Instances For
The union of a class is the class of all members of ZFC sets in the class. Uses ⋃₀ notation,
scoped under the Class namespace.
Equations
- x.sUnion = sSup x.classToCong
Instances For
The union of a class is the class of all members of ZFC sets in the class. Uses ⋃₀ notation,
scoped under the Class namespace.
Equations
- Class.«term⋃₀_» = Lean.ParserDescr.node `Class.«term⋃₀_» 110 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⋃₀ ") (Lean.ParserDescr.cat `term 110))
Instances For
The intersection of a class is the class of all members of ZFC sets in the class .
Uses ⋂₀ notation, scoped under the Class namespace.
Equations
- x.sInter = sInf x.classToCong
Instances For
The intersection of a class is the class of all members of ZFC sets in the class .
Uses ⋂₀ notation, scoped under the Class namespace.
Equations
- Class.«term⋂₀_» = Lean.ParserDescr.node `Class.«term⋂₀_» 110 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⋂₀ ") (Lean.ParserDescr.cat `term 110))
Instances For
Alias of Class.coe_sdiff.
An induction principle for sets. If every subset of a class is a member, then the class is universal.
The definite description operator, which is {x} if {y | A y} = {x} and ∅ otherwise.
Equations
- A.iota = Class.sUnion {x : ZFSet.{?u.1} | ∀ (y : ZFSet.{?u.1}), A.Mem y ↔ y = x}
Instances For
Function value
Equations
- F.fval A = Class.iota {y : ZFSet.{?u.1} | Class.ToSet {x : ZFSet.{?u.1} | F.Mem (x.pair y)} A}
Instances For
A choice function on the class of nonempty ZFC sets.
Equations
- x.choice = ZFSet.map (fun (y : ZFSet.{?u.1}) => Classical.epsilon fun (z : ZFSet.{?u.1}) => z ∈ y) x
Instances For
SetLike.coe as an equivalence.
Equations
- One or more equations did not get rendered due to their size.