Basic theory of models of ZF set theory #
This module develops the order-theoretic and membership structure on models of ZF, including the von Neumann hierarchy and foundational lemmas used throughout the Kunen inconsistency development.
The formula declaration.
Equations
- Ne.formula = (((FirstOrder.Language.var ∘ Sum.inl) 0).bdEqual ((FirstOrder.Language.var ∘ Sum.inl) 1)).not
Instances For
The formula declaration.
Equations
- Eq.formula = ((FirstOrder.Language.var ∘ Sum.inl) 0).bdEqual ((FirstOrder.Language.var ∘ Sum.inl) 1)
Instances For
The formula declaration.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The ↓_ notation.
Equations
- SetTheory.«term↓_» = Lean.ParserDescr.node `SetTheory.«term↓_» 1024 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "↓") (Lean.ParserDescr.cat `term 1024))
Instances For
The ⇓_ notation.
Equations
- SetTheory.«term⇓_» = Lean.ParserDescr.node `SetTheory.«term⇓_» 1024 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⇓") (Lean.ParserDescr.cat `term 1024))
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
The IsVonNeumann type.
- vonNeumann {α : Type 1} [s : ZFStructure α] (μ : Ordinal.{0}) (hμ : Order.IsSuccLimit μ) (eq : ⟨α, s⟩ = ⟨↥(ZFSet.vonNeumann μ), structureZFSet⟩) : IsVonNeumann α
- V {α : Type 1} [s : ZFStructure α] (eq : ⟨α, s⟩ = ⟨SetTheory.V, structureV⟩) : IsVonNeumann α
Instances
The IsVonNeumannWithOmega type.
- vonNeumann {α : Type 1} [s : ZFStructure α] (μ : Ordinal.{0}) (hμ : Order.IsSuccLimit μ) (omega_lt_μ : Ordinal.omega0 < μ) (eq : ⟨α, s⟩ = ⟨↥(ZFSet.vonNeumann μ), structureZFSet⟩) : IsVonNeumannWithOmega α
- V {α : Type 1} [s : ZFStructure α] (eq : ⟨α, s⟩ = ⟨SetTheory.V, structureV⟩) : IsVonNeumannWithOmega α
Instances
Case-split on the proof h : IsVonNeumann M, introducing μ and hμ in the
successor-limit case and discharging the V case, then registering the limit fact.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Like split_vonNeumann, but for IsVonNeumannWithOmega M, additionally
introducing the hypothesis omega_lt_μ that ω < μ.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
The IsSet declaration.
Instances For
The separate declaration.
Equations
- SetTheory.separate x p = Exists.choose ⋯
Instances For
The set-theoretic function automatically realized from its defining property.
Equations
- 𝓟 x₁ = Exists.choose ⋯
Instances For
The 𝓟_ declaration.
Equations
- SetTheory.term𝓟_ = Lean.ParserDescr.node `SetTheory.term𝓟_ 1024 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "𝓟 ") (Lean.ParserDescr.cat `term 1024))
Instances For
The set-theoretic function automatically realized from its defining property.
Equations
Instances For
The set-theoretic function automatically realized from its defining property.
Equations
- SetTheory.insert x₁ x₂ = Exists.choose ⋯
Instances For
The formula declaration.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The formula declaration.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- instSingletonMM = { singleton := SetTheory.singleton }
The formula declaration.
Instances For
Equations
- instInsertMM = { insert := SetTheory.insert }
The formula declaration.
Instances For
The ExistsUniqueAt declaration.
Equations
- SetTheory.ExistsUniqueAt x p = (p x ∧ ∀ (y : α), p y → y = x)
Instances For
The IsTransitive declaration.
Equations
- SetTheory.IsTransitive X = ∀ ⦃x : M⦄, x ∈ X → x ⊆ X
Instances For
The enoughTransitive declaration.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The set-theoretic function automatically realized from its defining property.
Equations
- SetTheory.trcl x₁ = Exists.choose ⋯
Instances For
The set-theoretic function automatically realized from its defining property.
Equations
- SetTheory.union x₁ x₂ = Exists.choose ⋯
Instances For
The set-theoretic function automatically realized from its defining property.
Equations
- SetTheory.inter x₁ x₂ = Exists.choose ⋯
Instances For
Equations
- instUnionM = { union := SetTheory.union }
Equations
- instInterM = { inter := SetTheory.inter }
Equations
- SetTheory.instInfSetM = { sInf := fun (s : Set M) => if hs : s.Nonempty then SetTheory.separate hs.some fun (x : M) => ∀ t ∈ s, x ∈ t else ∅ }
Equations
- SetTheory.instOrderBotM = { bot := ∅, bot_le := ⋯ }
The set-theoretic function automatically realized from its defining property.
Equations
- SetTheory.succ x₁ = Exists.choose ⋯
Instances For
The set-theoretic function automatically realized from its defining property.
Equations
- ⸨x₁, x₂⸩ = Exists.choose ⋯
Instances For
The ⸨_,_⸩ notation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The IsPair declaration.
Instances For
The set-theoretic function automatically realized from its defining property.
Equations
- SetTheory.fst x₁ = if h₁ : SetTheory.IsPair x₁ then Exists.choose ⋯ else ∅
Instances For
The set-theoretic function automatically realized from its defining property.
Equations
- SetTheory.snd x₁ = if h₁ : SetTheory.IsPair x₁ then Exists.choose ⋯ else ∅
Instances For
The set-theoretic function automatically realized from its defining property.
Equations
- SetTheory.Pairs x₁ x₂ = Exists.choose ⋯
Instances For
The IsRelation declaration.
Equations
- SetTheory.IsRelation r = ∀ ⦃x : M⦄, x ∈ r → SetTheory.IsPair x
Instances For
The set-theoretic function automatically realized from its defining property.
Equations
- SetTheory.Dom x₁ = Exists.choose ⋯
Instances For
The set-theoretic function automatically realized from its defining property.
Equations
- SetTheory.Ran x₁ = Exists.choose ⋯
Instances For
The set-theoretic function automatically realized from its defining property.
Equations
- SetTheory.Func x₁ x₂ = Exists.choose ⋯
Instances For
The set-theoretic function automatically realized from its defining property.
Equations
- SetTheory.apply x₁ x₂ = if h₁ : SetTheory.IsFunc x₁ then if h₂ : x₂ ∈ SetTheory.Dom x₁ then Exists.choose ⋯ else ∅ else ∅
Instances For
The PreserveMem declaration.
Equations
- SetTheory.PreserveMem f = ∀ x ∈ SetTheory.Dom f, ∀ y ∈ SetTheory.Dom f, x ∈ y → SetTheory.apply f x ∈ SetTheory.apply f y
Instances For
The funcToSet declaration.
Equations
- SetTheory.funcToSet f = SetTheory.separate (SetTheory.Pairs A B) fun (x : M) => ∃ (hx : SetTheory.fst x ∈ A), ↑(f ⟨SetTheory.fst x, hx⟩) = SetTheory.snd x
Instances For
The setToFunc declaration.
Equations
- SetTheory.setToFunc f = fun (x : ↥A) => match x with | ⟨x, hx⟩ => ⟨SetTheory.apply (↑f) x, ⋯⟩
Instances For
The funcEquiv declaration.
Equations
- SetTheory.funcEquiv = { toFun := fun (f : ↥(SetTheory.Func A B)) => SetTheory.setToFunc f, invFun := fun (f : ↥A → ↥B) => ⟨SetTheory.funcToSet f, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }
Instances For
The IsInjective declaration.
Equations
- SetTheory.IsInjective f = (SetTheory.IsFunc f ∧ ∀ x ∈ SetTheory.Dom f, ∀ y ∈ SetTheory.Dom f, SetTheory.apply f x = SetTheory.apply f y → x = y)
Instances For
The cardLE declaration.
Equations
- SetTheory.cardLE x y = ∃ f ∈ SetTheory.Func x y, SetTheory.IsInjective f
Instances For
The cardEq declaration.
Equations
- SetTheory.cardEq x y = ∃ f ∈ SetTheory.Func x y, SetTheory.IsInjective f ∧ SetTheory.Ran f = y
Instances For
The cardLT declaration.
Equations
- SetTheory.cardLT x y = (SetTheory.cardLE x y ∧ ¬SetTheory.cardEq x y)
Instances For
The set-theoretic function automatically realized from its defining property.