Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Metric Spaces are Normal #1002

Merged
merged 7 commits into from
Aug 22, 2023
Merged

Conversation

zstone1
Copy link
Contributor

@zstone1 zstone1 commented Aug 5, 2023

Motivation for this change

Finishing track A of #965, this makes Tietze's theorem applicable to R. We do 4 small things:

  1. Normality has 3 sensible definitions. We prove this with a tfae. Here we incorporate the the traditional "separable by open sets" notion of normality.
  2. We define regular_space, and prove some basic facts about it.
  3. We prove that pseudometric spaces are normal
  4. We "fix" the interface for tietze's lemma to assume normal_space X instead of explicitly ask that X has separators.

Finally, this will let us turn lusin's continuous partial functions into genuine bounded, R->R continuous functions. This fully unblocks track B.

One weird thing comes up, where the proof for normal_spaceP goes through the real numbers, but they don't show up in the lemma statement. This is an opportunity to use a particular instance of realType to get the useless {R : realType} out of the signature. Where is there a concrete instance of realType in the mathcomp analysis?

Things done/to do
  • added corresponding entries in CHANGELOG_UNRELEASED.md
  • added corresponding documentation in the headers
Compatibility with MathComp 2.0
  • I added the label TODO: HB port to make sure someone ports this PR to
    the hierarchy-builder branch or I already opened an issue or PR (please cross reference).
Automatic note to reviewers

Read this Checklist and put a milestone if possible.

@zstone1 zstone1 added the TODO: MC2 port This PR must be ported to mathcomp 2 now that the. Remove this label when the port is done. label Aug 5, 2023
@zstone1 zstone1 requested a review from affeldt-aist August 8, 2023 03:54
- move instance of Coq reals to normedtype.v
- fix changelog
- linting
Copy link
Member

@affeldt-aist affeldt-aist left a comment

Choose a reason for hiding this comment

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

Indeed we can use an instance of realType to remove the R : realType parameter from the statement of normal_spaceP but this requires to move a section from Rstruct.v to avoid a circularity when loading files. Is it acceptable?

@zstone1
Copy link
Contributor Author

zstone1 commented Aug 9, 2023

Looks great, exactly what I was hoping for. It also explains why searching for instances failed. There's probably a better way to organize this, but let's wait until I can split Topology into multiple files.

@affeldt-aist
Copy link
Member

Then we can maybe think of merging but open an issue right away to remember that we need a better solution for this snippet of code that moved from Rstruct.v to normedtype.v. NB: We are also using Rstruct.v in another project that relies on the real numbers from the standard library, I am wondering what are the implications of splitting this compatibility layer and how useful this compatibility layer will turn out to be (I believe more useful that the attention we have been given to it so far).

@zstone1
Copy link
Contributor Author

zstone1 commented Aug 9, 2023

Yeah, a good real arithmetic package, even without the topology/measure theory stuff, is quite useful. We should at least put an issue to be settled before next release. I'm skeptical about why Rstruct depends on normedType at all.

@affeldt-aist
Copy link
Member

I'm skeptical about why Rstruct depends on normedType at all.

We should maybe clear that up before merging.

@zstone1
Copy link
Contributor Author

zstone1 commented Aug 13, 2023

We should maybe clear that up before merging.

Ok, it was just a proof of one rather trivial lemma that we're not using anywhere. I rewrote the proof to avoid dependency on normedType, and things all work now. Assuming this builds, I think we're in good shape to merge.

@zstone1
Copy link
Contributor Author

zstone1 commented Aug 15, 2023

@affeldt-aist Well, some of the builds are broken, but they are a curl timeout. I'm probably not responsible for that, so we should be able to merge this one.

@affeldt-aist affeldt-aist self-requested a review August 16, 2023 09:38
Copy link
Member

@affeldt-aist affeldt-aist left a comment

Choose a reason for hiding this comment

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

This introduces a dependency with Rstruct.v in normedtype.v but it is a very localized use so I think that this is reasonable.

Section normalP.
Context {T : topologicalType}.

Let normal_spaceP : [<->
Copy link
Member

Choose a reason for hiding this comment

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

Why a local lemma rather than a global one?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I was just following the pattern of the other TFAE proofs like cvgryPnum

Copy link
Member

Choose a reason for hiding this comment

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

Oh right! Indeed there is probably no legitimate use of the 1 <-> 2 correspondance, we can leave it as such (maybe we can add a doc as a justfication)

@affeldt-aist
Copy link
Member

@affeldt-aist Well, some of the builds are broken, but they are a curl timeout. I'm probably not responsible for that

Indeed, the last CI run is as green as it can be.

@affeldt-aist affeldt-aist merged commit 4fed108 into math-comp:master Aug 22, 2023
affeldt-aist added a commit to affeldt-aist/analysis that referenced this pull request Aug 23, 2023
* equivalences of normal

* fixing tietze and pseudometrics are normal

* normal_spaceP w.o. R : realType paramater

---------

Co-authored-by: Reynald Affeldt <[email protected]>
@proux01 proux01 removed the TODO: MC2 port This PR must be ported to mathcomp 2 now that the. Remove this label when the port is done. label Sep 5, 2023
IshiguroYoshihiro pushed a commit to IshiguroYoshihiro/analysis that referenced this pull request Sep 7, 2023
* equivalences of normal

* fixing tietze and pseudometrics are normal

* normal_spaceP w.o. R : realType paramater

---------

Co-authored-by: Reynald Affeldt <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants