Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 8672734

Browse files
committed
feat(set_theory/zfc/ordinal): more lemmas on transitive sets (#15548)
We add `empty_is_transitive`, `is_transitive.inter`, and `is_transitive.sUnion'`. We also add a `variables` block.
1 parent 8983bec commit 8672734

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

src/set_theory/zfc/ordinal.lean

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,32 +26,47 @@ Further development can be found on the branch `von_neumann_v2`.
2626
`set_theory/ordinal/arithmetic.lean`.
2727
-/
2828

29+
universe u
30+
31+
variables {x y z : Set.{u}}
32+
2933
namespace Set
3034

3135
/-- A transitive set is one where every element is a subset. -/
3236
def is_transitive (x : Set) : Prop := ∀ y ∈ x, y ⊆ x
3337

34-
theorem is_transitive.subset_of_mem {x y : Set} (h : x.is_transitive) : y ∈ x → y ⊆ x := h y
38+
@[simp] theorem empty_is_transitive : is_transitive ∅ := λ y hy, (mem_empty y hy).elim
3539

36-
theorem is_transitive_iff_mem_trans {z : Set} :
37-
z.is_transitive ↔ ∀ {x y : Set}, x ∈ y → y ∈ z → x ∈ z :=
40+
theorem is_transitive.subset_of_mem (h : x.is_transitive) : y ∈ x → y ⊆ x := h y
41+
42+
theorem is_transitive_iff_mem_trans : z.is_transitive ↔ ∀ {x y : Set}, x ∈ y → y ∈ z → x ∈ z :=
3843
⟨λ h x y hx hy, h.subset_of_mem hy hx, λ H x hx y hy, H hy hx⟩
3944

4045
alias is_transitive_iff_mem_trans ↔ is_transitive.mem_trans _
4146

42-
theorem is_transitive.sUnion {x : Set} (h : x.is_transitive) : (⋃₀ x).is_transitive :=
47+
protected theorem is_transitive.inter (hx : x.is_transitive) (hy : y.is_transitive) :
48+
(x ∩ y).is_transitive :=
49+
λ z hz w hw, by { rw mem_inter at hz ⊢, exact ⟨hx.mem_trans hw hz.1, hy.mem_trans hw hz.2⟩ }
50+
51+
protected theorem is_transitive.sUnion (h : x.is_transitive) : (⋃₀ x).is_transitive :=
4352
λ y hy z hz, begin
4453
rcases mem_sUnion.1 hy with ⟨w, hw, hw'⟩,
4554
exact mem_sUnion_of_mem hz (h.mem_trans hw' hw)
4655
end
4756

48-
theorem is_transitive_iff_sUnion_subset {x : Set} : x.is_transitive ↔ ⋃₀ x ⊆ x :=
57+
theorem is_transitive.sUnion' (H : ∀ y ∈ x, is_transitive y) : (⋃₀ x).is_transitive :=
58+
λ y hy z hz, begin
59+
rcases mem_sUnion.1 hy with ⟨w, hw, hw'⟩,
60+
exact mem_sUnion_of_mem ((H w hw).mem_trans hz hw') hw
61+
end
62+
63+
theorem is_transitive_iff_sUnion_subset : x.is_transitive ↔ ⋃₀ x ⊆ x :=
4964
⟨λ h y hy, by { rcases mem_sUnion.1 hy with ⟨z, hz, hz'⟩, exact h.mem_trans hz' hz },
5065
λ H y hy z hz, H $ mem_sUnion_of_mem hz hy⟩
5166

5267
alias is_transitive_iff_sUnion_subset ↔ is_transitive.sUnion_subset _
5368

54-
theorem is_transitive_iff_subset_powerset {x : Set} : x.is_transitive ↔ x ⊆ powerset x :=
69+
theorem is_transitive_iff_subset_powerset : x.is_transitive ↔ x ⊆ powerset x :=
5570
⟨λ h y hy, mem_powerset.2 $ h.subset_of_mem hy, λ H y hy z hz, mem_powerset.1 (H hy) hz⟩
5671

5772
alias is_transitive_iff_subset_powerset ↔ is_transitive.subset_powerset _

0 commit comments

Comments
 (0)