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
[Merged by Bors] - refactor(topology/{order,*}): review API #18312
Conversation
What's the motivation for this? Was something broken that we never noticed? Or is something different in Lean 4? |
IMHO, it makes sense to have 1 normal form. Before this change, we had to |
I think though that writing |
We can introduce notation like we do for |
If nothing else, let's add a prime to the structure field name then so people don't use it by accident. |
I think dot notation would still work with the |
Yes but this looks strange. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
bors d+
✌️ urkud can now approve this pull request. To approve and merge a pull request, simply reply with |
bors merge |
## Main changes * Switch from `@[class] structure topological_space` to `class`. * Introduce notation `is_open[t]`/`is_closed[t]`/`𝓤[u]` and use it instead of `t.is_open`/`@is_closed _ t`/`u.uniformity` * Don't introduce a temporary order on `topological_space`, use `galois_coinsertion` to the order-dual of `set (set α)` instead. * Drop `discrete_topology_bot`. It seems that this instance doesn't work well in Lean 4 (in fact, I failed to define it without using `@DiscreteTopology.mk`). ## Other changes ### Topological spaces * Add `is_open_mk`. * Rename `generate_from_mono` to `generate_from_anti`, move it to the `topological_space` namespace. * Add `embedding_inclusion`, `embedding_ulift_down`, and `ulift.discrete_topology`. * Move `discrete_topology.of_subset` from `topology.separation` to `topology.constructions`. * Move `embedding.discrete_topology` from `topology.separation` to `topology.maps`. * Use explicit arguments in an argument of `nhds_mk_of_nhds`. * Move some definitions and lemmas like `mk_of_closure`, `gi_generate_from` (renamed to `gci_generate_from`), `left_inverse_generate_from` to the `topological_space` namespace. These lemmas are very specific and use generic names. * Add `topological_space` and `discrete_topology` instances for `fin n`. * Drop `is_open_induced_iff'`, use non-primed version instead. * Prove `set_of_is_open_sup` by `rfl`. * Drop `nhds_bot`, use `nhds_discrete` instead. * Drop `induced_bot` and `discrete_topology_induced` ### Uniform spaces * Drop `infi_uniformity'` and `inf_uniformity'`. * Use `@uniformity α (uniform_space.comap _ _)` instead of `(h : ‹uniform_space α› = uniform_space.comap f ‹uniform_space β›)` in `uniformity_comap`. ### Locally constant functions and discrete quotients * Use quotient space topology for the coercion of a `discrete_quotient` to `Type*`, then prove `[discrete_topology]`. This way we avoid surprising diamonds in the future (especially if Lean 4 will unfold the coercion). * Merge `locally_constant.lift` and `locally_constant.locally_constant_lift` into 1 def, rename `factors` to `lift_comp_proj`. * Protect `locally_constant.is_locally_constant`. * Drop `locally_constant.iff_continuous_bot` ### Categories * Add an instance for `discrete_topology (discrete.obj X)`. * Rename `Fintype.discrete_topology` to `Fintype.bot_topology `, add lemma `Fintype.discrete_topology` sating that this is a `[discrete_topology]`. ### Topological rings * Fix&golf a proof that failed because of API changes.
Pull request successfully merged into master. Build succeeded: |
Forward-ported from leanprover-community/mathlib#18312 Also use `{}` arguments in `continuous_def` because otherwise Lean 4 can't use it in `simp` with non-standard instances.
Main changes
@[class] structure topological_space
toclass
.is_open[t]
/is_closed[t]
/𝓤[u]
and use it instead oft.is_open
/@is_closed _ t
/u.uniformity
topological_space
, usegalois_coinsertion
to the order-dual ofset (set α)
instead.discrete_topology_bot
. It seems that this instance doesn't work well in Lean 4 (in fact, I failed to define it without using@DiscreteTopology.mk
).Other changes
Topological spaces
is_open_mk
.generate_from_mono
togenerate_from_anti
, move it to thetopological_space
namespace.embedding_inclusion
,embedding_ulift_down
, andulift.discrete_topology
.discrete_topology.of_subset
fromtopology.separation
totopology.constructions
.embedding.discrete_topology
fromtopology.separation
totopology.maps
.nhds_mk_of_nhds
.mk_of_closure
,gi_generate_from
(renamed togci_generate_from
),left_inverse_generate_from
to thetopological_space
namespace. These lemmas are very specific and use generic names.topological_space
anddiscrete_topology
instances forfin n
.is_open_induced_iff'
, use non-primed version instead.set_of_is_open_sup
byrfl
.nhds_bot
, usenhds_discrete
instead.induced_bot
anddiscrete_topology_induced
Uniform spaces
infi_uniformity'
andinf_uniformity'
.@uniformity α (uniform_space.comap _ _)
instead of(h : ‹uniform_space α› = uniform_space.comap f ‹uniform_space β›)
inuniformity_comap
.Locally constant functions and discrete quotients
discrete_quotient
toType*
, then prove[discrete_topology]
. This way we avoid surprising diamonds in the future (especially if Lean 4 will unfold the coercion).locally_constant.lift
andlocally_constant.locally_constant_lift
into 1 def, renamefactors
tolift_comp_proj
.locally_constant.is_locally_constant
.locally_constant.iff_continuous_bot
Categories
discrete_topology (discrete.obj X)
.Fintype.discrete_topology
toFintype.bot_topology
, add lemmaFintype.discrete_topology
sating that this is a[discrete_topology]
.Topological rings