Аналіз I, Глава 3.2
У цій главі ми пропонуємо версію теорії множин Цермело-Франкеля (з атомами), яка намагається максимально точно наслідувати оригінальний тексту Аналізу I, Глава 3.2. Вся нумерація посилається на оригінальний текст.
Я (пр.перекл. Терренс Тао) намагався зробити переклад якомога точнішим перефразуванням оригінального тексту. Коли є вибір між більш ідіоматичним рішенням Lean та більш точним перекладом, я зазвичай обирав останній. Зокрема, будуть місця, де код Lean можна було б "підбуцнути", щоб зробити його більш елегантним та ідіоматичним, але я свідомо уникав цього вибору.
Цей розділ переважно необов'язковий, хоча в ньому чітко зазначено аксіому регулярності, яка використовується в другорядній ролі у вправі в розділі 3.5.
Основні конструкції та результати цього розділу:
-
Парадокс Рассела (виключення аксіоми універсальної специфікації)
-
Аксіома регулярності - аксіома, розроблена для уникнення парадоксу Рассела
namespace Chapter3
export SetTheory (Set Object)
variable [SetTheory]
Аксіома 3.8 (Універсальне визначення)
abbrev axiom_of_universal_specification : Prop :=
∀ P : Object → Prop, ∃ A : Set, ∀ x : Object, x ∈ A ↔ P x
theorem Russells_paradox : ¬ axiom_of_universal_specification := inst✝:SetTheory⊢ ¬axiom_of_universal_specification
-- цей доказ написан так, щоб співпадати із структурою орігінального тексту.
inst✝:SetTheoryh:axiom_of_universal_specification⊢ False
inst✝:SetTheoryh:axiom_of_universal_specificationP:Object → Prop := fun x => ∃ X, x = SetTheory.set_to_object X ∧ x ∉ X⊢ False
inst✝:SetTheoryh:axiom_of_universal_specificationP:Object → Prop := fun x => ∃ X, x = SetTheory.set_to_object X ∧ x ∉ XΩ:SethΩ:∀ (x : Object), x ∈ Ω ↔ P x⊢ False
inst✝:SetTheoryh✝:axiom_of_universal_specificationP:Object → Prop := fun x => ∃ X, x = SetTheory.set_to_object X ∧ x ∉ XΩ:SethΩ:∀ (x : Object), x ∈ Ω ↔ P xh:SetTheory.set_to_object Ω ∈ Ω⊢ Falseinst✝:SetTheoryh✝:axiom_of_universal_specificationP:Object → Prop := fun x => ∃ X, x = SetTheory.set_to_object X ∧ x ∉ XΩ:SethΩ:∀ (x : Object), x ∈ Ω ↔ P xh:SetTheory.set_to_object Ω ∉ Ω⊢ False
inst✝:SetTheoryh✝:axiom_of_universal_specificationP:Object → Prop := fun x => ∃ X, x = SetTheory.set_to_object X ∧ x ∉ XΩ:SethΩ:∀ (x : Object), x ∈ Ω ↔ P xh:SetTheory.set_to_object Ω ∈ Ω⊢ False inst✝:SetTheoryh✝:axiom_of_universal_specificationP:Object → Prop := fun x => ∃ X, x = SetTheory.set_to_object X ∧ x ∉ XΩ:SethΩ:∀ (x : Object), x ∈ Ω ↔ P xh:SetTheory.set_to_object Ω ∈ Ωthis:P (SetTheory.set_to_object Ω)⊢ False
inst✝:SetTheoryh✝:axiom_of_universal_specificationP:Object → Prop := fun x => ∃ X, x = SetTheory.set_to_object X ∧ x ∉ XΩ:SethΩ:∀ (x : Object), x ∈ Ω ↔ P xh:SetTheory.set_to_object Ω ∈ ΩΩ':SethΩ1:SetTheory.set_to_object Ω = SetTheory.set_to_object Ω'hΩ2:SetTheory.set_to_object Ω ∉ Ω'⊢ False
inst✝:SetTheoryh✝:axiom_of_universal_specificationP:Object → Prop := fun x => ∃ X, x = SetTheory.set_to_object X ∧ x ∉ XΩ:SethΩ:∀ (x : Object), x ∈ Ω ↔ P xh:SetTheory.set_to_object Ω ∈ ΩΩ':SethΩ2:SetTheory.set_to_object Ω ∉ Ω'hΩ1:Ω = Ω'⊢ False
inst✝:SetTheoryh✝:axiom_of_universal_specificationP:Object → Prop := fun x => ∃ X, x = SetTheory.set_to_object X ∧ x ∉ XΩ:SethΩ:∀ (x : Object), x ∈ Ω ↔ P xh:SetTheory.set_to_object Ω ∈ ΩΩ':SethΩ2:SetTheory.set_to_object Ω ∉ ΩhΩ1:Ω = Ω'⊢ False
All goals completed! 🐙
have : P (Ω:Object) := inst✝:SetTheory⊢ ¬axiom_of_universal_specification All goals completed! 🐙
inst✝:SetTheoryh✝:axiom_of_universal_specificationP:Object → Prop := fun x => ∃ X, x = SetTheory.set_to_object X ∧ x ∉ XΩ:SethΩ:∀ (x : Object), x ∈ Ω ↔ P xh:SetTheory.set_to_object Ω ∉ Ωthis:SetTheory.set_to_object Ω ∈ Ω⊢ False
All goals completed! 🐙
Аксіома 3.9 (Регулярність )
theorem SetTheory.Set.axiom_of_regularity {A:Set} (h: A ≠ ∅) :
∃ x:A, ∀ S:Set, x.val = S → Disjoint S A := inst✝:SetTheoryA:Seth:A ≠ ∅⊢ ∃ x, ∀ (S : Set), ↑x = set_to_object S → Disjoint S A
inst✝:SetTheoryA:Seth✝:A ≠ ∅x:Objecth:mem x Ah':∀ (S : Set), x = set_to_object S → ¬∃ y, mem y A ∧ mem y S⊢ ∃ x, ∀ (S : Set), ↑x = set_to_object S → Disjoint S A
inst✝:SetTheoryA:Seth✝:A ≠ ∅x:Objecth:mem x Ah':∀ (S : Set), x = set_to_object S → ¬∃ y, mem y A ∧ mem y S⊢ ∀ (S : Set), ↑⟨x, h⟩ = set_to_object S → Disjoint S A
inst✝:SetTheoryA:Seth✝:A ≠ ∅x:Objecth:mem x Ah':∀ (S : Set), x = set_to_object S → ¬∃ y, mem y A ∧ mem y SS:SethS:↑⟨x, h⟩ = set_to_object S⊢ Disjoint S A
inst✝:SetTheoryA:Seth✝:A ≠ ∅x:Objecth:mem x AS:SethS:↑⟨x, h⟩ = set_to_object Sh':¬∃ y, mem y A ∧ mem y S⊢ Disjoint S A
inst✝:SetTheoryA:Seth✝:A ≠ ∅x:Objecth:mem x AS:SethS:↑⟨x, h⟩ = set_to_object Sh':¬∃ y, mem y A ∧ mem y S⊢ ∀ (x : Object), x ∉ S ∩ A
inst✝:SetTheoryA:Seth✝:A ≠ ∅x:Objecth:mem x AS:SethS:↑⟨x, h⟩ = set_to_object Sh':∃ x, x ∈ S ∩ A⊢ ∃ y, mem y A ∧ mem y S
inst✝:SetTheoryA:Seth✝:A ≠ ∅x:Objecth:mem x AS:SethS:↑⟨x, h⟩ = set_to_object Sh':∃ x ∈ S, x ∈ A⊢ ∃ y, mem y A ∧ mem y S
inst✝:SetTheoryA:Seth✝:A ≠ ∅x:Objecth:mem x AS:SethS:↑⟨x, h⟩ = set_to_object Sy:Objecth1:y ∈ Sh2:y ∈ A⊢ ∃ y, mem y A ∧ mem y S
All goals completed! 🐙
Вправа 3.2.1. Дух цієї вправи полягає в тому, щоб встановити ці результати без використання парадоксу Рассела чи порожньої множини.
theorem SetTheory.Set.emptyset_exists (h: axiom_of_universal_specification):
∃ (X:Set), ∀ x, x ∉ X := inst✝:SetTheoryh:axiom_of_universal_specification⊢ ∃ X, ∀ (x : Object), x ∉ X
All goals completed! 🐙
Вправа 3.2.1. Дух цієї вправи полягає в тому, щоб встановити ці результати без використання парадоксу Рассела чи сінглетона.
theorem SetTheory.Set.singleton_exists (h: axiom_of_universal_specification) (x:Object):
∃ (X:Set), ∀ y, y ∈ X ↔ y = x := inst✝:SetTheoryh:axiom_of_universal_specificationx:Object⊢ ∃ X, ∀ (y : Object), y ∈ X ↔ y = x
All goals completed! 🐙
Вправа 3.2.1. Дух цієї вправи полягає в тому, щоб встановити ці результати без використання парадоксу Рассела чи пари.
theorem SetTheory.Set.pair_exists (h: axiom_of_universal_specification) (x₁ x₂:Object):
∃ (X:Set), ∀ y, y ∈ X ↔ y = x₁ ∨ y = x₂ := inst✝:SetTheoryh:axiom_of_universal_specificationx₁:Objectx₂:Object⊢ ∃ X, ∀ (y : Object), y ∈ X ↔ y = x₁ ∨ y = x₂
All goals completed! 🐙
Вправа 3.2.1. Дух цієї вправи полягає в тому, щоб встановити ці результати без використання парадоксу Рассела чи операції об'єднання.
theorem SetTheory.Set.union_exists (h: axiom_of_universal_specification) (A B:Set):
∃ (Z:Set), ∀ z, z ∈ Z ↔ z ∈ A ∨ z ∈ B := inst✝:SetTheoryh:axiom_of_universal_specificationA:SetB:Set⊢ ∃ Z, ∀ (z : Object), z ∈ Z ↔ z ∈ A ∨ z ∈ B
All goals completed! 🐙
Вправа 3.2.1. Дух цієї вправи полягає в тому, щоб встановити ці результати без використання парадоксу Рассела, or the specify operation.
theorem SetTheory.Set.specify_exists (h: axiom_of_universal_specification) (A:Set) (P: A → Prop):
∃ (Z:Set), ∀ z, z ∈ Z ↔ ∃ h : z ∈ A, P ⟨ z, h ⟩ := inst✝:SetTheoryh:axiom_of_universal_specificationA:SetP:A.toSubtype → Prop⊢ ∃ Z, ∀ (z : Object), z ∈ Z ↔ ∃ (h : z ∈ A), P ⟨z, h⟩
All goals completed! 🐙
Вправа 3.2.1. The spirit of the exercise is to establish these results without using either Russell's paradox, or the specify operation.
theorem SetTheory.Set.replace_exists (h: axiom_of_universal_specification) (A:Set)
(P: A → Object → Prop) (hP: ∀ x y y', P x y ∧ P x y' → y = y') :
∃ (Z:Set), ∀ y, y ∈ Z ↔ ∃ a : A, P a y := inst✝:SetTheoryh:axiom_of_universal_specificationA:SetP:A.toSubtype → Object → ProphP:∀ (x : A.toSubtype) (y y' : Object), P x y ∧ P x y' → y = y'⊢ ∃ Z, ∀ (y : Object), y ∈ Z ↔ ∃ a, P a y
All goals completed! 🐙
Вправа 3.2.2
theorem SetTheory.Set.not_mem_self (A:Set) : (A:Object) ∉ A := inst✝:SetTheoryA:Set⊢ set_to_object A ∉ A All goals completed! 🐙
Вправа 3.2.2
theorem SetTheory.Set.not_mem_mem (A B:Set) : (A:Object) ∉ B ∨ (B:Object) ∉ A := inst✝:SetTheoryA:SetB:Set⊢ set_to_object A ∉ B ∨ set_to_object B ∉ A All goals completed! 🐙
Вправа 3.2.3
theorem SetTheory.Set.univ_imp (U: Set) (hU: ∀ x, x ∈ U) :
axiom_of_universal_specification := inst✝:SetTheoryU:SethU:∀ (x : Object), x ∈ U⊢ axiom_of_universal_specification All goals completed! 🐙
Вправа 3.2.3
theorem SetTheory.Set.no_univ : ¬ ∃ (U:Set), ∀ (x:Object), x ∈ U := inst✝:SetTheory⊢ ¬∃ U, ∀ (x : Object), x ∈ U All goals completed! 🐙
end Chapter3