A model of ZFC #
In this file, we model Zermelo-Fraenkel set theory (+ choice) using Lean's underlying type theory,
building on the pre-sets defined in Mathlib/SetTheory/ZFC/PSet.lean.
The theory of classes is developed in Mathlib/SetTheory/ZFC/Class.lean.
Main definitions #
ZFSet: ZFC set. Defined asPSetquotiented byPSet.Equiv, the extensional equivalence.ZFSet.choice: Axiom of choice. Proved from Lean's axiom of choice.ZFSet.omega: The von Neumann ordinalωas aSet.Classical.allZFSetDefinable: All functions are classically definable.ZFSet.IsFunc: Predicate that a ZFC set is a subset ofx × ythat can be considered as a ZFC functionx → y. That is, each member ofxis related by the ZFC set to exactly one member ofy.ZFSet.funs: ZFC set of ZFC functionsx → y.ZFSet.Hereditarily p x: Predicate that every set in the transitive closure ofxhas propertyp.
Notes #
To avoid confusion between the Lean Set and the ZFC Set, docstrings in this file refer to them
respectively as "Set" and "ZFC set".
A set function is "definable" if it is the image of some n-ary PSet
function. This isn't exactly definability, but is useful as a sufficient
condition for functions that have a computable image.
Turns a definable function into an n-ary
PSetfunction.A set function
fis the image ofDefinable.out f.
Instances
Turns a binary definable function into a binary PSet function.
Instances For
All functions are classically definable.
Instances For
Convert a ZFC set into a Set of ZFC sets
Instances For
The membership relation for ZFC sets is inherited from the membership relation for pre-sets.
Instances For
Alias of ZFSet.small_coe.
A nonempty set is one that contains some element.
Instances For
Alias of ZFSet.nonempty_coe.
x ⊆ y as ZFC sets means that all members of x are members of y.
Instances For
Alias of ZFSet.coe_subset_coe.
Alias of ZFSet.coe_empty.
Insert x y is the set {x} ∪ y
Instances For
Alias of ZFSet.coe_insert.
Alias of ZFSet.coe_singleton.
{x ∈ a | p x} is the set of elements in a satisfying p
Instances For
Alias of ZFSet.coe_sep.
The powerset operation, the collection of subsets of a ZFC set
Instances For
The union operator, the collection of elements of elements of a ZFC set. Uses ⋃₀ notation,
scoped under the ZFSet namespace.
Instances For
The union operator, the collection of elements of elements of a ZFC set. Uses ⋃₀ notation,
scoped under the ZFSet namespace.
Instances For
The intersection operator, the collection of elements in all of the elements of a ZFC set. We
define ⋂₀ ∅ = ∅. Uses ⋂₀ notation, scoped under the ZFSet namespace.
Instances For
The intersection operator, the collection of elements in all of the elements of a ZFC set. We
define ⋂₀ ∅ = ∅. Uses ⋂₀ notation, scoped under the ZFSet namespace.
Instances For
Alias of ZFSet.coe_sUnion.
Alias of ZFSet.coe_sInter.
Alias of ZFSet.mem_sdiff.
Alias of ZFSet.coe_union.
Alias of ZFSet.coe_inter.
Alias of ZFSet.coe_sdiff.
ZFSet.powerset is equivalent to Set.powerset.
Instances For
Induction on the ∈ relation.
The image of a (definable) ZFC set function
Instances For
Alias of ZFSet.coe_image.
The range of a type-indexed family of sets.
Instances For
Alias of ZFSet.coe_range.
Indexed union of a family of ZFC sets. Uses ⋃ notation, scoped under the ZFSet namespace.
Instances For
Indexed union of a family of ZFC sets. Uses ⋃ notation, scoped under the ZFSet namespace.
Instances For
Alias of ZFSet.coe_iUnion.
The Cartesian product, {(a, b) | a ∈ x, b ∈ y}
Instances For
isFunc x y f is the assertion that f is a subset of x × y which relates to each element
of x a unique element of y, so that we can consider f as a ZFC function x → y.
Instances For
funs x y is y ^ x, the set of all set functions x → y
Instances For
Graph of a function: map f x is the ZFC function which maps a ∈ x to f a
Instances For
Given a predicate p on ZFC sets. Hereditarily p x means that x has property p and the
members of x are all Hereditarily p.
Instances For
Alias of the forward direction of ZFSet.hereditarily_iff.