@@ -46,6 +46,16 @@ lemma derivedSet_union (A B : Set X) : derivedSet (A ∪ B) = derivedSet A ∪ d
4646lemma derivedSet_mono (A B : Set X) (h : A ⊆ B) : derivedSet A ⊆ derivedSet B :=
4747 fun _ hx ↦ hx.mono <| le_principal_iff.mpr <| mem_principal.mpr h
4848
49+ /-- The relative derived set operator viewed as a monotone self-map of `Set X`. -/
50+ def relDerivedSet : Set X →o Set X where
51+ toFun s := derivedSet s ∩ s
52+ monotone' s t h := Set.inter_subset_inter (derivedSet_mono s t h) h
53+
54+ @[simp] lemma relDerivedSet_apply (A : Set X) : relDerivedSet A = derivedSet A ∩ A := rfl
55+
56+ lemma relDerivedSet_subset {A : Set X} : relDerivedSet A ⊆ A :=
57+ Set.inter_subset_right
58+
4959theorem Continuous.image_derivedSet {β : Type *} [TopologicalSpace β] {A : Set X} {f : X → β}
5060 (hf1 : Continuous f) (hf2 : Function.Injective f) :
5161 f '' derivedSet A ⊆ derivedSet (f '' A) := by
@@ -68,6 +78,10 @@ lemma isClosed_iff_derivedSet_subset (A : Set X) : IsClosed A ↔ derivedSet A
6878 rw [this, ← accPt_principal_iff_clusterPt] at ha
6979 exact nh (h ha)
7080
81+ lemma IsClosed.relDerivedSet_eq {A : Set X} (hA : IsClosed A) :
82+ relDerivedSet A = derivedSet A := by
83+ simpa using (isClosed_iff_derivedSet_subset A).mp hA
84+
7185lemma closure_eq_self_union_derivedSet (A : Set X) : closure A = A ∪ derivedSet A := by
7286 ext
7387 simp [closure_eq_cluster_pts, clusterPt_principal]
@@ -95,6 +109,9 @@ lemma isClosed_derivedSet [T1Space X] (A : Set X) : IsClosed (derivedSet A) := b
95109lemma preperfect_iff_subset_derivedSet {U : Set X} : Preperfect U ↔ U ⊆ derivedSet U :=
96110 Iff.rfl
97111
112+ lemma preperfect_iff_eq_relDerivedSet {U : Set X} : Preperfect U ↔ U = relDerivedSet U := by
113+ simp [preperfect_iff_subset_derivedSet]
114+
98115lemma perfect_iff_eq_derivedSet {U : Set X} : Perfect U ↔ U = derivedSet U := by
99116 rw [perfect_def, isClosed_iff_derivedSet_subset, preperfect_iff_subset_derivedSet,
100117 ← subset_antisymm_iff, eq_comm]
0 commit comments