@@ -26,32 +26,47 @@ Further development can be found on the branch `von_neumann_v2`.
26
26
`set_theory/ordinal/arithmetic.lean`.
27
27
-/
28
28
29
+ universe u
30
+
31
+ variables {x y z : Set.{u}}
32
+
29
33
namespace Set
30
34
31
35
/-- A transitive set is one where every element is a subset. -/
32
36
def is_transitive (x : Set) : Prop := ∀ y ∈ x, y ⊆ x
33
37
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
35
39
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 :=
38
43
⟨λ h x y hx hy, h.subset_of_mem hy hx, λ H x hx y hy, H hy hx⟩
39
44
40
45
alias is_transitive_iff_mem_trans ↔ is_transitive.mem_trans _
41
46
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 :=
43
52
λ y hy z hz, begin
44
53
rcases mem_sUnion.1 hy with ⟨w, hw, hw'⟩,
45
54
exact mem_sUnion_of_mem hz (h.mem_trans hw' hw)
46
55
end
47
56
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 :=
49
64
⟨λ h y hy, by { rcases mem_sUnion.1 hy with ⟨z, hz, hz'⟩, exact h.mem_trans hz' hz },
50
65
λ H y hy z hz, H $ mem_sUnion_of_mem hz hy⟩
51
66
52
67
alias is_transitive_iff_sUnion_subset ↔ is_transitive.sUnion_subset _
53
68
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 :=
55
70
⟨λ h y hy, mem_powerset.2 $ h.subset_of_mem hy, λ H y hy z hz, mem_powerset.1 (H hy) hz⟩
56
71
57
72
alias is_transitive_iff_subset_powerset ↔ is_transitive.subset_powerset _
0 commit comments