-
Notifications
You must be signed in to change notification settings - Fork 49
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
draft: separating pointed out of topological #1191
Conversation
This is both a breaking change, and a restructuring of the hierarchy for topology stuff. However, by the time topology and lmodule merge in This is a significant simplification in defining topological spaces over potentially-empty sets, though. So I'm hoping this approach works for you. The only alternative I can think of is adding structures for non-empty sets, which seems like it just propagates the problem instead of solving it. If this approach works for you guys, I'll clean it up and undraft it. |
Nice! I'm totally in favour of this new structure, but I would still encourage to preserve backward compat. We should do the same for rings and probably a bunch of other things, so it would be nice to test the approach. |
I think we might have to do this anyhow at some point, but we can keep it for later. |
Yeah, backwards compatibility is usually worth the effort. This approach sounds feasible, but more than just the name of |
Indeed, no module deprecation, we only have file deprecation since Coq 8.19 (prints a warning at require time). |
So I think the nicest approach to backwards compatability is to define
and two scopes: Defining separate modules with different definitions of What would make this really seamless is an HB feature for multiple names for the same structure.
which just replaces |
I guess you don't want to declare two times the same structure. Unfortunately, HB currently doesn't offer any mechanism for this kind of renaming, the best solution as of today is to do it manually with notations and deprecation like https://github.com/math-comp/math-comp/blob/b622c1b3cc30ff33bd394f9abdf2105742bf0b4d/mathcomp/field/falgebra.v#L97-L98 |
@zstone1 I do not see the problem in doing something like: Module Unpointed.
#[export] HB.structure Definition Filtered (U:Type) = {T of Choice T & isFiltered U T}.
Module Exports. HB.exports. End Exports.
End Unpointed.
Export Unpointed.Exports.
Module Pointed.
#[export] HB.structure Definition Filtered (U:Type) = {T of Pointed T & isFiltered U T}.
Module Exports. HB.exports. End Exports.
End Pointed.
Export Pointed.Exports.
#[deprecated(note="...", since="...")]
Notation filteredType := Pointed.Filtered.type.
Notation pointedFilteredType := Pointed.Filtered.type.
Notation unpointedFilteredType := Unpointed.Filtered.type. |
Using the modules is fine for defining the hierarchy. One annoying issue is it doesn't put My ideal end state is to have definitions for I'm updating my draft with the modules as you suggested, and to have the two notations for |
I'm encountering an HB issue I don't understand. I keep getting seeing
appear in the goals, which breaks all the |
Sorry, I don't have enough time to get a closer look but either:
|
Coming back to this after many months, I'm not sure how much effort with trying to make this backwards compatible. My recollection is
My guess is that it's not gonna be worth the effort in the end since the intention was to see if there was a nice way that we could replicate for ring. But looking at this now, a solution that will scale to |
I agree it's probably not worth putting too much effort in backward compatibility considering how painful it currently is. |
I've updated #1312 with more explicit instructions, and a bit of additional cleanup. |
With #1312 merged, this is now redundant. |
Motivation for this change
as mentioned in the zulip, I've been having issues with pointedness being required on topology, and the interaction with weak subspaces/weak topologies.
It came up again for me trying to define the space of continuous functions from sets
A -> B
as inheriting the product/uniform/compact-open topology fromX -> Y
via the weak topology.So I'm experimenting with separating things into
topological
andptopological
. We rarely need the pointedness. Pretty much only when computing explicit convergence, such as in complete spaces. And once we're intonormedtype.v
we can safely assume it. This also sidesteps the issues with rings by just requiringptopological
when needed, which is only once!Checklist
CHANGELOG_UNRELEASED.md
Reference: How to document
Reminder to reviewers