Skip to content

set of limit points is closed#1870

Open
affeldt-aist wants to merge 4 commits intomath-comp:masterfrom
affeldt-aist:normed_module_20260303
Open

set of limit points is closed#1870
affeldt-aist wants to merge 4 commits intomath-comp:masterfrom
affeldt-aist:normed_module_20260303

Conversation

@affeldt-aist
Copy link
Member

Motivation for this change

This standard lemma about limit points was missing and was found useful in another development by @IshiguroYoshihiro

Checklist
  • added corresponding entries in CHANGELOG_UNRELEASED.md

- [ ] added corresponding documentation in the headers

Reference: How to document

Merge policy

As a rule of thumb:

  • PRs with several commits that make sense individually and that
    all compile are preferentially merged into master.
  • PRs with disorganized commits are very likely to be squash-rebased.
Reminder to reviewers

@affeldt-aist affeldt-aist added the enhancement ✨ This issue/PR is about adding new features enhancing the library label Mar 3, 2026
@affeldt-aist affeldt-aist force-pushed the normed_module_20260303 branch 2 times, most recently from d2a6911 to 6db2d0f Compare March 6, 2026 02:44
@affeldt-aist affeldt-aist requested a review from t6s March 9, 2026 03:18
Copy link
Member

@t6s t6s left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The proved result can be (at least) generalized to T1:

Section limit_point_closed.
Context {T : topologicalType}.
Implicit Types (A : set T) (a : T).

Lemma not_limit_point_set1 A a : ~ limit_point A a ->
  exists X : set T, nbhs a X /\ A `&` X `<=` [set a].
Proof.
rewrite /limit_point/=.
move=> /existsNP[] X /not_implyP[] naX /forallNP H.
exists X; split => // x/= [] Ax Xx; have := H x.
by move=> /not_and3P[]// /negP; rewrite negbK => /eqP.
Qed.

Lemma limit_pointPn A a : ~ limit_point A a <->
  (exists X : set T, nbhs a X /\ A `&` X `<=` [set a]).
Proof.
split; first exact: not_limit_point_set1.
case=> X [] XaX AXa.
rewrite /limit_point/= -existsNE.
exists X; apply/not_implyP; split => //.
case=> x [] + ? ? => /eqP; apply.
by apply: AXa; split.
Qed.

Lemma limit_point_closed A : accessible_space T -> closed (limit_point A).
Proof.
move=> ?.
rewrite -openC openE/= => a /not_limit_point_set1[]X[].
rewrite nbhsE/= => -[]U oaU UX XAa.
rewrite /interior nbhsE/=.
exists U => // x Ux.
apply/limit_pointPn.
have [xa|xneqa] := eqVneq x a.
  exists U; rewrite xa; split; first exact: open_nbhs_nbhs.
  by apply: (@subset_trans _ (A `&` X)) => //; exact: setIS.
exists (U `&` [set~ a]); split.
  apply: open_nbhs_nbhs; split.
    apply: openI; first by case: oaU.
    by rewrite openC; exact: accessible_closed_set1.
  by split => //; exact/eqP.
apply: (@subset_trans _ (A `&` (X `&` [set~ a]))).
  by apply: setIS; apply: setSI.
apply: (@subset_trans _ ([set a] `&` [set~ a])).
  by rewrite setIA; apply: setSI.
by rewrite setICr.
Qed.

End limit_point_closed.
Arguments limit_point_closed {T} A.

@t6s
Copy link
Member

t6s commented Mar 9, 2026

limit_pointsPn can also be like this:

Lemma limit_pointNE A a : (~ limit_point A a) =
  (exists X : set T, nbhs a X /\ A `&` X `<=` [set a]).
Proof.
rewrite /limit_point/= -existsNE; apply: eq_exists => X/=.
rewrite not_implyE; congr and.
rewrite -forallNE; apply: eq_forall => x/=.
rewrite and3E not_andE orC -implyE; congr (_ -> _).
by rewrite -(propext (rwP negP)) not_notE -(propext (rwP eqP)).
Qed.

@t6s
Copy link
Member

t6s commented Mar 9, 2026

(limit_pointEn? I don't know the appropriate naming convention here)

affeldt-aist and others added 2 commits March 9, 2026 18:09
Co-authored-by: Takafumi Saikawa <tscompor@gmail.com>
@affeldt-aist affeldt-aist force-pushed the normed_module_20260303 branch from 6db2d0f to c094586 Compare March 9, 2026 09:09
@affeldt-aist
Copy link
Member Author

(limit_pointEn? I don't know the appropriate naming convention here)

Maybe not_limit_pointE?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement ✨ This issue/PR is about adding new features enhancing the library

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants